Випуск компактної СУБД, що вбудовується libmdbx 0.9.1

Випущена версія 0.9.1 бібліотеки libmdbx (MDBX) з реалізацією високопродуктивної, компактної бази даних класу ключ-значення. Код libmdbx розповсюджується під ліцензією OpenLDAP Public License.

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

Бібліотека 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, Мусл, uClibc, WSL1 и вино.
  • Представлена ​​попередня версія C++ API одному заголовному файлі.
  • Оформлено вбудовану документацію у форматі Doxygen та автоматичну генерацію. Online документації.
  • Забезпечено автоматичне формування архівів із амальгамованими вихідними текстами.
  • Додана підтримка підготовки транзакцій та курсорів, контекстів користувача для транзакцій та курсорів.
  • Реалізовано додаткові методи контролю цілісності посилання в MVCC-знімках B+tree.
  • Додано підтримку перевірки MVCC-знімка БД, доступного через будь-яку мета-сторінку з можливістю перемикання для відновлення.
  • Реалізовано підтримку повторного відкриття БД з одного процесу з метою тестування тощо.
  • Реалізовано автоматичну обробку опції MDBX_NOSUBDIR при відкритті БД.
  • Додані функції формування цілих ключів із значень плаваючої точки та «універсальних» чисел JavaScript.
  • Сумарно внесено 430 змін 93 файлів, що зачепили, додано більше 25 тисяч рядків, більше 8.5 тисяч рядків видалено.

Подальша розробка libmdbx буде зосереджена на формуванні фінального C++ API, подальшої стабілізації базового коду, підвищенні зручності використання бібліотеки, а також формування пакетів популярних дистрибутивів Linux. З передбачуваних доопрацювань варто відзначити підтримку ключів у форматі Пакет повідомлень.

Джерело: opennet.ru

Додати коментар або відгук