I've been looking into using DBfDotNet to store some sensor data. For anybody who doesn't know what im talking about, it is a database engine written in c#, check it out on codeplex or this very good codeproject article. The database that it is compared to for timings in the codeproject article is sqlite.
From the testing I've done, it is substantially faster than other embedded databases that I have tried. It is essentially an object database so we can just save the date and not have to worry about awful things like ADO.NET, ORM and SQL!
With 500k rows in the file, a query like:
IEnumerable<People> result = peoples.Where<People>(x => x.dob < DateTime.Now.AddYears(-30)
&& x.dob > DateTime.Now.AddYears(-10)
&& x.name.StartsWith("Ca")
);
took about 5 seconds.
So what would be the disadvantages of using a database like this?
One issue is that the columns in the database file are fixed width, so if the data varied, space would be wasted. The data I'm looking at storing is fixed width anyway so this wouldnt be an issue for me.
It is not thread safe. This is not an issue for me but this could always be added as an optional wrapper.
Also its far from ACID and a failure during a write could cause some issues!