.NET – Embedded non-relational (NOSQL) Data Storage

I am considering using/implementing some kind of embedded key-value (or document) storage for my Windows desktop application. I want to be able to store various types of data (GPS tracks will be an example), and of course these data can be queried. The amount of data will not be loaded into the memory at the same time.

I am considering using sqlite as a key-value storage storage engine, like y-serial, but written in .NET. I also read about FriendFeed’s usage of MySQL to store schema-less data, which is a good pointer on how to use RDBMS for non-relational data. sqlite seems to be a good choice because of its simplicity, portability and library size.

My question is whether there are other options for embedded non-relational stores? It does not need to be distributable, it does not have to support transactions, but it must be accessible from .NET, and it should have a small download size.

Update: I found an article titled SQLite as a Key-Value Database, which compares sqlite with Berkeley DB, which is an embedded key-value repository.

Windows has built-in embedded non-relational storage. It is called ESENT and is used by multiple Windows applications, including Active Directory and Windows Desktop Search.

http://blogs.msdn.com/windowssdk/archive/2008/10/23/esent-extensible-storage-engine-api-in-the-windows-sdk.aspx< /p>

If you want .NET access, you can use the ManagedEsent layer on CodePlex.

http://managedesent.codeplex.com/

The project has a PersistentDictionary class, which implements a key-value store that implements the IDictionary interface but is supported by the database.

I am considering using/implementing some kind of embedded key-value (or document) storage for my Windows desktop application. I want to be able to store various types of data (GPS tracks will be an example), and of course these data can be queried. The amount of data will not be loaded into the memory at the same time.

I am considering using sqlite as a key-value storage storage engine, like y-serial, but written in .NET. I also read about FriendFeed’s usage of MySQL to store schema-less data, which is a good pointer on how to use RDBMS for non-relational data. sqlite seems to be a good choice because of its simplicity, portability and library size.

My question is whether there are other options for embedded non-relational stores? It does not need to be distributable, it does not have to support transactions, but it must be accessible from .NET, and it should have a small download size.

Update: I found an article titled SQLite as a Key-Value Database, which compares sqlite with Berkeley DB, which is an embedded key-value repository.

Windows has a built-in embedded non-relational storage. It is called ESENT and is used by multiple Windows applications, including Active Directory and Windows Desktop Search.

http://blogs.msdn.com/windowssdk/archive/2008/10/23/esent-extensible-storage-engine-api-in-the-windows-sdk.aspx< /p>

If you want .NET access, you can use the ManagedEsent layer on CodePlex.

http://managedesent.codeplex.com/

The project has a PersistentDictionary class, which implements a key-value store that implements the IDictionary interface but is supported by the database.

Leave a Comment

Your email address will not be published.