The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Новая стратегия развития проекта libmdbx

29.12.2025 20:41

Проект libmdbx представил новую стратегию развития, одновременно объявив о смене модели разработки и распространения кода. Исходный код libmdbx останется открытым и с качественной бесплатной поддержкой, но теперь разработка будет вестись внутри команды с публикацией результата только в амальгамированной форме. Стратегия развития декларирует движение к давно анонсированному проекту MithrilDB, с поддержкой нескольких форматов БД под фасадом общего API. Явно заявляется о поддержке старых БД, пока это будет необходимо пользователям.

Если раньше в публичном доступе был весь исходный код, включая тестовый фреймфорк и внутреннюю документацию, то теперь доступен только амальгамированный исходный код библиотеки. Обещано, что вскоре будет представлен расширенный пример использования C++ API, который одновременно будет простым smoke-тестом. Причины достаточно подробны объяснены в комментариях встроенных в слайды презентации. В частности, декларируется желание поставлять библиотеку в максимального готовом виде, без зависимостей, необходимых только для её разработки и глубокого тестирования.

Кроме раскрытия уже разрабатываемых и запланированных возможностей libmdbx, в опубликованной стратегии анонсированы основные черты нового формата БД и обеспечиваемые им возможности:

  1. Усовершенствованное префиксное дерево, наложенное поверх дерева Меркла, образуемого базовой структурой B+tree. Структура будет похожа на Patricia Tree, но буквальный формат и технические детали совсем другие.
  2. Поддержка длинных ключей и сжатие префиксов. Сквозная нумерация элементов для точной оценки мощности выборов. Поддержка больших BLOB-объектов в потоковом режиме.
  3. Опциональное использование отображения файла БД в память. Поддержка шифрования и сжатия данных.
  4. Предоставление нового API с интенсивным использованием SWIG для автоматической генерации привязок к востребованным языкам программирования.
  5. Поддержка репликации реализуемой с учётом опыта полученного при разработке ReOpenLDAP.

В ходе очной презентации также было заявлено о намерении попробовать совместить внутри MithrilDB несколько реализаций написанных на разных языках, в частности C, С++ и Rust, обеспечив при этом прозрачное перекрёстное взаимодействие (приложения на С/С++ смогут использовать реализацию на Rust и наоборот).

Из разрабатываемых сейчас возможностей, которые станут доступны в ближайшее время, стоит отметить «Поиск с кэшированием». Суть которого в хранении указателей на данные непосредственно внутрь БД, с предельно быстрой проверки их актуальности. При этом поиск от корня дерева к листовым страницам останавливается, как только доходит до страницы, не изменённой после последней проверки соответствующего элемента кэша. Таким образом, вместо полного поиска по B-tree, выполняется минимально возможное количество действий, в зависимости об объёма изменений после последнего получения данных. Всё вместе обеспечивает кардинальное ускорение до нескольких десятков тысяч раз. В худшем же случае такой поиск с «кэшированием» не медленнее обычного.

  1. Главная ссылка к новости (https://libmdbx.dqdkfa.ru/rele...)
  2. OpenNews: Выпуск встраиваемой СУБД libmdbx 0.13.10
  3. OpenNews: Релиз LDAP-сервера ReOpenLDAP 1.2.0
Автор новости: erthink
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/64522-libmdbx
Ключевые слова: libmdbx
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (37) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.9, Аноним (-), 21:32, 29/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >Copyright (c) 2015-2025 Леонид Юрьев aka Leonid Yuriev <leo@yuriev.ru>
    >СМЕНА ЛИЦЕНЗИИ (THE LICENSE CHANGE)
    >OpenLDAP Public License → Apache 2.0

    Русский проект, а я то думал иностранный.

    >совместить внутри MithrilDB несколько реализаций написанных на разных языках, в частности C, С++ и Rust

    Совмещать разные языки плохая практика. Это Бэд Практис.

     
  • 1.23, Аноним (23), 22:29, 29/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Что такое амальгамированный исходный код?
     
     
  • 2.25, Аноним (25), 22:31, 29/12/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Код который завернут в амальгаму.
     
  • 2.30, Аноним (30), 22:45, 29/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    https://sqlite.org/amalgamation.html
    Это придумал не автор SQLite, но идея пошла в массы в основном оттуда.
     
  • 2.36, Аноним (36), 23:06, 29/12/2025 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Код, который годится только для чтения и сборки, но не для разработки
     
     
  • 3.39, Аноним (30), 23:20, 29/12/2025 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Леонид, ты?

    >Код, который годится только для чтения

    Нет, он не годится для чтения.
    Как можно читать один сгенерированный файл из десятков тысяч строк.
    Амальгамирование придумали для того чтобы код было проще распространять: из всех файлов кода генерируется всего один файл.
    И, бонусом, компилятор лучше оптимизирует код если он находится в одной единице трансляции.

     
     
  • 4.41, Вредный аноним (?), 23:25, 29/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Никто вручную код не читает. В 2025 году за тебя код прочтет нейросеть.
     
  • 3.48, афтар поделия (?), 23:36, 29/12/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    У LMDB очень-очень высокий порог входа. У libmdbx он еще намного выше из-за более сложных алгоритмов и добавленных возможностей. Поэтому ни в LMDB, ни в libmdbx новых разработчиков не появилось и (пока) не ожидается.

    Соответственно, на самом деле, амальгамирование почти никому не мешает.

     
  • 2.57, Аноним (57), 00:06, 30/12/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Обфусцированный. Не соответствующий определению исходного кода в терминологии GPL, например.
     
     
  • 3.59, афтар поделия (?), 00:11, 30/12/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    На всякий -- у нас код не обфусцированный, а лицензия Apache.
     
  • 3.65, Аноним (-), 00:41, 30/12/2025 Скрыто ботом-модератором     [к модератору]
  • –1 +/
     

  • 1.26, Аноним (26), 22:37, 29/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Мой комментарий про квазизакрытый код удалили вместе с ответом, что это выдумки и нужно читать комментарии в пдфке. Так вот, я прочитал и там прямо говорится, что переход к такому виду релизов сделан для предотвращения "угона" проекта, а также про платные фичи. Считаю свой комментарий верным и не содержащим выдумок.
     
     
  • 2.27, Аноним (27), 22:41, 29/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Чтоб не форкнули форкнутое.
     
  • 2.34, Аноним (36), 23:03, 29/12/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Обожглись походу. Тут пару лет назад в комментариях чел писал, у которого тоже богатый дядя форкнул его проект, раскрутил и начал продавать готовые бинарники с перебитым копирайтом
     
  • 2.35, афтар поделия (?), 23:03, 29/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Текущая модель разработки достаточно близка к тому, что исходно было и есть в LM... большой текст свёрнут, показать
     
  • 2.50, Аноним (50), 23:41, 29/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > предотвращения "угона" проекта, а также про платные фичи. Считаю свой комментарий
    > верным и не содержащим выдумок.

    И что, какой-то псих даже денег даст? Учитывая метания проекта с сменой сишного апи на плюсатый (== выбросьте все предыдущие наработки и забейте на interop с другими яп) - и теперь еще рост разлапистости в какую-то неведому шляпу. И это при том маппинг в память был сто лет у других, даже более древнних, типа tokyo cabinet старинного. А тут до господ только дошло.

     
     
  • 3.58, афтар поделия (?), 00:08, 30/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > уитывая метания проекта с сменой сишного апи на плюсатый

    У проекта как был сишный API так и остался.
    Плюсовый добавился в 2020-2021 годах и продолжает развиваться.

    Проблема сишного API в том, что его пытаются "как есть" тащить в условный python, а потом смешивают с возможностями питона -- получается страшно и глючно.

    > до господ только дошло.

    tokyo cabinet старше LMDB примерно на 4 года, а отображение в память появилось >50 лет назад

     

  • 1.29, Аноним (30), 22:42, 29/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    >разработка будет вестись внутри команды с публикацией результата только в амальгамированной форме
    >декларируется желание поставлять библиотеку в максимального готовом виде, без зависимостей, необходимых только для её разработки и глубокого тестирования

    Очень странное решение. Читаю как "мы решили закрыть исходный код".

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

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

     
     
  • 2.33, Аноним (36), 23:01, 29/12/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Открытый код давно перешёл в разряд только для чтения; подумай об этом на досуге
     
  • 2.40, афтар поделия (?), 23:24, 29/12/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Читаю как "мы решили закрыть исходный код".

    Вы не читаете, а (пардон) озвучиваете неверное впечатление.

    1. Де-факто за 10 лет других разработчиков не появилось, аналогичная картина и в LMDB. Причины пояснены в комментариях к презентации (очень сложно и трудно вникать). Поэтому код не особо кому-то нужен, а если нужен, то он и доступен, и можно присоединиться к разработке.

    2. Пользователям нужен готовый к использованию код, а не куча-мала с тонной зависимостей. А поставка тестов требует их поддержки.

    3. У SQLite другая ситуация, главным образом из-за щедрого спонсирования и обеспечения интересов спонсоров. В том числе, для страховки спонсоров от всяческих неприятностей, разработчиков обязывают передавать код в общественное достояние. Если кто-то (вдруг) предложит обеспечить аналогичные финансовые условия, то я согласен ;)

    4. Код проекта доступен и обеспечен первоклассной бесплатной поддержкой, в этом плане я действительно веду себя странно (как и многие мэинтейнеры не прошу денег).

     
     
  • 3.54, Аноним (54), 23:46, 29/12/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    За 10 лет зоркий глаз не заметил что его код не нужен? Или просто нашел где заработать?
     
     
  • 4.56, афтар поделия (?), 23:57, 29/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > оркий глаз не заметил что его код не нужен?

    1. https://ptsecurity.com/about/clients/

    2. на libmdbx сидит половина узлов Ethereum и еще несколько блокчейнов.

    3. несчитанное количество мобильных установок (через привязки Rust и использующие их проекты), посчитать реально невозможно -- пытались прикинуть/оценить получается >100 миллионов "но это неточно".

     
     
  • 5.63, Аноним (-), 00:31, 30/12/2025 Скрыто ботом-модератором     [к модератору]
  • –1 +/
     

  • 1.61, Аноним (-), 00:17, 30/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > но теперь разработка будет вестись внутри команды с
    > публикацией результата только в амальгамированной форме.

    Это чтобы всякие бэкдоры и вулны было удобнее пхать? Или зачем еще такая псевдооткрытость нужна? Говоря за себя я пожалуй обойду такой код за версту. Не выглядит как что либо внушающее доверие.

     
     
  • 2.62, афтар поделия (?), 00:24, 30/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Это чтобы всякие бэкдоры и вулны было удобнее пхать?

    Что-либо запихать в один файл также просто так и в 42.
    Но этому будет более заметно, так как фокус внимания не перемещается.

    > Или зачем еще такая псевдооткрытость нужна?

    В слайды встроены комментарии, там все ответы.
    Что-то уже было повторено от ответа здесь.

    > говоря за себя я пожалуй обойду такой код за версту.

    спасибо, так будет лучше при отсутствии доверия.

     
     
  • 3.66, Аноним (-), 00:45, 30/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    С системой контроля версий гораздо удобнее смотреть что и где изменилось - по фа... большой текст свёрнут, показать
     
     
  • 4.71, афтар поделия (?), 01:08, 30/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > С системой контроля версий гораздо удобнее смотреть что и где изменилось.

    Технически контроль версий для амальгамированных исходников работает ровно также.

    Что и где изменилось смотреть удобнее иногда по-отдельности, иногда нет.
    Просто по-отдельности изменений может быть кратно больше.
    Но для аудита и/или анализа кода это не имеет никакого значения, от слова совсем.

    Далее, на самом деле тут важнее понимать что делают изменения, в том числе в масштабе всего проекта.
    А вот с этим в LMDB трудно, а в libmdbx труднее ещё в 10 раз (просто фичей больше, кода больше, темп развития кратно выше).
    Поэтому, со все

     
     
  • 5.73, афтар поделия (?), 01:13, 30/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    пардон, котэ прыгнул.

    Так вот, с полной уверенностью утверждаю, что амальгамация вообще не заметна на фоне трудоёмкости погружения в код и детали реализации.

    Как-то так.

     
  • 2.68, Аноним (68), 00:54, 30/12/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Чел, расслабься, это все равно никому не нужно. Тем более учитывая гражданство автора и его политические взгляды. Это все раано как использовать софт от китайцев.
     
     
  • 3.75, афтар поделия (?), 01:35, 30/12/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     

  • 1.64, Аноним (-), 00:39, 30/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    У... сейчас начнется)

    Благодарное сообщество™, которое и строчки кода в проект не закоммитило, будет кричать, что у него что-то отобрали и вообще своровали))
    А сам аффтар вообще м-дила!)

    Собственно выше уже начали. Хотя 99% коментаторов даже слышали об этом проекте только из новостей опеннета.

     
     
  • 2.72, Аноним (30), 01:12, 30/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >сам аффтар вообще

    Ну да. Он форкнул открытый LMDB, что-то там добавил (С++ API? не следил особо) и начал бегать по интернетам с очень навязчивым пиаром.
    Теперь проект на пол-шишечки закрывает свой исходный код под предлогом заботы о пользователях. Что за дичь вообще, какое это имеет отношение к нормальному, обычному опенсорсу.

    Что ему мешало общаться с автором LMDB и развивать проект совместно с ним? Не думаю, что там были какие-то неразрешимые противоречия.

    >99% коментаторов даже слышали об этом проекте только из новостей опеннета

    Я пользовался оригинальным LMDB, еще до этого эпического форка. Не впечатлился. На libmdbx даже не стал смотреть, там же тот же b-tree на mmap-ed файлах, только с каким-то диким пиаром. Меня это наоборот отталкивает.

     
     
  • 3.74, афтар поделия (?), 01:34, 30/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Он форкнул открытый LMDB, что-то там добавил (С++ API? не следил особо) и начал бегать по интернетам с очень навязчивым пиаром.

    Так зачем что-то писать, если совсем не в теме ?

    В документации есть раздел "Improvements beyond LMDB" = https://libmdbx.dqdkfa.ru/intro.html#improvements
    там перечисленная некоторая часть доработок (все перечислять смысла нет, никто не дочитывает).

    > Что ему мешало общаться с автором LMDB и развивать проект совместно с ним?

    Так зачем что-то писать, если совсем не в теме ?

    libmdbx был форкнут в составе ReOpenLDAP для решения проблем возникших при эксплуатации в МегаФоне.
    После того как Symas Corp (авторы и меинтейнеры кода) не смогли устранить проблемы и отказались.

    Причины форка подробно пояснялись ещё 10 лет назад -- не принимались самые очевидные патчи по обескураживающим причинам. Например, использование __VA_ARGS__ для устранения ~5000 предупреждений было отвергнуто по причина отсутствия поддержку __VA_ARGS__ у каких-то дремучих компиляторов (коих в использовании потом найти не удалось).
    А отдельные фичи, уже работающие ~10 лет, тогда отвергались как "это не возможно".

    При этом главной целью (за то что заказчик платил деньги) было не пропихивание патчей в upstream, а устранение падений и других проблем. Эти цели были достигнуты, а развитие libmdbx было продолжено.

     

  • 1.67, Аноним (68), 00:48, 30/12/2025 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +2 +/
     
  • 1.69, Аноним (68), 00:58, 30/12/2025 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +/
     
  • 1.70, нах. (?), 01:07, 30/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    опеннетушка, ты хоть смотри от кого новости простишь
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2025 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру