
These days I'm involved in designing a ‘Smart Client Application’ architecture for one of our customers. These smart client applications require fair amount of offline capabilities, fast data access and low network utilization. To achieve the objectives most of the data is cached and persisted on the client side. This required us to look at data manipulation, persisting and synchronization mechanisms at the client side.
The first alternative we had was to maintain XML serialized objects on the client side to cache data. This had the problems like Data querying difficulties, Security issues, Thread safe access issues, High memory consumption and Implementation difficulties.
Next we have decided to use an embeddable database for storing data. Our first candidate was MS SQL Express database, as our project is mainly based on VB.NET with MS technologies. Even though it has some limitations, SQL Express is a very feature rich database which can be invoked in the similar way you invoke SQL Server database (with SPs, Views, Functions, full ADO.NET support, etc…). This was a major plus point for us as we could reuse the same data access layer components on the client side. It also supported database replication so that the cached data syncing could be done even at the database level.
But the problem was the high installation requirements of the SQL Express database. Also configuration of the database seemed to be fairly complex for our requirements.
Next alternative we looked at was the open source database SQLite. It has an incredibly small foot print of less than 400Kb and performance was impressive as a small single user database. ADO.NET 2.0 data provider was also available for SQLite and can be integrated to Visual Studio 2005 easily. It has implemented most of the SQL92 standard with few exceptions. SQLite is really a zero configuration single-file database which runs in-process of your application.
Having said the plus points, it is now the time to look at the limitations also. One main problem is that, the only locking level it supports is at database level. This can be a problem when multiple processes accessing the database simultaneously. Since smart clients are generally used by a single user, this shouldn’t be a big problem as an embedded database. But in our case, the smart client application might be deployed on a Cytrix Server and may have many users connecting over consoles.
Having honored by “2005 Open Source Award from Google and O'Reilly”, I think we should seriously consider using SQLite as an embedded database for our smart client architectures.
96 comments:
any thoughts on
http://www.oracle.com/technology/products/lite/index.html
Even though Oracle is not a choise for the mentioned project as out customer has a large existing SQL Server deployment base, Wew have also looked in to SQL Lite and SQL XE.
Oracle XE is comparble to SQL Server Express edition. We considered that also to be bit too heavy for a simple deployment model.
Oracle Lite comprises of cool synchronization techniques and require Oracle EE/PE to be it's back end parent. With the 'Change Log' approach, I think Oracle Lite is more suitable for 'Temporary Disconnecting' clients rather than for 'Occationally Connected' (thick?) clients.
Also Oracle Lite suggests the synchronization approach to be 'data centric' rather than 'service centric' which we think not very appropriate for our model.
Thank you!
My homepage | Please visit
Thank you!
http://athtataa.com/viqm/qmqk.html | http://otwzqgfz.com/varr/wmgs.html
Have you had a look at SQL Server Compact by Microsoft? It is a free, light weight embedded database.
http://www.microsoft.com/sql/editions/compact/default.mspxhttp://www.microsoft.com/sql/editions/compact/default.mspxhttp://www.microsoft.com/sql/editions/compact/default.mspx
Yeah, SQL Compact will be promissing specially if we can share the same programming model as other 2005 databases.
Great article! Thanks.
Thanks for interesting article.
Nice Blog!
Thank You! Very interesting article. Do you can write anything else about it?
Very interesting site. Blog is very good. I am happy that I think the same!
Nice! Nice site! Good resources here. I will bookmark!
Excellent website. Good work. Very useful. I will bookmark!
I see first time your site guys. I like you :)
zQs4IS You have a talant! Write more!
TTc7Gm Nice Article.
O36TF8 The best blog you have!
FWtika Good job!
Magnific!
Magnific!
Good job!
Nice Article.
Hello all!
Nice Article.
Please write anything else!
Nice Article.
Please write anything else!
NDa768 write more, thanks.
Wonderful blog.
Good job!
Magnific!
Good job!
Magnific!
actually, that's brilliant. Thank you. I'm going to pass that on to a couple of people.
Hello all!
Nice Article.
Good job!
Thanks to author.
actually, that's brilliant. Thank you. I'm going to pass that on to a couple of people.
Please write anything else!
Thanks to author.
Change is inevitable, except from a vending machine.
Thanks to author.
Magnific!
When there's a will, I want to be in it.
Build a watch in 179 easy steps - by C. Forsberg.
Save the whales, collect the whole set
C++ should have been called B
Oops. My brain just hit a bad sector.
If ignorance is bliss, you must be orgasmic.
Nice Article.
Beam me aboard, Scotty..... Sure. Will a 2x10 do?
Oops. My brain just hit a bad sector.
Give me ambiguity or give me something else.
Save the whales, collect the whole set
I'm not a complete idiot, some parts are missing!
Oops. My brain just hit a bad sector.
Beam me aboard, Scotty..... Sure. Will a 2x10 do?
actually, that's brilliant. Thank you. I'm going to pass that on to a couple of people.
Energizer Bunny Arrested! Charged with battery.
Energizer Bunny Arrested! Charged with battery.
Thanks to author.
Calvin, we will not have an anatomically correct snowman!
A lot of people mistake a short memory for a clear conscience.
Ever notice how fast Windows runs? Neither did I.
I'm not a complete idiot, some parts are missing!
A lot of people mistake a short memory for a clear conscience.
Beam me aboard, Scotty..... Sure. Will a 2x10 do?
The gene pool could use a little chlorine.
The gene pool could use a little chlorine.
Suicidal twin kills sister by mistake!
When there's a will, I want to be in it.
What is a free gift ? Aren't all gifts free?
What is a free gift ? Aren't all gifts free?
actually, that's brilliant. Thank you. I'm going to pass that on to a couple of people.
Suicidal twin kills sister by mistake!
Change is inevitable, except from a vending machine.
A flashlight is a case for holding dead batteries.
Clap on! , Clap off! clap@#&$NO CARRIER
Oops. My brain just hit a bad sector.
The gene pool could use a little chlorine.
C++ should have been called B
Build a watch in 179 easy steps - by C. Forsberg.
actually, that's brilliant. Thank you. I'm going to pass that on to a couple of people.
C++ should have been called B
actually, that's brilliant. Thank you. I'm going to pass that on to a couple of people.
Build a watch in 179 easy steps - by C. Forsberg.
Give me ambiguity or give me something else.
Energizer Bunny Arrested! Charged with battery.
Change is inevitable, except from a vending machine.
Oops. My brain just hit a bad sector.
I don't suffer from insanity. I enjoy every minute of it.
Hello all!
A lot of people mistake a short memory for a clear conscience.
Post a Comment