версия 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:
- За оперативна поддръжка и отговори на въпроси е създадена открита .
- Премахнати са над десет грешки и недочети (вж. ).
- Поправени са многобройни печатни и правописни грешки, множество козметични подобрения.
- Разширени са тестовите сценарии.
- Реализирана е поддръжка за iOS, Android, , , , и .
- Представена е предварителна версия на C++ API в .
- Изготвена е вградена документация във формат Doxygen и автоматична генерация .
- Осигурено е автоматично генериране на архиви с комбинирани изходни текстове.
- Добавена е поддръжка за подготовка на транзакции и курсори, потребителски контексти за транзакции и курсори.
- Реализирани са допълнителни методи за контрол на референтната цялост в MVCC снимки B+tree.
- Добавена е поддръжка за проверка на MVCC снимката на БД, достъпна чрез всяка мета-страница с възможност за превключване за възстановяване.
- Реализирана е поддръжка за повторно отваряне на БД от един процес с цел тестване и други.
- Реализирана е автоматична обработка на опцията MDBX_NOSUBDIR при отваряне на БД.
- Добавени са функции за генериране на цели ключове от плаващи числа и 'универсални' числа JavaScript.
- Общо направени 430 промени, засягащи 93 файла, добавени над 25 хиляди реда, премахнати над 8.5 хиляди реда.
Последващото развитие на libmdbx ще бъде фокусирано върху формирането на финален C++ API, по-нататъшна стабилизация на основния код, увеличаване на удобствата за използване на библиотеката, както и формиране на пакети за популярни дистрибуции на Linux. От предстоящите подобрения следва да се отбележи поддръжката на ключове във формат .
Източник: opennet.ru
