Frage

Ich suche nach einem gemeinsamen Datenzugriff Rahmen, die Portabilität über verschiedene NoSQL-Datenbanken wie SimpleDB, Azure Tabellen bieten wird, Cassandra, CouchDB, MongoDB, etc. Ich eine App baue und würde meine Kunden gerne in der Lage sein Verwendung, die jemals nosql speichern sie wollen.

In einer relationalen Szenario würde ich Linq über nHibernate oder Entity Framework verwenden, aber ich habe festgestellt, kein Äquivalent Rahmen für NoSQL-Datenbanken. Alles, was ich gefunden habe, ist Datenbank spezifischer API ist, obwohl es scheint signifikante Gemeinsamkeit zu sein. Hat ein exist? Vorzugsweise ist ein mit LINQ.

War es hilfreich?

Lösung

Nein diese Dinge sind zu unterschiedlich und zu spezifisch (zumindest jetzt). Wenn Sie etwas wollte wirklich einfach, wie nur ein Wrapper auf ein Objekt, das nur durch ID zugegriffen wird, dann können Sie eine Hoffnung haben. In der Tat, wenn man sich NoRM sucht, kann es möglich sein, dass verschiedene Anbieter anzupassen.

Doch außerhalb eines kleinen Kern von Merkmalen, diese „NoSQL“ Datenbanken sind ganz anders in vielerlei Hinsicht. Ich meine, wie implementieren Sie die verschiedenen Map / Reduce-Funktionen agnostisch? Wie man atomare Operationen implementieren, wenn sie unterschiedliche atomare Operationen unterstützen?

So oder so, wir sind viel zu früh in dem NoSQL-Lebenszyklus einen Agnostiker Rahmen für all dies zu haben. Azure sank im Grunde ihr NoSQL-Angebot für „hosted SQL Server“. MongoDB ist vielleicht 20 Monate alt, CouchDB noch auf Version 0.11.x ist, SimpleDB weniger als 24 Monate alt, Cassandra 0.6.2 auf Version ist und in regelmäßigem Gebrauch für ein paar Jahre vielleicht gewesen.

Wir sind nur noch nicht da.

Andere Tipps

Eine gemeinsame Abfragesprache (genannt UnQL) entwickelt wird: http: //www.unqlspec. org / Anzeige / UnQL / Startseite

Es gibt LINQ-Provider für MongoDB, aber ich glaube nicht, dass es ein allgemeines .net linq-Provider ‚all‘ nosql DBs.

Einige Leute über eine generische nosql Abfragesprache in Betracht gezogen haben: http://nosql.mypopescu.com/post/731261002/a-common-nosql-query-language

Wenn Sie nur grundlegende Ausdauer haben Ausdauer Anforderungen, halte ich ein gemeinsames Caching API mit Anbietern für Memcached, Redis, InMemory und Filesystem-Caching.

Es unterstützt nur Redis, aber ich habe einen C # Redis-Client dass hat eine sehr vertraut C # API. Es unterstützt natives POCO-Typen persistierenden und setzt alle Redis fortschrittlicher serverseitige Datenstrukturen als native .NET IList, ICollection Datenstrukturen, so dass sie leicht in bestehenden C # APIs wie LINQ verwendet werden können, etc.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top