Architecture Decision Record

Active theme: Light

← Παραδείγματα καταγραφής αποφάσεων

Καταγραφή αρχιτεκτονικής απόφασης: επιλογή τεχνολογίας βάσης δεδομένων

Κατάσταση

Αποδεκτή

Πλαίσιο

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

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

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

Οι βάσεις δεδομένων γεγονότων αποθηκεύουν δεδομένα ως σειρά γεγονότων, καταγράφοντας κάθε αλλαγή στα δεδομένα. Είναι κατάλληλες για εφαρμογές που απαιτούν έλεγχο (auditing), event sourcing και σύνθετη επεξεργασία δεδομένων. Παραδείγματα είναι οι Apache Kafka, Apache Pulsar και AWS Kinesis.

Απόφαση

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

Αιτιολόγηση

Επιλέξαμε μια βάση δεδομένων εγγράφων επειδή:

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

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

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

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

Συνέπειες

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

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