I have been searching for a database to use in a certain application for years. And none of them ever quite met all my needs until now. The program needed a database for each machine it ran on so the first requirement was that is had to be embeddable and not have a separate install. This eliminated a majority of the mainstream database systems out there. I also wanted this database to work on both Linux and Windows. I found Firebird which actually worked well for me, but had a few issues. They were the lack of good online documentation and the bug prone Ado.Net provider; which leads to my next requirement it had to have an interface with .Net. After working with firebird for a long time I finally decided to shift my database from firebird to another system. VistaDB 3 looked really appealing to me because of it being completely managed. I even switched over to it for a while, but the documentation was lacking and it ran slow (and didn’t want to spend the time fixing that.), and would have to buy it. That was when I found H2, but it had one problem it’s a Java database. In order to use it I used IKVM.Net. But I then had another problem H2 had no ADO.Net interface so I wrote one. Thus H2Sharp was born. So far I have been pleased with H2 and my only issue so far is the ~20MB class library that comes with IKVM.
I have looked at nearly every database out on the market and have tried a few of them. So here is a list of databases I considered or used.
MS SQL Express (Used):
Windows only, separate install, resource hog, not embeddable.
Windows only, lack of needed features.
Viral GPL or pay big bucks, also was too different.
Not Managed, bad concurrency, ADO.Net interface was buggy.
The free version was not embeddable and had artificial limitations and had to pay for embeddable.
The free version was not embeddable and had artificial limitations, separate install.
Power loss causes corruption, did not seem to be in active development.
IBM cloudscape, Apache Derby, JavaDB (Considered):
Would have had to install Java and .Net and have it run in a separate process.
(Considered it before I found IKVM.Net and found H2 before I found IKVM.Net)
Embeddable only on windows, lacking documentation, ADO.Net interface was buggy.
Lacking documentation, speed was slow, had to buy.
Needs IKVM.Net’s ~20MB dlls for .Net usage. Needs H2Sharp.