Издаване на компактна вградена СУБД libmdbx 0.9.1

Пусната версия 0.9.1 на библиотеката libmdbx (MDBX) с реализиране на високопроизводителна, компактна вградена база данни от клас ключ-стойност. Кодът на libmdbx се разпространява под лиценз OpenLDAP Public License.

Текущата версия е компромис между намерението да се пусне дългосрочна стабилна версия 1.0 с пълна поддръжка за C++ и нежеланието да се забавят изданията поради неподготвеност за замразяване на новото C++ API. Представеното издание е резултат от 9 месеца работа, насочена към стабилизиране на библиотеката и повишаване на удобството за ползване, а също така включва предварителна версия C++ API.

Библиотеката libmdbx не е просто „форк“, а коренно преработен потомък LMDB — транзакционна вградена СУБД от клас „ключ-стойност“, базирана на B+ дърво без превантивно логиране, която позволява на многопоточните процеси да работят конкурентно и ефективно с локално споделена (не мрежова) база данни без отделен сървърен процес. Libmdbx принципно разширява запазва възможностите на своя предшественик, като същевременно премахва или смекчава недостатъците. Според разработчиците, libmdbx е малко по-бърз и значително по-надежден от LMDB.

libmdbx предлага ACID, строга сериализация на промените и неблокирано четене с линейно мащабиране по ядра на CPU. Резултатите от тестовете за производителност (изпращане на паралелни заявки за четене/търсене в 1-2-4-8 потока на CPU i7-4600U с 2 физически ядра в режим на 4 потока HyperThread):

Издаване на компактна вградена СУБД libmdbx 0.9.1

Най-важните разлики между MDBX и LMDB:

  • Съществено повече внимание се обръща на качеството на кода, „непадучестта“ на API, тестването и автоматичните проверки.
  • Съществено повече контрол по време на работа, започвайки от проверка на параметрите до вътрешен одит на структурите на базата данни.
  • Авто-компактиране и автоматично управление на размера на базата данни.
  • Единичен формат на базата данни за 32-битови и 64-битови сборки.
  • Оценка на обема на извадките по диапазони (range query estimation).
  • Поддръжка на ключове с двойна дължина и избираем от потребителя размер на страницата на базата данни.
  • Утилита за проверка на целостта на структурата на базата данни с някои възможности за възстановяване.

Основни нововъведения и усъвършенствания след предишната новина с представяне на версия 0.5 през януари 2020:

  • За оперативна поддръжка и отговори на въпроси е създадена открита група в Телеграм.
  • Премахнати са над десет грешки и недочети (вж. журнал за промени.).
  • Поправени са многобройни печатни и правописни грешки, множество козметични подобрения.
  • Разширени са тестовите сценарии.
  • Реализирана е поддръжка за iOS, Android, buildroot, Musl, uClibc, WSL1 и Wine.
  • Представена е предварителна версия на C++ API в в един файл заголовка.
  • Изготвена е вградена документация във формат Doxygen и автоматична генерация Онлайн документация.
  • Осигурено е автоматично генериране на архиви с комбинирани изходни текстове.
  • Добавена е поддръжка за подготовка на транзакции и курсори, потребителски контексти за транзакции и курсори.
  • Реализирани са допълнителни методи за контрол на референтната цялост в MVCC снимки B+tree.
  • Добавена е поддръжка за проверка на MVCC снимката на БД, достъпна чрез всяка мета-страница с възможност за превключване за възстановяване.
  • Реализирана е поддръжка за повторно отваряне на БД от един процес с цел тестване и други.
  • Реализирана е автоматична обработка на опцията MDBX_NOSUBDIR при отваряне на БД.
  • Добавени са функции за генериране на цели ключове от плаващи числа и 'универсални' числа JavaScript.
  • Общо направени 430 промени, засягащи 93 файла, добавени над 25 хиляди реда, премахнати над 8.5 хиляди реда.

Последващото развитие на libmdbx ще бъде фокусирано върху формирането на финален C++ API, по-нататъшна стабилизация на основния код, увеличаване на удобствата за използване на библиотеката, както и формиране на пакети за популярни дистрибуции на Linux. От предстоящите подобрения следва да се отбележи поддръжката на ключове във формат MessagePack.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster