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

Αναθεώρηση Couchbase: Μια έξυπνη βάση δεδομένων NoSQL

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

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

Το Couchbase Lite είναι μια ενσωματωμένη βάση δεδομένων για κινητά που λειτουργεί εκτός σύνδεσης και συγχρονίζεται με το Couchbase Sync Gateway όταν είναι συνδεδεμένη. Το Sync Gateway συγχρονίζεται με τον Couchbase Server καθώς και με πολλές εμφανίσεις Couchbase Lite.

Ο διακομιστής Couchbase μπορεί να αναπτυχθεί σε εγκαταστάσεις, στο cloud, σε Kubernetes ή σε υβριδικές διαμορφώσεις. Έρχεται τόσο σε ανοιχτές πηγές όσο και σε εταιρικές εκδόσεις.

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

Η Couchbase, η εταιρεία πίσω από τη βάση δεδομένων, αναπτύχθηκε από τη συγχώνευση της Membase (κατασκευαστής μιας βάσης δεδομένων κλειστής αξίας στη μνήμη cache) και της CouchOne (προγραμματιστές της βάσης δεδομένων εγγράφων Apache CouchDB) το 2011. Η νέα εταιρεία ξεκίνησε με το layer value, πρόσθεσε το επίπεδο εγγράφων JSON το 2012 και συνέχισε να προσθέτει μια βάση δεδομένων για κινητά το 2014, ερωτήματα τύπου SQL το 2015, αναζήτηση πλήρους κειμένου το 2017 και αναλυτικά στοιχεία το 2018.

Εναλλακτικές λύσεις και ανταγωνιστές Couchbase

Οι εναλλακτικές λύσεις του Couchbase περιλαμβάνουν το MongoDB, μια άλλη ευέλικτη βάση δεδομένων εγγράφων. Το MongoDB συνδυάστηκε με το Redis για προσωρινή αποθήκευση. Βάση δεδομένων Oracle, μια σχεσιακή βάση δεδομένων υψηλού επιπέδου. και SQL Server, σχεσιακή βάση δεδομένων της Microsoft. Σχεσιακά συστήματα βάσεων δεδομένων σχεδιάστηκαν για χρήση σε μεμονωμένους, μεγάλους διακομιστές και είναι δύσκολο να τα κλιμακώσετε. Το MongoDB είχε σχεδιαστεί για να κάνει αναπαραγωγή master-slave, το οποίο κλιμακώνεται λίγο, αλλά χρειάζεται θραύση για να κλιμακωθεί καλά. Το Redis βοηθά στην επιτάχυνση του MongoDB, αλλά εισάγει ένα άλλο κινούμενο μέρος, το οποίο μπορεί να περιπλέξει τη διαχείριση των συνδυασμένων συστημάτων.

Άλλες πρόσφατες εναλλακτικές λύσεις για το Couchbase περιλαμβάνουν τα CockroachDB, Azure Cosmos DB, Amazon Aurora, Aerospike, Amazon DocumentDB και Amazon DynamoDB. Έχω συζητήσει τόσο τις σχεσιακές όσο και τις επιλογές NoSQL σε προηγούμενες κριτικές.

Αρχιτεκτονική διακομιστή Couchbase

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

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

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

Ο Couchbase Server μπορεί να κλιμακώσει κάθε μία από τις υπηρεσίες του ανεξάρτητα, για να τις κάνει πιο αποτελεσματικές. Η υπηρεσία ερωτήσεων μπορεί να επωφεληθεί από περισσότερους πόρους CPU, η υπηρεσία ευρετηρίου μπορεί να χρησιμοποιεί SSD και η υπηρεσία δεδομένων μπορεί να χρησιμοποιεί περισσότερη μνήμη RAM. Το Couchbase καλεί αυτήν την πολυδιάστατη κλιμάκωση (MDS) και είναι ένα από τα διακριτικά χαρακτηριστικά του Couchbase Server.

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

Το μοντέλο δεδομένων Couchbase JSON υποστηρίζει τόσο βασικούς όσο και σύνθετους τύπους δεδομένων: αριθμούς, συμβολοσειρές, ένθετα αντικείμενα και πίνακες. Μπορείτε να δημιουργήσετε έγγραφα που είναι κανονικοποιημένα ή αποδιαμορφωμένα. Ο διακομιστής Couchbase δεν απαιτεί ούτε υποστηρίζει σχήματα. Αντίθετα, το MongoDB δεν απαιτεί σχήματα, αλλά μπορεί να τα υποστηρίξει και να τα εφαρμόσει εάν το επιλέξει ο προγραμματιστής.

Όπως θα συζητήσω με περισσότερες λεπτομέρειες αργότερα, μπορείτε να αποκτήσετε πρόσβαση σε έγγραφα του Couchbase Server μέσω τεσσάρων μηχανισμών: key-value, ερωτήματα που βασίζονται σε SQL, αναζήτηση πλήρους κειμένου και εκδήλωση JavaScript. Εάν τα έγγραφά σας JSON έχουν δευτερεύοντα έγγραφα ή πίνακες, μπορείτε να αποκτήσετε πρόσβαση σε αυτά απευθείας χρησιμοποιώντας εκφράσεις διαδρομής χωρίς να χρειάζεται να μεταφέρετε και να αναλύσετε ολόκληρο το έγγραφο. Το μοντέλο εξόδου μπορεί να προκαλέσει αλλαγές δεδομένων (Ενημέρωση) ή χρονόμετρα. Επιπλέον, μπορείτε να αποκτήσετε πρόσβαση σε έγγραφα του Couchbase Server μέσω συγχρονισμού με το Couchbase Mobile.

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

Επιλογές ανάπτυξης διακομιστή Couchbase

Μπορείτε να εγκαταστήσετε τον Couchbase Server στις εγκαταστάσεις, στο cloud και στο Kubernetes. Το Couchbase Server Enterprise Edition είναι δωρεάν για ανάπτυξη και δοκιμή και διατίθεται με συνδρομή για παραγωγή. Η ανοιχτή πηγή Couchbase Server Community Edition είναι δωρεάν για όλους τους σκοπούς. Εκτός από ορισμένες παραλείψεις λειτουργιών, το Couchbase Server Edition Edition είναι συμβατό με API με το Couchbase Server Enterprise Edition.

Δημιούργησα μια συνεδρία δοκιμής cloud στο Google Cloud Platform, η οποία (μετά από καθυστέρηση ανάπτυξης πέντε λεπτών) μου έδωσε ένα τριών κόμβων σύμπλεγμα διακομιστή Couchbase και έναν κόμβο Sync Gateway, όλα καλά για τρεις ώρες. Χρειαζόμουν περίπου μία ώρα για να περάσω από τα τέσσερα μαθήματα Couchbase, τα οποία μου έδωσαν μια αίσθηση για την ερώτηση του διακομιστή.

Αυτόνομος χειριστής Couchbase

Ο αυτόνομος χειριστής Couchbase, που υποστηρίζεται μόνο στην έκδοση Enterprise, παρέχει μια εγγενή ενσωμάτωση του Couchbase Server με ανοιχτές πηγές Kubernetes και Red Hat OpenShift. Ο χειριστής επεκτείνει το API Kubernetes δημιουργώντας έναν προσαρμοσμένο ορισμό πόρων και εγγραφεί ως προσαρμοσμένος ελεγκτής διακομιστή Couchbase για τη διαχείριση συστάδων διακομιστή Couchbase. Αυτό μειώνει την προσπάθεια devops που απαιτείται για την εκτέλεση συμπλεγμάτων Couchbase στο Kubernetes και σας επιτρέπει να αυτοματοποιήσετε τη διαχείριση των κοινών εργασιών του Couchbase Server, όπως η διαμόρφωση, η δημιουργία, η κλιμάκωση και η ανάκτηση των συμπλεγμάτων Couchbase Server. Ο χειριστής συνεργάζεται επίσης με την υπηρεσία Azure Kubernetes, την υπηρεσία Amazon Elastic Kubernetes και τη μηχανή Google Kubernetes.

Αναπαραγωγή πολλαπλών κέντρων δεδομένων (XDCR)

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

Το βασικό XDCR υποστηρίζεται σε όλες τις εκδόσεις του Couchbase Server. Το φιλτράρισμα XDCR, η επιτάχυνση και η επίλυση διενέξεων βάσει χρονικής σήμανσης είναι όλες οι λειτουργίες Enterprise Edition.

Εργαλεία ερωτήσεων Couchbase

Μπορείτε να ζητήσετε τον Couchbase Server χρησιμοποιώντας ένα κλειδί για να ανακτήσετε τη σχετική τιμή, η οποία μπορεί να είναι ένα έγγραφο JSON ή ένα Blob. Μπορείτε επίσης να το ζητήσετε με τη γλώσσα N1QL που μοιάζει με SQL ή με αναζήτηση πλήρους κειμένου. Τόσο τα ερωτήματα N1QL όσο και πλήρους κειμένου πηγαίνουν γρηγορότερα εάν ο κάδος έχει ευρετήρια για την υποστήριξη του ερωτήματος.

N1QL

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

Υπάρχουν στην πραγματικότητα δύο παρόμοιες παραλλαγές του N1QL: μία για την υπηρεσία Couchbase Server Query και μία για την υπηρεσία Analytics, η οποία είναι μια λειτουργία Enterprise Edition. Το N1QL για το Analytics βασίζεται σε SQL ++.

Ορισμένες από τις επεκτάσεις N1QL είναι ΧΡΗΣΗ ΚΛΕΙΔΙΩΝ, ΦΩΛΙΑ, UNNEST, και ΛΕΙΠΕΙ. ΧΡΗΣΗ ΚΛΕΙΔΙΩΝ και ΧΡΗΣΙΜΟΠΟΙΕΙΤΕ ΠΡΟΣΦΟΡΑ είναι συμβουλές ερωτήματος για ΣΥΜΜΕΤΟΧΗμικρό. ΦΩΛΙΑ και UNNEST συσκευάστε και αποσυσκευάστε πίνακες. ΛΕΙΠΕΙ είναι μια εναλλακτική λύση για το JSON ΜΗΔΕΝΙΚΟ; ΔΕΝ ΧΑΣΕΙ σημαίνει ότι υπάρχει μια συγκεκριμένη τιμή ή ΜΗΔΕΝΙΚΟ σε ένα έγγραφο. Η λέξη-κλειδί για τιμές που είναι ΔΕΝ ΧΑΣΕΤΕ και ΟΧΙ ΚΕΝΟ είναι ΓΝΩΣΤΟΣ. Τα ερωτήματα N1QL μπορούν να χρησιμοποιούν διαδρομές, οι οποίες ισχύουν επίσης για αναζητήσεις πλήρους κειμένου.

Αναζήτηση πλήρους κειμένου

Το Couchbase υποστηρίζει εξωτερικές μηχανές αναζήτησης πλήρους κειμένου, όπως το Solr, αλλά έχει επίσης τη δική του μηχανή αναζήτησης πλήρους κειμένου βασισμένη σε Go, Bleve. Το Bleve περιλαμβάνεται στο Couchbase Mobile καθώς και στο Couchbase Server και υποστηρίζει τις περισσότερες συντακτικές αναζήτησης που θα περιμένατε.

SDK Couchbase

Όλες οι κύριες υπηρεσίες Couchbase εκτίθενται για προγραμματισμό μέσω του SDK. Τα SDK είναι διαθέσιμα για C / C ++, .Net (C #, F # και Visual Basic .Net), Go, Java, Node.js, PHP, Python και Scala.

Εκτός από τα SDK, το Couchbase προσφέρει στενή ενοποίηση με διάφορα πλαίσια: Spring Data, .NET LINQ και Ottoman Node.js ODM του Couchbase. Για παράδειγμα, το ακόλουθο δείγμα ερωτήματος χρησιμοποιεί το Linq2Couchbase:

{

Διακομιστές = νέα λίστα {new Uri ("// localhost: 8091 /")}

});

var konteks = νέο BucketContext (ClusterHelper.GetBucket ("ταξίδι-δείγμα"));

var query = (από ένα στο πλαίσιο. Ερώτημα ()

όπου a.Country == "Ηνωμένο Βασίλειο"

επιλέξτε α).

Πάρτε (10)

query.ToList (). ForEach (Console.WriteLine);

ClusterHelper.Close ();

Couchbase Mobile

Το Couchbase Mobile έχει δύο μέρη: το Couchbase Lite, το οποίο λειτουργεί σε μια κινητή συσκευή και το Couchbase Sync Gateway, το οποίο λειτουργεί σε έναν κόμβο διακομιστή. Το Couchbase Lite εκτελείται σε iOS, Android, .Net και Xamarin και υποστηρίζει τις γλώσσες Swift, Objective-C, Java, Kotlin και C ++.

Για παράδειγμα, ο ακόλουθος κώδικας Java ορίζει ένα ερώτημα για εκτέλεση σε Android:

Βάση δεδομένων βάσης δεδομένων = DatabaseManager.getDatabase ();

Query searchQuery = QueryBuilder

.select (SelectResult.expression (Expression.property ("όνομα αεροδρομίου")))

. από (DataSource.database (βάση δεδομένων))

.όπου(

Expression.property ("type"). EqualTo (Expression.string ("αεροδρόμιο"))

.and (Expression.property ("airportname"). like (Expression.string (πρόθεμα + "%")))

);

Σημεία αναφοράς Couchbase

Αν και δεν έχει συγκριθεί ο διακομιστής Couchbase, ένα τρίτο μέρος (Altoros) το έκανε χρησιμοποιώντας τις δοκιμές YCSB JSON και key-value και τη δοκιμή TPCx-IoT. Το παρακάτω διάγραμμα αφορά το σημείο αναφοράς εγγράφων JSON. Όπως μπορείτε να δείτε, ο διακομιστής Couchbase ξεπέρασε το MongoDB και το DataStax. Μπορείτε να εκτελέσετε ξανά αυτά τα σημεία αναφοράς, καθώς ο Altoros έχει παράσχει όλα τα απαιτούμενα σενάρια.

Άλτορος

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

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

Κόστος: Έκδοση κοινότητας διακομιστή Couchbase: Δωρεάν. Couchbase Server Enterprise Edition: Οι ετήσιες συνδρομές τιμολογούνται ανά κόμβο και διατίθενται σε διαφορετικά σημεία τιμών ανάλογα με τους απαιτούμενους πυρήνες και RAM Οι κόμβοι ανάπτυξης και δοκιμής είναι δωρεάν. Οι αναπτύξεις νέας έκδοσης Enterprise Edition είναι διαθέσιμες ανά ώρα, με τυπική τιμολόγηση λογισμικού 0,662 $ / κόμβο / ώρα σε AWS για Couchbase Server και 1,661 $ / κόμβο / ώρα για το Mobile Sync Gateway, με ένα τυπικό πρότυπο που χρησιμοποιεί τέσσερις κόμβους διακομιστή και δύο κόμβους συγχρονισμού αρχικά , με αυτόματη κλιμάκωση. Η τιμολόγηση είναι σχεδόν συγκρίσιμη στο Microsoft Azure και στο Google Cloud Platform. Μπορείτε επίσης να φέρετε τη δική σας άδεια και να πληρώσετε μόνο για τους πόρους cloud.

Πλατφόρμα: Διακομιστής Couchbase: Linux, Windows Server 2012 R2 και μεταγενέστερες εκδόσεις. Kubernetes, OpenShift; AWS, Azure, GCP. Ανάπτυξη και δοκιμή διακομιστή Couchbase: MacOS 10.11 και μεταγενέστερη έκδοση, Windows 10 Anniversary Update και μεταγενέστερη έκδοση Λιμενεργάτης. Couchbase Lite: iOS, Android, .Net. Couchbase Sync Gateway: Linux, Windows Server 2010 και νεότερη έκδοση, MacOS 10.12.6 και μεταγενέστερη έκδοση. AWS, Docker, OpenShift.

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