για τη δοκιμή της δεύτερης υποψήφιας έκδοσης βιβλιοθήκης με την υλοποίηση μιας υψηλής απόδοσης, συμπαγούς, ενσωματωμένης βάσης δεδομένων κλειδιών-τιμών. Η τρέχουσα έκδοση (0.5) είναι μια έκδοση συντήρησης, που σηματοδοτεί την ολοκλήρωση τυχόν βελτιώσεων και τη μετάβαση στη φάση τελικών δοκιμών και σταθεροποίησης του κοινού, ακολουθούμενη από τη δημιουργία της πρώτης πλήρους έκδοσης της βιβλιοθήκης. Ο κώδικας libmdbx σύμφωνα με την Άδεια Δημόσιας Χρήσης OpenLDAP.
Η βιβλιοθήκη MDBX είναι μια σημαντικά ξαναγραμμένη διακλάδωση του — ένα ενσωματωμένο DBMS συναλλαγών της κατηγορίας κλειδιού-τιμής με βάση χωρίς , το οποίο επιτρέπει στις πολυνηματικές διεργασίες να λειτουργούν ταυτόχρονα και αποτελεσματικά με μια τοπικά κοινόχρηστη (όχι δικτυακή) βάση δεδομένων. Το MDBX, από την άλλη πλευρά, είναι ταχύτερο και πιο αξιόπιστο από το LMDB, διατηρώντας παράλληλα όλα τα βασικά χαρακτηριστικά του προκατόχου του, όπως και μη αποκλεισμένη ανάγνωση με γραμμική κλιμάκωση σε όλους τους πυρήνες της CPU.
Οι πιο σημαντικές διαφορές μεταξύ MDBX και LMDB είναι:
- Βασικά, δίνεται μεγαλύτερη προσοχή στην ποιότητα του κώδικα, τη δοκιμή και τους αυτόματους ελέγχους.
- Σημαντικά περισσότερος έλεγχος κατά τη λειτουργία, από τον έλεγχο των παραμέτρων έως τον εσωτερικό έλεγχο των δομών της βάσης δεδομένων.
- Αυτόματη συμπύκνωση και αυτόματη διαχείριση μεγέθους βάσης δεδομένων.
- Μια ενιαία μορφή βάσης δεδομένων για συγκροτήματα 32-bit και 64-bit.
- Εκτίμηση ερωτήματος εύρους.
- Υποστήριξη για κλειδιά διπλάσια από τηγανίτες και μέγεθος σελίδας βάσης δεδομένων που μπορεί να επιλέξει ο χρήστης.
Η υποψήφια έκδοση του libmdbx είναι το αποτέλεσμα της απόφασης του Αυγούστου 2019 για τον διαχωρισμό των έργων MDBX και MithrilDB. Στο libmdbx, ο στόχος ήταν να εξαλειφθεί όσο το δυνατόν περισσότερο τεχνικό χρέος και να σταθεροποιηθεί η βιβλιοθήκη. Στην πραγματικότητα, έχει επιτευχθεί δύο έως τρεις φορές περισσότερη δουλειά προς αυτή την κατεύθυνση από ό,τι είχε αρχικά εκτιμηθεί και προγραμματιστεί:
- Υλοποιημένη υποστήριξη macOS και πλατφόρμες δεύτερης κατηγορίας: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. Μπορεί να προστεθεί υποστήριξη για AIX και HP-UX, εάν χρειαστεί.
- Ο κώδικας απολυμάνθηκε χρησιμοποιώντας το Undefined Behavior Sanitizer και το Address Sanitizer, όλες οι προειδοποιήσεις κατά τη δημιουργία με το "-Wpedantic" εξαλείφθηκαν, όπως και όλες οι προειδοποιήσεις του Coverity Static Analyzer κ.λπ.
- Εκσυγχρονίζω .
- Συγχώνευση (amalgamation) πηγαίου κώδικα για ευκολία ενσωμάτωσης.
- Υποστήριξη CMake.
- Υποστήριξη για ένθετες συναλλαγές.
- Χρησιμοποιώντας το bootid για να προσδιορίσετε εάν το λειτουργικό σύστημα έχει επανεκκινηθεί (βρώμικη διακοπή βάσης δεδομένων).
- Ενημερωμένη/παλαιά καταμέτρηση σελίδων από άκρο σε άκρο και εκτεταμένες πληροφορίες συναλλαγών.
- Επιλογή MDBX_ACCEDE για σύνδεση σε μια ήδη ανοιχτή βάση δεδομένων σε συμβατή λειτουργία.
- Χρήση Όταν είναι διαθέσιμο.
- Καυτό αντίγραφο ασφαλείας στο σωλήνα.
- Ένας εξειδικευμένος βελτιστοποιημένος αλγόριθμος εσωτερικής ταξινόμησης (έως 2-3 φορές ταχύτερος από τον "qsort()" και έως 30% ταχύτερος από τον "std::sort()").
- Το μέγιστο μήκος του κλειδιού έχει αυξηθεί.
- Αυτόματος έλεγχος ανάγνωσης εκ των προτέρων (στρατηγική αποθήκευσης αρχείων βάσης δεδομένων στη μνήμη).
- Πιο επιθετική και ταχύτερη αυτόματη συμπύκνωση.
- Μια πιο βέλτιστη στρατηγική για τη συγχώνευση σελίδων δέντρων B+.
- Παρακολούθηση μη τοπικών συστημάτων αρχείων (NFS, Samba, κ.λπ.) για την αποτροπή καταστροφής της βάσης δεδομένων λόγω ακατάλληλης χρήσης.
- Το σύνολο των δοκιμών έχει επεκταθεί.
Η ανάπτυξη της «επόμενης» έκδοσης του libmdbx θα συνεχιστεί ως ξεχωριστό έργο , ενώ ο φορέας ανάπτυξης της «τρέχουσας» έκδοσης του MDBX στοχεύει στο πάγωμα του συνόλου χαρακτηριστικών και στη σταθεροποίησή του. Η απόφαση αυτή ελήφθη για τρεις λόγους:
- Εντελώς ασύμβατο: Το MithrilDB απαιτεί διαφορετική (μη συμβατή) μορφή αρχείου βάσης δεδομένων και διαφορετικό (μη συμβατό) API για την υλοποίηση όλων των προγραμματισμένων λειτουργιών.
- Νέος πηγαίος κώδικας: Ο πηγαίος κώδικας MithrilDB έχει λάβει άδεια ανεξάρτητα από το LMDB και το ίδιο το έργο σχεδιάζεται να δημοσιευτεί με διαφορετική άδεια (εγκεκριμένη από Άδεια Apache 2.0, όχι ).
- Ο διαχωρισμός βοηθά στην αποφυγή πιθανής σύγχυσης, παρέχει μεγαλύτερη σαφήνεια και διασφαλίζει ανεξάρτητες οδούς ανάπτυξης για τα έργα.
Το MithrilDB, όπως και το MDBX, βασίζεται επίσης σε και θα διαθέτει επίσης εξαιρετικά υψηλή απόδοση, ενώ εξαλείφει μια σειρά από θεμελιώδη μειονεκτήματα των MDBX και LMDB. Συγκεκριμένα, θα εξαλειφθεί το πρόβλημα των «μακροχρόνιων αναγνώσεων», το οποίο εκδηλώνεται ως «διόγκωση» της βάσης δεδομένων λόγω του γεγονότος ότι η επεξεργασία σκουπιδιών εμποδίζεται από συναλλαγές μακράς ανάγνωσης. Τα νέα χαρακτηριστικά του MithrilDB περιλαμβάνουν:
- Υποστήριξη για την τοποθέτηση βάσεων δεδομένων σε διάφορους τύπους μέσων: σκληρό δίσκο, SSD και μη πτητική μνήμη.
- Βέλτιστες στρατηγικές για δεδομένα «υψηλής αξίας» και «χαμηλής αξίας», για «θερμά», «ζεστά» και «κρύα» δεδομένα.
- Χρήση του δέντρου Merkle για την παρακολούθηση της ακεραιότητας της βάσης δεδομένων.
- Προαιρετική χρήση WAL και σημαντικά υψηλότερη απόδοση σε σενάρια έντασης εγγραφής με εγγυήσεις ακεραιότητας δεδομένων.
- Αργή καταγραφή δεδομένων υστέρησης σε δίσκους.
Πηγή: opennet.ru
