Τα βασικά των βάσεων δεδομένων NoSQL - και γιατί τα χρειαζόμαστε

Ένας οδηγός για αρχάριους στον κόσμο της NoSQL

Η οργάνωση δεδομένων είναι πολύ δύσκολη. Όταν λέμε οργάνωση, κατηγοριοποιούμε πράγματι πράγματα ανάλογα με τον τύπο και τη λειτουργία του.

Μία επιλογή είναι το RDBMS να μοιάζει με φύλλο Excel - κατηγοριοποιείτε δεδομένα με τη μορφή πινάκων. Μπορείτε να δημιουργήσετε σχέσεις μεταξύ των πινάκων.

Ένα ερώτημα αμφισβητεί τη βάση δεδομένων, η οποία σας δίνει μια σχετική απάντηση σε αντάλλαγμα. Αυτή η γλώσσα ερωτήματος είναι SQL ή Structured Query Language.

Για παράδειγμα,

select * from Employee_Data;

επιλέγει όλα τα δεδομένα υπαλλήλων από τον πίνακα Employee_Data.

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

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

Εδώ δεν μπορούσε να λειτουργήσει η SQL .

Τα μειονεκτήματα του RDBMS

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

Θα σας δείξω παραδείγματα έτσι ώστε να έχετε μια σαφή κατανόηση.

1. Το RDBMS δεν μπορεί να χειριστεί την «Ποικιλία δεδομένων».

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

Τα δεδομένα σιλό αποτελούν επίσης πρόβλημα για τους προγραμματιστές.

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

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

Η αύξηση των δεδομένων από το 2013 έως το 2020 είναι ορατή στην παρακάτω εικόνα.

Περίπου 44 Zeta byte δεδομένων θα δημιουργηθούν το 2020.

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

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

2. Δύσκολο να αλλάξετε πίνακες και σχέσεις.

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

Η αλλαγή του σχήματος θα ήταν σαν να εξαλείψετε το υπάρχον και να σχεδιάσετε ένα νέο σχήμα.

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

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

3. Το RDBMS ακολουθεί τις ιδιότητες ACID της βάσης δεδομένων.

Οι ιδιότητες ACID μιας βάσης δεδομένων είναι ατομικότητα, συνέπεια, απομόνωση και ανθεκτικότητα. ‌

Ατομικότητα - Μια προσέγγιση «όλα ή τίποτα». Εάν οποιαδήποτε δήλωση στη συναλλαγή αποτύχει, ολόκληρη η συναλλαγή επαναφέρεται.

Συνοχή - Η συναλλαγή πρέπει να πληροί όλα τα πρωτόκολλα που ορίζονται από το σύστημα. Χωρίς μισές ολοκληρωμένες συναλλαγές.

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

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

Οι ιδιότητες ACID δεν είναι ευέλικτες.

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

Το θεώρημα της ΚΓΠ

Σύμφωνα με τη Wikipedia, το θεώρημα της CAP ( θεώρημα Brewer) δηλώνει ότι είναι αδύνατο για ένα κατανεμημένο κατάστημα δεδομένων να παρέχει ταυτόχρονα περισσότερες από δύο από τις ακόλουθες τρεις εγγυήσεις:

Συνοχή: Όπως το C στο ACID.

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

Ανοχή κατάτμησης : Κανένα σημείο (ή κόμβος) αποτυχίας.

Είναι δύσκολο να επιτευχθούν και οι τρεις προϋποθέσεις. Πρέπει να συμβιβαστούμε μεταξύ των τριών.

ΒΑΣΗ στη διάσωση!

‌Το NoSQL βασίζεται σε ένα πιο μαλακό μοντέλο γνωστό ως μοντέλο BASE. ΒΑΣΗ ( Β asically A διαθέσιμο , S oft state, E ventual συνέπεια).

Βασικά Διαθέσιμο: Εγγυάται τη διαθεσιμότητα των δεδομένων. Θα υπάρξει απάντηση σε οποιοδήποτε αίτημα (μπορεί να είναι και αποτυχία).

Μαλακή κατάσταση : Η κατάσταση του συστήματος μπορεί να αλλάξει με την πάροδο του χρόνου.

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

Οι βάσεις δεδομένων NoSQL εγκαταλείπουν τις απαιτήσεις A, C και / ή D και, σε αντάλλαγμα, βελτιώνουν την επεκτασιμότητα.

NoSQL

Αυτό συμβαίνει όταν η NoSQL ήρθε στη διάσωση .‌ Είναι « όχι μόνο SQL» ή «Μη σχεσιακές» βάσεις δεδομένων.

Χαρακτηριστικά του NoSQL:

  • Χωρίς σχήμα
  • Τελικά συνεπής (όπως στην ιδιότητα BASE)
  • Αντιγραφή αποθηκευμένων δεδομένων για αποφυγή ενός σημείου αποτυχίας.
  • Μπορεί να χειριστεί ποικιλία δεδομένων και τεράστιες ποσότητες δεδομένων.

Τύποι βάσεων δεδομένων NoSQL

Οι βάσεις δεδομένων NoSQL εμπίπτουν σε τέσσερις κύριες κατηγορίες:

Καταστήματα βασικής αξίας - Riak, Voldemort και Redis

Καταστήματα ευρείας στήλης - Cassandra και HBase.

Βάσεις δεδομένων εγγράφων - MongoDB

Βάσεις δεδομένων γραφημάτων - Neo4J και HyperGraphDB.

Οι λέξεις στη δεξιά πλευρά είναι παραδείγματα των τύπων τύπων βάσεων δεδομένων NoSQL.

1. Βασικά καταστήματα αξίας

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

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

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

Εφαρμογές : Χρήσιμο για αποθήκευση σχολίων και πληροφοριών συνεδρίας. Το‌ Interinter χρησιμοποιεί το Redis για να αποθηκεύει λίστες χρηστών, οπαδών, μη ακολουθούμενων, πινάκων.

2. Καταστήματα ευρείας στήλης

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

Κάθε οικογένεια στηλών είναι ένα κοντέινερ σειρών σε έναν πίνακα RDBMS. Το κλειδί προσδιορίζει τη σειρά που αποτελείται από πολλές στήλες.

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

Πώς αποθηκεύει δεδομένα μια στήλη βάσης δεδομένων;

Εφαρμογές : Το Spotify χρησιμοποιεί το Cassandra για την αποθήκευση χαρακτηριστικών και μεταδεδομένων προφίλ χρήστη.

3. Βάσεις δεδομένων εγγράφων

‌Τα καταστήματα εγγράφων χρησιμοποιεί έγγραφα JSON, XML ή BSON (δυαδική κωδικοποίηση JSON) για την αποθήκευση δεδομένων.

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

Ένα μεμονωμένο έγγραφο είναι η αποθήκευση εγγραφών και των δεδομένων του.

Δεν υποστηρίζει σχέσεις ή συνδέσεις.

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

Εφαρμογές: SEGAχρησιμοποιεί το MongoDB για το χειρισμό 11 εκατομμυρίων λογαριασμών εντός παιχνιδιού που έχουν δημιουργηθεί στο MongoDB.

4. Βάσεις δεδομένων γραφημάτων

‌ Οι κόμβοι και οι σχέσεις είναι τα βασικά συστατικά των βάσεων δεδομένων γραφημάτων. Ένας κόμβος αντιπροσωπεύει μια οντότητα. Μια σχέση αντιπροσωπεύει τον τρόπο με τον οποίο συνδέονται δύο κόμβοι.

Στο RDBMS, η προσθήκη μιας άλλης σχέσης έχει ως αποτέλεσμα πολλές αλλαγές σχήματος.

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

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

Οι διαρκείς διαρκείς σχέσεις είναι πιο γρήγορες.

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

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

Μια βάση δεδομένων γράφημα , το οποίο προκαθορίζει σχέσεις.

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

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

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