Излезе вградена СУБД libmdbx 0.13.3

Публикувано е издание на библиотеката libmdbx 0.13.3 (MDBX) с реализация на високопроизводителна компактна вградена база данни от клас ключ-стойност. Кодът на libmdbx се разпространява под лицензия Apache 2.0. Поддържат се всички актуални операционни системи и архитектури, както и руския Елбрус 2000. За libmdbx е предложен развит API за C++, а също така се поддържат привързвания към езици като Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno, Scala.

Исторически libmdbx представлява дълбока преработка на СУБД LMDB и надминава своя прародител по надеждност, набор от възможности и производителност. В сравнение с LMDB, в libmdbx се отделя голямо внимание на качеството на кода, стабилната работа на API, тестването и автоматичните проверки. Предлага се инструмент за проверка на целостта на структурата на БД с някои възможности за възстановяване. Технологично libmdbx предлага ACID, строга сериализация на промените и неблокиращо четене с линейно мащабиране по ядра на ЦПУ. Поддържа се автоматична компактификация, автоматично управление на размера на БД и оценка на обема на заявките по диапазони (estimate по диапазони).

Основни промени:

  • Ветката 0.13.x получи статус на стабилна. Започна разработката на ветка 0.14.x.
  • В C API е добавена функцията mdbx_cursor_count_ex(), която позволява получаването както на броя на многозначните стойности, съответстващи на текущия ключ, така и на информация за вложеното дърво, което съхранява тези стойности.
  • В C++ API е добавен методът mdbx::txn::make_broken(), аналогичен на mdbx_txn_break().
  • В утилитите mdbx_copy, mdbx_drop, mdbx_dump, mdbx_load, mdbx_stat е реализиран лог на грешки, предупреждения и важни съобщения от libmdbx.
  • Промяна на поведението:
    • При включване на профилирането на събирача на боклук (сборка с опция MDBX_ENABLE_PROFGC=ON) сега се изчисляват разходите за време на CPU за сливане на списъците на страниците, т.е. за работата на функцията pnl_merge().
    • В утилитата за тестване стойността на режима на данни е преименувана от data.dups на data.multi.
    • Променен е контрола на дължината на ключа в cursor_seek().
    • Ако потребителят не зададе собствено значение чрез mdbx_env_set_option(MDBX_opt_txn_dp_limit), се извършва настройка на dirty-pages-limit при стартиране на всяка непотвърдена записваща трансакция, основаваща се на наличната RAM и размера на БД.
    • В режим MDBX_NOSTICKYTHREADS е позволено комит/аборт на вложени трансакции от всяка нишка.
    • При опит за стартиране на вложени транзакции в режим MDBX_WRITEMAP се извършва лог и връщане на грешка MDBX_INCOMPATIBLE.
    • В C++ API в конструкторите/инициализаторите и методите, свързани с формирането на геометрията на БД, по подразбиране се използват само default-стойности.
    • В mdbx_env_set_geometry() са доработени хевристиките за подбор на параметрите на геометрията на БД, поискани от потребителя "по подразбиране".
  • Корекции:
    • Отстранен е регрес на неразблокирането на мютекса при опит за повторно затваряне на dbi-дескриптора, включително при опит за явно затваряне на дескриптора след изтриване на свързаната с него таблица.
    • Отстранен е регрес на състоянието на вложения/dupsort курсор след вставка на данни в режим MDBX_APPEND.
    • Поддръжка за получаване на boot_id при работа вътре в LXC-контейнер.
    • Отстранена грешка при неправилна обработка на опит за стартиране на вградена четяща транзакция. Сега в такива ситуации се връща грешка MDBX_EINVAL, тъй като вложеността се поддържа само за транзакции за четене-запис.
    • Отстранен регрес на SIGSEGV при достъп до нулев адрес при работа в режим само за четене без използване на LCK-файл, например при разполагане на БД на носител, достъпен само за четене.

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

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