Πίνακας περιεχομένων:
- Δεδομένα προσωρινής αποθήκευσης στη μνήμη
- Αντιγραφή δεδομένων σε σκλάβους
- Μοντελοποίηση δεδομένων σε καταστήματα βασικής αξίας
- Το Redis περιλαμβάνει λειτουργίες για την αύξηση και μείωση των τιμών κλειδιών απευθείας, χωρίς να χρειάζεται να κάνετε μια σειρά βημάτων ανάγνωσης-τροποποίησης-ενημέρωσης (RMU). Μπορείτε να το κάνετε σε μια ενιαία συναλλαγή για να διασφαλίσετε ότι καμία άλλη εφαρμογή δεν αλλάζει την τιμή κατά τη διάρκεια μιας ενημέρωσης. Αυτές οι συγκεκριμένες λειτουργίες τύπου δεδομένων περιλαμβάνουν την προσθήκη και την αφαίρεση στοιχείων σε λίστες και σετ.
- Η Redis υπερηφανεύεται ότι είναι ένα πολύ ελαφρύ αλλά απίστευτα γρήγορο κατάστημα βασικής αξίας. Αρχικά σχεδιάστηκε για να είναι ένα κατάστημα μνήμης κλειδιού-τιμής, αλλά τώρα διαθέτει την αποθήκευση δεδομένων με βάση το δίσκο.
Βίντεο: 40 полезных автотоваров с Aliexpress, которые упростят жизнь любому автовладельцу #7 2024
Οι αποθηκευμένες τιμές κλειδιών σε NoSQL αφορούν την ταχύτητα. Μπορείτε να χρησιμοποιήσετε διάφορες τεχνικές για να μεγιστοποιήσετε αυτήν την ταχύτητα, από δεδομένα κρυφής μνήμης, έως πολλαπλά αντίγραφα δεδομένων ή χρησιμοποιώντας τις καταλληλότερες δομές αποθήκευσης.
Δεδομένα προσωρινής αποθήκευσης στη μνήμη
Επειδή τα δεδομένα είναι εύκολα προσπελάσιμα όταν αποθηκεύονται σε μνήμη τυχαίας προσπέλασης (RAM), η επιλογή αποθηκευτικού χώρου κλειδιού που αποθηκεύει δεδομένα στη μνήμη RAM μπορεί να επιταχύνει σημαντικά την πρόσβαση σας σε δεδομένα, υψηλότερου κόστους διακομιστή.
Συχνά, ωστόσο, αυτό το εμπόριο αξίζει να γίνει. Μπορείτε εύκολα να υπολογίσετε ποιο ποσοστό των αποθηκευμένων δεδομένων σας ζητείται συχνά. Εάν γνωρίζετε ότι το πέντε τοις εκατό ζητείται γενικά κάθε λίγα λεπτά, τότε πάρτε το 5 τοις εκατό του μεγέθους δεδομένων σας και προσθέστε αυτόν τον αριθμό ως εφεδρικό χώρο RAM στους διακομιστές βάσης δεδομένων σας.
Λάβετε υπόψη ότι το λειτουργικό σύστημα, άλλες εφαρμογές και ο διακομιστής βάσης δεδομένων έχουν και απαιτήσεις μνήμης.
Αντιγραφή δεδομένων σε σκλάβους
Σε καταστήματα βασικής αξίας, ένα συγκεκριμένο κλειδί αποθηκεύεται σε έναν από τους διακομιστές του συμπλέγματος. Αυτή η διαδικασία ονομάζεται διαχωρισμός κλειδιού . Αυτό σημαίνει ότι εάν ζητηθεί συνεχώς αυτό το κλειδί, αυτός ο κόμβος θα λάβει το μεγαλύτερο μέρος των αιτημάτων. Αυτός ο κόμβος, επομένως, θα είναι πιο αργός από τη μέση ταχύτητα αιτήσεών σας, επηρεάζοντας ενδεχομένως την ποιότητα των υπηρεσιών προς τους χρήστες σας.
Για να αποφύγετε αυτή την κατάσταση, ορισμένα καταστήματα βασικής αξίας υποστηρίζουν την προσθήκη αντίγραφα μόνο για ανάγνωση, που επίσης αναφέρονται ως σκλάβοι. Οι Redis, Riak και Aerospike είναι καλά παραδείγματα. Η αναπαραγωγή επιτρέπει το κλειδί να αποθηκεύεται πολλές φορές σε διάφορους διακομιστές, γεγονός που αυξάνει την ταχύτητα απόκρισης αλλά με το κόστος περισσότερου υλικού.
Ορισμένα καταστήματα με κλειδί-αξία εγγυώνται ότι τα αντίγραφα του κλειδιού θα έχουν πάντα την ίδια τιμή με τον κύριο. Αυτή η εγγύηση καλείται να είναι πλήρως συνεπής. Αν μια ενημέρωση συμβαίνει στον κύριο διακομιστή που κρατάει το κλειδί, όλα τα αντίγραφα είναι εγγυημένα ότι είναι ενημερωμένα.
Δεν είναι όλα τα καταστήματα κλειδιών αξίας που εγγυώνται αυτήν την κατάσταση (Riak, για παράδειγμα), οπότε αν είναι σημαντικό να ενημερωθείτε για το χιλιοστό του δευτερολέπτου, τότε επιλέξτε μια βάση δεδομένων των οποίων τα αντίγραφα είναι πλήρως συνεπή (όπως Aerospike).
Μοντελοποίηση δεδομένων σε καταστήματα βασικής αξίας
Πολλά καταστήματα βασικής αξίας υποστηρίζουν μόνο τις βασικές δομές για τους τύπους τιμών τους, αφήνοντας τον προγραμματιστή εφαρμογής με την εργασία της ερμηνείας των δεδομένων. Η απλή υποστήριξη τύπων δεδομένων συνήθως περιλαμβάνει συμβολοσειρές, ακέραιους αριθμούς, JSON και δυαδικές τιμές.
Για πολλές περιπτώσεις χρήσης, αυτό λειτουργεί καλά, αλλά μερικές φορές είναι χρήσιμη μια κάπως πιο λεπτομερής πρόσβαση στα δεδομένα.Το Redis, για παράδειγμα, υποστηρίζει τους ακόλουθους τύπους τιμών δεδομένων:
-
String
-
Λίστα
-
Ρύθμιση
-
Ταξινόμηση
-
Χάρτες Hash
-
Συστοιχίες Bit
-
να ερωτηθούν για την αντιστοίχιση σειρών τιμών - όπως η αναζήτηση ενός ευρετηρίου τιμών ταξινομημένου κατά ημερομηνία, η οποία είναι πολύ χρήσιμη για την αναζήτηση υποσυνόλων δακτυλογραφημένων δεδομένων.
Λειτουργία με δεδομένα
Το Redis περιλαμβάνει λειτουργίες για την αύξηση και μείωση των τιμών κλειδιών απευθείας, χωρίς να χρειάζεται να κάνετε μια σειρά βημάτων ανάγνωσης-τροποποίησης-ενημέρωσης (RMU). Μπορείτε να το κάνετε σε μια ενιαία συναλλαγή για να διασφαλίσετε ότι καμία άλλη εφαρμογή δεν αλλάζει την τιμή κατά τη διάρκεια μιας ενημέρωσης. Αυτές οι συγκεκριμένες λειτουργίες τύπου δεδομένων περιλαμβάνουν την προσθήκη και την αφαίρεση στοιχείων σε λίστες και σετ.
Μπορείτε ακόμη να παρέχετε τη δυνατότητα αυτόματης συμπλήρωσης σε μια διεπαφή χρήστη της εφαρμογής χρησιμοποιώντας την εντολή Redis ZRANGEBYLEX. Αυτή η εντολή ανακτά ένα σύνολο κλειδιών που ταιριάζει εν μέρει με μια συμβολοσειρά. Έτσι, αν πληκτρολογούσατε "NoSQL for" στη γραμμή αναζήτησης μιας εφαρμογής που βασίστηκε στο Redis, θα δείτε την πρόταση "NoSQL For Dummies. "
Αξιολογώντας το Redis
Η Redis υπερηφανεύεται ότι είναι ένα πολύ ελαφρύ αλλά απίστευτα γρήγορο κατάστημα βασικής αξίας. Αρχικά σχεδιάστηκε για να είναι ένα κατάστημα μνήμης κλειδιού-τιμής, αλλά τώρα διαθέτει την αποθήκευση δεδομένων με βάση το δίσκο.
Μπορείτε να χρησιμοποιήσετε το Redis για να διασφαλίσετε τα δεδομένα ενεργοποιώντας τη λειτουργία AOF (προσάρτηση μόνο αρχείου) και αναθέτοντας στον Redis να αναγκάσει τα δεδομένα σε δίσκο σε κάθε ερώτημα (γνωστό ως αναγκασμένο
fsync flushing ). Το AOF επιβραδύνει τη συγγραφή, φυσικά, αλλά παρέχει υψηλότερο επίπεδο αντοχής για τα δεδομένα. Να γνωρίζετε, ωστόσο, ότι είναι ακόμα πιθανό να χάσετε μέχρι και ένα δευτερόλεπτο εντολών. Επίσης, η Redis πρόσθεσε πρόσφατα μόνο υποστήριξη για ομαδοποίηση. Στην πραγματικότητα, κατά τη στιγμή της γραφής, η υποστήριξη για την ομαδοποίηση του Redis βρίσκεται στη φάση beta testing. Ευτυχώς, ο Redis χρησιμοποιεί ένα μοντέλο συμπλέγματος με κοινόχρηστο στοιχείο, με πλοιάρχους για συγκεκριμένα κλειδιά και σκλάβους που δεν γράφονται απευθείας από έναν πελάτη. μόνο ο πλοίαρχος το κάνει. Η παροχή ομαδοποίησης με κοινόχρηστο στοιχείο δεν θα διευκολύνει το Redis να εφαρμόσει αξιόπιστη ομαδοποίηση από ό, τι για τις βάσεις δεδομένων που επιτρέπουν την εγγραφή σε όλα τα αντίγραφα.
Αν θέλετε ένα πολύ υψηλής ταχύτητας στρώμα προσωρινής αποθήκευσης μνήμης μπροστά από μια άλλη βάση δεδομένων - το MongoDB ή το Riak χρησιμοποιούνται συνήθως με το Redis - τότε αξιολογείτε την επιλογή Redis ως επιλογή. Καθώς η υποστήριξη για την ομαδοποίηση και την ανθεκτικότητα των δεδομένων εξελίσσεται, ίσως η Redis μπορεί να ξεπεράσει άλλες βάσεις δεδομένων back-end.