версия 0.9.1 на библиотеката (MDBX) с реализация на високопроизводителна, компактна вградена база данни от клас ключ-стойност. Кодът на libmdbx се разпространява под лицензията .
Текущата версия е компромис между намерението да бъде пусната дългосрочна стабилна версия 1.0 с пълна поддръжка на C++ и нежеланието да се забавят релийзите поради некоректност при замразяване на новия C++ API. Представеният релийз е резултат от 9 месеца работа, насочена към стабилизиране на библиотеката и повишаване на удобството за използване, и включва предварителна версия .
Библиотеката libmdbx не е просто 'форк', а коренно преработен потомък на — транзакционна вградена СУБД от клас 'ключ-стойност', основана на без , което позволява на многопоточните процеси да работят конкурентно и ефективно с локално споделена (не мрежова) база данни без необходимост от отделен сървърен процес. Libmdbx принципно възможностите на своя предшественик, едновременно премахвайки или смекчавайки недостатъците. По убеждението на разработчиците, libmdbx е малко по-бърз и съществено по-надежден от LMDB.
libmdbx предлага , строга сериализация на промените и неблокирано четене с линейно мащабиране по ядра на CPU. Резултатите от тестването на производителността (изпращане на паралелни заявки за четене/търсене в 1-2-4-8 потока на CPU i7-4600U с 2 физически ядра в режим на 4 потока HyperThread):
Най-важните отличия на MDBX спрямо LMDB:
- Принципно повече внимание се отделя на качеството на кода, 'непадателността' на API, тестването и автоматичните проверки.
- Съществено повече контрол по време на работа, от проверка на параметрите до вътрешен одит на структурите на базата данни.
- Авто-компактиране и автоматично управление на размера на базата данни.
- Единен формат на базата данни за 32-битови и 64-битови версии.
- Оценка на обема на проби по диапазони (range query estimation).
- Поддръжка на ключове с двойна дължина и избираем от потребителя размер на страницата на базата данни.
- Утилита за проверка на целостта на структурата на базата данни с определени възможности за възстановяване.
Основни нововъведения и подобрения след с представяне на версия 0.5 през януари 2020:
- За бърза поддръжка и отговори на въпроси е създадена отворена .
- Над 10 грешки и пропуски са отстранени (вж. ).
- Коригирани са много печатни и правописни грешки, множество козметични подобрения.
- Разширени са тестовите сценарии.
- Реализирана е поддръжка за iOS, Android, , , , и .
- Представена е предварителна версия на C++ API в .
- Оформена е вградена документация във формат Doxygen и автоматична генерация на .
- Обезпечено е автоматичното формирование на архиви със смесени изходни текстове.
- Добавена е поддръжка за подготовка на транзакции и курсори, потребителски контексти за транзакции и курсори.
- Реализирани са допълнителни методи за контрол на референтната цялост в MVCC-снимки B+tree.
- Добавена е поддръжка за проверка на MVCC-снимка на БД, налична през всяка мета-страница с възможност за превключване за възстановяване.
- Реализирана е поддръжка за повторно отваряне на БД от един процес с цел тестване и т.н.
- Реализирана е автоматична обработка на опцията MDBX_NOSUBDIR при отваряне на БД.
- Добавени са функции за генериране на цели числови ключове от стойности с плаваща запетая и "универсални" числа JavaScript.
- Общо са направени 430 промени, засегнали 93 файла, добавени са над 25 хиляди реда, над 8.5 хиляди реда са изтрити.
По-нататъшното развитие на libmdbx ще бъде фокусирано върху формирането на финалното C++ API, допълнителна стабилизация на основния код, повишаване на удобството при използване на библиотеката, както и формиране на пакети за популярни дистрибуции на Linux. От предполагаемите доработки следва да се отбележи поддръжка на ключове във формат .
Източник: opennet.ru
