Κυκλοφορία ενσωματωμένου DBMS υψηλής απόδοσης libmdbx 0.11.3

Η βιβλιοθήκη libmdbx 0.11.3 (MDBX) κυκλοφόρησε με την εφαρμογή μιας συμπαγούς ενσωματωμένης βάσης δεδομένων κλειδιού-τιμής υψηλής απόδοσης. Ο κώδικας libmdbx έχει άδεια χρήσης βάσει της δημόσιας άδειας OpenLDAP. Υποστηρίζονται όλα τα τρέχοντα λειτουργικά συστήματα και αρχιτεκτονικές, καθώς και το ρωσικό Elbrus 2000. Στα τέλη του 2021, το libmdbx χρησιμοποιείται ως backend αποθήκευσης στους δύο ταχύτερους πελάτες Ethereum - το Erigon και το νέο "Shark", το οποίο, σύμφωνα με τα διαθέσιμα πληροφορίες, είναι ο πελάτης Ethereum με την υψηλότερη απόδοση.

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

Από πλευράς τεχνολογίας, το libmdbx προσφέρει ACID, ισχυρή σειριοποίηση αλλαγών και αναγνώσεις χωρίς αποκλεισμό με γραμμική κλιμάκωση στους πυρήνες της CPU. Υποστηρίζεται η αυτόματη συμπύκνωση, η αυτόματη διαχείριση μεγέθους βάσης δεδομένων και η εκτίμηση ερωτήματος εύρους. Από το 2016, το έργο χρηματοδοτείται από την Positive Technologies και χρησιμοποιείται στα προϊόντα της από το 2017.

Το libmdbx προσφέρει ένα API C++, καθώς και συνδέσμους γλώσσας που υποστηρίζονται από ενθουσιώδεις για Rust, Haskell, Python, NodeJS, Ruby, Go και Nim.

Σημαντικές καινοτομίες, βελτιώσεις και διορθώσεις που προστέθηκαν από τα προηγούμενα νέα στις 11 Οκτωβρίου:

  • Το C++ API θεωρείται έτοιμο για χρήση.
  • Η ενημέρωση των δεδομένων GC κατά τη διεξαγωγή τεράστιων συναλλαγών έχει επιταχυνθεί σημαντικά, κάτι που είναι ιδιαίτερα σημαντικό όταν χρησιμοποιείται το libmdbx στο οικοσύστημα Ethereum.
  • Η εσωτερική υπογραφή της μορφής της βάσης δεδομένων έχει αλλάξει για να υποστηρίζει την αυτόματη ενημέρωση, η οποία είναι απολύτως διαφανής στους χρήστες. Αυτό σας επιτρέπει να εξαλείψετε ψευδώς θετικά μηνύματα σχετικά με την καταστροφή της βάσης δεδομένων όταν χρησιμοποιούνται παλιές εκδόσεις της βιβλιοθήκης για την ανάγνωση συναλλαγών που έχουν καταγραφεί από τις τρέχουσες εκδόσεις.
  • Προστέθηκαν οι συναρτήσεις mdbx_env_get_syncbytes(), mdbx_env_get_syncperiod() και mdbx_env_get_syncbytes(). Προστέθηκε υποστήριξη για τη λειτουργία MDBX_SET_UPPERBOUND.
  • Όλες οι προειδοποιήσεις κατά τη δημιουργία με όλους τους υποστηριζόμενους μεταγλωττιστές σε λειτουργίες C++ 11/14/17/20 έχουν εξαλειφθεί. Διασφαλίζεται η συμβατότητα με παλαιού τύπου μεταγλωττιστές: clang ξεκινώντας από 3.9, gcc ξεκινώντας από 4.8, συμπεριλαμβανομένης της συναρμολόγησης με χρήση cdevtoolset-9 για CentOS/RHEL 7.
  • Διορθώθηκε η πιθανότητα διένεξης μετα-σελίδας μετά τη μη αυτόματη εναλλαγή σε μια συγκεκριμένη μετα-σελίδα χρησιμοποιώντας το βοηθητικό πρόγραμμα mdbx_chk.
  • Διορθώθηκε το μη αναμενόμενο σφάλμα MDBX_PROBLEM που επιστράφηκε κατά την αντικατάσταση μετα-σελίδων παλαιού τύπου.
  • Διορθώθηκε η επιστροφή MDBX_NOTFOUND σε περίπτωση ανακριβούς αντιστοίχισης κατά την επεξεργασία ενός αιτήματος MDBX_GET_BOTH.
  • Διορθώθηκε ένα σφάλμα μεταγλώττισης στο Linux απουσία αρχείων κεφαλίδας με περιγραφές διεπαφών με τον πυρήνα.
  • Διορθώθηκε μια διένεξη μεταξύ της εσωτερικής σημαίας MDBX_SHRINK_ALLOWED και της επιλογής MDBX_ACCEDE.
  • Αρκετοί περιττοί έλεγχοι βεβαιώσεων έχουν εξαλειφθεί.
  • Διορθώθηκε η μη αναμενόμενη επιστροφή του MDBX_RESULT_TRUE από τη συνάρτηση mdbx_env_set_option().
  • Συνολικά, έγιναν περισσότερες από 90 αλλαγές σε 25 αρχεία, προστέθηκαν ~1300 γραμμές, ~600 διαγράφηκαν.

Πηγή: opennet.ru

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