Cassandra Συλλογές: Σύνολο, Λίστα & Χάρτη σε CQL με Παράδειγμα

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

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

  • 📦 Τρεις τύποι: Το Set διατηρεί μοναδικές μη ταξινομημένες τιμές, η λίστα διατηρεί τη σειρά εισαγωγής και το map αποθηκεύει ζεύγη κλειδιών και τιμών.
  • 🔤 Συμπεριφορά ορισμού: Τα στοιχεία αποθηκεύονται ταξινομημένα και τα διπλότυπα απορρίπτονται αυτόματα.
  • 🔢 Προειδοποίηση λίστας: Η σειρά διατηρείται, αλλά οι λειτουργίες πρόθεσης και ευρετηρίου απαιτούν ανάγνωση πριν από την εγγραφή.
  • Χρήση χάρτη: Ένας χάρτης ταιριάζει σε χαρακτηριστικά των οποίων τα κλειδιά δεν είναι γνωστά κατά τον σχεδιασμό του σχήματος.
  • 📏 Όριο μεγέθους: Διατηρήστε τις συλλογές μικρές. Όλη η συλλογή διαβάζεται ακόμα και όταν χρειάζεται ένα στοιχείο.
  • 🧊 Επιλογή κατεψυγμένου: Μια παγωμένη συλλογή αποθηκεύεται ως μία τιμή και πρέπει να αντικατασταθεί πλήρως.

Cassandra Χάρτης λίστας συλλογών

Τι είναι Cassandra Συλλογές;

Cassandra Οι συλλογές είναι ένας καλός τρόπος χειρισμού εργασιών. Πολλά στοιχεία μπορούν να αποθηκευτούν σε συλλογές. Υπάρχουν περιορισμοί σε Cassandra συλλογές.

  • Μια στήλη συλλογής δεν μπορεί να αποθηκεύσει περισσότερα από 64 KB δεδομένων σε μία μόνο τιμή.
  • Διατηρήστε μια συλλογή μικρή για να αποφύγετε την επιβάρυνση της υποβολής ερωτημάτων στη συλλογή, επειδή ολόκληρη η συλλογή διαβάζεται ακόμα και όταν χρειάζεται μόνο ένα στοιχείο.
  • Η αποθήκευση περισσότερων από 64 KB σημαίνει ότι μπορούν να υποβληθούν ερωτήματα μόνο για τα πρώτα 64 KB, γεγονός που έχει ως αποτέλεσμα την απώλεια δεδομένων.
  • Μια μη παγωμένη συλλογή περιορίζεται σε περίπου 65,535 στοιχεία και κάθε στοιχείο διαβάζεται μαζί ως μία μονάδα.

Αυτά τα όρια υποδεικνύουν έναν κανόνα: οι συλλογές ταιριάζουν σε μια χούφτα χαρακτηριστικά που είναι συνδεδεμένα με μια γραμμή, όχι σε μια ανοιχτή λίστα που μεγαλώνει με τη χρήση. Οτιδήποτε συνεχίζει να μεγαλώνει ανήκει σε στήλες ομαδοποίησης του δικού του πίνακα.

Τύποι Cassandra Συλλογές

Υπάρχουν κυρίως τρία είδη συλλογών που Cassandra υποστηρίζει:

  1. σετ
  2. Λιστα
  3. Χάρτης

Cassandra Σετ συλλογής

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

Σύνταξη

Εδώ είναι η σύνταξη της συλλογής Set που αποθηκεύει πολλές διευθύνσεις email για τον δάσκαλο.

CREATE TABLE University.Teacher (
    id int,
    Name text,
    Email set<text>,
    PRIMARY KEY (id)
);

Παράδειγμα

Εδώ είναι το στιγμιότυπο όπου δημιουργείται ο πίνακας "Δάσκαλος" με τη στήλη "Email" ως συλλογή.

Παράδειγμα Cassandra Σετ συλλογής

Εδώ είναι το στιγμιότυπο όπου τα δεδομένα εισάγονται στη συλλογή.

Παράδειγμα Cassandra Σετ συλλογής

INSERT INTO University.Teacher (id, Name, Email)
VALUES (1, 'Guru99', {'abc@gmail.com', 'xyz@hotmail.com'});

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

UPDATE University.Teacher SET Email = Email + {'new@guru99.com'} WHERE id = 1;
UPDATE University.Teacher SET Email = Email - {'xyz@hotmail.com'} WHERE id = 1;

Cassandra Συλλογή λίστας

Όταν έχει σημασία η σειρά των στοιχείων, χρησιμοποιείται η λίστα.

Παράδειγμα

Ακολουθεί ένα στιγμιότυπο όπου προστίθενται μαθήματα στηλών τύπου λίστας στον πίνακα "Δάσκαλος".

Παράδειγμα Cassandra Συλλογή λίστας

ALTER TABLE University.Teacher ADD coursenames list<text>;

Εδώ είναι το στιγμιότυπο όπου τα δεδομένα εισάγονται στη στήλη «ονόματα μαθημάτων».

Παράδειγμα Cassandra Συλλογή λίστας

INSERT INTO University.Teacher (id, Name, Email, coursenames)
VALUES (2, 'Hamilton', {'hamilton@hotmail.com'}, ['Data Science']);

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

Cassandra Παράδειγμα συλλογής λίστας

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

UPDATE University.Teacher SET coursenames = coursenames + ['Machine Learning'] WHERE id = 2;
UPDATE University.Teacher SET coursenames = ['Statistics'] + coursenames WHERE id = 2;

Cassandra Συλλογή χαρτών

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

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

Παράδειγμα

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

Παράδειγμα Cassandra Συλλογή χαρτών

CREATE TABLE University.Course (
    id int,
    prereq map<text, text>,
    PRIMARY KEY (id)
);

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

Παράδειγμα Cassandra Συλλογή χαρτών

INSERT INTO University.Course (id, prereq)
VALUES (1, {'DataScience': 'Database', 'Neural Network': 'Artificial Intelligence'});

Μία μόνο καταχώρηση ορίζεται ή αφαιρείται χωρίς να αγγίξετε τον υπόλοιπο χάρτη.

UPDATE University.Course SET prereq['Robotics'] = 'Linear Algebra' WHERE id = 1;
DELETE prereq['DataScience'] FROM University.Course WHERE id = 1;

Σύνολο vs Λίστα vs Χάρτης: Επιλογή Συλλογής

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

Άποψη σετ Λιστα Χάρτης
παραγγελία Ταξινόμηση κατά τιμή Η εντολή εισαγωγής διατηρήθηκε Ταξινόμηση κατά κλειδί
Διπλότυπα Δεν επιτρέπεται Επιτρέπονται τα κατοικίδια Μοναδικά κλειδιά
Κόστος ενημέρωσης Φθηνό, δεν χρειάζεται διάβασμα Προσθήκη φθηνή. Η προσθήκη προθέματος και η ενημέρωση ευρετηρίου απαιτούν ανάγνωση Φθηνό ανά κλειδί
καλυτερα for Ετικέτες, διευθύνσεις ηλεκτρονικού ταχυδρομείου, μοναδικές ετικέτες Ταξινομημένα βήματα όπου τα διπλότυπα έχουν νόημα Ονομασμένα χαρακτηριστικά με απρόβλεπτα κλειδιά

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

CREATE TABLE University.Enrolment (
    id int,
    tags frozen<set<text>>,
    PRIMARY KEY (id, tags)
);

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

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

Ναι, μόλις υπάρξει ένα ευρετήριο. Χρησιμοποιήστε CONTAINS για τιμές συνόλου και λίστας και CONTAINS KEY για κλειδιά χάρτη, αφού δημιουργήσετε το αντίστοιχο ευρετήριο VALUES, KEYS ή ENTRIES.

Μόνο εάν η εσωτερική συλλογή είναι παγωμένη, για παράδειγμα, αντιστοίχιση κειμένου σε παγωμένη λίστα κειμένου. Μια μη παγωμένη συλλογή δεν μπορεί να περιέχει άλλη συλλογή.

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

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

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

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