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

NoSQL standouts: Συγκρίνονται οι καλύτερες βάσεις δεδομένων κλειδιού-τιμής

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

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

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

Συγκρίθηκαν οι δυνατότητες βάσης δεδομένων NoSQL κλειδιού

Πέντε ευρέως χρησιμοποιούμενα προϊόντα (συμπεριλαμβανομένης μιας υπηρεσίας cloud) αξίζουν την προσοχή σας. Χρεώνονται ρητά ως βάσεις δεδομένων κλειδί-τιμής ή προσφέρουν αποθήκευση κλειδιού-τιμής ως κεντρικό χαρακτηριστικό. Οι βασικές διαφορές τους:

  • Το Hazelcast και το Memcached τείνουν προς τον μινιμαλισμό και δεν χρειάζεται καν να δημιουργήσουν αντίγραφα ασφαλείας των δεδομένων στο δίσκο.
  • Το Aerospike, το Cosmos DB και το Redis έχουν πλήρη χαρακτηριστικά, αλλά εξακολουθούν να περιστρέφονται γύρω από τη μεταφορά κλειδιού-τιμής.

Πίνακας: Σύγκριση προϊόντων βάσης δεδομένων NoSQL βασικής αξίας

Κλειδί: μεγάλο= Linux, Δ= Windows, Μ= MacOS, μικρό= Solaris, Εγώ= iOS, ΕΝΑ= Android, Ο= Άλλο.

*Μέσω εφαρμογής τρίτου μέρους.

 ΑεροδιαστημικήHazelcast IMDGMicrosoft Azure Cosmos DBΑπομνημόνευσηRedis
ΠλατφόρμεςLWMOΙάβαΜόνο για σύννεφοLWMOLWMO
Τρέχουσα έκδοση3.14.1.13.9ΟΧΙ1.5.14.0.1
Αρχική έκδοση20122008201720032009
ΑδειαAGPLApache 2ΙδιόκτητοςBSDBSD
Υποστηρίζεται από δίσκοΝαί Οχι Ναί Οχι ΝαιBSD
ΟμαδοποίησηΝαίΝαίΝαί Οχι Ναί
Θραύση / διαχωρισμόςΝαίΝαίΝαί Οχι Ναί
Εγγενής δέσμη ενεργειώνΝαίΙάβαΝαί Οχι Ναί
ΣυναλλαγέςΑνά κλειδίΝαίΝαί Οχι Ναί
ΕνσωματώσιμοΝαί*

Ναί Οχι Ναί*

Ναί*

Βάση δεδομένων NoSQL κλειδιού Aerospike σε βάθος

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

Χαρακτηριστικά μοναδικά για την Aerospike

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

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

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

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

Πώς χειρίζεται η Aerospike αποθήκευση και ομαδοποίηση

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

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

Σενάριο στην Aerospike

Όπως και η Redis, η Aerospike επιτρέπει στους προγραμματιστές να γράφουν σενάρια Lua ή UDFs (λειτουργίες καθορισμένες από το χρήστη), που εκτελούνται μέσα στον κινητήρα Aerospike. Μπορείτε να χρησιμοποιήσετε UDF για να διαβάσετε ή να αλλάξετε εγγραφές, αλλά είναι καλύτερο να τα χρησιμοποιήσετε για να εκτελέσετε λειτουργίες υψηλής ταχύτητας, μόνο για ανάγνωση, μείωση χάρτη σε συλλογές ή "ροές" εγγραφών σε πολλούς κόμβους.

Πού να πάρετε το Aerospike

Μπορείτε να κατεβάσετε την έκδοση κοινότητας της Aerospike απευθείας από τον ιστότοπο της Aerospike. Αυτό περιλαμβάνει εκδόσεις διακομιστή για Linux, εκδόσεις για επιτραπέζιους υπολογιστές για MacOS της Apple και Windows της Microsoft, εκδόσεις cloud για Amazon EC2, Azure και Google Compute Engine και κοντέινερ Docker. Η εταιρική έκδοση του Aerospike διατίθεται μέσω του προγράμματος γρήγορης εκκίνησης της Aerospike, το οποίο παρέχει απεριόριστη δοκιμαστική έκδοση 90 ημερών.

Ο πηγαίος κώδικας είναι διαθέσιμος στο GitHub.

Βάση δεδομένων NoSQL κλειδιού-τιμής Hazelcast IMDG

Το Hazelcast χρεώνεται ως «πλέγμα δεδομένων στη μνήμη», ουσιαστικά ένας τρόπος συγκέντρωσης πόρων RAM και CPU σε πολλά μηχανήματα, ώστε να επιτρέπεται η διανομή συνόλων δεδομένων σε αυτά τα μηχανήματα και η χειραγώγηση στη μνήμη.

Οι βάσεις δεδομένων NoSQL προσφέρουν δυνατότητες κλειδιού, γραφήματος ή εγγράφου. Το Hazelcast επικεντρώνεται στη λειτουργικότητα κλειδιού-τιμής, δίνοντας έμφαση στην γρήγορη πρόσβαση σε κατανεμημένα δεδομένα. Σύμφωνα με τους κατασκευαστές του, μπορεί επίσης να χρησιμοποιηθεί ως εναλλακτική λύση σε προϊόντα όπως το Pivotal Gemfire, το Software Terracotta και το Oracle Coherence.

Το Hazelcast μπορεί να εκτελεστεί ως κατανεμημένη υπηρεσία ή να ενσωματωθεί απευθείας σε μια εφαρμογή Java. Οι πελάτες είναι διαθέσιμοι για Java, Scala, .Net, C / C ++, Python και Node.js, και ένας για Go βρίσκεται σε εξέλιξη.

Χαρακτηριστικά μοναδικά για το Hazelcast

Το Hazelcast έχει κατασκευαστεί με Java και διαθέτει οικοσύστημα με επίκεντρο την Java. Κάθε κόμβος σε ένα σύμπλεγμα Hazelcast εκτελεί μια παρουσία της κεντρικής βιβλιοθήκης του Hazelcast, IMDG, στο JVM. Ο τρόπος με τον οποίο λειτουργεί το Hazelcast με δεδομένα αντιστοιχεί επίσης στενά στις γλωσσικές δομές της Java. Η διεπαφή χάρτη της Java, για παράδειγμα, χρησιμοποιείται από την Hazelcast για την παροχή αποθήκευσης κλειδιού-τιμής. Όπως με το Memcached, τίποτα δεν γράφεται στο δίσκο. όλα διατηρούνται στη μνήμη ανά πάσα στιγμή.

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

Εκτός από τα ζεύγη κλειδιών-τιμών, μπορείτε να αποθηκεύσετε και να διανείμετε πολλά άλλα είδη δομών δεδομένων μέσω του Hazelcast. Ορισμένες είναι απλές υλοποιήσεις αντικειμένων Java, όπως Χάρτης. Άλλοι είναι συγκεκριμένοι για το Hazelcast. Το MultiMap, για παράδειγμα, είναι μια παραλλαγή στον χώρο αποθήκευσης κλειδιού-τιμής που μπορεί να αποθηκεύσει πολλές τιμές με το ίδιο κλειδί. Αυτές οι δυνατότητες καθιστούν δυνατή την προσομοίωση ορισμένων συμπεριφορών άλλων συστημάτων NoSQL, όπως η οργάνωση δεδομένων σε έγγραφα, αλλά η έμφαση είναι στις δομές που επιτρέπουν τη γρήγορη διανομή και πρόσβαση δεδομένων.

Πώς το Hazelcast χειρίζεται τη συγκέντρωση

Τα συμπλέγματα Hazelcast δεν έχουν ρύθμιση master / slave. όλα είναι ομότιμα. Τα δεδομένα διαχωρίζονται αυτόματα και διανέμονται σε όλα τα μέλη του συμπλέγματος. Μπορείτε επίσης να ορίσετε ορισμένα μέλη συμπλέγματος ως "lite", τα οποία δεν διαθέτουν δεδομένα στην αρχή, αλλά αργότερα μπορούν να προωθηθούν σε πλήρη μέλη. Αυτό επιτρέπει σε ορισμένους κόμβους να χρησιμοποιούνται αυστηρά για υπολογισμό ή να διανέμουν δεδομένα σταδιακά μέσω ενός συμπλέγματος κατά τη μεταφορά τους στο διαδίκτυο.

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

Πού να πάρετε το Hazelcast

Το Hazelcast είναι διαθέσιμο για λήψη απευθείας από τον ιστότοπο Hazelcast. Συνήθως αναπτύσσεται ως συλλογή αρχείων Java .JAR. Οι εικόνες του Docker είναι επίσης διαθέσιμες στο επίσημο μητρώο του Docker.

Μπορείτε να πραγματοποιήσετε λήψη της εταιρικής έκδοσης του Hazelcast απευθείας από το Hazelcast. Μπορείτε επίσης να λάβετε ένα δωρεάν δοκιμαστικό κλειδί 30 ημερών για το Hazelcast.

Βάση δεδομένων κλειδί-τιμής NoSQL με μνήμη

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

Δυνατότητες μοναδικές στο Memcached

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

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

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

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

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

Πώς το Memcached χειρίζεται την ομαδοποίηση

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

Πού να πάρετε το Memcached

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

Βάση δεδομένων NoSQL κλειδιού-τιμής Microsoft Azure Cosmos DB

Οι περισσότερες βάσεις δεδομένων έχουν ένα γενικό παράδειγμα: αποθήκευση εγγράφων, αποθήκευση κλειδιού-τιμής, αποθήκευση ευρείας στήλης, βάση δεδομένων γραφημάτων και ούτω καθεξής. Όχι τόσο Azure Cosmos DB. Προέρχεται από τη βάση δεδομένων NoSQL της Microsoft ως υπηρεσία, DocumentDB, το Cosmos DB είναι η προσπάθεια της Microsoft να δημιουργήσει μια μοναδική βάση δεδομένων που να μπορεί να χρησιμοποιεί πολλαπλά παραδείγματα.

Δυνατότητες μοναδικές για το Azure Cosmos DB

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

Η Cosmos DB χρησιμοποιεί αυτά τα δομικά στοιχεία για την αναπαραγωγή της συμπεριφοράς πολλαπλών τύπων βάσεων δεδομένων. Μπορεί να αναπαραγάγει τη συμπεριφορά των πινάκων που βρίσκονται σε συμβατικές σχεσιακές βάσεις δεδομένων. Αλλά μπορεί επίσης να αναπαράγει τη λειτουργικότητα των τύπων δεδομένων που βρίσκονται σε συστήματα NoSQL - schemaless JSON έγγραφα (DocumentDB και MongoDB) και γραφήματα (Gremlin, Apache TinkerPop).

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