.net - 嵌入式非关系 (nosql) 数据存储

标签 .net sqlite nosql embedded-database

<分区>

我正在考虑为我的 Windows 桌面应用程序使用/实现某种嵌入式键值(或文档)存储。我希望能够存储各种类型的数据(GPS 轨迹就是一个例子),当然还能够查询这些数据。数据量太大,无法同时全部加载到内存中。

我正在考虑使用 sqlite 作为键值存储的存储引擎,比如 y-serial , 但用 .NET 编写。我也读过 FriendFeed's usage of MySQL to store schema-less data ,这是关于如何将 RDBMS 用于非关系数据的一个很好的指针。 sqlite 似乎是一个不错的选择,因为它的简单性、可移植性和库大小。

我的问题是嵌入式非关系商店是否还有其他选择?它不需要是可分发的,也不需要支持事务,但它必须可以从 .NET 访问,并且它应该具有较小的下载大小。

更新:我找到了一篇标题为 SQLite as a Key-Value Database 的文章它将 sqlite 与 Berkeley DB 进行了比较,Berkeley DB 是一个嵌入式键值存储库。

最佳答案

Windows 有一个内置的嵌入式非关系存储。它被称为 ESENT,被多个 Windows 应用程序使用,包括 Active Directory 和 Windows 桌面搜索。

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

如果您想要访问 .NET,您可以使用 CodePlex 上的 ManagedEsent 层。

http://managedesent.codeplex.com/

该项目有一个实现键值存储的 PersistentDictionary 类,该键值存储实现了 IDictionary 接口(interface),但由数据库支持。

关于.net - 嵌入式非关系 (nosql) 数据存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2081080/

相关文章:

Python Sqlite3 - 使用 f 字符串更新数据库功能

.net - 为什么 SubSonic 2.0 使用 System.Data.SQLite 版本 1.0.60.0?

node.js - 如何像在sql中一样在mongodb中正确使用 'exist'函数?

c# - 如何在 C# 应用程序中从 C++ 调用抛出 C# 函数,以便正确展开 C++ 堆栈?

.net - 如何导出 CIL DLL 中的方法以便 native 程序可以调用它?

c# - 我可以在 LINQ 插入后返回 'id' 字段吗?

iphone - Insert 语句不检查重复值

nosql - neo4j - 图形数据库和关系数据库?

java - Cassandra 选择按添加日期排序的行

c# - .NET 6 API 终结点的取消行为在本地和 Azure 应用服务 Linux 托管之间有所不同