Τι είναι η κοινή χρήση βάσεων δεδομένων;

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

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

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

  • Κλιμάκωση του διακομιστή βάσης δεδομένων
  • Αντιγραφή βάσεων δεδομένων
  • Οριζόντια κατάτμηση

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

Ας ξεκινήσουμε!

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

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

#1. Κλιμάκωση του διακομιστή βάσης δεδομένων

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

Ωστόσο, αυτή η τεχνική έρχεται με τον ακόλουθο περιορισμό. Δεν μπορούμε να έχουμε διακομιστή με άπειρη ισχύ αποθήκευσης και επεξεργασίας. Και πέρα ​​από ένα ορισμένο όριο, έχουμε μειωμένες αποδόσεις.

#2. Αντιγραφή βάσεων δεδομένων

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

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

  Τα καλύτερα εργαλεία παρακολούθησης δικτύου SNMP που θέτουμε σε δοκιμή το 2020

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

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

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

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

#3. Οριζόντια κατάτμηση

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

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

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

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

Πώς λειτουργεί η κοινή χρήση βάσεων δεδομένων;

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

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

Πώς όμως χωρίζουμε τη βάση δεδομένων σε θραύσματα; Και πώς προσδιορίζουμε ποια από τις σειρές μπαίνει σε ποια από τα θραύσματα;

  Πώς να ηχογραφήσετε μια κλήση FaceTime

🔑 Εισαγάγετε το κλειδί κοινής χρήσης.

Κατανόηση του Sharding Key

Ας καταλάβουμε τον ρόλο του κλειδιού διαμοιρασμού.

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

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

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

Σε αυτό το παράδειγμα, ας πούμε ότι πρέπει να χωρίσουμε τη βάση δεδομένων σε πέντε θραύσματα (θραύσμα #0 έως θραύσμα #4) χρησιμοποιώντας το αναγνωριστικό πελάτη ως κλειδί κοινής χρήσης. Σε αυτήν την περίπτωση, μια απλή συνάρτηση κατακερματισμού είναι το customer_ID % 5.

Όλες οι τιμές client_ID που αφήνουν υπόλοιπο μηδέν όταν διαιρούνται με το 5 θα αντιστοιχιστούν στο θραύσμα #0. Και οι τιμές αναγνωριστικού πελάτη που αφήνουν υπολείμματα 1 έως 4 θα αντιστοιχιστούν στο θραύσμα #1 έως το θραύσμα #4, αντίστοιχα.

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

Πλεονεκτήματα του Sharding βάσεων δεδομένων

Εδώ είναι μερικά από τα πλεονεκτήματα του διαμοιρασμού βάσεων δεδομένων:

#1. Υψηλή επεκτασιμότητα

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

#2. Μεγάλη διαθεσιμότητα

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

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

  11 Καλύτερο λογισμικό χρόνου και χρέωσης για διευθυντές ομάδων

Περιορισμοί του Sharding Βάσεων Δεδομένων

Τώρα ας δούμε μερικούς από τους περιορισμούς του διαμοιρασμού της βάσης δεδομένων:

#1. Περίπλοκο

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

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

#2. Ξανασκάρισμα

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

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

#3. Εκτέλεση σύνθετων ερωτημάτων

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

συμπέρασμα

Ας ολοκληρώσουμε τη συζήτηση με μια περίληψη των όσων μάθαμε.

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

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

Η κοινή χρήση βάσεων δεδομένων έχει πλεονεκτήματα όπως η υψηλή διαθεσιμότητα και η επεκτασιμότητα. Μερικά από τα μειονεκτήματα περιλαμβάνουν την πολυπλοκότητα της ρύθμισης του sharding και του reshard όταν ένα ή περισσότερα θραύσματα εξαντλούνται.

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