Auf einem physischen Knoten werden Zeilen für einen bestimmten Partitionsschlüssel in der Reihenfolge gespeichert, die durch die Clustering-Schlüssel induziert wird, wodurch das Abrufen von Zeilen in dieser Clustering-Reihenfolge besonders effizient ist. http://cassandra.apache.org/doc/cql3/CQL.html#createTableStmt Welche Art von Bestellung wird durch Clustering-Schlüssel ausgelöst?Clustering Keys in Cassandra
Antwort
Ihre Clustering Schlüssel sind
Angenommenk1 t1, k2 t2, ..., kn tn
wo ki der i-te Schlüsselname ist und ti die i-te Schlüsseltyp. Dann werden die Auftragsdaten in einer lexikografischen Reihenfolge gespeichert, wobei jede Dimension unter Verwendung des Komparators für diesen Typ verglichen wird.
So (a1, a2, ..., an) < (b1, b2, ..., bn), wenn b1 a1 < Verwendung t1 Komparator bzw. a1 = b1 und a2 b2 < Verwendung t2 Komparator oder (a1 = b1 und a2 = b2) und a3 < b3 mit t3 Komparator, etc ..
Dies bedeutet, dass es effizient ist, alle Zeilen mit einem bestimmten k1 = a zu finden, da die Daten zusammen gespeichert werden. Es ist jedoch ineffizient, alle Zeilen mit ki = x für i> 1 zu finden. Tatsächlich ist eine solche Abfrage nicht zulässig. Die einzigen zulässigen Clustering-Schlüsseleinschränkungen geben null oder mehr Clustering-Schlüssel an, beginnend mit dem ersten ohne fehlende .
Betrachten wir zum Beispiel das Schema
create table clustering (
x text,
k1 text,
k2 int,
k3 timestamp,
y text,
primary key (x, k1, k2, k3)
);
Wenn Sie die folgenden Einsätze haben:
insert into clustering (x, k1, k2, k3, y) values ('x', 'a', 1, '2013-09-10 14:00+0000', '1');
insert into clustering (x, k1, k2, k3, y) values ('x', 'b', 1, '2013-09-10 13:00+0000', '1');
insert into clustering (x, k1, k2, k3, y) values ('x', 'a', 2, '2013-09-10 13:00+0000', '1');
insert into clustering (x, k1, k2, k3, y) values ('x', 'b', 1, '2013-09-10 14:00+0000', '1');
dann sind sie in dieser Reihenfolge auf der Festplatte (die Reihenfolge select * from clustering where x = 'x'
Returns) gespeichert:
x | k1 | k2 | k3 | y
---+----+----+--------------------------+---
x | a | 1 | 2013-09-10 14:00:00+0000 | 1
x | a | 2 | 2013-09-10 13:00:00+0000 | 1
x | b | 1 | 2013-09-10 13:00:00+0000 | 1
x | b | 1 | 2013-09-10 14:00:00+0000 | 1
k1
Reihenfolge dominiert, dann k2
, dann k3
.
- 1. Cassandra - Fragen über Clustering-Schlüssel
- 2. Cassandra: update Wert einer Clustering-Spalte
- 3. Cassandra CQL3 Clustering-Reihenfolge und Paginierung
- 4. Apache Cassandra Mehrere Partition Keys oder Single Computed Key?
- 5. cassandra Abfragen mit um, indem Sie auf Clustering-Schlüssel
- 6. Cassandra-cql: Ändern Clustering um Erstellt Spalte Familie
- 7. Clustering-Schlüssel bestellt von
- 8. Hohe Leselatenz in cassandra
- 9. Spectral Clustering vs hierarchische Clustering
- 10. und Klausel in cql cassandra
- 11. Verwendung der Order by-Klausel in Cassandra
- 12. Cassandra Leistungsproblem
- 13. Warum funktioniert mein Cassandra-Update nicht?
- 14. Lesefehler in Cassandra
- 15. Korrelation Clustering in R
- 16. Clustering Fotos in R?
- 17. Variable Clustering in Python
- 18. Cassandra cql Sortierung wählen
- 19. [Cassandra] Filter auf Zeilenschlüsselebene in Cassandra sql in Spark-Job verursacht die Überkapazität der CPU-Auslastung
- 20. makeing datenmodell in cassandra db
- 21. Cassandra "keine brauchbare Alternative am Eingang"
- 22. Wie funktionieren Sekundärindizes in Cassandra?
- 23. Update-Abfrage in Cassandra 2.3
- 24. Serverseitiges Clustering?
- 25. spektrale Clustering
- 26. Markov Clustering
- 27. Zusammengesetzte Indizes in Apache Cassandra
- 28. Access Keys in ASP.NET MVC
- 29. Multimedia Keys in Python (Linux)
- 30. Cassandra Lesefehler
Danke Richard. Könnten Sie bitte ein Beispiel geben? – Vinodh
Ich habe meiner Antwort ein Beispiel hinzugefügt. – Richard
Vielen Dank Richard. Aus Ihrem Beispiel kann ich Cluster-Spalten und die CQL-Dokumentation "die Reihenfolge, in der Spalten für die PRIMARY KEY-Angelegenheiten definiert sind" verstehen. von http://cassandra.apache.org/doc/cql3/CQL.html#createTableStmt. – Vinodh