Ich weiß, dass es drei verschiedene, beliebte Arten von Nicht-SQL-Datenbanken gibt.
- Schlüssel / Wert: Redis, Tokyo Cabinet, Memcached
- ColumnFamily: Cassandra, HBase
- Dokument: MongoDB, CouchDB
Ich habe lange Blogs darüber gelesen, ohne so viel zu verstehen.
Ich kenne relationale Datenbanken und verstehe dokumentbasierte Datenbanken wie MongoDB / CouchDB.
Könnte mir jemand sagen, was die Hauptunterschiede zwischen diesen und den beiden ersteren auf der Liste sind?
Antworten:
Die Hauptunterschiede sind das Datenmodell und die Abfragefunktionen.
Schlüsselwertspeicher
Der erste Typ ist sehr einfach und bedarf wahrscheinlich keiner weiteren Erklärung.
Datenmodell: mehr als Schlüsselwertspeicher
Obwohl es einige Debatten über den richtigen Namen für Datenbanken wie Cassandra gibt, möchte ich sie als Spaltenfamiliengeschäfte bezeichnen . Obwohl Schlüssel-Wert-Paare ein wesentlicher Bestandteil von Cassandra sind, ist dies nicht nur darauf beschränkt. Sie können Schlüssel-Wert-Paare verschachteln, sodass sich ein Schlüssel auf mehrere Unterschlüssel-Wert-Paare beziehen kann.
Sie können Schlüssel-Wert-Paare jedoch nicht unbegrenzt verschachteln. Sie sind auf drei Ebenen (Spaltenfamilien) oder vier Verschachtelungsebenen (Supersäulenfamilien) beschränkt. Für den Fall, dass der Begriff Spaltenfamilie nicht klingelt, siehe WTF ist ein SuperColumn- Artikel. Dies ist eine gute Erklärung für das Datenmodell von Cassandra.
Dokumentdatenbanken wie CouchDB und MongoDB speichern ganze Dokumente in Form von JSON-Objekten . Sie können sich diese Objekte als verschachtelte Schlüssel-Wert-Paare vorstellen. Im Gegensatz zu Cassandra können Sie Schlüssel-Wert-Paare so oft verschachteln, wie Sie möchten. JSON unterstützt auch Arrays und versteht verschiedene Datentypen wie Zeichenfolgen, Zahlen und Boolesche Werte.
Abfragen
Ich glaube, Spaltenfamiliengeschäfte können nur per Schlüssel oder durch Schreiben von Funktionen zur Kartenreduzierung abgefragt werden. Sie können die Werte nicht wie in einer SQL-Datenbank abfragen. Wenn Ihre Anwendung komplexere Abfragen benötigt, muss Ihre Anwendung Indizes erstellen und verwalten, um auf die gewünschten Daten zugreifen zu können.
Dokumentdatenbanken unterstützen auch Abfragen nach Schlüssel- und Kartenreduzierungsfunktionen, ermöglichen es Ihnen jedoch auch, grundlegende Abfragen nach Wert durchzuführen, z. B. "Geben Sie mir alle Benutzer mit mehr als 10 Beiträgen". Dokumentendatenbanken sind auf diese Weise flexibler.
quelle
Ayende hat eine nette Erklärung bezüglich des Unterschieds zwischen Schlüsselwert- und Dokumentendatenbank gegeben:
quelle