Я ищу платформу доступа общих данных, которая обеспечит мобильность через различные nosql базы данных как SimpleDB, Azure Таблицы, Cassandra, CouchDB, MongoDb, и т.д. Я создаю приложение и хотел бы, чтобы мои клиенты смогли использовать, который когда-либо хранят nosql, они хотят.
В более реляционном сценарии я использовал бы Linq по nHibernate или Платформе Объекта, но я не нашел эквивалентную платформу для nosql баз данных. Все, что я нашел, является базой данных определенный API даже при том, что, кажется, существует значительная общность. Каждый существует? Предпочтительно один с LINQ.
Нет, эти вещи слишком разные и слишком специфические (по крайней мере, сейчас). Если вам нужно что-то действительно простое, например, просто оболочка для объекта, доступ к которому осуществляется только по идентификатору, тогда у вас может быть надежда. Фактически, если вы посмотрите на NoRM, возможно, это удастся адаптировать к различным поставщикам.
Однако, помимо небольшого основного набора функций, эти "NoSQL" базы данных во многих отношениях сильно отличаются. Я имею в виду, как вы агностически реализуете различные функции map / reduce? Как вы реализуете атомарные операции, если они поддерживают разные атомарные операции?
В любом случае, мы слишком рано в жизненном цикле NoSQL, чтобы иметь независимую структуру для всего этого. Azure по сути отказалась от предложения NoSQL в пользу «размещенного SQL-сервера». MongoDB может быть 20 месяцев, CouchDB все еще находится на версии 0.11.x, SimpleDB менее 24 месяцев, Cassandra находится на версии 0.6.2 и, возможно, регулярно используется в течение нескольких лет.
Просто мы еще не достигли цели.
Существуют LINQ-провайдеры для MongoDB, но я не думаю, что существует универсальный .net linq-провайдер для "всех" nosql-баз данных.
Некоторые люди размышляли об общем языке запросов для nosql: http://nosql.mypopescu.com/post/731261002/a-common-nosql-query-language