6

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

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

4

4 回答 4

4

No these things are too different and too specific (at least right now). If you wanted something really simple, like just a wrapper on an object that is only accessed by ID, then you may have a hope. In fact, if you look at NoRM, it may be possible to adapt that to various providers.

However, outside of a small core set of features, these "NoSQL" databases are quite different in many regards. I mean, how do you implement the various map/reduce functions agnostically? How do you implement atomic operations when they support different atomic operations?

无论哪种方式,我们都处于 NoSQL 生命周期的早期阶段,无法为所有这些提供一个不可知的框架。Azure 基本上放弃了他们的 NoSQL 产品,转而支持“托管 SQL 服务器”。MongoDB 可能有 20 个月的历史,CouchDB 仍然是 0.11.x 版本,SimpleDB 不到 24 个月,Cassandra 是 0.6.2 版本,并且可能已经正常使用了几年。

我们只是还没有。

于 2010-06-28T04:22:42.827 回答
2

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

于 2011-08-11T11:29:00.337 回答
1

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

Some people have contemplated about a generic nosql query language: http://nosql.mypopescu.com/post/731261002/a-common-nosql-query-language

于 2010-06-28T03:47:13.560 回答
0

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

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

于 2010-09-11T15:26:21.547 回答