Didelio našumo įterptosios DBVS libmdbx 0.11.3 išleidimas

Состоялся выпуск библиотеки libmdbx 0.11.3 (MDBX) с реализацией высокопроизводительной компактной встраиваемой базы данных класса ключ-значение. Код libmdbx распространяется под лицензией OpenLDAP Public License. Поддерживаются все актуальные операционные системы и архитектуры, а также российский Эльбрус 2000. На конец уходящего 2021 года libmdbx используется как бэкенд хранения в двух самых быстрых клиентах Ethereum — Erigon и новой «Акуле», которая по доступной информации является самым высокопроизводительным клиентом Ethereum.

Istoriškai libmdbx yra gilus LMDB DBVS perdirbimas ir pranašesnis už savo pirmtaką savo patikimumu, funkcijų rinkiniu ir našumu. Palyginti su LMDB, libmdbx daug dėmesio skiria kodo kokybei, API stabilumui, testavimui ir automatiniams patikrinimams. Pateikiama duomenų bazės struktūros vientisumo tikrinimo programa su tam tikromis atkūrimo galimybėmis.

Технологически libmdbx предлагает ACID, строгую сериализацию изменений и неблокирующее чтение с линейным масштабированием по ядрам ЦПУ. Поддерживается автокомпактификация, автоматическое управление размером БД, оценка объёма выборок по диапазонам (range query estimation). С 2016 года проект финансируется компанией Positive Technologies и c 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.
  • Устранены все предупреждения при сборке всеми поддерживаемыми компиляторами в режимах С++ 11/14/17/20. Обеспечена совместимость с устаревшими компиляторами: clang начиная с 3.9, gcc начиная с 4.8, включая сборку посредством сdevtoolset-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().
  • Iš viso 90 failuose atlikta daugiau nei 25 pakeitimų, pridėta ~1300 eilučių, ištrinta ~600.

Šaltinis: opennet.ru

Добавить комментарий