Προγραμματισμός

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

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

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

  • Πόσα δεδομένα αναμένετε να αποθηκεύσετε όταν η εφαρμογή είναι ώριμη;
  • Πόσους χρήστες αναμένετε να χειριστείτε ταυτόχρονα στο μέγιστο φορτίο;
  • Ποια διαθεσιμότητα, δυνατότητα κλιμάκωσης, καθυστέρηση, απόδοση και συνέπεια δεδομένων χρειάζεται η εφαρμογή σας;
  • Πόσο συχνά θα αλλάξουν τα σχήματα της βάσης δεδομένων σας;
  • Ποια είναι η γεωγραφική κατανομή του πληθυσμού των χρηστών σας;
  • Ποιο είναι το φυσικό «σχήμα» των δεδομένων σας;
  • Χρειάζεται η εφαρμογή σας διαδικτυακή επεξεργασία συναλλαγών (OLTP), αναλυτικά ερωτήματα (OLAP) ή και τα δύο;
  • Ποια αναλογία ανάγνωσης προς γραφές περιμένετε στην παραγωγή;
  • Χρειάζεστε γεωγραφικά ερωτήματα ή / και ερωτήματα πλήρους κειμένου;
  • Ποιες είναι οι προτιμώμενες γλώσσες προγραμματισμού σας;
  • Έχετε προϋπολογισμό; Εάν ναι, θα καλύπτει άδειες και συμβόλαια υποστήριξης;
  • Υπάρχουν νομικοί περιορισμοί στην αποθήκευση δεδομένων σας;

Ας επεκταθούμε σε αυτές τις ερωτήσεις και τις επιπτώσεις τους.

Πόσα δεδομένα θα αποθηκεύσετε;

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

Εάν η απάντησή σας είναι σε petabytes (εκατομμύρια gigabyte) ή περισσότερα, τότε μόνο λίγες βάσεις δεδομένων θα σας εξυπηρετήσουν καλά και πρέπει να είστε προετοιμασμένοι για σημαντικά κόστη αποθήκευσης δεδομένων, είτε σε κεφαλαιουχικές δαπάνες για αποθήκευση εσωτερικής εγκατάστασης είτε σε λειτουργικές δαπάνες για αποθήκευση στο cloud. Σε αυτήν την κλίμακα μπορεί να θέλετε κλιμακωτό αποθηκευτικό χώρο, ώστε τα ερωτήματα για "ζωντανά" δεδομένα να μπορούν να εκτελούνται στη μνήμη ή έναντι τοπικών SSD για ταχύτητα, ενώ το πλήρες σύνολο δεδομένων βρίσκεται σε περιστρεφόμενους δίσκους για οικονομία.

Πόσοι ταυτόχρονοι χρήστες;

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

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

Ποιες είναι οι απαιτήσεις σας για «ευελιξία»;

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

Η διαθεσιμότητα είναι συχνά βασικό κριτήριο για βάσεις δεδομένων συναλλαγών. Αν και δεν χρειάζεται κάθε εφαρμογή να λειτουργεί 24/7 με διαθεσιμότητα 99,999%, ορισμένοι έχουν. Μερικές βάσεις δεδομένων cloud προσφέρουν διαθεσιμότητα «πέντε-εννέα», αρκεί να τις εκτελείτε σε πολλές ζώνες διαθεσιμότητας. Οι εσωτερικές βάσεις δεδομένων μπορούν συνήθως να διαμορφωθούν για υψηλή διαθεσιμότητα εκτός των προγραμματισμένων περιόδων συντήρησης, ειδικά εάν μπορείτε να δημιουργήσετε ένα ενεργό-ενεργό ζεύγος διακομιστών.

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

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

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

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

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

Είναι τα σχήματα της βάσης δεδομένων σας σταθερά;

Εάν τα σχήματα της βάσης δεδομένων σας είναι απίθανο να αλλάξουν σημαντικά με την πάροδο του χρόνου και θέλετε τα περισσότερα πεδία να έχουν σταθερούς τύπους από εγγραφή σε εγγραφή, τότε οι βάσεις δεδομένων SQL θα ήταν μια καλή επιλογή για εσάς. Διαφορετικά, οι βάσεις δεδομένων NoSQL, μερικές από τις οποίες δεν υποστηρίζουν καν σχήματα, μπορεί να είναι καλύτερες για την εφαρμογή σας. Υπάρχουν, ωστόσο, εξαιρέσεις. Για παράδειγμα, το Rockset επιτρέπει ερωτήματα SQL χωρίς να επιβάλλει ένα σταθερό σχήμα ή σταθερούς τύπους στα δεδομένα που εισάγει.

Γεωγραφική κατανομή χρηστών

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

Οι περισσότερες από τις βάσεις δεδομένων που υποστηρίζουν παγκοσμίως κατανεμημένους κόμβους και ισχυρή συνέπεια χρησιμοποιούν ομάδες συναίνεσης για να επιταχύνουν τις εγγραφές χωρίς να υποβαθμίζουν σοβαρά τη συνέπεια, συνήθως χρησιμοποιώντας τους αλγόριθμους Paxos (Lamport, 1990) ή Raft (Ongaro and Ousterhout, 2013). Οι κατανεμημένες βάσεις δεδομένων NoSQL που τελικά είναι συνεπείς συνήθως χρησιμοποιούν μη συναίνεση, ομότιμη αναπαραγωγή, η οποία μπορεί να οδηγήσει σε διενέξεις όταν δύο αντίγραφα λαμβάνουν ταυτόχρονες εγγραφές στην ίδια εγγραφή, συγκρούσεις που συνήθως επιλύονται ευρετικά.

Σχήμα δεδομένων

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

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

OLTP, OLAP ή HTAP;

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

Αναλογία ανάγνωσης / εγγραφής

Ορισμένες βάσεις δεδομένων είναι γρηγορότερες σε διαβάσεις και ερωτήματα, ενώ άλλες είναι γρηγορότερες κατά την εγγραφή. Ο συνδυασμός των διαβάσεων και των γραφών που περιμένετε από την αίτησή σας είναι ένας χρήσιμος αριθμός που περιλαμβάνεται στα κριτήρια επιλογής της βάσης δεδομένων σας και μπορεί να καθοδηγήσει τις προσπάθειές σας για συγκριτική αξιολόγηση. Η βέλτιστη επιλογή του τύπου ευρετηρίου διαφέρει μεταξύ εφαρμογών ανάγνωσης (συνήθως B-tree) και εφαρμογών βαρύτητας εγγραφής (συχνά ένα δέντρο συγχώνευσης με δομή log, γνωστό και ως δέντρο LSM).

Γεωχωρικά ευρετήρια και ερωτήματα

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

Ευρετήρια και ερωτήματα πλήρους κειμένου

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

Προτιμώμενες γλώσσες προγραμματισμού

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

Δημοσιονομικοί περιορισμοί

Οι βάσεις δεδομένων κυμαίνονται σε τιμή από δωρεάν έως πολύ ακριβά. Πολλές βάσεις δεδομένων έχουν δωρεάν και επί πληρωμή εκδόσεις, και μερικές φορές έχουν περισσότερα από ένα επίπεδα πληρωμένης προσφοράς, για παράδειγμα προσφέρουν μια έκδοση Enterprise και διαφορετικούς χρόνους απόκρισης υπηρεσίας. Επιπλέον, ορισμένες βάσεις δεδομένων είναι διαθέσιμες στο cloud με όρους pay-as-you-go.

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

Νομικοί περιορισμοί

Υπάρχουν πολλοί νόμοι σχετικά με την ασφάλεια και το απόρρητο των δεδομένων. Στην ΕΕ, ο GDPR έχει ευρείες επιπτώσεις στην προστασία της ιδιωτικής ζωής, την προστασία δεδομένων και τη θέση των δεδομένων. Στις ΗΠΑ, το HIPAA ρυθμίζει τις ιατρικές πληροφορίες και το GLBA ρυθμίζει τον τρόπο με τον οποίο τα χρηματοπιστωτικά ιδρύματα χειρίζονται τις προσωπικές πληροφορίες των πελατών. Στην Καλιφόρνια, το νέο CCPA ενισχύει τα δικαιώματα απορρήτου και την προστασία των καταναλωτών.

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

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