Μετά από πέντε χρόνια ανάπτυξης, δημοσιεύτηκε η δεύτερη υποψήφια έκδοση libmdbx 1.0

Διαθέσιμος для тестирования второй кандидат в релизы библиотеки libmdbx с реализацией высокопроизводительной, компактной встраиваемой базой данных класса ключ-значение. Текущая версия (0.5) является техническим релизом, отмечает завершение каких-либо доработок и переход к фазе публичного финального тестирования и стабилизации, с последующем формированием первого полноценного релиза библиотеки. Код libmdbx διανέμονται από под лицензией OpenLDAP Public License.

Библиотека MDBX является существенно переработанным ответвлением от LMDB — ενσωματωμένο DBMS συναλλαγών της κατηγορίας «κλειδί-τιμή» με βάση δέντρο Β+ χωρίς προληπτική καταγραφή, которая позволяет многопоточным процессам конкурентно и эффективно работать с локально-разделяемой (не сетевой) БД. В свою очередь MDBX быстрее и надёжнее LMDB, и при этом сохраняет все ключевые возможности своего прародителя, такие как ΟΞΥ и неблокирующее чтение с линейным масштабированием по ядрам CPU.

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

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

Выпущенный кандидат в релизы libmdbx является результатом принятого в августе 2019 решения о разделении проектов MDBX и MithrilDB. При этом в libmdbx было решено устранить (рациональный) максимум технического долга и стабилизировать библиотеку. По факту в обозначенном направлении сделано в 2-3 раза больше, чем оценивалось и планировалось исходно:

  • Реализована поддержка macOS и платформ «второго эшелона»: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. Поддержка AIX и HP-UX может быть добавлена при необходимости.
  • Проведена санация кода при помощи Undefined Behavior Sanitizer и Address Sanitizer, устранены все предупреждения при сборке с «-Wpedantic», все предупреждения Coverity Static Analyzer и т.д.
  • Εκσυγχρονίζω Περιγραφές API.
  • Слияние (амальгамация) исходного кода для удобства встраивания.
  • Υποστήριξη CMake.
  • Υποστήριξη για ένθετες συναλλαγές.
  • Χρησιμοποιώντας το bootid για να προσδιορίσετε εάν το λειτουργικό σύστημα έχει επανεκκινηθεί (βρώμικη διακοπή βάσης δεδομένων).
  • Сквозной подсчёт обновлённых/старых страниц и расширенная информация о транзакциях.
  • Επιλογή MDBX_ACCEDE για σύνδεση σε μια ήδη ανοιχτή βάση δεδομένων σε συμβατή λειτουργία.
  • Χρήση Μπλοκάρισμα OFD Όταν είναι διαθέσιμο.
  • Καυτό αντίγραφο ασφαλείας στο σωλήνα.
  • Специализированный оптимизированный алгоритм внутренней сортировки (до 2-3 раз быстрее «qsort()» и до 30% быстрее «std::sort()»).
  • Το μέγιστο μήκος του κλειδιού έχει αυξηθεί.
  • Αυτόματος έλεγχος ανάγνωσης εκ των προτέρων (στρατηγική αποθήκευσης αρχείων βάσης δεδομένων στη μνήμη).
  • Πιο επιθετική και ταχύτερη αυτόματη συμπύκνωση.
  • Μια πιο βέλτιστη στρατηγική για τη συγχώνευση σελίδων δέντρων B+.
  • Контроль нелокальных файловых систем (NFS, Samba и т.п.) для предотвращения повреждения БД при неверном использовании.
  • Το σύνολο των δοκιμών έχει επεκταθεί.

Η ανάπτυξη της «επόμενης» έκδοσης του libmdbx θα συνεχιστεί ως ξεχωριστό έργο MithrilDB, ενώ ο φορέας ανάπτυξης της «τρέχουσας» έκδοσης του MDBX στοχεύει στο πάγωμα του συνόλου χαρακτηριστικών και στη σταθεροποίησή του. Η απόφαση αυτή ελήφθη για τρεις λόγους:

  • Εντελώς ασύμβατο: Το MithrilDB απαιτεί διαφορετική (μη συμβατή) μορφή αρχείου βάσης δεδομένων και διαφορετικό (μη συμβατό) API για την υλοποίηση όλων των προγραμματισμένων λειτουργιών.
  • Νέος πηγαίος κώδικας: Ο πηγαίος κώδικας MithrilDB έχει λάβει άδεια ανεξάρτητα από το LMDB και το ίδιο το έργο σχεδιάζεται να δημοσιευτεί με διαφορετική άδεια (εγκεκριμένη από Ή ΕΑΝ лицензией Apache 2.0, а не OpenLDAP Public License).
  • Разделение позволяет избежать потенциальную путаницу, внести больше определённости и обеспечить независимость пути развития проектов.

Το MithrilDB, όπως και το MDBX, βασίζεται επίσης σε δέντρο Β+ και θα διαθέτει επίσης εξαιρετικά υψηλή απόδοση, ενώ εξαλείφει μια σειρά από θεμελιώδη μειονεκτήματα των MDBX και LMDB. Συγκεκριμένα, θα εξαλειφθεί το πρόβλημα των «μακροχρόνιων αναγνώσεων», το οποίο εκδηλώνεται ως «διόγκωση» της βάσης δεδομένων λόγω του γεγονότος ότι η επεξεργασία σκουπιδιών εμποδίζεται από συναλλαγές μακράς ανάγνωσης. Τα νέα χαρακτηριστικά του MithrilDB περιλαμβάνουν:

  • Поддержка размещения БД на нескольких разнородных носителях: HDD, SSD и энергонезависимой памяти.
  • Оптимальные стратегии для «ценных» и «малоценных», для «горячих», «теплых» и «холодных» данных.
  • Использование Merkle tree для контроля целостности БД.
  • Опциональное использование WAL и существенно более высокая производительно в сценариях с интенсивной записью и гарантиями на целостность данных.
  • Ленивая догоняющая фиксация данных на дисках.

Πηγή: opennet.ru

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