Efter fem års utveckling har den andra utgivningskandidaten för libmdbx 1.0 publicerats

Tillgängliga для тестирования второй кандидат в релизы библиотеки libmdbx с реализацией высокопроизводительной, компактной встраиваемой базой данных класса ключ-значение. Текущая версия (0.5) является техническим релизом, отмечает завершение каких-либо доработок и переход к фазе публичного финального тестирования и стабилизации, с последующем формированием первого полноценного релиза библиотеки. Код libmdbx levererad av под лицензией OpenLDAP Public License.

Библиотека MDBX является существенно переработанным ответвлением от LMDB — Transaktionellt inbäddat DBMS av klassen "nyckel-värde" baserat på träd B+ без proaktiv loggning, которая позволяет многопоточным процессам конкурентно и эффективно работать с локально-разделяемой (не сетевой) БД. В свою очередь MDBX быстрее и надёжнее LMDB, и при этом сохраняет все ключевые возможности своего прародителя, такие как SYRA и неблокирующее чтение с линейным масштабированием по ядрам CPU.

De viktigaste skillnaderna mellan MDBX och LMDB:

  • I grund och botten ägnas mer uppmärksamhet åt kodkvalitet, testning och automatiska kontroller.
  • Betydligt mer kontroll under drift, från kontroll av parametrar till internrevision av databasstrukturer.
  • Automatisk komprimering och automatisk databasstorlekshantering.
  • Ett enda databasformat för 32-bitars och 64-bitars sammanställningar.
  • Uppskattning av provvolymer efter intervall (uppskattning av intervallfråga).
  • Stöd för nycklar dubbelt så stora som pannkakor och användarvalbar databas sidstorlek.

Выпущенный кандидат в релизы libmdbx является результатом принятого в августе 2019 решения о разделении проектов MDBX и MithrilDB. При этом в libmdbx было решено устранить (рациональный) максимум технического долга и стабилизировать библиотеку. По факту в обозначенном направлении сделано в 2-3 раза больше, чем оценивалось и планировалось исходно:

  • Реализована поддержка macOS и платформ «второго эшелона»: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. Поддержка AIX и HP-UX может быть добавлена при необходимости.
  • Проведена санация кода при помощи Undefined Behavior Sanitizer и Address Sanitizer, устранены все предупреждения при сборке с «-Wpedantic», все предупреждения Coverity Static Analyzer и т.д.
  • Uppdatering API-beskrivningar.
  • Слияние (амальгамация) исходного кода для удобства встраивания.
  • CMake support.
  • Stöd för kapslade transaktioner.
  • Använder bootid för att avgöra om operativsystemet har startat om (stopp för smutsig databas).
  • Сквозной подсчёт обновлённых/старых страниц и расширенная информация о транзакциях.
  • Alternativ MDBX_ACCEDE för att ansluta till en redan öppen databas i kompatibelt läge.
  • Använd OFD-blockering när det är tillgängligt.
  • Varm backup i röret.
  • Специализированный оптимизированный алгоритм внутренней сортировки (до 2-3 раз быстрее «qsort()» и до 30% быстрее «std::sort()»).
  • Den maximala nyckellängden har ökats.
  • Automatisk kontroll av läs framåt (databasfilcachestrategi i minnet).
  • Mer aggressiv och snabbare automatisk komprimering.
  • En mer optimal strategi för att slå samman B+-trädsidor.
  • Контроль нелокальных файловых систем (NFS, Samba и т.п.) для предотвращения повреждения БД при неверном использовании.
  • Uppsättningen av tester har utökats.

Utvecklingen av "nästa" version av libmdbx kommer att fortsätta som ett separat projekt MithrilDB, medan utvecklingsvektorn för den "nuvarande" versionen av MDBX syftar till att frysa funktionsuppsättningen och stabilisera den. Detta beslut fattades av tre skäl:

  • Helt inkompatibelt: MithrilDB kräver ett annat (inkompatibelt) databasfilformat och ett annat (inkompatibelt) API för att implementera alla planerade funktioner.
  • Ny källkod: MithrilDB-källkoden har gjorts licensierad oberoende av LMDB, och själva projektet är planerat att publiceras under en annan licens (godkänd av ELLER OM лицензией Apache 2.0, а не OpenLDAP Public License).
  • Разделение позволяет избежать потенциальную путаницу, внести больше определённости и обеспечить независимость пути развития проектов.

MithrilDB, liksom MDBX, är också baserad på träd B+ och kommer också att ha extremt hög prestanda, samtidigt som ett antal grundläggande nackdelar med MDBX och LMDB elimineras. I synnerhet kommer problemet med "långa läsningar", som visar sig som "svällning" av databasen på grund av att skräpbearbetning blockeras av långa läsningstransaktioner, att elimineras. Nya MithrilDB-funktioner inkluderar:

  • Поддержка размещения БД на нескольких разнородных носителях: HDD, SSD и энергонезависимой памяти.
  • Оптимальные стратегии для «ценных» и «малоценных», для «горячих», «теплых» и «холодных» данных.
  • Использование Merkle tree для контроля целостности БД.
  • Опциональное использование WAL и существенно более высокая производительно в сценариях с интенсивной записью и гарантиями на целостность данных.
  • Ленивая догоняющая фиксация данных на дисках.

Källa: opennet.ru

Lägg en kommentar