【问题标题】:Is there a database agnostic nosql framework for .NET?.NET 是否有与数据库无关的 nosql 框架?
【发布时间】:2010-06-28 00:00:10
【问题描述】:

我正在寻找一个通用的数据访问框架,该框架将提供跨各种 nosql 数据库(如 SimpleDB、Azure Tables、Cassandra、CouchDB、MongoDb 等)的可移植性。我正在构建一个应用程序,并希望我的客户能够使用他们想要的任何 nosql 存储。

在更相关的场景中,我会在 nHibernate 或实体框架上使用 Linq,但我还没有找到适用于 nosql 数据库的等效框架。我发现的只是数据库特定的 API,尽管似乎有很大的共性。一个存在吗?最好使用 LINQ。

【问题讨论】:

    标签: mongodb couchdb azure-table-storage amazon-simpledb nosql


    【解决方案1】:

    不,这些事情太不同了,太具体了(至少现在是这样)。如果您想要真正简单的东西,例如仅通过 ID 访问的对象的包装器,那么您可能会有希望。事实上,如果你看一下 NoRM,它可能会适应不同的供应商。

    但是,除了一小部分核心功能之外,这些“NoSQL”数据库在许多方面都大相径庭。我的意思是,你如何不可知地实现各种 map/reduce 函数?当它们支持不同的原子操作时,您如何实现原子操作?

    不管怎样,我们在 NoSQL 生命周期中还为时过早,无法为所有这些建立一个不可知论的框架。 Azure 基本上放弃了他们的 NoSQL 产品,转而支持“托管 SQL 服务器”。 MongoDB 可能有 20 个月的历史,CouchDB 仍然是 0.11.x 版本,SimpleDB 不到 24 个月,Cassandra 是 0.6.2 版本,并且可能已经正常使用了几年。

    我们只是还没有。

    【讨论】:

    • 那么现在的核心通用特性集是什么?它真的只是一个通过它的对象 id 访问的对象吗?顺便提一句。 Azure 没有放弃表,他们只是提供了关系和 NoSQL。与亚马逊对 RDS 所做的相同。
    • 至此,我想你已经掌握了基本的 CRUD 操作。 Map / Reduce 甚至在 Couch 和 Mongo 之间也存在显着差异(它们相对相似)。列出的一些产品支持版本控制,但 Mongo 不支持。 Couch 有“视图”的概念,这是 map-reducing 的核心,但 Mongo 只是将 map-reduce 输出扔到一个新的集合中。因此,您可能可以将其“抽象”掉,但这是很多抽象,b/c 他们在做不同的事情。
    【解决方案2】:

    一种通用查询语言(称为 UnQL)正在开发中:http://www.unqlspec.org/display/UnQL/Home

    【讨论】:

      【解决方案3】:

      MongoDB 有 LINQ 提供程序,但我认为“所有”nosql db 没有通用的 .net linq 提供程序。

      有人考虑过一种通用的 nosql 查询语言:http://nosql.mypopescu.com/post/731261002/a-common-nosql-query-language

      【讨论】:

      • 那么,结构化的“无结构化查询语言”查询语言?嗯……有点没抓住重点,不是吗? :-)
      • @Warren 太讽刺了
      【解决方案4】:

      如果您只有基本的持久性持久性要求,我会维护一个common caching API,其中包含用于 Memcached、Redis、InMemory 和 FileSystem 缓存的提供程序。

      它只支持 Redis,但我有一个 C# Redis Client,它有一个非常熟悉的 C# API。它原生支持持久化 POCO 类型,并将 Redis 的所有高级服务器端数据结构公开为原生 .NET IList、ICollection 数据结构,因此它们可以轻松用于现有的 C# API,如 LINQ 等。

      【讨论】:

        猜你喜欢
        • 2011-01-05
        • 2011-05-08
        • 2012-02-09
        • 2010-12-29
        • 2012-09-03
        • 2017-03-19
        • 2019-07-02
        • 1970-01-01
        • 2010-12-09
        相关资源
        最近更新 更多