Вопрос

Я ищу общую структуру доступа к данным, который обеспечит переносимость в различных базах данных NoSQL, таких как SimpleDB, Azure Tables, Cassandra, Couchdb, MongoDB и т. Д. Я строю приложение и хотел бы, чтобы мои клиенты могли бы использовать, что когда-либо магазин NoSQL они хотят.

В более реляционном сценарии я бы использовал LINQ on Nibernate или Entity Framework, но я не нашел эквивалентную структуру для баз данных NoSQL. Все, что я нашел, это конкретная база данных API, хотя кажется значительной общности. Существует ли один? Предпочтительно один с linq.

Это было полезно?

Решение

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

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

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

Мы еще не там еще не там.

Другие советы

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

Для Mongodb есть поставщики LINQ, но я не думаю, что есть универсальный провайдер .NET LINQ для «Все» NoSQL DB.

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

Если у вас есть только основные требования настойчивости настойчивости, я поддерживаю Обычное кеширование API С провайдерами для MEMCACHED, REDIS, INMEMORY и FILESSYSTEM CACCHING.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top