Table of Contents

Embedded databases

For quite some time I have been looking for an embedded database I could use with the confidence that it was the best choice. My usual choice so far has been SQLite, but mostly out of convenience and I haven't done any proper research of options.

This article is not meant as an exhaustive comparison or general recommendation, but to inform about various qualities or problems of these options. I will add new information as I find it, but I will likely eliminate some options early on.

When it comes to applications that use database, I usually hack simple tools in PHP and complex or computation intense in C#/ASP.NET. Additionally I need a somewhat comfortable tool for manual changes and debugging.

I usually combine relational databases with NHibernate (or Dapper) for C# and use dibi for PHP. I used Subsonic for one project, which eventually turned out to be inefficient and impractical. Entity Framework has significantly evolved in the past year, so I haven't tried the current version yet.

SQLite (3.7.7.1 and 3.8.6)

Firebird Embedded (2.5.3)

SQL Server Compact (4.0)

VistaDB (5)

Siaqodb

Recommended on StackOverflow, but not impressive. The examples look poorly written and I didn't find any appropriate tools.

NDatabase

Object database, limited to .NET (no PHP). No good tool that I know of.

Db4o

Object database, no PHP (supported is .NET and JVM). Has a nice tool, but is somewhat Java-centric and requires different approach than relational databases.

VelocityDB

Object database, limited to .NET (no PHP). No good tool that I know of. Has lazy-loading (not for POCOs), which is kind of useful for ad-hoc manipulation.