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

MongoDB, Cassandra και HBase - οι τρεις βάσεις δεδομένων NoSQL για παρακολούθηση

Το Hadoop λαμβάνει μεγάλο μέρος της πίστωσης δεδομένων, αλλά η πραγματικότητα είναι ότι οι βάσεις δεδομένων NoSQL αναπτύσσονται πολύ ευρύτερα - και αναπτύσσονται πολύ ευρύτερα. Στην πραγματικότητα, ενώ η αγορά για έναν προμηθευτή Hadoop είναι σχετικά απλή, η επιλογή μιας βάσης δεδομένων NoSQL είναι κάτι άλλο. Υπάρχουν, τελικά, πάνω από 100 βάσεις δεδομένων NoSQL, όπως δείχνει η κατάταξη δημοτικότητας της βάσης δεδομένων DB-Engines.

Ποιο πρέπει να διαλέξετε;

Χαλασμένο για επιλογή

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

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

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

Τα δεδομένα του LinkedIn από το 451 Research δείχνουν πώς η αγορά βαρύνει τα MongoDB, Cassandra και HBase:

Αυτά είναι τα δεδομένα προφίλ του LinkedIn. Μια πιο ολοκληρωμένη προβολή είναι το DB-Engines ', το οποίο συγκεντρώνει εργασίες, αναζήτηση και άλλα δεδομένα για να κατανοήσει τη δημοτικότητα της βάσης δεδομένων. Ενώ οι Oracle, SQL Server και MySQL κυριαρχούν στο ανώτατο όριο, οι MongoDB (αρ. 5), Cassandra (αρ. 9) και HBase (αρ. 15) τους δίνουν μια προσπάθεια για τα χρήματά τους.

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

Για να κατανοήσω καλύτερα γιατί φωτίζουν αυτές οι τρεις βάσεις δεδομένων, ζήτησα από εκπροσώπους από τον καθένα να προσδιορίσουν βασικά χαρακτηριστικά για την επιτυχία τους: Kelly Stirman, διευθυντής προϊόντων στο MongoDB. Patrick McFadin, επικεφαλής ευαγγελιστής της Κασσάνδρας στο DataStax. και ο Justin Kestelyn, ανώτερος διευθυντής σχέσεων προγραμματιστών στην Cloudera.

Αλλά πρώτα, πρέπει να καταλάβουμε γιατί έχει σημασία το NoSQL.

Ένας κόσμος χτισμένος με μη δομημένα δεδομένα

Ζούμε όλο και περισσότερο σε έναν κόσμο όπου τα δεδομένα δεν ταιριάζουν όμορφα στις τακτοποιημένες σειρές και στήλες ενός RDBMS. Τα κινητά, τα κοινωνικά και το cloud computing έχουν δημιουργήσει μια τεράστια πλημμύρα δεδομένων. Σύμφωνα με διάφορες εκτιμήσεις, το 90% των παγκόσμιων δεδομένων δημιουργήθηκε τα τελευταία δύο χρόνια, με το Gartner να συνδέει το 80% όλων των εταιρικών δεδομένων ως μη δομημένων. Επιπλέον, τα μη δομημένα δεδομένα αυξάνονται με διπλάσιο ρυθμό δομημένων δεδομένων.

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

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

MongoDB: Από τους προγραμματιστές, για τους προγραμματιστές

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

Το MongoDB είναι συχνά το πρώτο που θα δοκιμάσουν οι προγραμματιστές βάσεων δεδομένων NoSQL επειδή είναι τόσο εύκολο να το μάθεις. Ο Will Shulman, Διευθύνων Σύμβουλος της MongoLab (ένας πάροχος υπηρεσιών MongoDB-as-a-service), το λέει με αυτόν τον τρόπο:

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

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

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

Φυσικά, όπως και κάθε τεχνολογία, το MongoDB έχει τα πλεονεκτήματα και τις αδυναμίες του. Το MongoDB έχει σχεδιαστεί για φόρτους εργασίας OLTP. Μπορεί να κάνει πολύπλοκα ερωτήματα, αλλά δεν είναι απαραίτητα η πιο κατάλληλη για φόρτο εργασίας τύπου αναφοράς. Ή εάν χρειάζεστε πολύπλοκες συναλλαγές, δεν πρόκειται να είναι καλή επιλογή. Ωστόσο, η απλότητα του MongoDB το καθιστά ένα εξαιρετικό μέρος για να ξεκινήσετε.

Κασσάνδρα: Ασφαλής εκτέλεση σε κλίμακα

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

Όπως μου είπε ο McFadin του DataStax, οι χρήστες τείνουν να έλκουν προς την Κασσάνδρα όσο περισσότερο χτυπούν το κεφάλι τους ενάντια στη δυσκολία να κάνουν τις σχετικές βάσεις δεδομένων γρηγορότερες και πιο αξιόπιστες, ιδιαίτερα σε κλίμακα. Πρώην Oracle DBA, ο McFadin ενθουσιάστηκε για να ανακαλύψει ότι «η αναπαραγωγή και η γραμμική κλιμάκωση είναι πρωτόγονες» με την Cassandra, και τα χαρακτηριστικά ήταν «ο πρωταρχικός σχεδιαστικός στόχος από την αρχή».

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

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

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

Ένα άρθρο της πίστης NoSQL που έχω από καιρό θεωρώ ότι η Cassandra μπορεί να είναι ισχυρή σε κλίμακα, αλλά απαιτεί πτυχίο διδακτορικού για να ξεκινήσει. Όχι έτσι, ο McFadin επέμεινε:

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

Αυτό σημαίνει ότι η τιμή για την είσοδο στην αποτελεσματική ανάπτυξη της Κασσάνδρας είναι η κατανόηση του μοντέλου δεδομένων και πώς θα λειτουργήσει με την αίτησή σας. Δεδομένης της εξοικείωσης της γλώσσας ερωτημάτων CQL της Cassandra (που προορίζεται να είναι «ακριβώς όπως η SQL εκτός αν δεν είναι»), είπε ο McFadin, δεν είναι μια απότομη καμπύλη μάθησης.

Το πιο σημαντικό, μου είπε, «Η Κασσάνδρα σας ανταμείβει με το ένα πράγμα που θέλετε από μια βάση δεδομένων: χωρίς δράμα. Αυτός είναι ο λόγος για τον οποίο οι χρήστες λατρεύουν να χρησιμοποιούν την Cassandra. "

HBase: Φίλοι του Bosom με το Hadoop

Το HBase, όπως το Cassandra, ένα κατάστημα κλειδιού-τιμής προσανατολισμένο στη στήλη, χρησιμοποιείται σε μεγάλο βαθμό λόγω του κοινού γενεαλογικού του με το Hadoop. Πράγματι, όπως το έθεσε η Kestelyn της Cloudera, «το HBase παρέχει ένα επίπεδο αποθήκευσης βασισμένο σε αρχεία που επιτρέπει γρήγορες, τυχαίες αναγνώσεις και εγγραφές σε δεδομένα, συμπληρώνοντας το Hadoop δίνοντας έμφαση στην υψηλή απόδοση σε βάρος του I / O χαμηλού λανθάνοντος χρόνου».

Ο Kestelyn συνεχίζει:

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

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

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

Αλλά η κλίμακα δεν είναι μόνο η χρησιμότητα. Όπως σημείωσε ο Kestelyn, «Χάρη στη στενή ενσωμάτωσή του με το υπόλοιπο οικοσύστημα Hadoop, τα δεδομένα είναι άμεσα διαθέσιμα σε χρήστες και εφαρμογές μέσω ερωτημάτων SQL (χρησιμοποιώντας Cloudera Impala, Apache Phoenix ή Apache Hive) ή ακόμη και πολύπλευρη αναζήτηση ελεύθερου κειμένου (χρησιμοποιώντας Αναζήτηση Cloudera). " Έτσι, η HBase δίνει στους προγραμματιστές έναν τρόπο να αξιοποιήσουν την υπάρχουσα τεχνογνωσία με το SQL, ενώ βασίζονται σε μια πιο σύγχρονη, κατανεμημένη βάση δεδομένων.

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

Τώρα VP για κινητά στην Adobe, ο Matt Asay ήταν προηγουμένως αντιπρόεδρος της κοινότητας στη MongoDB, Inc. Είναι ομότιμο μέλος του διοικητικού συμβουλίου του Open Source Initiative (OSI) και απέκτησε το διδακτορικό του στο Stanford, όπου επικεντρώθηκε στο open source και άλλα ζητήματα αδειοδότησης πνευματικής ιδιοκτησίας, και τα μεταπτυχιακά του από το Πανεπιστήμιο του Κεντ στο Καντέρμπουρυ και το πτυχίο του από το Πανεπιστήμιο Brigham Young. Ο Asay ήταν ένας από τους πρώτους bloggers.

Το New Tech Forum παρέχει έναν χώρο για να εξερευνήσετε και να συζητήσετε την αναδυόμενη τεχνολογία σε πρωτοφανές βάθος και εύρος. Η επιλογή είναι υποκειμενική, με βάση την επιλογή των τεχνολογιών που πιστεύουμε ότι είναι σημαντικές και έχουν μεγάλο ενδιαφέρον για τους αναγνώστες. δεν αποδέχεται ασφάλεια μάρκετινγκ για δημοσίευση και διατηρεί το δικαίωμα να επεξεργαστεί όλο το περιεχόμενο. Στείλτε όλες τις ερωτήσεις στο [email protected].

$config[zx-auto] not found$config[zx-overlay] not found