libmdbx 0.9.1 συμπαγής ενσωματωμένη έκδοση βάσης δεδομένων

Απελευθερώθηκε έκδοση βιβλιοθήκης 0.9.1 libmdbx (MDBX) υλοποίηση μιας υψηλής απόδοσης, συμπαγούς ενσωματωμένης βάσης δεδομένων κλειδιού-τιμής. Ο κώδικας libmdbx διανέμεται με άδεια χρήσης OpenLDAP Public License.

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

Η βιβλιοθήκη libmdbx δεν είναι απλώς ένα «δίκρανο», αλλά ένας ριζικά επανασχεδιασμένος απόγονος LMDB — ενσωματωμένο DBMS συναλλαγών της κατηγορίας «κλειδί-τιμή» με βάση δέντρο Β+ χωρίς προληπτική καταγραφή, το οποίο επιτρέπει στις διεργασίες πολλαπλών νημάτων να λειτουργούν ανταγωνιστικά και αποτελεσματικά με μια τοπικά κοινόχρηστη (μη δικτυακή) βάση δεδομένων χωρίς διαδικασία αποκλειστικού διακομιστή. libmdbx βασικά επεκτείνεται δυνατότητες του προγόνου του, ενώ ταυτόχρονα εξαλείφει ή μετριάζει τα μειονεκτήματα. Ταυτόχρονα, σύμφωνα με τους προγραμματιστές, το libmdbx είναι λίγο πιο γρήγορο και σημαντικά πιο αξιόπιστο από το LMDB.

προτείνει το libmdbx ΟΞΥ, αυστηρή σειριοποίηση αλλαγών και μη αποκλειστική ανάγνωση με γραμμική κλιμάκωση στους πυρήνες της CPU. Αποτελέσματα δοκιμών απόδοσης (αποστολή παράλληλων αιτημάτων ανάγνωσης/αναζήτησης σε 1-2-4-8 νήματα σε CPU i7-4600U με 2 φυσικούς πυρήνες σε λειτουργία HyperThread 4 νημάτων):

libmdbx 0.9.1 συμπαγής ενσωματωμένη έκδοση βάσης δεδομένων

Οι πιο σημαντικές διαφορές μεταξύ MDBX και LMDB:

  • Βασικά, δίνεται μεγαλύτερη προσοχή στην ποιότητα του κώδικα, τη συνέπεια API, τις δοκιμές και τους αυτόματους ελέγχους.
  • Σημαντικά περισσότερος έλεγχος κατά τη λειτουργία, από τον έλεγχο των παραμέτρων έως τον εσωτερικό έλεγχο των δομών της βάσης δεδομένων.
  • Αυτόματη συμπύκνωση και αυτόματη διαχείριση μεγέθους βάσης δεδομένων.
  • Μια ενιαία μορφή βάσης δεδομένων για συγκροτήματα 32-bit και 64-bit.
  • Εκτίμηση όγκων δειγμάτων κατά εύρη (εκτίμηση ερωτήματος εύρους).
  • Υποστήριξη για διπλάσια κλειδιά και μέγεθος σελίδας βάσης δεδομένων που μπορεί να επιλέξει ο χρήστης.
  • Ένα βοηθητικό πρόγραμμα για τον έλεγχο της ακεραιότητας της δομής της βάσης δεδομένων με ορισμένες δυνατότητες ανάκτησης.

Βασικές καινοτομίες και βελτιώσεις μετά προηγούμενα νέα με την εισαγωγή της έκδοσης 0.5 τον Ιανουάριο του 2020:

  • Έχει δημιουργηθεί ένα ανοιχτό σύστημα για άμεση υποστήριξη και απαντήσεις σε ερωτήσεις. Ομάδα Telegram.
  • Περισσότερα από δώδεκα λάθη και ελλείψεις έχουν εξαλειφθεί (βλ. ημερολόγιο αλλαγών).
  • Πολλά τυπογραφικά και ορθογραφικά λάθη έχουν διορθωθεί και έχουν γίνει πολλές αισθητικές βελτιώσεις.
  • Τα σενάρια δοκιμών έχουν επεκταθεί.
  • Υποστήριξη για iOS, Android, buildroot, μουσουλμάνος, uClibc, WSL1 и Wine.
  • Η προεπισκόπηση του C++ API κυκλοφόρησε το ένα αρχείο κεφαλίδας.
  • Ενσωματωμένη τεκμηρίωση σε μορφή Doxygen και αυτόματη δημιουργία Ηλεκτρονική τεκμηρίωση.
  • Παρέχεται αυτόματη δημιουργία αρχείων με συγχωνευμένα κείμενα πηγής.
  • Προστέθηκε υποστήριξη για την προετοιμασία συναλλαγών και δρομέων, περιβάλλοντα χρήστη για συναλλαγές και δρομείς.
  • Έχουν εφαρμοστεί πρόσθετες μέθοδοι για τον έλεγχο της ακεραιότητας αναφοράς σε στιγμιότυπα B+tree MVCC.
  • Προστέθηκε υποστήριξη για τον έλεγχο ενός στιγμιότυπου MVCC της βάσης δεδομένων, προσβάσιμο μέσω οποιασδήποτε μετα-σελίδας με δυνατότητα εναλλαγής για ανάκτηση.
  • Υλοποιήθηκε υποστήριξη για το εκ νέου άνοιγμα της βάσης δεδομένων από μία διαδικασία για σκοπούς δοκιμής κ.λπ.
  • Εφαρμόστηκε αυτόματη επεξεργασία της επιλογής MDBX_NOSUBDIR κατά το άνοιγμα μιας βάσης δεδομένων.
  • Προστέθηκαν λειτουργίες για τη δημιουργία ακεραίων κλειδιών από τιμές κινητής υποδιαστολής και «καθολικούς» αριθμούς JavaScript.
  • Συνολικά, έγιναν 430 αλλαγές που επηρεάζουν 93 αρχεία, προστέθηκαν περισσότερες από 25 χιλιάδες γραμμές, διαγράφηκαν περισσότερες από 8.5 χιλιάδες γραμμές.

Η επακόλουθη ανάπτυξη του libmdbx θα επικεντρωθεί στο τελικό C++ API, στην περαιτέρω σταθεροποίηση του βασικού κώδικα, στη βελτίωση της χρηστικότητας της βιβλιοθήκης και στη συσκευασία για δημοφιλείς διανομές Linux. Μεταξύ των προτεινόμενων βελτιώσεων, αξίζει να σημειωθεί η υποστήριξη για κλειδιά στη μορφή Πακέτο μηνυμάτων.

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο