Was bedeutet "Dokumentorientiert" vs. Schlüsselwert, wenn es um MongoDB vs. Cassandra geht?

Antworten:

153

Ein Schlüsselwertspeicher bietet das einfachste Datenmodell und ist genau das, was der Name andeutet: Es ist ein Speichersystem, das durch einen Schlüssel indizierte Werte speichert. Sie können nur nach Schlüsseln abfragen, und die Werte sind undurchsichtig . Der Store weiß nichts über sie. Dies ermöglicht sehr schnelle Lese- und Schreibvorgänge (ein einfacher Festplattenzugriff), und ich sehe dieses Modell als eine Art nichtflüchtigen Cache (dh gut geeignet, wenn Sie schnelle Zugriffe per Schlüssel auf langlebige Daten benötigen).

Eine dokumentenorientierte Datenbank erweitert das vorherige Modell und Werte werden in einem strukturierten Format (ein Dokument, daher der Name) gespeichert, das die Datenbank verstehen kann. Ein Dokument kann beispielsweise ein Blog-Beitrag sein und die Kommentare und Tags werden denormalisiert gespeichert. Da die Daten transparent sind , kann der Speicher mehr Arbeit leisten (z. B. Indizierungsfelder des Dokuments), und Sie sind nicht auf die Abfrage nach Schlüsseln beschränkt. Wie ich bereits angedeutet habe, ermöglichen solche Datenbanken das Abrufen der Daten einer ganzen Seite mit einer einzigen Abfrage und eignen sich gut für inhaltsorientierte Anwendungen (weshalb große Websites wie Facebook oder Amazon sie mögen).

Andere Arten von NoSQL-Datenbanken umfassen spaltenorientierte Speicher , Diagrammdatenbanken und sogar Objektdatenbanken . Dies geht jedoch über die Frage hinaus.

Siehe auch

Pascal Thivent
quelle
2
Schlüsselwertspeicher müssen nicht mit einem Festplattenzugriff durchgeführt werden, und das Aufrufen als nichtflüchtig ist in einigen Implementierungen falsch. Sie können einen Schlüsselwertspeicher im Speicher ohne Durchschreiben oder Zurückschreiben auf ein nichtflüchtiges Speichermedium erstellen. Das Aufrufen der Daten mit langer Lebensdauer ist ebenfalls irreführend, da die Lebensdauer der Daten nichts mit der Art und Weise zu tun hat, in der Sie sie abrufen.
Anthony
17

Nun, ich habe NoSQL im letzten Monat selbst untersucht. Ich denke, es könnte allgemein so etwas wie gesagt werden

  • KV-Speicher kennen den Wertinhalt, der tatsächlich für einen Schlüssel gespeichert ist, nicht
  • Mit Dokumentbasiert können Sie Sekundärindizes innerhalb des Wertinhalts definieren, da die Datenbank die Dokumentstruktur kennt (z. B. Tags eines Blogposts).
  • NoSQL-Lösungen verfügen jeweils über spezifische Funktionen, die berücksichtigt werden sollten, z
    • Spezielle Datentypen in einem KV-Store (z. B. Sets mit Left / Right Pop / Push wie in Redis)
    • Einfacher Scale-Up / Down-Cluster, wie Riak sagt (ich habe es noch nicht versucht ...)
    • steckbarer Datenspeicher wie in Voldemort
    • integrierte Webkonfiguration und Web-App-Unterstützung wie in CouchDB / couchapp
Niels Wind
quelle
2

Eine dokumentenorientierte Datenbank oder ein Dokumentenspeicher dient zum Speichern, Abrufen und Verwalten dokumentenorientierter Informationen, bei denen es sich um halbstrukturierte Daten handelt. Der Schlüsselwertspeicher ist ein Erbe der dokumentenorientierten Datenbank. Der Unterschied liegt in der Art und Weise, wie die Daten verarbeitet werden. In einem Schlüsselwertspeicher werden die Daten als inhärent undurchlässig für die Datenbank angesehen, während ein dokumentorientiertes System auf der internen Struktur des Dokuments beruht, um Metadaten zu extrahieren, die das Datenbankmodul zur weiteren Optimierung verwendet.

Wenn wir uns mit dem Unterschied zwischen MOngoDb und Cassandra befassen. MongoDB verhält sich ähnlich wie eine relationale Datenbank. Das Datenmodell besteht aus einer Datenbank auf oberster Ebene, dann Sammlungen, die beispielsweise Tabellen in MySQL ähneln, und Dokumenten, die in der Sammlung enthalten sind, wie Zeilen in MySQL. Jedes Dokument hat ein Feld und einen Wert, wobei dies Spalten und Werten in MySQL ähnelt. Felder können einfache Schlüssel / Werte sein, z. B. {'name': 'David Mytton'}, aber sie können auch andere Dokumente enthalten, z. B. {'name': {'first': David, 'last': 'Mytton'}}. In Cassandra werden Dokumente als „Spalten“ bezeichnet, die eigentlich nur einen einzigen Schlüssel und Wert darstellen. zB {'Schlüssel': 'Name', 'Wert': 'David Mytton'}. Es gibt auch ein Zeitstempelfeld für die interne Replikation und Konsistenz. Der Wert kann ein einzelner Wert sein, kann aber auch eine andere „Spalte“ enthalten. Diese Spalten sind dann in Spaltenfamilien vorhanden, die Daten basierend auf einem bestimmten Wert in den Spalten sortieren, auf den durch einen Schlüssel verwiesen wird.

Auf der obersten Ebene gibt es jedoch einen Schlüsselbereich, der der MongoDB-Datenbank ähnelt.

Big Data Guy
quelle