The scenario I am searching at is "The program uses Postgres. Oh, you need to only use it single-user for now, and set off needing to cope with setting up a database server? Okay, meanwhile technology-not only using the embedded single-user database." Now you ask , then which embedded database is better.

When I comprehend it, the 2 primary challengers are SQLite and Firebird so what's best? Criteria:

  • Full SQL support, or as near as reasonably possible.
  • Full text search.
  • Simple to call from C#
  • Locks, or enables you to definitely lock, the database file to make certain nobody attempts to run it multiuser and eventually ends up six several weeks in the future with intermittent data corruption in most their backup copies.
  • Last but not even close to least, reliability.

When I comprehend it, the disadvantages of SQLite are,

  • No right outer join. Workaround: use left outer join rather.
  • Very little integrity checking. Workaround: be really careful within the application code.
  • No decimal amounts. Workaround: plenty of aspirin.

No above are showstoppers. What are the others I am missing? (Yes, it does not support some administrative and code-within-database SQL features, that are not relevant with this type of use situation.)

I'm not sure anything much about Firebird. What exactly are its disadvantages?

Firebird, yes. No saved procs in SQLLite. No clue exactly what the previous poster was saying about corruption. I've a large number of Facebook installs and not had one hitch yet.

I'll election for Firebird anyway. Facebook have all the feaures what you would like except full text search. I have some question for Alexey - are you able to become more specific? I do not see in Facebook anything you've authored so please explain me that which you exactly mean.

SQLite also offers the distinguishing feature (great for some applications, should not affect many more) of the cell-based instead of column-based typing discipline. Each cell inside a table may have a different type the column's type basically sets that column's preference (affinity) for the type. If you are conscious of that, it should not result in a problem.

I, too, am not so acquainted with Firebird. I'd most likely opt for SQLite due to the truth that it's well-known and broadly-used (thus you will find plenty of eyes out for bugs, and community support ought to be good).

Firebird have large benefit to be use within embedded version like SQLite or server like PostgreSQL. To help you use for.

Even though it is transactional, SQLite doesn't support concurrent transactions, therefore if your embedded application needs several connections, they ought to be serialized. An embedded Firebird database is easy to upgrade to some fully shared database - just alter the shared library.


Firebird have excellent dotnet driver

You are able to learn more about Firebird here

Firebird would/is my choice.

Utilizing it since version 1.5, presently on 2.1 and can soon upgrade to two.5, for any shareware application, didn't have any database engine related issues.

I personally use the server version on Home windows 7 for my development machine, which enables access using their company tools while running the applying, after i deploy I distribute the embedded version - no source code change required for this!

Facebook can also be mix platform, i.e. you are able to develop on Win$ and distribute on Linux or Mac or ...

Facebook makes sure referential integrity - a show stopper so far as I'm worried about SQLite.


If you are using .Internet, it's also wise to take a look at Sql Server Compact.