create index erstellt einen sekundären Index für die Tabelle. In Cassandra werden Daten in Partitionen über Knoten hinweg gespeichert - eine Partition entspricht einem Partitionsschlüssel - der der erste Schlüssel des Primärschlüssels ist. Verbleibende Schlüssel im Primärschlüssel bilden die Clustering-Schlüssel. Zum Beispiel hatte, wenn Sie die folgenden Schritte aus:
CREATE TABLE foo.people ( id int, name text, Alter int, Job Text, PRIMARY KEY (id, name, Job) )
ID wäre der Partitionsschlüssel, und Name und Job wären die Clustering-Schlüssel.
Daten in einer Partition werden in der Reihenfolge der Clustering-Schlüssel gespeichert. Bei der Abfrage mit Filtern geben Sie einen Partitionsschlüssel an, und Sie können dann basierend auf Clustering-Schlüsseln filtern. Für mehrere Clustering-Schlüssel müssen Sie vorheriges Clustering angeben, um ein bestimmtes zu verwenden. Zum Beispiel in dem Szenario erwähnt, können Sie tun
wo id = 2 und name = 'John' und Job = 'dev' oder wo id = 2 und name = 'John'
aber nicht Wobei id = 2 und job = 'dev' als Name vor dem Job im Clustering-Schlüssel erscheint.
Sie können keinen Filter für das Alter erstellen, da dieser nicht Teil eines Schlüssels ist. Dies ist, wo der sekundäre Index kommt. Wenn Sie dann tun: erstellen Index Blabla auf Menschen (Alter)
Sie können dies tun: wählen * von Menschen, wo Alter = 45;
Dies kann möglicherweise teuer sein, da es über Ihren Cluster abfragen wird. Folgendes kann jedoch effizient sein: Wählen Sie * aus Personen mit ID = 2 und Alter = 45;
Dies ist nützlich für Zeitreihen oder andere breite Zeilenformate.
Abfragen auf Sekundärindizes sind restriktiv - Sie können beispielsweise keine Bereichsabfragen durchführen - Sie sind auf = checks beschränkt.
Sekundärindizes in Cassandra können Ihnen die mühselige Pflege von Indextabellen ersparen und sind effizienter, als wenn Sie dies manuell getan hätten. Sie sind schließlich konsistent (Ihre Schreibvorgänge warten nicht darauf, dass Indizes aktualisiert werden, um zum Erfolg zurückzukehren), und derzeit werden Indexinformationen für die Daten eines Knotens lokal gespeichert.
Zuletzt können Sie die aktuell vorhandenen Indizes aus der Tabelle "IndexInfo" im Systemschlüsselbereich finden.
Hoffe, dass hilft.
können Sie mit diesem helfen: http://stackoverflow.com/questions/ 24964673/unable-to-start-cqlsh-in-mac-os-x – eagertoLearn
erledigt :) check it –
können Sie ein Beispiel geben, um diesen Punkt zu verdeutlichen: Sekundäre Indizes sollten nicht verwendet werden, wenn die Abfrage im Index immer eins abruft Ergebnis (zB: Sekundärindex auf eine UUID setzen). – eagertoLearn