Δημιουργία και απόθεση INDEX μέσα Cassandra
Cassandra Δημιουργία ευρετηρίου
Η εντολή «Δημιουργία ευρετηρίου» δημιουργεί ένα ευρετήριο στη στήλη που καθορίζεται από τον χρήστη. Εάν τα δεδομένα υπάρχουν ήδη για τη στήλη που θέλετε να δημιουργήσετε ευρετήριο, Cassandra δημιουργεί ευρετήρια στα δεδομένα κατά την εκτέλεση της δήλωσης «δημιουργία ευρετηρίου».
- Αφού δημιουργήσετε ένα ευρετήριο, Cassandra ευρετηριάζει αυτόματα νέα δεδομένα όταν εισάγονται δεδομένα.
- Το ευρετήριο δεν μπορεί να δημιουργηθεί σε πρωτεύον κλειδί, καθώς ένα πρωτεύον κλειδί έχει ήδη ευρετηριαστεί.
- Τα ευρετήρια σε συλλογές δεν υποστηρίζονται σε Cassandra.
- Χωρίς ευρετηρίαση στη στήλη, Cassandra δεν μπορεί να φιλτράρει αυτήν τη στήλη εκτός και αν είναι πρωτεύον κλειδί.
Γι' αυτό, για το φιλτράρισμα στηλών μέσα Cassandra, πρέπει να δημιουργηθούν ευρετήρια.
Σύνταξη
Create index IndexName on KeyspaceName.TableName(ColumnName);
Παράδειγμα
Εδώ είναι το στιγμιότυπο όπου επιχειρήθηκε να φιλτράρει τη στήλη "dept" χωρίς να δημιουργηθεί το ευρετήριο. Σε απάντηση, το σφάλμα επιστράφηκε.
Εδώ είναι το στιγμιότυπο όπου δημιουργείται ευρετήριο στη στήλη τμήματος.
Create index DeptIndex on University.Student(dept);
Εδώ είναι το στιγμιότυπο όπου θα φιλτραριστεί επιτυχώς η στήλη 'dept'.
select * from University.Student where dept='CS';
Cassandra Απόθεση ευρετηρίου
Η εντολή "Drop index" απορρίπτει το καθορισμένο ευρετήριο. Εάν το όνομα ευρετηρίου δεν δόθηκε κατά τη δημιουργία ευρετηρίου, τότε το όνομα ευρετηρίου είναι TableName_ColumnName_idx.
- Εάν το ευρετήριο δεν υπάρχει, θα επιστρέψει ένα σφάλμα εκτός και αν χρησιμοποιηθεί IF EXISTS που θα επιστρέψει no-op.
- Κατά τη δημιουργία ευρετηρίου, πρέπει να καθορίσετε το όνομα χώρου κλειδιού με το όνομα ευρετηρίου, διαφορετικά το ευρετήριο θα απορριφθεί από τον τρέχοντα χώρο κλειδιών.
Σύνταξη
Drop index IF EXISTS KeyspaceName.IndexName
Παράδειγμα
Εδώ είναι το στιγμιότυπο της εκτελεσθείσας εντολής 'Drop index' που ρίχνει το ευρετήριο DeptIndex.
drop index IF EXISTS University.DeptIndex;
Μετά την επιτυχή εκτέλεση της εντολής, το DeptIndex θα απορριφθεί από τον χώρο κλειδιών. Τώρα τα δεδομένα δεν μπορούν να φιλτραριστούν από το τμήμα στήλης.