Существует ли независимая от базы данных платформа nosql для .NET? - PullRequest
5 голосов
/ 28 июня 2010

Я ищу общую инфраструктуру доступа к данным, которая обеспечит переносимость между различными базами данных nosql, такими как SimpleDB, таблицы Azure, Cassandra, CouchDB, MongoDb и т. Д. Я создаю приложение и хочу, чтобы мои клиенты могли используйте тот магазин, который они хотят.

В более реляционном сценарии я бы использовал Linq поверх nHibernate или Entity Framework, но я не нашел эквивалентной структуры для баз данных nosql. Все, что я нашел, - это API-интерфейсы, специфичные для баз данных, хотя, похоже, существует значительная общность. Один существует? Желательно один с LINQ.

Ответы [ 4 ]

4 голосов
/ 28 июня 2010

Нет, эти вещи слишком разные и слишком специфичные (по крайней мере, сейчас).Если вы хотите что-то действительно простое, например, просто обертку для объекта, доступ к которому осуществляется только по ID, у вас может быть надежда.Фактически, если вы посмотрите на NoRM, возможно, будет возможно адаптировать его к различным поставщикам.

Однако, за исключением небольшого базового набора функций, эти базы данных "NoSQL" во многом отличаются.Я имею в виду, как вы реализуете различные функции отображения / уменьшения независимо?Как вы реализуете атомарные операции, когда они поддерживают различные атомарные операции?

В любом случае, мы слишком рано в жизненном цикле NoSQL, чтобы иметь агностическую структуру для всего этого.Azure в основном отказался от своего NoSQL-предложения в пользу «размещенного SQL-сервера».MongoDB, возможно, 20 месяцев, CouchDB все еще на версии 0.11.x, SimpleDB меньше 24 месяцев, Cassandra на версии 0.6.2 и, возможно, регулярно используется в течение нескольких лет.

Мы просто еще не там.

2 голосов
/ 11 августа 2011

Разрабатывается общий язык запросов (называемый UnQL): http://www.unqlspec.org/display/UnQL/Home

1 голос
/ 28 июня 2010

Существуют поставщики LINQ для MongoDB, но я не думаю, что есть общий поставщик .net linq для «всех» nosql db.

Некоторые люди размышляли о родном языке запросов nosql: http://nosql.mypopescu.com/post/731261002/a-common-nosql-query-language

0 голосов
/ 11 сентября 2010

Если у вас есть только основные требования к персистентности, я поддерживаю общий API-интерфейс кэширования с поставщиками для кэширования Memcached, Redis, InMemory и FileSystem.

Он поддерживает только Redis, но у меня есть C # Redis Client , который имеет очень знакомый C # API.Он изначально поддерживает сохраняющиеся типы POCO и предоставляет все усовершенствованные структуры данных на стороне сервера Redis как собственные .NET IList, структуры данных ICollection, поэтому их можно легко использовать в существующих API C #, таких как LINQ и т. Д.

...