Πώς να εξηγήσετε τη διαφορά μεταξύ SQL και NoSQL στη γιαγιά σας

Πώς να εξηγήσετε τη διαφορά μεταξύ SQL και NoSQL στη γιαγιά σας

Μία από τις πιο σημαντικές αποφάσεις που λαμβάνει ένας προγραμματιστής είναι ποια βάση δεδομένων θα χρησιμοποιήσει. Για πολλά χρόνια, οι επιλογές περιορίζονταν σε διάφορες επιλογές σχεσιακής βάσης δεδομένων που υποστήριζαν τη δομημένη γλώσσα ερωτημάτων (SQL). Αυτά περιλαμβάνουν MS SQL Server, Oracle, MySQL, PostgreSQL, DB2 και πολλά άλλα.

Τα τελευταία 15 χρόνια, πολλές νέες βάσεις δεδομένων No-SQL εμφανίστηκαν στην αγορά. Αυτά περιλαμβάνουν καταστήματα βασικών τιμών όπως το Redis και το Amazon DynamoDB, βάσεις δεδομένων ευρειών στηλών όπως Cassandra και HBase, καταστήματα εγγράφων όπως MongoDB και Couchbase και βάσεις δεδομένων γραφημάτων και μηχανές αναζήτησης όπως Elasticsearch και Solr.

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

Εξήγηση της SQL στη γιαγιά

Γιαγιά, φαντάσου ότι δεν είμαι ο μόνος σου εγγονός. Αντίθετα, η μαμά και ο μπαμπάς αγαπήθηκαν ο ένας τον άλλον σαν κουνέλια, έκαναν 100 παιδιά και μετά υιοθέτησαν άλλα 50.

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

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

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

id
όνομα
γενέθλια
τελευταία επίσκεψη
μέγεθος ρούχων
αγαπημένο παγωτό
θετός

1
Jimmy
09-22-1992
09-01-2019
L
Σοκολάτα μέντας
ψευδής

2
Jessica
07-21-1992
02-22-2018
M
δρόμος με πέτρες
αληθής

...συνεχίστε τη λίστα!

Κατάλογος εγγονών

Μετά από λίγο τα καταλαβαίνεις όλα και έχουμε σχεδόν τελειώσει με τη λίστα! Ωστόσο, γυρνάς σε μένα και λες: «Ξεχάσαμε να προσθέσουμε χώρο για συζύγους, χόμπι, εγγόνια!» Αλλά όχι, δεν το ξεχάσαμε! Αυτό ακολουθεί περαιτέρω και απαιτεί ένα νέο φύλλο χαρτιού.

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

id
εγγονός_id
όνομα
γενέθλια

1
2
Γιάννης
06-01-1988

2
9
Fernanda
03-05-1985

...περισσότεροι σύζυγοι!

Κατάλογος συζύγων

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

Μετά από καμιά δεκαριά μπισκότα, χρειάζομαι έναν υπνάκο. «Μπορείς να συνεχίσεις, γιαγιά;» Φεύγω να πάρω έναν υπνάκο.

Θα επιστρέψω σε λίγες ώρες. Είσαι ωραία, γιαγιά! Όλα φαίνονται υπέροχα εκτός από τη λίστα χόμπι. Υπάρχουν περίπου 1000 χόμπι στη λίστα. Τα περισσότερα από αυτά είναι επαναλαμβανόμενα. Τι συνέβη?

εγγονός_id
χόμπι

1
ποδηλασία

4
ποδηλασία

3
ποδηλασία

7
τρέξιμο

11
ποδηλασία

...ας συνεχίσουμε!

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

id
χόμπι

1
ποδηλασία

2
τρέξιμο

3
κολύμπι

...περισσότερα χόμπι!

Λίστα χόμπι

Μόλις έχουμε τη λίστα με τα χόμπι μας, δημιουργούμε τη δεύτερη λίστα μας και την αποκαλούμε "Χόμπι των εγγονιών».

εγγονός_id
hobby_id

4
1

3
1

7
2

…περισσότερο!

Γενική λίστα με τα χόμπι των εγγονιών

Μετά από όλη αυτή τη δουλειά, η γιαγιά έχει τώρα ένα υπέροχο σύστημα μνήμης για να παρακολουθεί την εκπληκτικά μεγάλη οικογένειά της. Και μετά -για να με κρατήσει περισσότερο- κάνει τη μαγική ερώτηση: «Πού έμαθες να τα κάνεις όλα αυτά;»

Σχεσιακές βάσεις δεδομένων

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

Ένα χαρακτηριστικό γνώρισμα των πιο δημοφιλών σχεσιακών βάσεων δεδομένων είναι η γλώσσα ερωτημάτων SQL (Structured Query Language). Χάρη σε αυτό, αν η γιαγιά μετέφερε το σύστημα μνήμης της στον υπολογιστή, θα μπορούσε να πάρει γρήγορα μια απάντηση σε ερωτήσεις όπως: "Ποιος δεν με επισκέφτηκε πέρυσι, είναι παντρεμένος και δεν έχει χόμπι;"

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

Μερικά βασικά χαρακτηριστικά της MySQL:

  • Είναι αρκετά γνωστό, ευρέως χρησιμοποιούμενο και σχολαστικά ελεγμένο.
  • Υπάρχουν πολλοί ειδικευμένοι προγραμματιστές που έχουν εμπειρία στην εργασία με SQL και σχεσιακές βάσεις δεδομένων.
  • Τα δεδομένα αποθηκεύονται σε διάφορους πίνακες, γεγονός που καθιστά εύκολη τη δημιουργία σχέσεων χρησιμοποιώντας πρωτεύοντα και ξένα κλειδιά (αναγνωριστικά).
  • Είναι εύκολο στη χρήση και αποτελεσματικό, καθιστώντας το ιδανικό για μεγάλες και μικρές επιχειρήσεις.
  • Ο πηγαίος κώδικας είναι σύμφωνα με τους όρους της Γενικής Δημόσιας Άδειας GNU.

Τώρα ξεχάστε το ΟΛΑ.

Εξηγώντας το NoSQL στη γιαγιά

Γιαγιά, έχουμε μια τεράστια οικογένεια. Υπάρχουν 150 εγγόνια σε αυτό! Πολλοί από αυτούς είναι παντρεμένοι, έχουν παιδιά, ενδιαφέρονται για κάτι κ.λπ. Στην ηλικία σου είναι αδύνατο να θυμάσαι τα πάντα για όλους μας. Αυτό που χρειάζεστε είναι ένα σύστημα απομνημόνευσης!

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

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

{ 
  "_id":"dkdigiye82gd87gd99dg87gd",
  "name":"Cody",
  "birthday":"09-12-2006",
  "last_visit":"09-02-2019",
  "clothing_size":"XL",
  "favorite_ice_cream":"Fudge caramel",
  "adopted":false,
  "hobbies":[ 
     "video games",
     "computers",
     "cooking"
  ],
  "spouse":null,
  "kids":[ 

  ],
  "favorite_picture":"file://scrapbook-103/christmas-2010.jpg",
  "misc_notes":"Prefers ice-cream cake on birthday instead of chocolate cake!"
}

Я: "Φαίνεται ότι όλα είναι έτοιμα!"
Бабушка: «Περίμενε, τι γίνεται με τα άλλα εγγόνια;»
Я: "Ναι ακριβώς. Στη συνέχεια, διαθέτουμε μια σελίδα για το καθένα."
Бабушка: «Θα πρέπει να γράψω όλες τις ίδιες πληροφορίες για όλους όπως έκανα για εσάς;»
Я: «Όχι, μόνο αν θέλεις. Αφησε με να δείξω."
Παίρνοντας το στυλό της γιαγιάς μου, γυρίζω σελίδα και γρήγορα σημειώνω πληροφορίες για την λιγότερο αγαπημένη μου ξαδέρφη.

{ 
  "_id":"dh97dhs9b39397ss001",
  "name":"Tanner",
  "birthday":"09-12-2008",
  "clothing_size":"S",
  "friend_count":0,
  "favorite_picture":null,
  "remember":"Born on same day as Cody but not as important"
}

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

Όταν όλα γίνονται, κάνει τη μαγική ερώτηση: "Πού έμαθες να τα κάνεις όλα αυτά;"

Βάσεις δεδομένων NoSQL

Υπάρχουν πολλά Βάσεις δεδομένων NoSQL ("όχι μόνο SQL"). Στα παραδείγματά μας δείξαμε βάση δεδομένων εγγράφων. Οι βάσεις δεδομένων NoSQL μοντελοποιούν δεδομένα με τρόπους που εξαλείφουν τις σχέσεις πινάκων που χρησιμοποιούνται στις σχεσιακές βάσεις δεδομένων. Αυτές οι βάσεις δεδομένων έγιναν δημοφιλείς στις αρχές της δεκαετίας του 2000 μεταξύ των εταιρειών που χρειάζονταν ομαδοποίηση βάσεων δεδομένων βάσει cloud, λόγω των καθαρών απαιτήσεων κλιμάκωσης (π.χ. Facebook). Σε τέτοιες εφαρμογές, η συνέπεια των δεδομένων ήταν πολύ λιγότερο σημαντική από την απόδοση και την επεκτασιμότητα.

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

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

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

Αναλυτική σύγκριση

Η MySQL απαιτεί ένα καθορισμένο και δομημένο σχήμα.
Το NoSQL σάς επιτρέπει να αποθηκεύετε οποιαδήποτε δεδομένα σε ένα «έγγραφο».

Η MySQL υποστηρίζεται από μια τεράστια κοινότητα.
Η NoSQL έχει μια μικρή και ταχέως αναπτυσσόμενη κοινότητα.

Το NoSQL είναι εύκολο να κλιμακωθεί.
Η MySQL χρειάζεται περισσότερη διαχειρισιμότητα.

Η MySQL χρησιμοποιεί SQL, η οποία χρησιμοποιείται σε πολλούς τύπους βάσεων δεδομένων.
Η NoSQL είναι μια βάση δεδομένων από το σχεδιασμό με δημοφιλείς υλοποιήσεις.

Η MySQL χρησιμοποιεί τυπική γλώσσα ερωτημάτων (SQL).
Η NoSQL δεν χρησιμοποιεί τυπική γλώσσα ερωτημάτων.

Η MySQL έχει πολλά εξαιρετικά εργαλεία αναφοράς.
Το NoSQL διαθέτει πολλά εργαλεία αναφοράς που είναι δύσκολο να τυποποιηθούν.

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

Σκέψεις 8 βάση

Η εταιρεία 8 βάση, όπου εργάζομαι, τροφοδοτούμε τον χώρο εργασίας κάθε έργου με μια σχεσιακή βάση δεδομένων Aurora MySQL που φιλοξενείται στο AWS. Ενώ το NoSQL είναι μια λογική επιλογή όταν οι απαιτήσεις της εφαρμογής σας απαιτούν υψηλή απόδοση και επεκτασιμότητα, πιστεύουμε ότι η ισχυρή συνέπεια δεδομένων που παρέχεται από ένα DBMS είναι απαραίτητη κατά τη δημιουργία εφαρμογών SaaS και άλλου επιχειρηματικού λογισμικού.

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

Μάθετε περισσότερα σχετικά με την ανάπτυξη με Aurora, Serverless και GraphQL με το 8base.com εδώ.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο