Search code examples
.netsqlfirebirdembedded-database

What database for both local and client/server?


We have a "large" code base already developed using SQLite and NHibernate using .NET 2 for our clients. Using SQLite we can communicate with the db (even multiple clients) across a Windows file share. Most of the time, this is perfectly sufficient for what we need to do.

Over the last few months, we have needed to integrate our application with a much older application that is very niche, and runs on a custom built version of Windows - with a lot of things stripped out. No .NET, and we aren't "allowed" to use file shares. Now we have a problem.

We're looking for an embedded database system that can be dropped in for SQLite, using NHibernate, which could also be accessed using a client/server (the resulting code must be written in C).

In short:

  • Normal Usage could be with NHibernate and a local file (could be run as a service w/ client/server protocol)
  • Additional Usage would be with a C library in a client/server fashion

In many cases, we'll want to do both.

SQLite with a wrapper library was our first reaction, using SQLitening for example. Firebird may be an additional option. Some computers that we install onto may already have SQL Server running (I'm not sure about C support for SQL Server).

Any others (open source or commercial)?


Solution

  • If you want really lightweight, I've found CodeBase (the isam) to be hightly efficient and easy to strip things out and relink.

    Otherwise SQLite is what I've often used for portable applications (embedded linux, WinCE etc.) - in preference to Microsoft portable database options where applicable.