The OpenNET Project / Index page

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

Выпуск высокопроизводительной встраиваемой СУБД libmdbx 0.9.3

08.02.2021 20:19

После двух месяцев разработки состоялся выпуск библиотеки libmdbx 0.9.3 (MDBX) с реализацией высокопроизводительной, компактной встраиваемой базы данных класса ключ-значение. Код libmdbx распространяется под лицензией OpenLDAP Public License. libmdbx является глубокой переработкой СУБД LMDB и по заявлению разработчиков превосходит своего прародителя по надежности, набору возможностей и производительности. Заявляется, что libmdbx до 20% быстрее LMDB в CRUD сценариях и до 30% быстрее, если при сборке libmdbx отключить внутренний контроль до сопоставимого с LMDB уровня.

Libmdbx предлагает ACID, строгую сериализацию изменений и неблокирующее чтение с линейным масштабированием по ядрам CPU. В libmdbx большое внимание уделяется качеству кода, стабильной работе API, тестированию и автоматическим проверкам. Поддерживается автокомпактификация, автоматическое управление размером БД, единый формат БД для 32-битных и 64-битных сборок, оценка объёма выборок по диапазонам (range query estimation). Поставляется утилита проверки целостности структуры БД с некоторыми возможностями восстановления. C 2016 года проект финансируется компанией Positive Technologies и c 2017 года используется в её продуктах.

Основные новшества, доработки и исправления, добавленные после прошлого выпуска:

  • Полностью переработан и протестирован спиллинг (функциональный аналог свопинга) на диск изменённых страниц БД в очень больших транзакциях;
  • В API добавлена установка опций времени выполнения, что позволяет оптимизировать работу движка под конкретные сценарии использования;
  • Ускорена сортировка внутренних списков страниц;
  • За счёт использования C11 atomics улучшена поддержка архитектур со слабой моделью согласованности памяти. Однако, некоторая деградация производительности устранена уже после релиза.
  • Доступен порт для FreeBSD (автор Mahlon E. Smith);
  • Доступны привязки для GoLang (автор Alex Sharov);
  • Устранено более 10 ошибок и недочётов;
  • Суммарно внесено более 150 изменений, удалено ~2500 строк, добавлено ~4100.


  1. Главная ссылка к новости (https://github.com/erthink/lib...)
  2. OpenNews: Выпуск LDAP-сервера ReOpenLDAP 1.1.9
  3. OpenNews: Выпуск высокопроизводительной встраиваемой СУБД libmdbx 0.9.2
  4. OpenNews: Выпуск библиотеки хэш-функций Fast Positive Hash 2.0.1
  5. OpenNews: Доступен ReOpenLDAP 1.1.6, форк проекта OpenLDAP
Автор новости: erthink
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/54554-libmdbx
Ключевые слова: libmdbx
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (74) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 22:16, 08/02/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Это как berkeley db?
     
     
  • 2.3, erthink (ok), 22:58, 08/02/2021 [^] [^^] [^^^] [ответить]  
  • +6 +/
    > Это как berkeley db?

    Смотря что подразумевать под этим "как".

    Согласно википедии (https://en.wikipedia.org/wiki/Embedded_database#Oracle_Berkeley_DB) последнее время наблюдается массовый переход с Berkeley DB на LMDB, поскольку второе меньше глючит и работает быстрее. Ну и плюс изменение лицензии.

    За вычетом лицензии, наверное, главная проблема Berkeley DB в кешировании: большие накладные расходы, глюки и деадлоки - всё с момента появления этого кеширования.

    Тем не менее, в Berkeley DB есть немало фичей отсутствующих в LMDB (тут не добавляли не затребованного). Эти фичи кому-то могут быть крайне важны, но одновременно превращают Berkeley DB в монструозный легасу-комбайн.

    ---

    Ну и соответственно MDBX - это "улучшенная" LMDB. Но важно что кроме "улучшений" в libmdbx устранено достаточно багов (пример проявления https://github.com/ledgerwatch/turbo-geth/issues/1473).

     
     
  • 3.62, Энон (?), 19:45, 09/02/2021 [^] [^^] [^^^] [ответить]  
  • –11 +/
    вопрос из 4-х (четырёх!) слов... Ответ такого объёма, что первая мысль -- иди на [запрет в интернете]
     
     
  • 4.63, erthink (ok), 19:46, 09/02/2021 [^] [^^] [^^^] [ответить]  
  • +5 +/
    > вопрос из 4-х (четырёх!) слов... Ответ такого объёма, что первая мысль --
    > иди на [запрет в интернете]

    Дак идите, не задерживайте очередь

     
  • 2.74, adolfus (ok), 11:33, 10/02/2021 [^] [^^] [^^^] [ответить]  
  • –2 +/
    До BerkeleyDB этому поделию, как до Луны раком. Оно даже на база данных, а обычный ретривер. BerkeleyDB поддерживает ISAM и полностью ACID. Это единственная нормальная не SQL база данных.
     
     
  • 3.77, erthink (ok), 12:07, 10/02/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Без обид, но чушь Видимо от незнания недопонимания Так было лет 30 назад Про... большой текст свёрнут, показать
     

  • 1.2, Аноним (2), 22:32, 08/02/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –10 +/
    Судя по патчу для порта FreeBSD, написано крайне непрофессионально.
     
  • 1.4, Аноним (4), 00:17, 09/02/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Ишвините, возможно не по адресу, но чем оно лучше leveldb? Понятно что leveldb не самая надёжная и устойчивая к поврежденями, кроме того у неё значительные футпринт и оверзхэд в рантайме, но помимо этого? А то lmdb что-то совсем никуда не годится.
     
     
  • 2.6, erthink (ok), 01:08, 09/02/2021 [^] [^^] [^^^] [ответить]  
  • +8 +/
    > чем оно лучше leveldb?

    Это разные движки, с принципиально различным внутренним устройством, т.е. теплое и мягкое.

    > Понятно что leveldb не самая надёжная и устойчивая к поврежденями, кроме того у неё значительные футпринт и оверзхэд в рантайме, но помимо этого?

    Дедушку levedb конечно пора отпустить, если только нет противопоказаний (например) от RocksDB.

    Если же сравнивать MDBX (b+tree и ACID поверх MVCC за счет page shadowing) и RocksDB (LSM tree с "бантиками"), то минусы каждого из движков могут с запасом перекрыть плюсы в зависимости от сценариев и условий использования.
    Т.е. если вам нужен "утюг", то подойдет одно, а если "подушка" - то другое.

    При этом, для желающего понять как внутреннее устройство MDBX и RocksDB, так и для каких сценариев использования они (не)подходят - в Сети полно информации.


    > А то lmdb что-то совсем никуда не годится.

    ТТХ и поведение LMDB отлично соответствует целевым сценарием использования этого движка.

    Поэтому оно очень даже годится с двумя оговорками:
    1) в LMDB ребусный стиль кодирования, (как следствие) высокий порог вхождения и относительно малое кол-во людей готовых что-либо поправить с SLA.
    = в MDBX это осталось, ибо иначе нужно "переписать".

    2) в LMDB отсутствуют полноценные тесты и средства проверки целостности БД, (как следствие) баги приводящие к повреждению БД и/или потерям данных
    = в MDBX это полностью устранено.

     
     
  • 3.7, Аноним (4), 01:18, 09/02/2021 [^] [^^] [^^^] [ответить]  
  • –3 +/
    > Это разные движки, с принципиально различным внутренним устройством, т.е. теплое и мягкое.

    Если будете делать такие заявления, я сейчас начну сравнивать MDBX и HDF5, и скорее всего даже не придётся долго подбирать кейсы на которых последняя окажется предпочтительнее.

     
     
  • 4.8, erthink (ok), 01:23, 09/02/2021 [^] [^^] [^^^] [ответить]  
  • +3 +/
    >> Это разные движки, с принципиально различным внутренним устройством, т.е. теплое и мягкое.
    > Если будете делать такие заявления, я сейчас начну сравнивать MDBX и HDF5, и скорее всего даже не придётся долго подбирать кейсы на которых последняя окажется предпочтительнее.

    Т.е. вы считаете что MDBX и RocksDB схожи насколько, что метафора "теплое и мягкое" не подходит?

    Просветите тогда уж меня убогого.

     
     
  • 5.9, Аноним (4), 01:35, 09/02/2021 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Нет. Я считаю, что это всё совершенно не интересно пользователям, имеют значение только осязаемые параметры. И вот скажем это "ура, мы на 5% быстрее на узкоспецифичных кейсах!" не тянет на конкурентное преимущество. По многим пользовательским параметрам rocks и lmdb проигрывают leveldb, во всяком случае так было неделю назад, когда я крайний раз выбирал key-value хранилище для проекта. Может быть, с тех пор что-нибудь и поменялось.
     
     
  • 6.11, erthink (ok), 01:58, 09/02/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    отредактировано/удалено: кот прыгнул на тачпад...
     
  • 6.12, erthink (ok), 02:15, 09/02/2021 [^] [^^] [^^^] [ответить]  
  • +4 +/
    gt оверквотинг удален 1 Позвольте пожелать удачи вашему похоже воображаемому... большой текст свёрнут, показать
     
     
  • 7.26, Аноним (4), 10:18, 09/02/2021 Скрыто ботом-модератором     [к модератору]
  • –6 +/
     
     
  • 8.28, erthink (ok), 10:27, 09/02/2021 Скрыто ботом-модератором     [к модератору]
  • +4 +/
     
     
  • 9.29, Аноним (4), 10:35, 09/02/2021 Скрыто ботом-модератором     [к модератору]
  • –2 +/
     
     
  • 10.33, erthink (ok), 10:47, 09/02/2021 Скрыто ботом-модератором     [к модератору]
  • +1 +/
     
     
  • 11.37, Аноним (4), 11:11, 09/02/2021 Скрыто ботом-модератором     [к модератору]
  • –8 +/
     
  • 9.30, Аноним (4), 10:36, 09/02/2021 Скрыто ботом-модератором     [к модератору]
  • –3 +/
     
     
  • 10.34, erthink (ok), 10:51, 09/02/2021 Скрыто ботом-модератором     [к модератору]
  • +1 +/
     
     
  • 11.35, Аноним (4), 11:05, 09/02/2021 Скрыто ботом-модератором     [к модератору]
  • –1 +/
     
     
  • 12.36, erthink (ok), 11:09, 09/02/2021 Скрыто ботом-модератором     [к модератору]
  • +2 +/
     
     
  • 13.38, Аноним (4), 11:14, 09/02/2021 Скрыто ботом-модератором     [к модератору]
  • –3 +/
     
     
  • 14.40, Аноним (-), 12:01, 09/02/2021 Скрыто ботом-модератором     [к модератору]
  • +7 +/
     
  • 11.59, Аноним (-), 17:04, 09/02/2021 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 4.10, Аноним (10), 01:52, 09/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > Если будете делать такие заявления, я сейчас начну сравнивать MDBX и HDF5, и скорее всего даже не придётся долго подбирать кейсы на которых последняя окажется предпочтительнее.

    так сравни, с диагнозом сразу станет понятно ;)

     
  • 3.13, Аноним (13), 02:17, 09/02/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ужасно сложно выражаешь свои мысли
     
     
  • 4.15, Аноним (10), 02:28, 09/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    он и код пишет такой-же, даже говард чу не осиливает.
     
  • 3.14, Аноним (13), 02:25, 09/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > LSM tree с "бантиками"

    Каким еще "бантиками"?

     
     
  • 4.16, erthink (ok), 02:31, 09/02/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >> LSM tree с "бантиками"
    > Каким еще "бантиками"?

    https://github.com/facebook/rocksdb/wiki/Features-Not-in-LevelDB

     
  • 3.24, crypt (ok), 10:11, 09/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    это все, конечно, да... а где в каких продуктах PT она используется?
     
     
  • 4.27, erthink (ok), 10:20, 09/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    https://github.com/PositiveTechnologies/libfpta внутри https://www.ptsecurity.com/ru-ru/products/mpsiem/
     

  • 1.17, Аноним (17), 02:51, 09/02/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    const uint64_t cadabra =
          rrxmrrxmsx_0(*abra + UINT64_C(7680760450171793) * (unsigned)mdbx_getpid())

    качество кода зашкаливает

     
     
  • 2.18, erthink (ok), 02:57, 09/02/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > const uint64_t cadabra =
    >       rrxmrrxmsx_0(*abra + UINT64_C(7680760450171793) * (unsigned)mdbx_getpid())
    > качество кода зашкаливает

    Не знакомы с иньективными отображениями и примитивами/миксерами хеш-функций?

    Но я подскажу вам где действительно стоит критиковать - см. код функции mdbx_update_gc().
    Это действительно то, что Howard Chu не стал осиливать ;)

    А если "понравится", то начните с https://github.com/LMDB/lmdb/tree/mdb.master/libraries/liblmdb/mdb.c

     
     
  • 3.53, nuclight (??), 15:08, 09/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Вполне очевидно, что речь про:

    > cadabra
    > rrxmrrxmsx_0

    а не константы хэшей - которые, впрочем, тоже можно было вынести в макросы.

     
     
  • 4.54, erthink (ok), 16:25, 09/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    >Вполне очевидно, что речь про:
    >> cadabra
    >> rrxmrrxmsx_0
    >а не константы хэшей - которые, впрочем, тоже можно было вынести в макросы.

    Это (пожалуй) предельно простой и прозрачный фрагмент кода, примерно как hello world, но не пример из учебника.
    Его читаемость улучшит только знание что такое rrxmrrxmsx и чем может быть константа, а не приседания с вынесением "магических" констант в макросы.
    Поэтому, пожалуйста, не надо делать что-то вроде code review настолько беспощадно (к себе).
    Тем не менее, если вы хотите облагородить какие-то фрагменты кода, то я с радостью приму PR.

     
  • 4.55, llolik (ok), 16:29, 09/02/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > rrxmrrxmsx_0

    Нет бы взяли да назвали RotateRotateXorMultiplyRotateRotateXorMultiplyShiftXor_0, да. Это общепринятые сокращения, а не авторский стиль.

    https://github.com/martinus/better-faster-stronger-mixer

     

  • 1.21, Аноним (21), 09:48, 09/02/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А не подскажете, для сценария, однопоточного чтения/записи, с очень редкими записями из других потоков, какая KV-бд подойдёт? Надо максимизировать скорость.
     
     
  • 2.25, erthink (ok), 10:15, 09/02/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > А не подскажете, для сценария, однопоточного чтения/записи, с очень редкими записями из
    > других потоков, какая KV-бд подойдёт? Надо максимизировать скорость.

    Если данные помещаются в ОЗУ и чтения существенно больше чем записи, то MDBX может быть очень неплохим вариантом:
    - чтения будут неблокируемыми, OlogN и со скоростью доступа в память, и на каждом ядре CPU.
    - редкие пишущие транзакции можно делать no-sync и сбрасывать на диск асинхронно (вызывая mdbx_env_sync из отдельного треда).


    RocksDB также стоит примерить, особенно если какая-либо фича может вам помочь (например фильтр Блума).

    Но в целом может подойти очень многое и надо внимательно смотреть на все остальные аспекты.

     
     
  • 3.70, Аноним (21), 07:30, 10/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    спасибо
     

  • 1.22, Наноним (?), 10:00, 09/02/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    mdbx.c++
    mdbx.h++

    "Быть не как все" снова детектед.

     
  • 1.31, Аноним (-), 10:39, 09/02/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    Очень хорошо . Только если рискнули на гитхабной помойке разрабатывать - закройте возможность гадить в код кому попало иначем мы вас потеряем очень скоро.
     
     
  • 2.32, Аноним (-), 10:44, 09/02/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Please don't use my work, if you are associated with Adolf Hitler, Stepan Bandera, George Soros, Michael Hodorkovsky, either support an actions of these felons.

    Одобрямс. Надо лицензию придумать чтоб копрорации не имели право использовать код, есть идеи ?

     
     
  • 3.39, pansa2 (?), 11:36, 09/02/2021 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Да, хорошо бы такое ... выпиливать с гитхаба. Предлагаю флешмобчик в виде абьюзов. =)
     
  • 3.42, anonymous (??), 12:14, 09/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Ставить Ходорковского в один ряд с Гитлером -- это знать про Ходорковского из пропагандистских СМИ. А вообще в свободных лицензиях не должно быть ничего такого конечно же. Навязывать свои тараканы чужим -- это уже не свободная лицензия.
     
     
  • 4.43, erthink (ok), 12:20, 09/02/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Ставить Ходорковского в один ряд с Гитлером -- это знать про Ходорковского
    > из пропагандистских СМИ.

    Ваше мнение является следствием других пропагандистских СМИ.
    Тем не менее, там нет явного знака равенства (т.е. не нужно передергивать), а ограничение на длину не позволяет что-либо уточнить.

    > А вообще в свободных лицензиях не должно быть
    > ничего такого конечно же. Навязывать свои тараканы чужим -- это уже
    > не свободная лицензия.

    Читайте внимательно.
    Это просьба, а не часть лицензий (которые явно указаны внутри каждого проекта).

     
     
  • 5.46, Аноним (46), 12:22, 09/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    >а ограничение на длину не позволяет что-либо уточнить.

    https://github.com/erthink/erthink

     
  • 5.76, anonymous (??), 11:37, 10/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > Ваше мнение является следствием других пропагандистских СМИ.

    Скорее собственного небольшого исследования на эту тему. При участии СМИ конечно же, но скорее как для получения дополнительного набора ссылок для уточнения.

    > там нет явного знака равенства

    Я и не говорил, что он там есть.

    > Это просьба, а не часть лицензий (которые явно указаны внутри каждого проекта).

    Я и не говорил "убрать из лицензии" или как либо иначе о том, что оно есть в лицензии. Я лишь говорю, что такого в свободных лицензиях быть не должно.
    Читайте внимательнее.

     
  • 3.44, Аноним (46), 12:20, 09/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    >лицензию придумать чтоб копрорации не имели право использовать код

    GNU GPL

     
     
  • 4.48, Аноним (48), 12:42, 09/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Ты читать умеешь ?

    ИСПОЛЬЗОВАТЬ, не только закрывать

     
     
  • 5.80, anonymous (??), 22:18, 10/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    А где граница между корпорацией и ООО из двух человек?
     
  • 2.47, erthink (ok), 12:24, 09/02/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Очень хорошо . Только если рискнули на гитхабной помойке разрабатывать - закройте
    > возможность гадить в код кому попало иначем мы вас потеряем очень
    > скоро.

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

    Ну и никакой особой разработки на github нет, это просто удобная и общеизвестная площадка, которая используется для:
    - раздачи кода.
    - взаимодействия с пользователями библиотеки и накопления "ачивок" (гитхабовых звездочек).
    - прогона CI-тестов на условиях "для open source".

    А после блокировки Крыма основным репо считается https://abf.io/erthink/libmdbx, о чем добавлены примечания.

     
     
  • 3.49, Аноним (-), 12:48, 09/02/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Не понял что вы хотели сказать.
    > В код кому-то гадить крайне сложно, н общеизвестная площадка

    Общественный сартир. Никогда не знаешь какой баг тебе завезут "случайно" под видом поддержки windoz (кстати поддержку оно лучше выпилить в идеале не заявлять изначально). У меня уже музей проектов которые мы потеряли. То тут вдруг и неожиданно пофиксили что работать стало в тысячи раз медленнее, то тум вдруг буфер стал вылазить и ни один санитайзер не видит этого. Могу только посоветовать если не плевать на свое творчество (которое потеряешь когда принимаешь чужие комиты, точнее они становятся совладельцами и могут сыграть с тобой в демократические выборы, и всем будет чьхать что ты 99.9999% кода написал) .

    Хороший же проект, опомнись пока не поздно !

     
     
  • 4.50, erthink (ok), 13:04, 09/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > Хороший же проект, опомнись пока не поздно !

    Все несколько проще:
    - MDBX основывается на LMDB, поэтому лицензию уже не изменить (OpenLDAP Public License), вне зависимости от (не)принятия каких-либо коммитов.
    - что касается MithrilDB, то вне зависимости от лицензии там будет Contribution Agreement.

    Тем не менее, модель Open Source, как таковая, имеет свои как плюсы, так и минусы...

     
     
  • 5.51, Наноним (?), 13:27, 09/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > MithrilDB

    AdamantiumDB тоже свободно!

    Вроде бы взрослый человек...

     
     
  • 6.52, erthink (ok), 13:38, 09/02/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >> MithrilDB
    >AdamantiumDB тоже свободно!
    >Вроде бы взрослый человек...

    Так это же для пользователей, а они как дети - хотят тесла, яблоки всякие...

    Но на всех не угодишь - тут вот какому-то дитяте тайтл "libmdbx" не нравился, а вам "мифрил".
    Короче, сделайте усилие и привыкайте ;)

     
     
  • 7.57, Наноним (?), 16:43, 09/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Ну да, ну да. Это пользовательское бессознательное шутить изволит.
    Побойтесь Зевса!
     
  • 3.65, andy (??), 21:13, 09/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > А после блокировки Крыма основным репо считается https://abf.io/erthink/libmdbx, о чем добавлены > примечания.

    Это просто камни с неба! Но им то что? Они же в родной гавани!
      

     
  • 3.69, Tifereth (ok), 03:45, 10/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    В подвале сайта стоит

    ROSA Lab © 2021

    при этом и rosalab.com, и rosalinux.com недоступны. Хотя жив wiki.rosalab.com - подправили бы подвал, что ли...

     
     
  • 4.72, Аноним (72), 11:01, 10/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > при этом и rosalab.com, и rosalinux.com недоступны. Хотя жив wiki.rosalab.com - подправили бы подвал, что ли...

    РОСА всегда жила в зоне *.ru, а не *.com

     
     
  • 5.79, Tifereth (ok), 14:33, 10/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    >> при этом и rosalab.com, и rosalinux.com недоступны. Хотя жив wiki.rosalab.com - подправили бы подвал, что ли...
    > РОСА всегда жила в зоне *.ru, а не *.com

    Ну тогда им точно нужно малость починить сайт. На главной

    https://abf.io/

    в подвале стоит вот что:

    [a href="http://www.rosalab.com/about"]About the company[/a]

    (нормальные теги по понятной причине поставить не могу)

     

  • 1.41, Аноним (41), 12:07, 09/02/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Субдб либмдбх. Высокопроизводительный. Скороговорка. После 3-х стаканов.
     
     
  • 2.45, erthink (ok), 12:21, 09/02/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Субдб либмдбх. Высокопроизводительный. Скороговорка. После 3-х стаканов.

    Есть еще и "t1ha", так что лучше не пейте (тем более стаканами).

     

  • 1.56, жабабыдлокодер (ok), 16:35, 09/02/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    erthink, а API по сравнению с lmdb сильно изменено? Чем-то вроде https://github.com/lmdbjava/lmdbjava удастся воспользоваться или биндинг самому писать придется?
     
     
  • 2.58, erthink (ok), 16:58, 09/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > erthink, а API по сравнению с lmdb сильно изменено? Чем-то вроде https://github.com/lmdbjava/lmdbjava
    > удастся воспользоваться или биндинг самому писать придется?

    API существенно расширено и в паре мест принципиально изменено (время жизни и требования явно закрывать курсоры, время жизни DBI хендлов).
    Но всё такие изменения (включая причины) описаны в доке.

    Поэтому биндинги на 95% получаются путем замены префиксов.

    Кроме этого, в README есть ссылки на существующие привязки. Там есть и для Явы, хотя порядком протухшие.
    Есть от чего оттолкнуться.

     
     
  • 3.60, жабабыдлокодер (ok), 17:07, 09/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Спасибо. Разбираться и писать самому увы, времени нет...
     
  • 2.61, erthink (ok), 17:08, 09/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Если вдруг сподвигнитесь на собственные байдинги, то большая просьба глянуть на новое C++ API и "повторить на яве" ради унификации. При этом сейчас ещё можно обсуждать и встречно менять плюсовое API.
     

  • 1.64, andy (??), 21:11, 09/02/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Поклонники Сороса, Ходорковского и Бандеры не используют Ваши продукты?
     
     
  • 2.68, rico (ok), 00:10, 10/02/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Они очень страдают морально и финансово, но нет. Не используют.
     

  • 1.75, Аноним (75), 11:34, 10/02/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Почему Miranda NG переходит на SQLite, если MDBX так хороша?
     
     
  • 2.78, erthink (ok), 13:32, 10/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > Почему Miranda NG переходит на SQLite, если MDBX так хороша?

    Насколько мне известно, там не переход, а добавление еще одного драйвера хранения.

    Тем не менее, история такая:

    1.
    До каких-то последних версий (если не ошибаюсь, в январе этого 2021 года) libmdbx внутри Miranda NG использовалась некорректно, из-за чего пользователи теряли данные.
    Пользователи считали что причина проблем в MDBX, ругались и активно просили добавить еще один драйвер хранения.

    Суть проблемы была в том, что БД явно и намеренно открывалась в небезопасном режиме (без гарантий сохранности данных при системном сбое, выключении питания и т.п).
    Это неоднократно было пояснено разработчикам, но они считали что риски мизерны и долго не могли сподвигнуться на переделку своего кода.

    Следы этих обсуждений и моих пояснений/комментариев есть как в https://github.com/miranda-ng/miranda-ng/issues, так и на форуме Miranda NG http://forum.ru-board.com/topic.cgi?forum=5&topic=34402

    2.
    Примерно за год до этого (до февраля 2020 года), в драйвере Miranda NG были какие-то баги, из-за которых в БД записывались неверные данные.
    Подробностей я не помню, но они есть в истории коммитов Miranda NG и в issues проекта на github.

    3.
    Еще примерно за год до этого (до февраля 2019 года) было две неприятности именно в libmdbx:

    - Из-за моей оплошности в миранду (и далее к пользователям) исходно попала "девелоперская" версия, которая намерено делалась несовместимой по формату БД с релизами (чтобы в production не попадали экспериментальные фичи).
    Эту проблему огораживали как могли, но пользователей она конечно злила.

    - Был обнаружен и устранен унаследованный из LMDB баг, который мог приводить к повреждению БД.
    Возможно этот баг также затронул пользователей миранды, но субъективно проблемы были от описанного выше.

    --

    В libmdbx при этом много чего было сделано для лучшей поддержки Windows, включая даже поддержку Windows 2000/XP и работу под Wine.

     
     
  • 3.82, AnonPlus (?), 02:25, 10/04/2021 [^] [^^] [^^^] [ответить]  
  • +/
    В следующем выпуске именно переход, т.к. mdbx-базы будут только читаться, создавать новые уже запрещено.
     
  • 2.81, AnonPlus (?), 02:24, 10/04/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Две причины:

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

    - под SQLite есть тонна внешних утилит для работы с базами, пользователи это очень хотят

     

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



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

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