Primärschlüssel: Wie in vielen Datenbanken ist es ein eindeutiger Schlüssel in einer Tabelle, im Wesentlichen bedeutet dies, dass für zwei beliebige Datensätze in einer Tabelle der Primärschlüssel nicht gleich sein kann. Die Datenbank, in diesem Fall Cassandra, ist so konzipiert, dass diese Bedingung in allen Situationen erfüllt ist. Wenn Sie also einen Datensatz mit PK1 als Primärschlüssel schreiben möchten und bereits ein Datensatz mit demselben Schlüssel PK1 vorhanden ist, wird er überschrieben, sonst wird ein neuer Datensatz erstellt.
Partitionsschlüssel: Es handelt sich um eine Struktur verteilter Datenbanken (bei der die Daten einer einzelnen Tabelle in mehrere Teile, sogenannte Partitionen, aufgeteilt werden). Diese Partitionen werden dann mithilfe einer Verteilungsstrategie (in der Regel dem Hash des Partitionsschlüssels) über Knoten verteilt, um unendliche Skalierungsmöglichkeiten zu erhalten. Der Partitionsschlüssel ist eine Gruppe von Spalten eines Datensatzes, die bestimmt, zu welcher Partition dieser Datensatz gehört. Somit bestimmt der Partitionsschlüssel den physischen Speicherort eines Datensatzes über einen verteilten Cluster von Knoten hinweg.
Clustering Key: Der Clustering Key bestimmt die Reihenfolge von Datensätzen in einer bestimmten Partition. Wenn sich also 10.000 Datensätze in einer Partition befinden, bestimmt der Clustering Key die Reihenfolge, in der diese 10.000 Datensätze in geordneter Weise physisch gespeichert werden.
Beispiel:
Angenommen, Sie haben eine Tabelle in Cassandra, um Verkaufsereignisse einer E-Commerce-Website zu speichern.
[order_id, item_id, quantity, amount, payment_id, status, order_time, PRIMARY KEY( (order_id, item_id), order_time)] with clustering ORDER BY (order_time DESC);
Also hier ist,
Der Primärschlüssel ist ((order_id, item_id), order_time)
und bestimmt die Eindeutigkeit eines Datensatzes in der Tabelle.
Der Partitionsschlüssel ist (order_id, item_id)
, der Hash dieses Tupels bestimmt die Partition dieses Datensatzes und seinen Standort im verteilten Cluster.
Der Clustering Key ist order_time
, für eine bestimmte Partition werden die Datensätze nach order_time
absteigend geordnet. Wenn Sie also eine Limit 1
cql-Abfrage für eine bestimmte Partition durchführen, erhalten Sie immer den Datensatz mit dem maximalen Zeitstempel.
Ein zusammengesetzter Schlüssel ist nur ein Begriff, um zu spezifizieren, dass der Primärschlüssel einer Tabelle nicht aus einer einzelnen Spalte, sondern aus mehreren Spalten besteht.
Der Primärschlüssel ist eine Kombination aus Partition und Clustering Key.