Публикуван е вграденият СУБД libmdbx 0.13

Издадено издание на библиотеката libmdbx 0.13.1 (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 по диапазони).

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

  • Смяна на лиценза на кода от OpenLDAP Public License на Apache 2.0.
  • Разширяване на API на курсорите с по-удобни и очевидни операции за позициониране в съответствие с условията <, =, > както за ключове, така и за двойки ключ-стойност. Добавени функции mdbx_cursor_unbind() и mdbx_txn_release_all_cursors() за гъвкаво управление на курсорите в сценарии на повторна употреба, за намаляване на разходите. Функции mdbx_cursor_scan() и mdbx_cursor_scan_from() за сканиране на таблици с използване на функционален предикат и намаляване на свързаните разходи.
  • Преработка на курсорите за унифициране на поведението, за по-редовен код и намаляване на количеството разклонения и машинни операции.
  • Пренос на функционалността на утилитата mdbx_chk в библиотеката под формата на функция mdbx_env_chk() за проверка на целостта на структурата на БД, включително с включването на логиката на приложението.
  • Опцията MDBX_opt_gc_time_limit за по-гъвкаво контролиране на времето, изразходвано за търсене на последователности от съседни свободни страници в GC.
  • Съществено намаление на разходите за стартиране на транзакции в сценарии с голям брой DBI-хендли, благодарение на отложената/ленивата инициализация на елементите от служебните таблици. Включително, механизъм за поддръжка на разрязаните набори DBI-хендли, управляван от опцията за компилация MDBX_ENABLE_DBI_SPARSE, която е включена по подразбиране.
  • Намаление на разходите за отваряне на DBI-хендли. Включително, механизъм за отложено освобождаване и поддръжка на бързия метод за отваряне без използване на заключвания, управляван от опцията за компилация MDBX_ENABLE_DBI_LOCKFREE, която е включена по подразбиране.
  • Поддръжка на 'паркиране' на четящите транзакции с тяхното изместване за обработка на стари MVCC-снимки и предотвратяване на проблеми, причинени от забавяне на обработката на боклука. Механизмът за паркиране и изместване на паркираните транзакции е както допълнение, така и по-проста за използване алтернатива на обратния повик Handle-Slow-Readers. За удобство, функциите mdbx_txn_park() и mdbx_txn_unpark() имат допълнителни аргументи, които позволяват искане за автоматична 'распарковка' на паркирани и повторно стартиране на изместените транзакции. В утилитата mdbx_copy са добавени съответните опции -d и -p.
  • Поддръжка на възстановяване на отворена работна среда с БД в дъщерен процес след разделяне/разклоняване на процеса чрез mdbx_env_resurrect_after_fork().
  • Поддръжка за преномеране на таблиците чрез mdbx_dbi_rename() и mdbx_dbi_rename2(). Добавена е функцията mdbx_enumerate_tables() за получаване на информация за именуваните потребителски таблици.
  • Режим на работа MDBX_NOSTICKYTHREADS вместо MDBX_NOTLS за улесняване на интеграцията с леките потоци/нишки, техния мултиплексационен режим заедно с транзакциите на операционната система.
  • За идентификация на БД е добавен UUID, наличен в полето mi_dxbid на структурата MDBX_envinfo, получена чрез mdbx_env_info_ex(). Реализирано е получаването на информация за БД без нейното отваряне чрез mdbx_preopen_snapinfo().
  • Поддръжка на функции за логване на обратни повиквания без функционалност vprintf(), което значително опростява използването на логването в свързването с други програмни езици.
  • Добавяне в API на функциите mdbx_txn_copy2pathname() и mdbx_txn_copy2fd().
  • Реструктуриране на изходния код с рефакторинг.
  • Използване на термина 'таблица' вместо 'subDb'.
  • Обявление на остарели опции MDBX_COALESCE и MDBX_NOTLS. Замяна на сборъчната опция MDBX_USE_VALGRIND с общо приетата ENABLE_MEMCHECK.

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

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