Η δημιουργία ενός νέου έργου περιλαμβάνει την επιλογή της σωστής βάσης δεδομένων για την αποθήκευση των δεδομένων σας. Πολλοί προγραμματιστές που γνωρίζω επιλέγουν εξ αρχής τη σχεσιακή βάση δεδομένων. Είναι όμως η καλύτερη απόφαση; Φυσικά, αυτό εξαρτάται από πολλούς παράγοντες. Σε αυτό το άρθρο, θα ήθελα να σας παρουσιάσω άλλους τύπους βάσεων δεδομένων για να διευκολύνετε τις επιλογές σας και να σας βοηθήσω να είστε προετοιμασμένοι στις μελλοντικές σας προσπάθειες.
Ο τύπος της βάσης δεδομένων σας δεν είναι το μόνο θέμα που πρέπει να εξετάσετε. Υπάρχουν πολλά άλλα θέματα που πρέπει να σκεφτείτε, π.χ. πόσους ενεργούς χρήστες μπορεί να έχει η εφαρμογή; Χρειάζεστε ισχυρή συνοχή παντού; Θα αρκεί η ενδεχόμενη συνέπεια σε ορισμένες περιπτώσεις; Υπάρχουν τόσα πολλά ερωτήματα χωρίς ξεκάθαρες απαντήσεις, καθώς "όσο πιο πολύ μπαίνετε στο θέμα, τόσο πιο περίπλοκο γίνεται". Γι' αυτό, παρακαλώ, σημειώστε ότι αυτό το άρθρο επικεντρώνεται μόνο σε τύπους βάσεων δεδομένων.
Πάρτε ένα φλιτζάνι καφέ και απολαύστε αυτό το ανάγνωσμα.
Γενική ταξινόμηση βάσεων δεδομένων
Αρχικά, είναι καλό να γνωρίζετε ότι υπάρχουν δύο βασικοί τύποι βάσεων δεδομένων: οι σχεσιακές (SQL) και οι μη σχεσιακές (NoSQL).
- Οι βάσεις δεδομένων SQL είναι δομημένες με σχεσιακό τρόπο, πράγμα που σημαίνει ότι αποθηκεύετε δεδομένα σε πίνακες και διατηρείτε σχέσεις μεταξύ τους.
- Οι βάσεις δεδομένων NoSQL (όχι μόνο SQL), σε αντίθεση με τις σχεσιακές, δεν είναι καλά δομημένες και, ως εκ τούτου, επιτρέπουν μεγαλύτερη προσαρμοστικότητα και ευελιξία.
Εκτός από τους δύο προαναφερθέντες τύπους, υπάρχει ένας ακόμη τύπος, δηλαδή μια βάση δεδομένων στη μνήμη. Δεν μπορεί να ταξινομηθεί ούτε ως σχεσιακή ούτε ως μη-σχεσιακή, διότι σχετίζεται με το πού αποθηκεύονται φυσικά τα δεδομένα. Κάθε βάση δεδομένων μπορεί να αποθηκεύεται σε δίσκο ή στη μνήμη.
Τύποι βάσεων δεδομένων
1. Σχεσιακή
Κατά τη γνώμη μου, είναι ο πιο δημοφιλής τύπος βάσης δεδομένων. Λειτουργεί καλά με δομικά δεδομένα όπου θέλετε να διατηρήσετε σχέσεις μεταξύ των εγγραφών. Η δομή της βάσης δεδομένων περιγράφεται σε ένα σχήμα.
Τα κύρια πλεονεκτήματα αφορούν τις συναλλαγές (βοηθούν στην εξασφάλιση της ακεραιότητας των δεδομένων και ακολουθούν τους κανόνες ACID) και τη δυνατότητα χειρισμού πολλών και πολύπλοκων ερωτημάτων.
Πότε να το επιλέξετε;
Είναι χρήσιμο για τη διατήρηση δεδομένων που δεν αλλάζουν δομικά πολύ συχνά και τα οποία πρέπει να αποθηκεύσετε μόνιμα, για παράδειγμα:
- CRM (Διαχείριση πελατειακών σχέσεων),
- Διαχείριση παραγγελιών,
- ERP (Επιχείρηση Σχεδιασμός πόρων),
- αποθήκευση δεδομένων ή διαχείριση αποθεμάτων,
- λογιστική ή χρηματοοικονομική.
Παραδείγματα:
Amazon Aurora, Microsoft Azure Βάση δεδομένων SQL, PostgreSQL, MySQL.
Οι σχεσιακές βάσεις δεδομένων είναι ανεπαρκείς για πολλές νέες εφαρμογές και πρέπει να έχετε περισσότερες από μία βάσεις δεδομένων. Στο επόμενο μέρος του άρθρου, θα επικεντρωθώ στις μη σχεσιακές βάσεις δεδομένων.
2. Κλειδί-τιμή
Αποθηκεύει κάθε τιμή δεδομένων με ένα μοναδικό κλειδί. Αυτό σημαίνει ότι η πρόσβαση στα δεδομένα γίνεται με ένα μόνο κλειδί, όπως ακριβώς γίνεται σε έναν χάρτη κατακερματισμού. Σε αντίθεση με τις σχεσιακές βάσεις δεδομένων, δεν επιβάλλει ούτε το σχήμα ούτε τις σχέσεις μεταξύ των εγγραφών. Οι περισσότερες από αυτές τις βάσεις δεδομένων δεν υποστηρίζουν συνήθως λειτουργίες ενημέρωσης. Για να τροποποιήσετε δεδομένα, πρέπει να αντικαταστήσετε ολόκληρο το υπάρχον σύνολο.
Πότε να το επιλέξετε;
Είναι χρήσιμο για δεδομένα που θέλετε να διαβάζετε/γράφετε γρήγορα (αλλά δεν ενημερώνετε πολύ συχνά):
- προσφορές σε πραγματικό χρόνο, διαφημιστικό σερβίρισμα,
- προσωρινή αποθήκευση δεδομένων,
- διαχείριση συνόδου,
- καλάθια αγορών,
- προτιμήσεις πελατών ή διαχείριση προφίλ.
Παραδείγματα:
Memcached, Amazon DynamoDB, Azure Cosmos DB, Redis.
3. Έγγραφο
Αποθηκεύει συλλογές εγγράφων. Κάθε έγγραφο περιέχει πεδία με δεδομένα, τα οποία μπορεί να είναι απλές τιμές ή σύνθετα στοιχεία, όπως λίστες ή παιδικές συλλογές. Είναι σημαντικό να γνωρίζετε ότι κάθε έγγραφο μπορεί να έχει διαφορετική δομή, ακόμη και αν αντιπροσωπεύουν το ίδιο πράγμα (κάθε έγγραφο είναι μοναδικό και εξελίσσεται με την πάροδο του χρόνου). Για παράδειγμα, το πρώτο έγγραφο πελάτη περιέχει λιγότερες πληροφορίες από το δεύτερο:
{
"FirstName": "John",
"LastName": "Fake",
"Motorcycles:" [
{
"Model": "BMW",
"Year": 2020
}
]
}
{
"FirstName": "Alex",
"LastName": "Nolastname",
"Age": 15,
"Address": {
"Country": "Πολωνία",
"City": "Κάπου"
},
"Motorcycles:" [
{
"Model": "BMW",
"Year": 2020
}
]
}
Πότε να το επιλέξετε;
Είναι χρήσιμο για δεδομένα που απαιτούν ένα ευέλικτο σχήμα για γρήγορη επεξεργασία:
- προϊόν κατάλογοι,
- CMS (σύστημα διαχείρισης περιεχομένου),
- προφίλ χρηστών και εξατομίκευση.
Παραδείγματα:
Amazon DocumentDB, Azure Cosmos DB, MongoDB, Redis.
4. Γράφημα
Χρησιμοποιεί μια δομή γραφήματος και αποτελείται από δύο στοιχεία: κόμβους και ακμές. Οι κόμβοι είναι ανάλογοι με τις γραμμές του πίνακα ή τα έγγραφα JSON. Οι ακμές είναι σχέσεις μεταξύ των κόμβων - είναι εξίσου σημαντικές με τους κόμβους. Και οι δύο μπορούν να έχουν ιδιότητες. Επιπλέον, οι ακμές μπορούν να έχουν καθορισμένη κατεύθυνση μιας σχέσης.
Πότε να το επιλέξετε;
Είναι χρήσιμο όταν τα δεδομένα σας είναι παρόμοια με ένα γράφημα, δηλαδή οι σχέσεις μεταξύ στοιχείων δεδομένων είναι δυναμικές και αλλάζουν με την πάροδο του χρόνου. Επιπλέον, είναι μια καλή επιλογή για όταν ένα επιχειρηματικό ή τεχνικό ομάδα πρέπει να κατανοήσουν τις σχέσεις μέσα στα δεδομένα τους. Μερικά εξέχοντα παραδείγματα περιλαμβάνουν:
- οργανογράμματα,
- ανίχνευση απάτης,
- κοινωνικά γραφήματα/δικτύωση,
- κινητήρες συστάσεων,
- γραφήματα γνώσης.
Παραδείγματα:
Amazon Neptune, Neo4j, ArangoDB, Titan.
5. Χρονοσειρές
Αποθηκεύει δεδομένα οργανωμένα ανά χρόνο. Συνήθως, συσσωρεύει τεράστιες ποσότητες δεδομένων σε πραγματικό χρόνο. Χρησιμοποιείται συχνότερα για την αποθήκευση δεδομένων, αν και η ενημέρωση είναι πολύ σπάνια. Γενικά, μια χρονοσφραγίδα χρησιμοποιείται ως πρωτεύον κλειδί και/ή για την ταξινόμηση των δεδομένων. Ορισμένες βάσεις δεδομένων επιτρέπουν τον ορισμό ετικετών που μπορούν να συμπεριληφθούν ως πρόσθετες πληροφορίες, όπως η προέλευση ή ο τύπος των δεδομένων.
Πότε να το επιλέξετε;
Είναι χρήσιμο να αποθηκεύετε μικρές ποσότητες δεδομένων που προσαρτώνται διαδοχικά με χρονολογική σειρά, για παράδειγμα σε:
- DevOps,
- παρακολούθηση εφαρμογών,
- παρακολούθηση και τηλεμετρία συμβάντων,
- IoT εφαρμογές (όπως η συλλογή δεδομένων από αισθητήρες συσκευών).
Παραδείγματα:
Azure Time Series Insights, Amazon Timestream, InfluxDB.
6. Λογιστικό βιβλίο
Παρέχει ένα αμετάβλητο, διαφανές και κρυπτογραφικά επαληθεύσιμο αρχείο καταγραφής συναλλαγών που ανήκει σε μια κεντρική αρχή. - Επισκόπηση της QLDB της Amazon
Ας εξηγήσουμε εν συντομία κάθε λέξη-κλειδί στο παραπάνω απόσπασμα:
- αμετάβλητη - σημαίνει ότι μια εγγραφή που δημιουργείται σε αυτή τη βάση δεδομένων δεν μπορεί να διαγραφεί, να τροποποιηθεί ή ακόμη και να αντικατασταθεί,
- διαφανής - παρακολουθεί και διατηρεί ένα αρχείο ακολουθίας για κάθε αλλαγή στα δεδομένα σας,
- κρυπτογραφικά επαληθεύσιμη - τα δεδομένα που δημιουργούνται σε αυτή τη βάση δεδομένων επαληθεύονται με τεχνικές κρυπτογραφικού κατακερματισμού, παρόμοιες με τις αλυσίδες μπλοκ (χρησιμοποιώντας τη συνάρτηση κατακερματισμού SHA-256).
Πότε να το επιλέξετε;
Είναι χρήσιμο να αποθηκεύετε ακριβές ιστορικό, π.χ., καταγράφοντας διαδοχική καταχώρηση κάθε αλλαγής δεδομένων, όπως στο:
- οικονομικά (ιστορικό χρεωστικών ή πιστωτικών συναλλαγών),
- κατασκευή (εντοπίστε από πού προήλθαν τα εξαρτήματα),
- ασφάλιση,
- Ανθρώπινο δυναμικό και μισθοδοσία,
- λιανικής πώλησης,
- αλυσίδες εφοδιασμού.
Παραδείγματα:
Amazon QLDB
Συμπεράσματα
Δεν υπάρχει απλή απάντηση στο ερώτημα που τίθεται στον τίτλο αυτού του άρθρου. Ο μόνος τρόπος για να επιλέξετε τη σωστή βάση δεδομένων είναι να μάθετε περισσότερα για τα δεδομένα σας. Απαντήστε στην ερώτηση: "Τι είδους δεδομένα παράγει η εφαρμογή σας;", και θα είστε σε θέση να κάνετε τις σωστές επιλογές.
Επιπλέον, θα πρέπει να γνωρίζετε πολύ καλά τις επιχειρηματικές απαιτήσεις και τον τομέα της εφαρμογής. Πρέπει να γνωρίζετε πώς θα χρησιμοποιείτε τα δεδομένα, τι ερωτήματα θα στέλνετε στη βάση δεδομένων, πόσες φορές θα διατηρείτε, θα διαβάζετε, θα ενημερώνετε ή θα διαγράφετε τα δεδομένα σας. Όλα αυτά τα πράγματα έχουν σημασία, αλλά δεν δίνουν όλοι οι προγραμματιστές αρκετή προσοχή σε αυτούς τους τομείς.
Σκεφτείτε τα δεδομένα σας στην εφαρμογή που αναπτύσσετε για να βελτιώσετε/δημιουργήσετε καλύτερο λογισμικό. Συνολικά, ελπίζω ότι θα γνωρίσετε τα δεδομένα σας αρκετά καλά ώστε να τα αποθηκεύσετε σε ένα μέρος όπου θα είναι ευτυχισμένα.
Διαβάστε περισσότερα:
Μερικά κόλπα για να επιταχύνετε την εφαρμογή JavaScript
Τρόποι για να αυξήσετε την απόδοση του Rails
Γεγονότα και μύθοι σχετικά με τη συνεργασία με εξωτερικό συνεργάτη ανάπτυξης λογισμικού