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.
InformationsquelleAutor Mark | 2014-12-03
Schreibe einen Kommentar