I'm looking for a simple DBM library such as BerkeleyDB or Kyoto Cabinet, but natively wo开发者_C百科rking for .NET. I need to manage more than one million records (maybe ten millions), and possibly in a hierarchical way (this last point is not mandatory, we can work with a linear structure).
Does such a thing even exist?
I finally found RaptorDB and it matches almost exactly my needs. I'll write down my evaluation here after it's been fully tested.
Edit: after testing, it was not exactly working as expected. Actually it was not exactly working, so I wrote my own DBM (it always ends up like this :)). The problems where in a multithreaded environnement, where I got DB corruption quite often (and yes, I've checked my code for thread safety). If someone has a positive feedback, I'm interested.
SQL Server Compact Edition is a viable choice, although I'm not sure what you mean by "natively working for .NET" - .NET has no built-in database (unless you count DataTables and XML, which I don't).
What about System.Data.SQLite?
Assuming you are on Windows I suggest trying the ESENT database engine via the ManagedEsent interop layer. ESENT is built into Windows and has a similar level of functionality and performance to BerkelyDB. The differences are that ESENT isn't just a key/value store, it has columns and indexes built in, but ESENT doesn't have replication.
My company has built a .NET layer for the Berkeley DB XML library, which you can download at http://bdbxml.net. You get an embedded XML database library that you can run in .NET and can use the databases on other platforms using the different language bindings if need be. If you're interested, feel free to contact me with further requirements so I can understand your solution architecture a little better and see if we can be a fit for you.
Regards
精彩评论