I was looking for a small and powerful database in order to fulfil the requirements of my last project. Because the database will be running locally I took the decision to use an embedded database. After a few searches over the Internet and some embedded database comparison reviews, I found Firebird which is actually a powerful but unknown (yet) relational database system. Here are some great features of the Firebird embedded database version:
The size of the runtime is 2 MB in the minimal configuration. There are only two files required (an embedded Firebird runtime DLL and an ADO.NET provider assembly). Even with all the other supporting files it doesn't get over 3 MB.
The facts of having such a small footprint of the runtime makes me even more happy about using the Firebird as an embedded database.
Both the runtime and database file can be deployed by simple copying, no separate installer or component registration is required.
Could it be more simple than this?
Custom filename extensions
The database file (it's just a single file) can have any name and extension and can be located at any place on your hard drive. You can associate the extension with your application. This allows you to use Firebird database as an intelligent storage format.
This is also a feature I lake to have, because my users will create databases on-the-fly but I want to track them by categories using different file extensions. Great!
When migrating the database to a standalone Firebird server just copy the database file and change a connection string on your client. The migration to a standalone Firebird server couldn't be easier.
The license is open-source but commercial friendly. You can bundle embedded Firebird with your application without making your code available.