LINUX.ORG.RU

Выпуск встраиваемой СУБД libmdbx 0.12.5 «Динамо»

 , , ,


0

3

Состоялся выпуск библиотеки libmdbx v0.12.5 «Динамо» с реализацией высокопроизводительной компактной встраиваемой базы данных класса ключ-значение. Код распространяется под лицензией OpenLDAP Public License.

Выпуск отмечен как стабилизирующий, с исправлением обнаруженных ошибок и устранением недочетов, в день 100-летнего юбилея спортивного общества «Динамо». При этом пользователи отмечают заметное увеличение производительности (видимо в сравнении с версиями v0.11.x).

Исправления:

  • Поправлен экспорт из DSO/DLL устаревших функций, которые заменены на inline в текущем API.
  • Устранено использование неверного компаратора при создании или пересоздании MainDB с флагами/опциями предполагающим использование специфического компаратора (не по-умолчанию).

Мелочи:

  • Удалена дублирующая диагностика внутри node_read_bigdata().
  • Исправлены ссылки в описании mdbx_env_set_geometry().
  • Добавлен отдельный тест extra/upsert_alldups для специфического сценария замены/перезаписи одним значением всех multi-значений соответствующих ключу, т.е. замена всех «дубликатов» одним значением.
  • В C++ API добавлены варианты buffer::key_from() с явным именованием по типу данных.
  • Добавлен отдельный тест extra/maindb_ordinal для специфического сценария создания MainDB с флагами требующими использования компаратора не по-умолчанию.
  • Проведён рефакторинг проверки «когерентности» мета-страниц.
  • Проведена корректировка osal_vasprintf() для устранения предупреждений статических анализаторов.

Кроме традиционного C API, в libmdbx предлагается развитый C++20 API, а также поддерживаемые энтузиастами привязки к языкам: Lua, Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno, Scala.

Исторически libmdbx является глубокой переработкой Lightning Memory-Mapped Database (aka LMDB). По утверждению разработчиков, libmdbx превосходит своего прародителя по надёжности, набору возможностей и производительности. Больше внимание уделяется тестированию и автоматическим проверкам.

Уже более двух лет libmdbx используется проектом Erigon (17% узлов Ethereum и основа для других блокчейнов) в качестве движка хранения, а с сентября 2022 он выбран проектом Reth (реализация Ethereum на Rust, финансируемая Paradigm).

Разработка libmdbx финансируется компанией Positive Technologies и с 2017 года используется в её продуктах. В апреле 2022 года проект перенесен на Gitflic.

Подробности (telegram)

>>> Подробности (gitflic)

anonymous

Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 4)
Ответ на: комментарий от dataman

Изначально у анонимуса «Подробности» вели строго на Телеграм. Я сделал основной ссылку на гитфлик потому, что у кого-то телеграм может не открываться (быть заблокированным на работе, например).

Кто это, автор?

Этого мы уже не узнаем. Я бы, конечно, посоветовал автору зарегистрироваться на ЛОРе.

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)

Исправления:

  • Поправлен экспорт из DSO/DLL устаревших функций, которые заменены на inline в текущем API.
  • Устранено использование неверного компаратора при создании или пересоздании MainDB с флагами/опциями предполагающим использование специфического компаратора (не по-умолчанию).

Мелочи:

  • Удалена дублирующая диагностика внутри node_read_bigdata().
  • Исправлены ссылки в описании mdbx_env_set_geometry().
  • Добавлен отдельный тест extra/upsert_alldups для специфического сценария замены/перезаписи одним значением всех multi-значений соответствующих ключу, т.е. замена всех «дубликатов» одним значением.
  • В C++ API добавлены варианты buffer::key_from() с явным именованием по типу данных.
  • Добавлен отдельный тест extra/maindb_ordinal для специфического сценария создания MainDB с флагами требующими использования компаратора не по-умолчанию.
  • Рефакторинг проверки «когерентности» мета-страниц.
  • Корректировка osal_vasprintf() для устранения предупреждений статических анализаторов.
dataman ★★★★★
()

предлагается развитый C++20 API

И C++ исходники в файлах c++/h++. Автор упорно настаивает, что это хорошо, уже который релиз.

dataman ★★★★★
()
Ответ на: комментарий от ratvier

Не раз встречал упоминания, что libmdbx — лучшая в этом классе. Вот буквально на днях комментаторы на lobste.rs об этом писали.

Правда, есть сравнение 5-6 летней давности, где leveldb (кажется, точно не помню) в каких-то бенчах выигрывала, но во-первых, 5 лет — огромный срок, во-вторых, кажется автор libmdbx этот кейс и многие другие детально разбирал.

emorozov
()
Последнее исправление: emorozov (всего исправлений: 1)
Ответ на: комментарий от dataman

http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rl-file-suffix

Странное предложение. Здесь есть mdbx.h для C и mdbx.h++ для C++. Авторы рекомендаций предлагают их объединить в один файл, который для C и C++ выдаст разный интерфейс? Или делать mdbx_c.h для C и mdbx.h для C++?

monk ★★★★★
()
Ответ на: комментарий от Werenter

Дело не в нравится/не нравится. Например, Midnight Commander не считал .c++ и .h++ исходниками, и это исправили не так уж давно.

А где пока не исправили?

dataman ★★★★★
()
Ответ на: комментарий от monk

Авторы рекомендаций предлагают их объединить в один файл, который для C и C++ выдаст разный интерфейс? Или делать mdbx_c.h для C и mdbx.h для C++?

Нет, если есть смешанные исходники, то в .cpp/.hpp, .cc/.hh, .cxx/.hxx.

Мне встречались и .C/.H, но я против. :)

dataman ★★★★★
()

в день 100-летнего юбилея спортивного общества «Динамо». При этом пользователи отмечают заметное увеличение производительности

Динамо бежит - все бегут!

slepoy_pew
()

Для использования у себя для кэша приглядываюсь к оригинальному lmdb, возможно, рассмотрю этот вариант. Спасибо за новость!

GFORGX ★★★
()

Мне статус на гитхабе понравился.

У проекта 1000 звезд было… Может не стоило переезжать?

PositiveTechnologies

А вот это зашквар.

uwuwuu
()
Ответ на: комментарий от Werenter

А h мне кажется не очень для C++, лучше hpp, как в том же boost

У меня от такого в глазах рябит. А в случае .h/.cpp благодаря разной длине, глаз быстро схватывает, где что.

dimgel ★★★★★
()
Последнее исправление: dimgel (всего исправлений: 1)

Это что-то типо очередной СУБД? Есть сравнение с SQLite?

xwicked ★★☆
()

в день 100-летнего юбилея спортивного общества «Динамо»

Cпортивное общество «Динамо» учредили по инициативе группы сотрудников и военнослужащих ГПУ как организацию, предоставляющую возможность занятия спортом сотрудникам органов безопасности и правопорядка. За это «ментами» динамовцев дразнили долгие годы.

хорошая попытка, трищ майор

anonymous_sapiens ★★★★★
()

Это как-то с MS Access связано? Название навеяло.

Nervous ★★★★★
()

Кто живёт на дне океана

One ★★★★★
()
Ответ на: комментарий от anonymous_sapiens

Публичное общество с акциями на бирже? Вот это уровень у товарища майора! Касперский, не завидуй.

fluorite ★★★★★
()

Кроме традиционного C API, в libmdbx предлагается развитый C++20 API, а также поддерживаемые энтузиастами привязки к языкам: Lua, Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno, Scala.

а пыха нет =( жаль...

sol13 ★★★★★
()

Не особо понимаю смысла этой шняги.

Хранить Map<String, String> на диске?

Но зачем. Обычно в таких мапах хранят настройки, но настройки обычно вычитывают один раз при запуске.

guyvernk
()
Ответ на: комментарий от guyvernk

Обычно в таких мапах хранят настройки

А также словари и кэши. Блокчейн тот же - это в принципе построен на KV (hash -> block). Всё это может быть многогигабайтным и должно работать с минимальным временем на ответ.

SkyMaverick ★★★★★
()
Последнее исправление: SkyMaverick (всего исправлений: 1)
Ответ на: комментарий от eternal_sorrow

Нет, да. Нормальный сервис (сам пользуюсь). К слову, если это основная претензия, то публичные репы уже доступны без письма в саппорт.

SkyMaverick ★★★★★
()

Динамо, это когда ты закинул данные, а в ответ на запрос получил NULL?

faq2
()
Ответ на: комментарий от dataman

И C++ исходники в файлах c++/h++.

Кстати, в сочетании с gitflic получается облом. Он при входе в файл не преобразует символы для адреса. Приходится вручную + на %2B заменять.

monk ★★★★★
()
Ответ на: комментарий от Rodegast

Динамо — это не только способ отношения к деловым и личным партнёрам, а ещё и спортивное общество, к юбилею которого приурочен релиз :P

hobbit ★★★★★
()
Ответ на: комментарий от uwuwuu

А их как раз с гитхаба и попросили из-за того, что это они из PT. Компания под санкциями.

Ну а глагне разрабочика сабжа вообще промыло не по-детски: https://vk.com/erthink

leave ★★★★★
()
Ответ на: комментарий от eternal_sorrow

Так это же достоинство. Не будет закрывать твои проекты по политическим причинам.

Как это случилось с github, который с тех пор и считается нерукопожатным.

Aceler ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.