Cassandra Μοντέλο δεδομένων με Παράδειγμα απλής βάσης δεδομένων

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

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

Cassandra Κανόνες μοντέλου δεδομένων

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

Μεγιστοποιήστε τον αριθμό των εγγραφών

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

Μεγιστοποίηση της αντιγραφής δεδομένων

Η αποκανονικοποίηση δεδομένων και η αντιγραφή δεδομένων είναι defacto Cassandra. Ο χώρος στο δίσκο δεν είναι πιο ακριβός από τη μνήμη, την επεξεργασία της CPU και τη λειτουργία IO. Ως Cassandra είναι μια κατανεμημένη βάση δεδομένων, επομένως η αντιγραφή δεδομένων παρέχει άμεση διαθεσιμότητα δεδομένων και κανένα σημείο αποτυχίας.

Cassandra Στόχοι Μοντελοποίησης Δεδομένων

Θα πρέπει να έχετε τους ακόλουθους στόχους κατά τη μοντελοποίηση δεδομένων Cassandra:

Διαδώστε τα δεδομένα ομοιόμορφα γύρω από το Cluster

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

Ελαχιστοποιήστε τον αριθμό των κατατμήσεων που διαβάζονται κατά την αναζήτηση δεδομένων

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

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

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

Προσπαθήστε λοιπόν να επιλέξετε έναν ισορροπημένο αριθμό κατατμήσεων.

Καλό πρωτεύον κλειδί 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 και το Year είναι το κλειδί κατάτμησης και
  • Το SongName είναι η στήλη ομαδοποίησης.
  • Τα δεδομένα θα ομαδοποιηθούν με βάση το SongName. Σε αυτόν τον πίνακα, κάθε χρόνο, θα δημιουργείται ένα νέο διαμέρισμα. Όλα τα τραγούδια της χρονιάς θα είναι στον ίδιο κόμβο. Αυτό το πρωτεύον κλειδί θα είναι πολύ χρήσιμο για τα δεδομένα.

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

Μοντελοποίηση των δεδομένων σας Cassandra

Κατά τη μοντελοποίηση των ερωτήσεών σας πρέπει να έχετε υπόψη σας τα ακόλουθα:

Προσδιορίστε ποια ερωτήματα θέλετε να υποστηρίξετε

Πρώτα απ 'όλα, καθορίστε ποια ερωτήματα θέλετε.

Για παράδειγμα, χρειάζεστε;

  • Ενώνει
  • Ομαδοποίηση από
  • Φιλτράρισμα σε ποια στήλη κ.λπ.

Δημιουργήστε πίνακα σύμφωνα με τα ερωτήματά σας

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

Χειρισμός μιας προς ένα σχέσης Cassandra

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

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

Ένα προς ένα σχέση μέσα Cassandra
Ένα προς ένα σχέση μέσα Cassandra

Create table Student_Course
    (
        Student rollno int primary key,
        Student_name text,
        Course_name text,
    );

Χειρισμός μιας προς πολλούς σχέσης Cassandra

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

Για παράδειγμα, ένα μάθημα μπορεί να μελετηθεί από πολλούς φοιτητές. Θέλω να ψάξω όλους τους φοιτητές που σπουδάζουν ένα συγκεκριμένο μάθημα.

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

Σχέση One to Many in Cassandra
Σχέση One to Many in Cassandra

Create table Student_Course
    (
        Student_rollno int,
        Student_name text,
        Course_name text,
    );

Μπορώ να ανακτήσω όλους τους μαθητές για ένα συγκεκριμένο μάθημα με το ακόλουθο ερώτημα.

Select * from Student_Course where Course_name='Course Name';

Χειρισμός πολλών προς πολλούς σχέσεων Cassandra

Πολλές έως πολλές σχέσεις σημαίνει να έχετε πολλές έως πολλές αντιστοιχίες μεταξύ δύο πινάκων.

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

Σχέση από πολλούς σε πολλούς Cassandra
Σχέση από πολλούς σε πολλούς Cassandra

Θέλω να ψάξω όλους τους φοιτητές που σπουδάζουν ένα συγκεκριμένο μάθημα. Επίσης, θέλω να ψάξω όλο το μάθημα που σπουδάζει ένας συγκεκριμένος φοιτητής.

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

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

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 Μοντελοποίηση δεδομένων

RDBMS Cassandra
Αποθηκεύει δεδομένα σε κανονικοποιημένη μορφή Αποθηκεύει δεδομένα σε αποκανονική μορφή
dbms παλαιού τύπου; δομημένα δεδομένα Κατάστημα ευρείας σειράς, Dynamic; δομημένα & μη δομημένα δεδομένα

Σύνοψη

  • Μοντελοποίηση δεδομένων σε Cassandra είναι διαφορετικό από άλλα Βάσεις δεδομένων RDBMS.
  • Cassandra Η μοντελοποίηση δεδομένων έχει κάποιους κανόνες. Αυτοί οι κανόνες πρέπει να τηρούνται για καλή μοντελοποίηση δεδομένων. Εκτός από αυτούς τους κανόνες, είδαμε τρεις διαφορετικές περιπτώσεις μοντελοποίησης δεδομένων και πώς να τις αντιμετωπίσουμε.
  • Σχέση ένα προς ένα σημαίνει ότι δύο πίνακες έχουν μία προς μία αντιστοιχία.
  • Ένα προς πολλές σχέσεις σημαίνει ότι υπάρχει μία προς πολλές αντιστοιχίες μεταξύ δύο πινάκων.
  • Πολλές έως πολλές σχέσεις σημαίνει να έχετε πολλές έως πολλές αντιστοιχίες μεταξύ δύο πινάκων.