Пускането на високопроизводителната вградена СУБД libmdbx 0.11.3

Пусна библиотека libmdbx 0.11.3 (MDBX) с имплементация на високопроизводителна компактна вградена база данни от клас ключ-стойност. Кодът на libmdbx се разпространява под лицензията OpenLDAP Public License. Поддържат се всички актуални операционни системи и архитектури, както и руския Елбрус 2000. В края на 2021 година libmdbx се използва като бекенд за съхранение в две от най-бързите клиенти на Ethereum — Erigon и новата „Акула“, за която наличната информация сочи, че е най-високопроизводителният клиент на Ethereum.

Исторически libmdbx представлява дълбока переработка на базата данни LMDB и превъзхожда своя предшественик по надеждност, набор от възможности и производителност. В сравнение с LMDB, в libmdbx се отделя голямо внимание на качеството на кода, стабилната работа на API, тестването и автоматичните проверки. Предлага се инструмент за проверка на целостта на структурата на БД с някои възможности за възстановяване.

Технологично libmdbx предлага ACID, стриктна сериализация на промените и неблокирано четене с линейно мащабиране по ядрата на ЦПУ. Поддържа се автокомпактиране, автоматично управление на размера на базата данни, оценка на обема на изкуствени избирания по диапазони (range query estimation). От 2016 година проектът се финансира от компания Positive Technologies и от 2017 година се използва в нейните продукти.

За libmdbx се предлага C++ API, както и поддържани от ентусиасти привързвания към езиците Rust, Haskell, Python, NodeJS, Ruby, Go, Nim.

Основните нововъведения, доработки и корекции, добавени след предишната новина от 11 октомври:

  • C++ API се счита за готов за употреба.
  • Съществено е ускорено обновлението на данните GC при фиксиране на огромни транзакции, което е особено актуално при използването на libmdbx в екосистемата на Ethereum.
  • Променена е вътрешната сигнатура на формата на базата данни с поддръжка на автоматично обновление, което е напълно прозрачно за потребителите. Това позволява да се изключат фалшиво положителни съобщения за повреждане на базата данни, когато остарели версии на библиотеката се използват за четене на транзакции, фиксирани с актуални версии.
  • Добавени са функции mdbx_env_get_syncbytes(), mdbx_env_get_syncperiod() и mdbx_env_get_syncbytes(). Добавена е поддръжка на операцията MDBX_SET_UPPERBOUND.
  • Премахнати са всички предупреждения при компилиране от всички поддържани компилатори в режимите C++ 11/14/17/20. Осигурена е съвместимост с остарели компилатори: clang започвайки от 3.9, gcc започвайки от 4.8, включително компилация чрез sdevtoolset-9 за CentOS/RHEL 7.
  • Отстранена е възможността за конфликт на мета-страници след ръчно превключване на определена мета-страница с помощта на утилитата mdbx_chk.
  • Коригирано е връщането на неочаквана грешка MDBX_PROBLEM при презаписване на остарели мета-страници.
  • Коригиран е връщането на MDBX_NOTFOUND при неточно съвпадение при обработка на запитване MDBX_GET_BOTH.
  • Отстранена е грешката при компилация в Linux при липса на заглавни файлове с описания на интерфейсите с ядрото.
  • Коригирана е конфликтът между вътрешния флаг MDBX_SHRINK_ALLOWED и опцията MDBX_ACCEDE.
  • Отстранени са няколко излишни assert проверки.
  • Коригиран е неочакваният връщане на MDBX_RESULT_TRUE от функцията mdbx_env_set_option().
  • Общо са направени над 90 промени в 25 файла, добавени са ~1300 реда, изтрити са ~600.

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

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