Cassandra Πίνακας CQL: Παράδειγμα δημιουργίας, τροποποίησης και περικοπής

⚡ Έξυπνη Σύνοψη

Cassandra Οι λειτουργίες πίνακα καλύπτουν τη δημιουργία, την τροποποίηση, την απόθεσηpingκαι περικοπή οικογενειών στηλών με CQL. Αυτή η σελίδα εξηγεί κάθε εντολή, τις τρεις κύριες φόρμες κλειδιού που καθορίζουν την κατανομή δεδομένων και τις διαφορές μεταξύ της αφαίρεσης γραμμών και της αφαίρεσης ενός πίνακα.

  • Δημιουργία πίνακα: Ένας πίνακας χρειάζεται ένα χώρο κλειδιού, ορισμούς στηλών και μια ρήτρα πρωτεύοντος κλειδιού που καθορίζει την κατανομή και τη σειρά ταξινόμησης.
  • 🔑 Μονό πρωτεύον κλειδί: Μία στήλη λειτουργεί ως κλειδί διαμέρισης, επομένως κάθε γραμμή αυτής της τιμής καταλήγει στον ίδιο κόμβο.
  • 🧩 Σύνθετο Πρωτεύον Κλειδί: Η πρώτη στήλη διαμερίζεται, οι υπόλοιπες στήλες ομαδοποιούνται και ταξινομούν τις γραμμές μέσα στην κατάτμηση.
  • 🧮 Σύνθετο Κλειδί Διαμέρισης: Η τοποθέτηση δύο στηλών σε αγκύλες χωρίζει ένα υπερμεγέθες διαμέρισμα σε πολλά μικρότερα.
  • Αλλαγή ορίων: Οι στήλες μπορούν να προστεθούν ή να αφαιρεθούν, αλλά οι στήλες πρωτεύοντος κλειδιού δεν μπορούν ποτέ να τροποποιηθούν.
  • 🗑️ Απόθεση έναντι περικοπής: Η επιλογή Drop αφαιρεί το σχήμα και τα δεδομένα. Η επιλογή Truncate αδειάζει κάθε γραμμή αλλά διατηρεί τον ορισμό του πίνακα.

Cassandra Δημιουργία πίνακα Τροποποίηση απόθεσης

Η σύνταξη του Cassandra Η γλώσσα ερωτημάτων (CQL) μοιάζει με SQL Γλώσσα.

Πώς να δημιουργήσετε πίνακα σε Cassandra

Στήλη οικογένεια σε Cassandra είναι παρόμοιο με τον πίνακα RDBMS. Η οικογένεια στηλών χρησιμοποιείται για την αποθήκευση δεδομένων.

Η εντολή "Δημιουργία πίνακα" χρησιμοποιείται για τη δημιουργία οικογένειας στηλών στο Cassandra.

Σύνταξη

CREATE TABLE KeyspaceName.TableName (
    ColumnName DataType,
    ColumnName DataType,
    ColumnName DataType,
    PRIMARY KEY (ColumnName)
) WITH PropertyName = PropertyValue;

1. Πρωτεύον κλειδί: Υπάρχουν δύο τύποι πρωτεύων κλειδί.

  • Μονό πρωτεύον κλειδί: Το μοναδικό πρωτεύον κλειδί καθορίζεται από την ακόλουθη σύνταξη.

Σύνταξη

PRIMARY KEY (ColumnName)

Στο μεμονωμένο πρωτεύον κλειδί, υπάρχει μόνο μία στήλη. Αυτή η στήλη ονομάζεται επίσης κλειδί κατάτμησης. Τα δεδομένα κατανέμονται με βάση αυτή τη στήλη. Τα δεδομένα κατανέμονται σε διαφορετικούς κόμβους με βάση το κλειδί κατάτμησης.

2. Σύνθετο πρωτεύον κλειδί: Το σύνθετο πρωτεύον κλειδί καθορίζεται από την ακόλουθη σύνταξη.

Σύνταξη

PRIMARY KEY (ColumnName1, ColumnName2, ...)

Στην παραπάνω σύνταξη, το ColumnName1 είναι το κλειδί κατάτμησης και το ColumnName2 είναι το Clusterκλειδί ing. Τα δεδομένα θα χωριστούν με βάση το ColumnName1 και τα δεδομένα θα ομαδοποιηθούν με βάση το ColumnName2. ClusterΤο ing είναι η διαδικασία που ταξινομεί τα δεδομένα στο διαμέρισμα.

3. Κλειδί σύνθετης κατάτμησης: Το σύνθετο κλειδί κατάτμησης καθορίζεται από την ακόλουθη σύνταξη.

Σύνταξη

PRIMARY KEY ((ColumnName1, ColumnName2), ColumnName3)

Στην παραπάνω σύνταξη, τα ColumnName1 και ColumnName2 είναι το κλειδί σύνθετης διαμέρισης. Τα δεδομένα θα διαμεριστούν με βάση και τις δύο στήλες ColumnName1 και ColumnName2 και τα δεδομένα θα ομαδοποιηθούν με βάση το ColumnName3. Εάν έχετε πάρα πολλά δεδομένα σε ένα μόνο διαμέρισμα, τότε χρησιμοποιείται το κλειδί σύνθετης διαμέρισης. Το κλειδί σύνθετης διαμέρισης χρησιμοποιείται για τη δημιουργία πολλαπλών διαμερισμάτων για τα δεδομένα.

  • Με ρήτρα

Το "with clause" χρησιμοποιείται για τον καθορισμό οποιασδήποτε ιδιότητας και της τιμής της για τον καθορισμένο πίνακα. Για παράδειγμα, εάν θέλετε να συμπιεστείτε Cassandra δεδομένα πίνακα. Μπορείτε να ορίσετε την ιδιότητα συμπίεσης καθορίζοντας την τιμή της ιδιότητας αλγορίθμου συμπίεσης στον όρο "With". Ο ίδιος όρος ορίζει επίσης την ΟΡΙΑ ΣΥΣΤΑΣΗΣ ΚΑΤΑ ΤΗΝ ΤΑΞΙΝΟΜΗΣΗ ΜΕ ΤΗΝ ΤΙΜΗ για να αντιστρέψει την κατεύθυνση ταξινόμησης μιας στήλης ομαδοποίησης και την default_time_to_live για να λήγει αυτόματα κάθε γραμμή.

Παράδειγμα

Εδώ εκτελείται η εντολή "Δημιουργία πίνακα" που θα δημιουργήσει το όνομα του πίνακα "Student" στον χώρο κλειδιών "University".

Cassandra Δημιουργία πίνακα

CREATE TABLE University.Student (
    RollNo int,
    Name text,
    dept text,
    PRIMARY KEY (RollNo)
);

Μετά την επιτυχή εκτέλεση της εντολής «Δημιουργία πίνακα», ο πίνακας «Φοιτητής» θα δημιουργηθεί στον χώρο κλειδιών «Πανεπιστήμιο» με στήλες RollNo, Name και dept. Το RollNo είναι το πρωτεύον κλειδί. Το RollNo είναι επίσης ένα κλειδί διαμέρισης, επομένως κάθε φοιτητής καταλαμβάνει ξεχωριστό διαμέρισμα μίας γραμμής.

Cassandra Αλλαγή πίνακα

Η εντολή "Alter Table" χρησιμοποιείται για την απόθεση στήλης, την προσθήκη νέας στήλης, την αλλαγή του ονόματος στήλης, την αλλαγή του τύπου στήλης και την αλλαγή της ιδιότητας του πίνακα.

Σύνταξη

Ακολουθεί η σύνταξη της εντολής 'Alter Table'.

ALTER TABLE KeyspaceName.TableName
    ADD ColumnName ColumnDataType;

ALTER TABLE KeyspaceName.TableName
    DROP ColumnName;

ALTER TABLE KeyspaceName.TableName
    RENAME ColumnName TO NewColumnName;

ALTER TABLE KeyspaceName.TableName
    WITH PropertyName = PropertyValue;

Κάθε φόρμα εκδίδεται ως ξεχωριστή δήλωση. Ισχύουν δύο περιορισμοί στην τρέχουσα Cassandra εκδόσεις: ο τύπος δεδομένων μιας υπάρχουσας στήλης δεν μπορεί πλέον να αλλάξει και η συνάρτηση ΜΕΤΟΝΟΜΑ λειτουργεί μόνο σε μια στήλη ομαδοποίησης του πρωτεύοντος κλειδιού.

Παράδειγμα

Εδώ είναι το στιγμιότυπο της εντολής 'Alter Table' που θα προσθέσει νέα στήλη στον πίνακα Student.

Cassandra Αλλαγή πίνακα

ALTER TABLE University.Student ADD Semester int;

Μετά την επιτυχή εκτέλεση της εντολής 'Alter Table', μια νέα στήλη 'Semester' με τύπο δεδομένων 'int' θα προστεθεί στον πίνακα Student.

Εδώ είναι το στιγμιότυπο οθόνης που δείχνει τον ενημερωμένο πίνακα Student.

Cassandra Αλλαγή πίνακα

Cassandra Πίνακας απόρριψης

Η εντολή «Απόθεση πίνακα» αποβάλλει τον συγκεκριμένο πίνακα που περιλαμβάνει όλα τα δεδομένα από το keyspace. Πριν από την απόθεσηping το τραπέζι, Cassandra παίρνει ένα στιγμιότυπο των δεδομένων και όχι το σχήμα ως εφεδρικό.

Σύνταξη

DROP TABLE IF EXISTS KeyspaceName.TableName;

Παράδειγμα

Εδώ είναι το στιγμιότυπο της εκτελεσθείσας εντολής 'Drop Table' που θα αποσύρει τον πίνακα Student από το keyspace 'University'.

Cassandra Πίνακας απόρριψης

DROP TABLE University.Student;

Μετά την επιτυχή εκτέλεση της εντολής «Drop Table», ο πίνακας Student θα απορριφθεί από το keyspace University.

Εδώ είναι το στιγμιότυπο που δείχνει το σφάλμα που επιστράφηκε από το Cassandra όταν προσπάθησε να αποκτήσει πρόσβαση στον πίνακα Student που δεν υπάρχει.

Cassandra Πίνακας απόρριψης

Cassandra Περικοπή πίνακα

Η εντολή "Truncate table" αφαιρεί όλα τα δεδομένα από τον καθορισμένο πίνακα. Πριν από την περικοπή των δεδομένων, Cassandra παίρνει το στιγμιότυπο των δεδομένων ως αντίγραφο ασφαλείας.

Σύνταξη

TRUNCATE KeyspaceName.TableName;

Παράδειγμα

Υπάρχουν τρεις εγγραφές στον πίνακα Μαθητής. Αυτές είναι οι εγγραφές στον πίνακα.

Cassandra Περικοπή πίνακα

Εδώ είναι το στιγμιότυπο της εκτελεσθείσας εντολής 'Truncate table' που θα αφαιρέσει όλα τα δεδομένα από τον πίνακα Student.

Cassandra Περικοπή πίνακα

Μετά την επιτυχή εκτέλεση της εντολής 'Truncate Table', όλα τα δεδομένα θα αφαιρεθούν από τον πίνακα Student.

Εδώ είναι το στιγμιότυπο της κατάστασης της βάσης δεδομένων όπου δεν υπάρχουν εγγραφές στον πίνακα Student.

Cassandra Περικοπή πίνακα

Η περικοπή απαιτεί να είναι προσβάσιμος κάθε κόμβος, επειδή εκτελείται σε ολόκληρο το σύμπλεγμα ταυτόχρονα. Εάν οποιοσδήποτε κόμβος είναι εκτός λειτουργίας, η εντολή αποτυγχάνει, γεγονός που αποτελεί σκόπιμη προστασία κατά της παραμονής μερικών δεδομένων.

Απόθεση vs Περικοπή vs Διαγραφή σε Cassandra

Τρεις εντολές αφαιρούν δεδομένα και η επιλογή της λανθασμένης είτε καταστρέφει ένα σχήμα είτε αφήνει πίσω του ένα πρόβλημα απόδοσης.

εντολή Τι αφαιρεί Το σχήμα διατηρήθηκε Κόστος
ΠΤΡΑΠΕΖΙ ΠΤΩΣΗΣ Όλες οι γραμμές και ο ορισμός του πίνακα Οχι Φθηνό. Τα SSTables καταγράφονται στιγμιότυπα και στη συνέχεια απορρίπτονται.
ΚΟΥΤΣΟΥΡΕΥΩ Όλες οι σειρές Ναι Φθηνό, αλλά χρειάζεται κάθε κόμβος ενεργοποιημένος. Δεν δημιουργούνται επιτύμβιες στήλες.
ΔΙΑΓΡΑΦΗ Επιλεγμένες γραμμές ή στήλες Ναι Ακριβό σε κλίμακα. Κάθε αφαίρεση γράφει μια ταφόπλακα που αναφέρει ότι πρέπει να παραλειφθεί μέχρι τη συμπύκνωση.

Ο πρακτικός κανόνας είναι να προτιμάτε την TRUNCATE αντί για μια μαζική ΔΙΑΓΡΑΦΗ κατά την εκκαθάριση ενός ολόκληρου πίνακα, επειδή χιλιάδες tombstones θα επιβραδύνουν κάθε επόμενη ανάγνωση αυτού του διαμερίσματος. Η αφαίρεση σε επίπεδο γραμμής καλύπτεται στο Εισαγωγή, ενημέρωση και διαγραφή CQL tutorial.

Συχνές Ερωτήσεις

Όχι. Το πρωτεύον κλειδί καθορίζει την τοποθέτηση των φυσικών δεδομένων, επομένως είναι σταθερό κατά τη δημιουργία. Η αλλαγή του σημαίνει τη δημιουργία ενός νέου πίνακα με το επιθυμητό κλειδί και τη μετεγκατάσταση των γραμμών σε όλο το μήκος του.

Προσθέστε την συνάρτηση WITH CLUSTERING ORDER BY (ColumnName DESC) κατά τη στιγμή της δημιουργίας. Η ορισμός της συνάρτησης στο σχήμα είναι πολύ φθηνότερη από την ταξινόμηση κατά τη στιγμή του ερωτήματος σε κάθε ανάγνωση.

Όχι. Η στήλη αποκρύπτεται από τα ερωτήματα αμέσως, αλλά τα δεδομένα της παραμένουν μέσα σε υπάρχοντα SSTables μέχρι να τα ξαναγράψει η συμπύκνωση. Ο χώρος ανακτάται σταδιακά.

Η λίστα στηλών μεταφράζεται καθαρά, αλλά η Τεχνητή Νοημοσύνη συχνά διατηρεί ένα υποκατάστατο αναγνωριστικό ως κλειδί διαμέρισης, το οποίο δημιουργεί διαμερίσματα μίας γραμμής. Επαναδιατυπώστε το μοτίβο ερωτήματος, ώστε το κλειδί να επιλέγεται για αναγνώσεις.

Ναι, για προβλήματα σε επίπεδο μοτίβου, όπως ελλείπουσες στήλες ομαδοποίησης, μη οριοθετημένα διαμερίσματα ή στήλες συλλογής που είναι πιθανό να υπερβαίνουν τα όρια. Επιβεβαιώστε με την πραγματική πληθικότητα πριν ενεργήσετε.

Συνοψίστε αυτήν την ανάρτηση με: