If you are looking for a free or inexpensive database for a software project, you are not alone. Most systems, whether for a software package or a web site, need a database system to store, retrieve, backup or share information. Many applications today use a lightweight database because they can be economical (sometimes free); powerful and meet all the needs of an application. I have started to compile a list of features of three of the top lightweight databases.

Microsoft SQL Server Compact Edition 2008 SQLite Sybase iAnywhere Ultralite 11
License If you connect to SQL Server, if you have a processor license, the mobiles do not require a license. If the server is licensed per client, each database that connects will need a CAL (Client Access License). Contact Microsoft. As a standalone database (no synchronization), free to use and distribute. Free Open Source License. 100% Free, and full source is available. No GPL, LGPL, or any other variation of open source license requirement. Reasonable Server and Client Licenses. Contact Sybase/iAnywhere for Licensing.
Size 640k* DB DLL: 261 kb
ADO.NET 2.0 Provider: 89 kb
480k*
Max Records/Table Databases are limited to 4GB; No max number of records Limited by Page Size: 1073741823; Page size depends on data types and columns per row. 16 Million
Stored Procedures No No No
User Defined Functions No No No
Custom Collation Sequences Yes Yes Unicode Collation Algorithm, and ICU Unicode support
Scalar Functions Yes Yes No
Aggregate Functions Yes Yes Yes
Locking SQLite’s locking mechanism is a little draconic and designed for
simplicity. Only one writer at a time can be writing to the database.
Other writers are blocked until the first writer completes. No readers can
be actively iterating a table while a write is in progress, and a write will
wait until all readers are finished iterating. 1
Row-level locking
Performance We’ve summarized one informal and non-conclusive study* comparing performance between databases on an emulator and 3 different devices–Treo 750, Treo Pro, iPAQ (note: the lower the number the faster the performance, 1x being the lowest possible for each test):

Operation/Database SQL CE SQLite UltraLite
lower numbers indicate better performance
Insert 4x 1x 1.6x
Update 2.2x 1x 2.3x
Delete 4.5x 1x 2x
Select, filter on primary key 3.3x 1.5x 1x
Select, filter on indexed text column 3.2x 1.4x 1x
Join (3 tables) 1.9x 1x 2.2x
Iterate 1.2x 1x 2x

Please refer to the study for more details:

* Mobile DB Performance Testing: with Hardware (ElegantCode.com)

Notes:

1. In the table above, the higher the number, the slower the performance. For each test, 1x is the fastest result of the three databases tested and is set as the standard for the other two.

2. SQLite is faster than SQL Mobile, and SQLite’s database files are smaller.
In a couple of simple tests inserting, selecting and updating an Int64,
SQLite was more than 10x faster. Inserts/updates that took minutes in SQL
Mobile took seconds in SQLite. 1

Replication Support Yes (SQL Server Merge Replication) No Yes (MobiLink two-way replication)
Synchronization Strategy Sync Services for ADO.NET To merge data from a device to a desktop, you can use the ATTACH statement to attach the PDA’s database file to the master database and provide custom queries to merge changes into the main database. You can also use Web Services from you application to a server and provide your own synchronization. MobiLink Synchronization Engine
Nested Transactions Yes No No
Full Portability Windows Only Yes Yes
Windows Yes – x86 and x64 Yes Yes
Windows Mobile Yes Yes Yes
iPhone/iPod No Yes Beta
BlackBerry No Yes Yes
Google Android No Yes Not Yet
Works with .NET Yes Yes Yes

If you have questions about which database to use in your planned system, please contact the zTeam to discuss your specific needs.

  1. http://www.pcreview.co.uk/forums/thread-2265632.php
  2. http://sqlite.phxsoftware.com