Unterschied zwischen Partition Key, Composite Key und Clustering Key in Cassandra?
Ich habe Artikel im Netz gelesen, um die Unterschiede zwischen den folgenden "Schlüssel"-Typen zu verstehen. Aber es scheint mir einfach schwer zu fallen, sie zu verstehen. Beispiele werden auf jeden Fall helfen, das Verständnis zu verbessern.
primary key,
partition key,
composite key
clustering key
483
3
Es gibt eine Menge Verwirrung in diesem Bereich, ich werde versuchen, es so einfach wie möglich zu machen.
Der Primärschlüssel ist ein allgemeines Konzept zur Bezeichnung einer oder mehrerer Spalten, die zum Abrufen von Daten aus einer Tabelle verwendet werden.
Der Primärschlüssel kann SIMPLE sein und sogar inline deklariert werden:
Das bedeutet, dass er aus einer einzigen Spalte besteht.
Der Primärschlüssel kann aber auch COMPOSITE (auch COMPOUND genannt) sein und aus mehreren Spalten gebildet werden.
Bei einem COMPOSITE-Primärschlüssel wird der "erste Teil" des Schlüssels PARTITION KEY genannt (in diesem Beispiel ist key_part_one der Partitionsschlüssel) und der zweite Teil des Schlüssels ist der CLUSTERING KEY (in diesem Beispiel key_part_two)
Bitte beachten Sie, dass sowohl der Partitions- als auch der Clustering-Schlüssel aus mehreren Spalten bestehen können, und zwar wie folgt:
Hinter diesen Namen ...
Weitere Informationen zur Verwendung: DATASTAX DOCUMENTATION
Kleine Verwendungs- und Inhaltsbeispiele
***EINFACH*** SCHLÜSSEL:
tabelleninhalt
COMPOSITE/COMPOUND KEY kann "breite Zeilen" abrufen (d.h. Sie können nur nach dem Partitionsschlüssel abfragen, auch wenn Sie Clustering-Schlüssel definiert haben)
Tabelleninhalt
Aber Sie können mit allen Schlüsseln (sowohl Partition als auch Clustering) abfragen ...
Abfrageausgabe
Wichtiger Hinweis: Der Partitionsschlüssel ist die Mindestangabe, die erforderlich ist, um eine Abfrage mit einer "Where-Klausel" durchzuführen. Wenn Sie einen zusammengesetzten Partitionsschlüssel haben, wie den folgenden
z.B.:
PRIMARY KEY((col1, col2), col10, col4))
Sie können die Abfrage nur durchführen, wenn Sie mindestens die beiden Spalten col1 und col2 angeben, die den Partitionsschlüssel definieren. Die allgemeine Regel für die Abfrage ist, dass Sie mindestens alle Spalten des Partitionsschlüssels übergeben müssen, dann können Sie optional jeden Clustering-Schlüssel in der Reihenfolge hinzufügen, in der sie festgelegt sind.
Die gültigen Abfragen sind also (mit Ausnahme der sekundären Indizes)
Ungültig:
Ich hoffe, das hilft.
Hinzufügen einer zusammenfassenden Antwort, da die akzeptierte Antwort ziemlich lang ist. Die Begriffe "Zeile" und "Spalte" werden im Kontext von CQL verwendet, nicht wie Cassandra tatsächlich implementiert ist.
Beispiele:
: Der Partitionsschlüssel ist
a`.: Der Partitionsschlüssel ist
a, der Clustering-Schlüssel ist
b`.: Der zusammengesetzte Partitionsschlüssel ist
(a, b)`.: Der Partitionsschlüssel ist
a, der zusammengesetzte Clustering-Schlüssel ist
(b, c)`.: Der zusammengesetzte Partitionsschlüssel ist
(a, b), der Clustering-Schlüssel ist
c`.: Der zusammengesetzte Partitionsschlüssel ist
(a, b), der zusammengesetzte Clustering-Schlüssel ist
(c, d)`.In Cassandra, der Unterschied zwischen Primärschlüssel, Partition Key, Composite Key, Clustering Key macht immer einige Verwirrung. Also werde ich im Folgenden erklären und miteinander in Beziehung setzen. Wir verwenden CQL (Cassandra Query Language) für den Zugriff auf Cassandra-Datenbanken. Hinweis:- Die Antwort entspricht der aktuellen Version von Cassandra. Primärschlüssel :- In Cassandra gibt es 2 verschiedene Möglichkeiten, Primärschlüssel zu verwenden.
In CQL ist die Reihenfolge, in der die Spalten für den PRIMARY KEY definiert werden, von Bedeutung. Die erste Spalte des Schlüssels wird Partitionsschlüssel genannt und hat die Eigenschaft, dass alle Zeilen, die denselben Partitionsschlüssel haben (sogar tabellenübergreifend), auf demselben physischen Knoten gespeichert werden. Außerdem wird das Einfügen/Aktualisieren/Löschen von Zeilen, die denselben Partitionsschlüssel für eine bestimmte Tabelle haben, atomar und isoliert durchgeführt. Beachten Sie, dass es möglich ist, einen zusammengesetzten Partitionsschlüssel zu haben, d. h. einen Partitionsschlüssel, der aus mehreren Spalten besteht, wobei ein zusätzlicher Satz von Klammern verwendet wird, um zu definieren, welche Spalten den Partitionsschlüssel bilden.
Partitionierung und Clustering Die PRIMARY KEY-Definition besteht aus zwei Teilen: dem Partitionsschlüssel und den Clustering-Spalten. Der erste Teil entspricht dem Zeilenschlüssel der Speichermaschine, während der zweite Teil zur Gruppierung der Spalten in einer Zeile verwendet wird.
Hier ist device_id der Partitionsschlüssel und checked_at der Cluster_key.
Wir können mehrere Cluster-Schlüssel sowie Partitionsschlüssel haben, die von der Deklaration abhängen.