Ich bin gerade dabei, Cassandra zu starten, und ich habe versucht, Tabellen mit verschiedenen Partition und Clustering-Schlüssel zu erstellen, um zu sehen, wie sie anders abgefragt werden können.Cassandra - Fragen über Clustering-Schlüssel
Ich erstellte eine Tabelle mit Primärschlüssel der Form - (a), b, c, wobei a der Partitionsschlüssel und b, c Clustering-Schlüssel sind.
Beim Abfragen bemerkte ich, dass die folgende Abfrage:
select * from tablename where b=val;
Ergebnisse in:
Kann diese Abfrage nicht ausführen, da es möglicherweise die Datenfilterung beinhaltet und somit kann unvorhersehbare Leistung hat. Wenn Sie diese Abfrage trotz der Leistung Unberechenbarkeit ausführen möchten, erlauben den Einsatz FILTERING
Und mit „LASSEN Filtering“ wird mir, was ich will (auch wenn ich seine schlecht für die Leistung gehört habe).
Aber wenn ich die folgende Abfrage:
select * from tablename where c=val;
Dort heißt es:
PRIMARY KEY-Spalte "c" kann nicht eingeschränkt werden (vorhergehenden Spalte "b" ist entweder nicht eingeschränkt oder durch eine Nicht-EQ-Beziehung)
Und es gibt keine "ALLOW FILTERING" -Option überhaupt.
MEINE FRAGE IST - Warum werden alle Clustering-Schlüssel nicht gleich behandelt? Spalte b, die an den Partitionsschlüssel 'a' angrenzt, hat die Option 'Filterung erlauben', die eine Abfrage erlaubt, während die Abfrage der Spalte 'c' überhaupt nicht möglich erscheint (angesichts der Anordnung dieser Tabelle).
ALLOW FILTERING erhält Cassandra, um durch alle SSTables zu scannen und die Daten herauszuholen, wenn der Partitionsschlüssel fehlt, warum können wir dann nicht dieselbe Spalte c machen?
Danke, das hilft definitiv zu verstehen, wie Cassandra funktioniert! – user3376961