Ich benutze Cassandra zum ersten Mal in einer Web-App und ich habe ein Abfrageproblem. Hier ist meine tab:Cassandra Primärschlüssel Spalte kann nicht eingeschränkt werden
CREATE TABLE vote (
doodle_id uuid,
user_id uuid,
schedule_id uuid,
vote int,
PRIMARY KEY ((doodle_id), user_id, schedule_id)
);
Auf jeder Anfrage, gebe ich meinen Partitionsschlüssel, doodle_id. Zum Beispiel kann ich ohne Probleme machen:
select * from vote where doodle_id = c4778a27-f2ca-4c96-8669-15dcbd5d34a7 and user_id = 97a7378a-e1bb-4586-ada1-177016405142;
Aber auf dem letzten Wunsch habe ich:
select * from vote where doodle_id = c4778a27-f2ca-4c96-8669-15dcbd5d34a7 and schedule_id = c37df0ad-f61d-463e-bdcc-a97586bea633;
Ich habe die folgende Fehlermeldung:
Bad Request: PRIMARY KEY column "schedule_id" cannot be restricted (preceding column "user_id" is either not restricted or by a non-EQ relation)
Ich bin neu mit Cassandra, aber korrigieren Sie mich, wenn ich falsch liege, in einem zusammengesetzten Primärschlüssel ist der erste Teil der PARTITION KEY, der Cassandra erlaubt zu wissen, wo man nach Daten suchen muss. Dann sind die anderen Teile CLUSTERING KEY, um Daten zu sortieren.
Aber ich verstehe immer noch nicht, warum meine erste Anfrage funktioniert und nicht die zweite?
Wenn jemand helfen könnte, wird es eine große Freude sein.
Vielen Dank für die zwei Antworten! Ich verstehe jetzt ein bisschen besser, wie Cassandra arbeitet. So habe ich eine neue Tabelle erstellt, wie Sie erwähnt haben, um meine Anfrage zu bearbeiten, und es funktioniert jetzt gut. – Orodan
und wenn ich> und
@ParthTrivedi Um eine Bereichsabfrage für 'doodle_id' durchzuführen, müssen Sie eine neue Tabelle mit einem anderen Partitionsschlüssel erstellen (herausfinden, was für Ihre Daten sinnvoll ist). Dann könnten Sie einen Bereich von 'doodle_id' für einen bestimmten Partitionsschlüssel abfragen. – Aaron