Wednesday, June 4, 2008

The Search for the Perfect Database.

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.

SQLite (Considered):
Not Managed, bad concurrency, ADO.Net interface was buggy.

DB2 (Considered):
The free version was not embeddable and had artificial limitations and had to pay for embeddable.

Oracle (Considered):
The free version was not embeddable and had artificial limitations, separate install.

SharpHSQL (Considered):
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)

FireBird (Used):
Embeddable only on windows, lacking documentation, ADO.Net interface was buggy.

Lacking documentation, speed was slow, had to buy.

H2 (Using):
Needs IKVM.Net’s ~20MB dlls for .Net usage. Needs H2Sharp.

No comments: