Објавување на вграден DBMS libmdbx 0.11.3 со високи перформанси

Библиотеката libmdbx 0.11.3 (MDBX) беше објавена со имплементација на компактна вградена база на податоци со вредности на клучеви со високи перформанси. Кодот libmdbx е лиценциран под јавна лиценца OpenLDAP. Поддржани се сите тековни оперативни системи и архитектури, како и рускиот Elbrus 2000. На крајот на 2021 година, libmdbx се користи како заднина за складирање во двата најбрзи клиенти на Ethereum - Еригон и новиот „Ајкула“, кои, според достапните информации, е клиентот на Ethereum со највисоки перформанси.

Историски гледано, libmdbx е длабока преработка на LMDB DBMS и е супериорен во однос на неговиот предок по доверливост, сет на функции и перформанси. Во споредба со LMDB, libmdbx става голем акцент на квалитетот на кодот, стабилноста на API, тестирањето и автоматизираните проверки. Обезбедена е алатка за проверка на интегритетот на структурата на базата на податоци со некои можности за обновување.

Во однос на технологијата, libmdbx нуди ACID, серијализација на силни промени и читања без блокирање со линеарно скалирање низ јадрата на процесорот. Поддржани се автоматска компактификација, автоматско управување со големината на базата на податоци и проценка на барање за опсег. Од 2016 година, проектот е финансиран од Позитивни технологии и се користи во нејзините производи од 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 се елиминирани. Обезбедена е компатибилност со старите компајлери: ѕвонење почнувајќи од 3.9, gcc почнувајќи од 4.8, вклучувајќи склопување со користење на cdevtoolset-9 за CentOS/RHEL 7.
  • Поправена е можноста за конфликт на мета-страница по рачно префрлување на одредена мета-страница користејќи ја алатката mdbx_chk.
  • Поправена е вратена неочекувана грешка MDBX_PROBLEM при препишување на мета-страниците на старите.
  • Поправено враќање на MDBX_NOTFOUND во случај на неточна совпаѓање при обработка на барање MDBX_GET_BOTH.
  • Поправена грешка при компилација на Linux во отсуство на датотеки со заглавие со описи на интерфејси со кернелот.
  • Поправен е конфликт помеѓу внатрешното знаменце MDBX_SHRINK_ALLOWED и опцијата MDBX_ACCEDE.
  • Неколку непотребни проверки на тврдењата се елиминирани.
  • Поправено неочекувано враќање на MDBX_RESULT_TRUE од функцијата mdbx_env_set_option().
  • Севкупно, направени се повеќе од 90 промени на 25 датотеки, додадени се ~ 1300 линии, ~ 600 се избришани.

Извор: opennet.ru

Додадете коментар