Welche NoSQL-Lösungen gibt es für .NET? [c#]


Answers

Sie geben nicht an, was Ihre Anforderungen sind (dh muss auf Windows laufen), also werde ich die 2 werfen, die ich erfolgreich benutzt habe.

MongoDB ist eine Dokumentendatenbank, die vordefinierte Binärdateien für 32bit und 64bit Windows hat. Das ist immer eine schöne Sache zu sehen.

Der Clientzugriff kann mit diesem Treiber erfolgen . Es ist kein offizieller Kunde aus dem MongoDB-Team selbst, aber ich habe es benutzt. Und in meinem Gebrauch hat es unterstützt, was ich brauche. Es gibt ein paar LINQ-Sachen im Repo , aber ich habe es nicht ausprobiert.

// from the wiki
using MongoDB.Driver; 
Mongo db = new Mongo(); 
db.Connect(); //Connect to localhost on the default port. 
Document query = new Document(); 
query["field1"] = 10; 
Document result = db["tests"]["reads"].FindOne(query); 
db.Disconnect();

Ich konnte sowohl Client als auch Server unter Windows ohne Probleme ausführen.

CouchDB ist auch eine Option. Es gibt einige native .NET Clients, aber alle CouchDB ist mit REST fertig. Also HttpWebRequest / Response wird dir hier gut dienen. Ein Blog-Beitrag von Rinat Abdullin zeigt, wie einige der Stücke zusammen passen. Es gibt auch CouchBrowse . Ich habe noch keinen nativen Client benutzt. GET / PUT / POST haben sehr gut für mich gearbeitet.

Ich habe CouchDB auf Windows zu arbeiten (es ist in Erlang geschrieben), aber meine Performance-Tests zeigten, dass Linux schneller war. Meine Vermutung ist vielleicht, wie Erlang selbst implementiert ist? Ich weiß nicht. Aber es läuft auf Windows und Linux. Und ich konnte die Linux-Instanz von Windows einfach anrufen (es ist nur REST).

Das nächste habe ich noch nie probiert, aber ich habe einen Freund, der ein Committer auf dem HBase-Projekt ist . Und er denkt, dass die Thrift-Schnittstelle zu HBase von .NET verwendbar sein sollte (da Thrift C # erzeugt). Die große Sache hier ist die Tatsache, dass Hadoop / HBase mehr auf * nix Umgebungen konzentriert sind. Aber es gibt keinen Grund, warum du HBase nicht auf einem Linux-Cluster ausführen kannst und damit eine Verbindung zu .NET auf Windows für die Produktion herstellen kannst. Für die Entwicklung können Sie HBase unter Windows mit Cygwin ausführen. Eine gute Anleitung, wie man das macht, ist hier .

Es gibt andere (Valdemort, Cassandra, etc.), aber ich habe keine wirkliche Erfahrung mit ihnen, also werde ich nicht vorgeben zu sagen, wie sie sich mit C # / NET integrieren. Die große Sache zu betrachten ist, was ihre API aussieht - wenn es eine Thrift-Schnittstelle, REST, etc. hat, sollten Sie in der Lage sein, mit ihnen ohne Probleme zu verbinden. Vielleicht ist es nicht möglich, den NoSQL Service auf Windows OS so effizient wie Linux auszuführen, aber vielleicht ist das keine große Sache.

EDIT Geändert, dass es einige native CouchDB Clients gibt. Ich bin nicht vertraut mit ihnen, wie ich immer rohe HTTP und meine eigenen kleinen Wrapper Klassen verwenden.

Question

Welche NoSQL- Lösungen gibt es für .NET?




RavenDB von Ayende ist ein .NET basiertes Backend und Client NoSQL (speziell Dokumentendatenbank). Die Quelle ist frei verfügbar. Die Leistung ist auf Augenhöhe mit MongoDB (letzte Tests waren um die 6000 Einsätze pro Sekunde). Die Indexierung erfolgt sehr gut mit LINQ . REST- Schnittstelle, Web-Benutzeroberfläche. Sehr sehr schlau in der Tat.

RavenDB kann als Service, in IIS oder über eine Konsole (exe) laufen. Es erfordert .NET 4 für serverseitig.

Client kann .NET 3.5 sein. In der Tat wird der Client in Mono laufen, glaube ich.

Http://groups.google.com/group/ravendb/web - all die Dokumentation gibt es

Ich ging zum Start Event, erstaunliche Features hinzugefügt und vieles mehr zu kommen. Jeder war von Raven weggeblasen, also ist es definitiv einer auschecken.




Werfen Sie einen Blick auf db4o . Es ist objektbasiert, einfach, in sich geschlossen (wie sqlite3) arbeitet mit LINQ und es ist Open Source.




Microsoft veröffentlicht bald (Ende 2011 Quartal) eine "NoSQL" -Lösung auf SQL Azure.

Es basiert auf der neuen Föderations-Funktion und verwendet XML für semi-strukturierte Speicherung .

[Bearbeiten] Vor dem Downvoting lesen Sie die Artikel, die erklären, wie Sie "NoSQL" -Funktionen in SQL Azure verwenden, die offensichtlich perfekte .NET / C # / LINQ-Integration hat!




Das Lucene.net- Projekt würde Ihrer allgemeinen Anforderung entsprechen. Es bietet eine API zum Speichern und Indizieren von Dokumenten, Speichern der Datenbank auf einem Dateisystem.

Das Projekt ist in erster Linie eine Volltextsuchbibliothek, die ursprünglich in Java geschrieben wurde und später auf .NET portiert wurde. Deshalb hat es keine Linq-Unterstützung, ist aber sehr gut etabliert und ein recht ausgereiftes Projekt.

Ein Nachteil könnte die Komplexität des Projekts sein, es klingt wie Sie auf der Suche nach Plug-and-Play-Lösung sind, aber das Lucene-Projekt erfordert, dass Sie ein wenig Zeit verbringen, um die Besonderheiten der Volltextindizierung und -suche zu verstehen.

Ein wichtiges Plus ist jedoch die Leistung der Lucene-Bibliothek ist schnell, vor allem für gleichzeitige Suche über große Datensätze so ist eine großartige Lösung für den Betrieb einer eigenständigen Website ohne die Notwendigkeit, einen Datenbank-Server zu laufen.




Db4o ist großartig, aber bewusst sein, dass es eine Open-Source-Version hat, aber es ist nicht kostenlos für kommerzielle Nutzung.




Amazon liefert ein .NET SDK für die Anbindung an seine SimpleDB (sowie den Rest der AWS- Familie von Diensten).

Http://aws.amazon.com/simpledb/

Http://aws.amazon.com/sdkfornet/

Der beste Teil: Eine freie Schicht in der Cloud (ab sofort: "Neue und bestehende Kunden erhalten 25 SimpleDB Maschinenstunden und 1 GB Speicher kostenlos jeden Monat.")