Παρόλο που η γλώσσα ερωτήσεων της Cassandra μοιάζει με τη γλώσσα SQL, οι μέθοδοι μοντελοποίησης δεδομένων τους είναι εντελώς διαφορετικές.
Στην Κασσάνδρα, ένα κακό μοντέλο δεδομένων μπορεί να υποβαθμίσει την απόδοση, ειδικά όταν οι χρήστες προσπαθούν να εφαρμόσουν τις έννοιες RDBMS στην Κασσάνδρα. Είναι καλύτερο να έχετε κατά νου μερικούς κανόνες που περιγράφονται παρακάτω.
Σε αυτό το σεμινάριο, θα μάθετε-
- Κανόνες μοντέλου δεδομένων Cassandra
- Μοντελοποιήστε τα δεδομένα σας στην Κασσάνδρα
- Χειρισμός μιας προς μία σχέση
- Χειρισμός μιας σε πολλές σχέσεις
- Χειρισμός πολλών σε πολλές σχέσεις
Κανόνες μοντέλου δεδομένων Cassandra
Στην Κασσάνδρα, οι συγγραφές δεν είναι ακριβές. Η Cassandra δεν υποστηρίζει συνδέσεις, ομαδοποίηση κατά, ρήτρα Ή συγκεντρώσεις κ.λπ. Επομένως, πρέπει να αποθηκεύσετε τα δεδομένα σας με τέτοιο τρόπο ώστε να είναι πλήρως ανακτήσιμα. Επομένως, αυτοί οι κανόνες πρέπει να ληφθούν υπόψη κατά τη μοντελοποίηση δεδομένων στην Κασσάνδρα.
- Μεγιστοποιήστε τον αριθμό των εγγραφών
Στην Κασσάνδρα, τα γράμματα είναι πολύ φθηνά. Η Cassandra έχει βελτιστοποιηθεί για υψηλή απόδοση εγγραφής. Επομένως, προσπαθήστε να μεγιστοποιήσετε τις εγγραφές σας για καλύτερη απόδοση ανάγνωσης και διαθεσιμότητα δεδομένων. Υπάρχει μια ανταλλαγή μεταξύ της εγγραφής δεδομένων και της ανάγνωσης δεδομένων. Έτσι, βελτιστοποιήστε την απόδοση ανάγνωσης δεδομένων μεγιστοποιώντας τον αριθμό εγγραφών δεδομένων.
- Μεγιστοποίηση διπλασιασμού δεδομένων
Η αποδιαμόρφωση δεδομένων και η επανάληψη δεδομένων είναι defacto της Κασσάνδρας. Ο χώρος στο δίσκο δεν είναι ακριβότερος από τη μνήμη, την επεξεργασία CPU και τη λειτουργία IOs. Δεδομένου ότι η Cassandra είναι μια κατανεμημένη βάση δεδομένων, έτσι η αναπαραγωγή δεδομένων παρέχει άμεση διαθεσιμότητα δεδομένων και κανένα σημείο αποτυχίας.
Στόχοι μοντελοποίησης δεδομένων
Θα πρέπει να έχετε τους ακόλουθους στόχους κατά τη μοντελοποίηση δεδομένων στην Κασσάνδρα.
- Διαδώστε δεδομένα ομοιόμορφα γύρω από το σύμπλεγμα
Θέλετε ίση ποσότητα δεδομένων σε κάθε κόμβο του συμπλέγματος Cassandra. Τα δεδομένα διαδίδονται σε διαφορετικούς κόμβους με βάση τα κλειδιά διαμερισμάτων που είναι το πρώτο μέρος του πρωτεύοντος κλειδιού. Επομένως, προσπαθήστε να επιλέξετε ακέραιους αριθμούς ως πρωτεύον κλειδί για την ομοιόμορφη διάδοση δεδομένων γύρω από το σύμπλεγμα.
- Ελαχιστοποιήστε τον αριθμό των διαμερισμάτων που διαβάζονται κατά την αναζήτηση δεδομένων
Το διαμέρισμα είναι μια ομάδα εγγραφών με το ίδιο κλειδί διαμέρισης. Όταν εκδίδεται το ερώτημα ανάγνωσης, συλλέγει δεδομένα από διαφορετικούς κόμβους από διαφορετικά διαμερίσματα.
Εάν υπάρχουν πολλά διαμερίσματα, τότε όλα αυτά τα διαμερίσματα πρέπει να επισκεφθούν για τη συλλογή των δεδομένων ερωτήματος.
Δεν σημαίνει ότι δεν πρέπει να δημιουργούνται κατατμήσεις. Εάν τα δεδομένα σας είναι πολύ μεγάλα, δεν μπορείτε να διατηρήσετε αυτόν τον τεράστιο όγκο δεδομένων στο μεμονωμένο διαμέρισμα. Το μεμονωμένο διαμέρισμα θα επιβραδυνθεί.
Γι 'αυτό προσπαθήστε να επιλέξετε έναν ισορροπημένο αριθμό κατατμήσεων.
Καλό βασικό κλειδί
Ας πάρουμε ένα παράδειγμα και να βρούμε ποιο βασικό κλειδί είναι καλό.
Εδώ είναι ο πίνακας MusicPlaylist.
Create table MusicPlaylist(SongId int,SongName text,Year int,Singer text,Primary key(SongId, SongName));
Στο παραπάνω παράδειγμα, πίνακας MusicPlaylist,
- Το Songid είναι το κλειδί κατάτμησης και
- Το SongName είναι η στήλη ομαδοποίησης
- Τα δεδομένα θα συγκεντρωθούν βάσει του SongName. Μόνο ένα διαμέρισμα θα δημιουργηθεί με το SongId. Δεν θα υπάρχει κανένα άλλο διαμέρισμα στον πίνακα MusicPlaylist.
Η ανάκτηση δεδομένων θα είναι αργή από αυτό το μοντέλο δεδομένων λόγω του κακού πρωτεύοντος κλειδιού.
Εδώ είναι ένας άλλος πίνακας MusicPlaylist.
Create table MusicPlaylist(SongId int,SongName text,Year int,Singer text,Primary key((SongId, Year), SongName));
Στο παραπάνω παράδειγμα, πίνακας MusicPlaylist,
- Το Songid and Year είναι το κλειδί διαμέρισης και
- Το SongName είναι η στήλη ομαδοποίησης.
- Τα δεδομένα θα συγκεντρωθούν βάσει του SongName. Σε αυτόν τον πίνακα, κάθε χρόνο, δημιουργείται ένα νέο διαμέρισμα. Όλα τα τραγούδια της χρονιάς θα βρίσκονται στον ίδιο κόμβο. Αυτό το πρωτεύον κλειδί θα είναι πολύ χρήσιμο για τα δεδομένα.
Η ανάκτηση δεδομένων μας θα είναι γρήγορη από αυτό το μοντέλο δεδομένων.
Μοντελοποιήστε τα δεδομένα σας στην Κασσάνδρα
Τα ακόλουθα πράγματα πρέπει να θυμάστε κατά τη μοντελοποίηση των ερωτημάτων σας.
- Προσδιορίστε ποια ερωτήματα θέλετε να υποστηρίξετε
- Συμμετέχει
- Ομαδοποίηση κατά
- Φιλτράρισμα σε ποια στήλη κ.λπ.
- Δημιουργήστε πίνακα σύμφωνα με τα ερωτήματά σας
Δημιουργήστε πίνακα σύμφωνα με τα ερωτήματά σας. Δημιουργήστε έναν πίνακα που θα ικανοποιήσει τα ερωτήματά σας. Προσπαθήστε να δημιουργήσετε έναν πίνακα με τέτοιο τρόπο ώστε να χρειάζεται να διαβαστεί ένας ελάχιστος αριθμός κατατμήσεων.
Πρώτα απ 'όλα, καθορίστε ποια ερωτήματα θέλετε.
Για παράδειγμα, χρειάζεστε;
Χειρισμός μιας προς μία σχέση
Μια προς μία σχέση σημαίνει ότι δύο πίνακες έχουν μία προς μία αλληλογραφία. Για παράδειγμα, ο μαθητής μπορεί να εγγραφεί μόνο σε ένα μάθημα και θέλω να αναζητήσω σε έναν μαθητή σε ποιο μάθημα είναι εγγεγραμμένος ένας συγκεκριμένος μαθητής.
Επομένως, σε αυτήν την περίπτωση, το σχήμα πίνακα θα πρέπει να περιλαμβάνει όλες τις λεπτομέρειες του μαθητή που αντιστοιχούν στο συγκεκριμένο μάθημα, όπως το όνομα του μαθήματος, το ρολό αριθ. Του μαθητή, το όνομα του μαθητή κ.λπ.
Create table Student_Course(Student rollno int primary key,Student_name text,Course_name text,);
Χειρισμός μιας σε πολλές σχέσεις
Μία προς πολλές σχέσεις σημαίνει να έχουμε μια προς πολλές αλληλογραφία μεταξύ δύο πινάκων.
Για παράδειγμα, ένα μάθημα μπορεί να μελετηθεί από πολλούς μαθητές. Θέλω να αναζητήσω όλους τους μαθητές που σπουδάζουν ένα συγκεκριμένο μάθημα.
Έτσι, ρωτώντας το όνομα του μαθήματος, θα έχω πολλά ονόματα μαθητών που θα μελετήσουν ένα συγκεκριμένο μάθημα.
Create table Student_Course(Student_rollno int,Student_name text,Course_name text,);
Μπορώ να ανακτήσω όλους τους μαθητές για ένα συγκεκριμένο μάθημα με το ακόλουθο ερώτημα.
Select * from Student_Course where Course_name='Course Name';
Χειρισμός πολλών σε πολλές σχέσεις
Πολλές σε πολλές σχέσεις σημαίνει να έχουμε πολλή σε πολλές αλληλογραφία μεταξύ δύο πινάκων.
Για παράδειγμα, ένα μάθημα μπορεί να μελετηθεί από πολλούς μαθητές και ένας μαθητής μπορεί επίσης να μελετήσει πολλά μαθήματα.
Θέλω να αναζητήσω όλους τους μαθητές που σπουδάζουν ένα συγκεκριμένο μάθημα. Επίσης, θέλω να ψάξω όλο το μάθημα που σπουδάζει ένας συγκεκριμένος μαθητής.
Έτσι, σε αυτήν την περίπτωση, θα έχω δύο πίνακες, δηλαδή να χωρίσω το πρόβλημα σε δύο περιπτώσεις.
Πρώτον, θα δημιουργήσω έναν πίνακα με τον οποίο μπορείτε να βρείτε μαθήματα από έναν συγκεκριμένο μαθητή.
Create table Student_Course(Student_rollno int primary key,Student_name text,Course_name text,);
Μπορώ να βρω όλα τα μαθήματα από έναν συγκεκριμένο μαθητή με το ακόλουθο ερώτημα. ->
Select * from Student_Course where student_rollno=rollno;
Δεύτερον, θα δημιουργήσω έναν πίνακα με τον οποίο μπορείτε να βρείτε πόσους μαθητές μελετούν ένα συγκεκριμένο μάθημα.
Create table Course_Student(Course_name text primary key,Student_name text,student_rollno int);
Μπορώ να βρω έναν μαθητή σε ένα συγκεκριμένο μάθημα με το ακόλουθο ερώτημα.
Select * from Course_Student where Course_name=CourseName;
Διαφορά μεταξύ RDBMS και Cassandra Data Modeling
RDBMS |
Κασσάνδρα |
Αποθηκεύει δεδομένα σε κανονικοποιημένη μορφή |
Αποθηκεύει δεδομένα σε αποδιαμορφωμένη μορφή |
Dbms παλαιού τύπου; δομημένα δεδομένα |
Κατάστημα ευρείας σειράς, Dynamic; δομημένα & μη δομημένα δεδομένα |
Περίληψη
Η μοντελοποίηση δεδομένων στην Κασσάνδρα είναι διαφορετική από άλλες βάσεις δεδομένων RDBMS. Η μοντελοποίηση δεδομένων Cassandra έχει ορισμένους κανόνες. Αυτοί οι κανόνες πρέπει να τηρούνται για καλή μοντελοποίηση δεδομένων. Εκτός από αυτούς τους κανόνες, είδαμε τρεις διαφορετικές περιπτώσεις μοντελοποίησης δεδομένων και πώς να τις αντιμετωπίσουμε.