Ich suche nach einer Datenbank, die mit einer node.js-App gekoppelt werden kann. Ich gehe davon aus, dass eine json / nosql-Datenbank einer relationalen Datenbank vorzuziehen ist [ich kann auf eine nicht übereinstimmende json / sql-Impedanz verzichten]. Ich denke darüber nach:
- couchdb
- mongodb
- redis
Hat jemand irgendwelche Ansichten / Kriegsgeschichten zur Kompatibilität / Bereitstellbarkeit der oben genannten mit node.js? Irgendwelche klaren Favoriten?
Antworten:
Ich bin der Entwickler des Mongodb-Treibers für node.js. Ich benutze Mongodb für meine eigenen Projekte und war sehr zufrieden mit der Leistung von Mongodb.
Mongodb-Treiber für node.js.
(Schamloser Stecker) Sie können jederzeit Fragen zum Treiber unter stellen
Google-Gruppe für den Mongodb-Treiber
oder hier bei Stackoverflow
Viel Spaß mit node.js. Ich liebe die Plattform absolut: D.
quelle
Obwohl Ihre Wahl sehr stark von den Funktionen abhängt, die Sie anstreben, schätze ich CouchDB für seine native JavaScript-Umgebung sehr. Sowohl Daten als auch Ansichten sind in JavaScript geschrieben, sodass sie meiner Meinung nach sehr gut zu node.js passen.
Es gibt auch verschiedene Client-Bibliotheken , einige sind eher niedrig, andere wirklich sehr abstrahiert.
Aber wie gesagt, Sie sollten auch über die Funktionen nachdenken, die Sie für Ihre Datenbank benötigen.
quelle
Redis ist eine beliebte Wahl. Was Sie suchen, ist ein Datenbanktreiber, der nicht blockiert.
Die von Ihnen aufgelisteten Datenbanken sind alle sehr unterschiedlich. Redis greift die Idee von Schlüsselwertspeichern auf und führt sie aus. Dabei werden verschiedene Datentypen und Methoden zum Abfragen von Daten hinzugefügt. Die Leute bemerken oft, dass Redis auch sehr gut verkleinert werden; Dies bedeutet, dass der Overhead trotz der Leistungsfähigkeit sehr gering ist.
Hier ist eine Liste der verfügbaren Datenbankmodule: http://wiki.github.com/ry/node/modules#database
quelle
Ich mag CouchDB wirklich. Es ist eine Art Lernkurve, aber Ansichten sind wirklich mächtig, wenn Sie erst einmal verstanden haben, wie man sie verwendet. Es gibt ein Modul namens Cradle auf Github und Npm , mit dem man sehr einfach arbeiten kann. Ich konnte nicht testen, wie schnell es ist, aber es ist sehr flexibel (Sie können auch in einem Browser auf Ihre Daten zugreifen, wenn Sie möchten).
Das Hauptproblem hierbei ist, welches Datenbankdesign für Ihre Anwendung sinnvoll ist. Haben Sie Daten, die größtenteils von zentraler Bedeutung sind? Wenn ja, verwenden Sie Redis. Haben Sie Daten, bei denen nicht alle Dokumente unbedingt dieselben Felder haben? Verwenden Sie in diesem Fall eine NoSQL-Datenbank wie CouchDB.
Das nächst schlechtere an der Verwendung einer blockierenden Datenbank ist die Verwendung der falschen Datenbank für Ihre Daten. CouchDB wird von Apache verwaltet, sodass Sie wissen, dass es von guter Qualität ist. Es ist jedoch nicht sinnvoll, es zu verwenden, wenn Ihre Daten in einer SQL-Tabelle oder einem einfachen Schlüsselwertspeicher sinnvoller sind.
Denken Sie an Ihren Anwendungsfall. Möchten Sie eher eine Volltextsuche durchführen, nur Daten nach Schlüssel abrufen oder Bereiche von Dokumenten mit ähnlichen Attributen abrufen?
quelle
Vielleicht möchten Sie Persistenz , Persistenz- / Datenbanksystem auf hoher Ebene für node.js überprüfen.
von thechangelog.com :
quelle
Haftungsausschluss: Ich bin der Autor.
Vielleicht werfen Sie einen Blick auf BarricaneDB hier angekündigt .
quelle
Ich bin mir nicht sicher, ob die richtige Lösung darin besteht, sich ausschließlich auf die Zuordnung einer Datenbank zu Ihrem Webstack zu konzentrieren, sondern auch anwendungsspezifische Anforderungen zu berücksichtigen.
Analysieren Sie Twitter-Feeds oder andere Daten mit hohem Datenvolumen auf Muster, benötigen jedoch keine Transaktionsunterstützung? Dann wählen Sie etwas sehr schnell.
Möchten Sie nur einige wirklich grundlegende Informationen in ein paar Tabellen speichern und es handelt sich derzeit nicht um eine "unternehmensorientierte" App? Wählen Sie dann etwas Cooles aus, um es zu lernen.
Vielleicht werden Sie Daten speichern, die für einen Client wirklich wichtig sind, robust sind, transaktional sein müssen und eine Live-Replikation auf Remote-Hosting-Einrichtungen usw. haben. Dann schauen Sie sich vielleicht etwas wie postgresql an. Es würde nicht so gut spiegeln, aber der node.js-Treiber funktioniert ziemlich gut und wenn Sie keine Todesangst vor SQL haben, bekommt er ziemlich einfach das, was Sie wollen.
Was meine eigene Meinung betrifft, denke ich, dass die Verwendung eines neueren Stacks wie node.js (im Vergleich zu herkömmlichen Frameworks in PHP / Java) genug "neue" Komplexität hinzufügt, dass man nicht alle zusätzlichen Ebenen auf einmal hinzufügen sollte. Dies ist ein guter Artikel, in dem Folgendes besprochen wird:
http://nodeguide.com/convincing_the_boss.html
quelle
Ich werde aus meiner Erfahrung sprechen: CouchDB hat eine bestimmte Lernkurve, während MongoDB für mich sehr einfach zu erlernen und einzurichten war. Ich habe noch nie Redis benutzt. Ich schlage MongoDB vor - aber diesen vielleicht schamlosen Fanboyismus - ich habe keine Zahlen, heh, nur Ansprüche auf Benutzerfreundlichkeit.
quelle
Dirty ist ein weiterer Flat-File-Schlüsselwertspeicher. Wie der Name schon sagt, ist es eine schnelle und schmutzige, aber performante Lösung für einfache Fälle. Ich bin nicht der Autor :)
quelle
Noch etwas zu beachten:
Globals: http://globalsdb.org
GT.M ( einen Ausgangspunkt finden Sie unter https://github.com/robtweed/node-mwire )
M / DB (ein Open Source-Klon von SimpleDB): https://github.com/robtweed/node-mdb und Sie können mit dem SimpleDB-Client von Node.js darauf zugreifen: https://github.com/rjrodger/simpledb
quelle
Ich fand CouchDB sehr einfach zu meistern. Im Internet sind viele E-Books verfügbar, in denen Sie lernen, wie Sie CouchDB mit Node.js verwenden .
Ich fand dieses Buch sehr nützlich, um CouchDB zu lernen.
Für die Verwendung von CouchDB mit Node.js verwende ich das NANO- Modul.
CouchDB kann entweder auf Iriscouch oder Cloudant gehostet werden .
quelle