Пускане на компактната вградена СУБД libmdbx 0.9.1

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

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

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

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

Пускане на компактната вградена СУБД libmdbx 0.9.1

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

  • По принцип се обръща повече внимание на качеството на кода, последователността на API, тестването и автоматичните проверки.
  • Значително повече контрол по време на работа, от проверка на параметри до вътрешен одит на структурите на базата данни.
  • Автоматично уплътняване и автоматично управление на размера на базата данни.
  • Единичен формат на база данни за 32-битови и 64-битови сборки.
  • Оценка на извадкови обеми по диапазони (оценка на заявка за диапазон).
  • Поддръжка за два пъти по-дълги ключове и размер на страницата на базата данни, избираем от потребителя.
  • Помощна програма за проверка на целостта на структурата на базата данни с някои възможности за възстановяване.

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

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

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

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

Добавяне на нов коментар