Abfragen von Cassandra durch eine partielle partition-key
Cassandra, ich kann ein composite-partition-key, getrennt von meiner clustering-Schlüssel:
CREATE TABLE footable (
column1 text,
column2 text,
column3 text,
column4 text,
PRIMARY KEY ((column1, column2))
)
Wie ich es verstehe, quering von partition key ist ein extrem effizienter (die meisten effizient?) Methode zum abrufen der Daten. Was ich weiß jedoch nicht, ob es auch effizient Abfragen, indem Sie nur einen Teil eines composite-partition-Taste.
MSSQL, dies wäre effizient, solange die Komponenten sind enthalten, beginnend mit der ersten ("column1" anstelle von " column2 in diesem Beispiel). Ist dies auch der Fall in Kassandra? Ist es sehr effizient-Abfrage für Zeilen basiert nur auf column1, hier?
- Wenn Sie möchten, um die Abfrage auf nur ein Teil des Primärschlüssels, man könnte es definieren als PRIMARY KEY (spalte1, spalte2). Dies bedeutet jedoch, dass die Partitionen (wo die Daten gespeichert sind) sind nur bestimmt durch column1. Dies kann dazu führen, heißen Knoten, oder andere Probleme je nach der Kardinalität der Spalte 1. Wenn Sie weitere Informationen zu liefern, die auf Ihrem schema (insbesondere was column1 und column2 darstellen) können wir können Ihnen eine effektive Mittelweg für Sie.
- Ich bin auf der Suche nach eher um eine Allgemeine Strategie hier, nicht eine Besondere Empfehlung. Mein eigentlichen problem, jedoch, ist nicht, dass ich würde am Ende mit hotspots, ich bin wahrscheinlich übersteigen die ~2 Mrd Spalte limit irgendwann, da bin ich auch mit einem clustering-Schlüssel (ein Zeitstempel).
- auch, ganz klar, ich war zu Fragen, Abfragen basierend auf einem Teil der partition key nicht Teil des primary key. Es ist möglich, in einer Art und Weise, mit der IN-Klausel auf den letzten Teil der partition key. Dies ist ausreichend für meinen Anwendungsfall.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist nicht der Fall, Cassandra, da es nicht möglich ist. Dabei wird der Ertrag die folgende Fehlermeldung:
Check out this Cassandra 2014 SF Summit Präsentation von DataStax-MVP Robbie Strickland mit dem Titel "CQL Unter der Haube." Folien 62-64 zeigen, dass die komplette partition key als rowkey. Mit composite-Partitionierung Schlüssel in Kassandra, müssen Sie die Abfrage von allen der rowkey oder gar nichts.
Können Sie sehen, die komplette Präsentation video hier.
Dies ist unmöglich, in der Cassandra, weil es erfordern würde, einen full table scan zu beheben, eine solche Abfrage. Die Lage der partition ist definiert durch einen hash, der alle Elemente des zusammengesetzten Schlüssels, dies bedeutet, dass nur die Hälfte der Schlüssel ist so gut, als eine, die keines von ihm. Nur so finden Sie den Datensatz für die Suche nach alle Schlüssel und überprüfen, ob Sie übereinstimmen.