Ποια είναι η βασική διαφορά μεταξύ των καταστημάτων βασικής αξίας (Dynamo, Project Voldemort) και των βάσεων δεδομένων με γνώμονα τα έγγραφα (MongoDB, CouchDB);


Απάντηση 1:

Πραγματικά, έχω μόνο εμπειρία με τον Redis (στην πλευρά της βασικής αξίας) και το MongoDB (στην πλευρά του εγγράφου), επομένως μερικά από αυτά μπορεί να μην ισχύουν στο σύνολό τους.

Τα βασικά dbs είναι συνήθως απλούστερα, τόσο από την άποψη του API όσο και του περιεχομένου. Θα χρησιμοποιούσατε ένα για όταν χρειάζεστε διαθέσιμα μικρά αποσπάσματα δεδομένων, όπως ένα μετρητή επισκεψιμότητας ή δεδομένα περιόδου σύνδεσης ή ψηφοφορίες.

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


Απάντηση 2:

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

Πάρτε Mongo - έχετε μια προκαθορισμένη ιεραρχία των κλειδιών και των τιμών όπου το επίπεδο ρίζας πρέπει να είναι βάσεις δεδομένων

Έχουν παιδιά που είναι προκαθορισμένες βασικές αξίες οι οποίες πρέπει να είναι συλλογές.

Έχουν παιδιά που είναι προκαθορισμένες βασικές αξίες που πρέπει να είναι έγγραφα.

Τα έγγραφα έχουν προκαθορισμένα παιδιά τα οποία πρέπει να είναι αντικείμενα BSON (γνωστά και ως JSON εκτεταμένα).

Το JSON δεν είναι τίποτα άλλο από ένα κατάστημα βασικών τιμών με συγκεκριμένη τυποποιημένη μορφή.

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

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

Το κατανεμημένο τμήμα του mongo είναι το μη τετριμμένο έργο που είναι αυτό που είναι δυνητικά ισχυρό όταν γίνεται καλά. Δεν είμαι ιδιαίτερα εντυπωσιασμένος από την αρχιτεκτονική διανομής του mongo, αλλά αυτή είναι μια διαφορετική συζήτηση.

Τα πράγματα όπως το Dynamo και το Voldemort δεν έχουν προκαθορισμένη εφαρμογή σχετικά με τον τρόπο χρήσης των καταστημάτων αξίας κλειδιών. Αυτό σημαίνει ότι δεν έχετε προ-κατασκευασμένα api's που κάνουν τα πράγματα για σας. δηλαδή Λήψη λίστας με τα πλήκτρα επιπέδου 3 που καλούνται πάντοτε έγγραφα που είναι παιδί του κλειδιού αυτού του επιπέδου 2 που ονομάζονται πάντοτε συλλογή. Αυτό σημαίνει επίσης ότι δεν χρειάζεται να χρησιμοποιείτε τις τιμές κλειδιού σας με κάποιο συγκεκριμένο τρόπο και μπορείτε να τις προσαρμόσετε με το πώς θέλετε να κάνετε τα πράγματα.

Είμαι πολύ πιο εντυπωσιασμένος με την αρχιτεκτονική διανομής δεδομένων του Dynamo και του Voldemorts.