Опубликован выпуск библиотеки libmdbx 0.13.2 (MDBX) с реализацией высокопроизводительной компактной встраиваемой базы данных класса ключ-значение. Код libmdbx распространяется под лицензией Apache 2.0. Поддерживаются все актуальные операционные системы и архитектуры, а также российский Эльбрус 2000. Для libmdbx предлагается развитое API для C++, а также поддерживаемые энтузиастами привязки к языкам Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno, Scala...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=62403
Ну это комбо сомнительные преимущества и более чем сомнительный автор. Поделка для очень узкой аудитории.
>и более чем сомнительный авторА чем автор сомнителен? (просто не в курсе)
Автор немного повернут на теории заговора что американцы плохие и хотят лично его съесть скажем так.
> Автор немного повернут на теории заговора что американцы плохие и хотят лично его съесть скажем так.И при этом пишет базы данных. И в чем же заключаются ваши сомнения? Вы хотите вызвать недоверие к человеку на основании чего?
И что тут такого? Ну заговаривается и заговаривается. Подумаешь! Денег же он с нас не требует?
Три слова: Top Gun DPI
Вернее два: TopGun DPI.
Строитель плохой потому-то построил забор ?И роскомнадзор сидит на совсем другом.
Чувак по-ходу срубил бабла, чуток хайпанул на highload и пошел дальше.
Теперь это называеся PT NGFW.
И что? Авторов остальных DPI тоже предлагаешь на костре сжечь? Как тебе живётся с тем, что "демократических" странах DPI тоже широко используется (в частности, https://en.wikipedia.org/wiki/Deep_packet_inspection#United_... )? PRISM не жмёт?
> что "демократических" странах DPI тоже широко используетсяЭто другое! (с)
А ещё, а ещё в демократических странах есть тор и впн.
> Это другое! (с)
> А ещё, а ещё в демократических странах есть тор и впн.И вайбер там не забанен, кстати. Как впрочем и ютуб. И фэйсбук. И инстаграмм. Да черт, даже тикток и то - зубы точат, но due process штука такая, неудобная однако.
>> Это другое! (с)
>> А ещё, а ещё в демократических странах есть тор и впн.
> И вайбер там не забанен, кстати. Как впрочем и ютуб. И фэйсбук.
> И инстаграмм.А это... это же локальные мэссенджеры, через которые демократические страны демократично собирают данные пользователей (Дениска Снеговой не даст соврать).
> Да черт, даже тикток и то - зубы точат
Вместе с вичат же забанены в демократических странах. Как же так? Неудобно получается.
Потому что они выполняют все требования тамошних властей. Зачастую - даже перевыполняют.
Но очень наглядна ситуация с тиктоком - даже несмотря на то, что он выполняет все тамошние требования, его американское подразделение сша официально отжимает "потому что оно принадлежит не американцам, что является угрозой нацбезопасности"
1. Вы на других свои влажные садистские фантазии не навешивайте.
2. Что творится в США - проблемы прежде всего граждан США. Но некоторым государствам даже до того уровня - как до Марса на карачках.
> 2. Что творится в США - проблемы прежде всего граждан США.Да ладно? А что они всем сами указывают как надо?
Почему для узкой? Это персисентная key-value database, с полноценным acid, такое много где нужно. Можно, конечно, реализовывать такое хранилище через SQL и тащить с собой sqlite или postgresql, но это как гвозди кирпичом заколачивать: медленно, громоздко и неудобно..
Есть RocksDB, её недостаточно?
У роксов нескрепный автор.
Ну, если автору libmdbx в комментах решили приписать "грех" участия в разработке одной (из огромного ассортимента) DPI, то у автора rocksdb список грешков пошире, мягко говоря - https://ru.wikipedia.org/wiki/%D0%9A%D1%...Если у тебя обострение этичности, то выбор между этими двумя очевиден, в общем-то :)
А про важность скрепности иди расскажи в lkml
1. У них под капотом абсолютно разные алгоритмы. У RocksDB это append-only файлы и compaction (= перекопирование данных с диска на диск), у libmdbx это b+tree. Логично ожидать, что на разных нагрузках они будут вести себя сильно по-разному (и наверняка будут случаи, когда одна намного лучше другой, и наоборот). То есть конкретно эти две СУБД не являются свосем уж прямыми конкурентами друг другу, у каждой своя "оптимальная" подниша.2. Конкуренция - это очень хорошо. Пусть расцветают сто цветов, пусть соперничают сто школ.
Кроме синтетических тестов есть ещё много аспектов которые определяют качество продукта.
> Кроме синтетических тестов есть ещё много аспектов которые определяют качество продукта.Как-раз поэтому libmdbx используется в Ethereum (Reth, Erigon, Silkworm) и в коммерческих продуктах Positive Technologies.
Потому что сабжевыц человек и финансируется Positive Technologies.
т.е. позитив финансирует себе во вред и заставил ethereum использовать subj ?
> Конкуренция - это очень хорошо. Пусть расцветают сто цветов, пусть соперничают сто школ.Расскажите это в Вавилоне
зачем так далеко ходить? можно просто любому линакс-дистрибу.
Это не совсем так. У них общее ядро, поэтому множество контрибьюторов говорят на одном языке и добавляют новшества туда. Вот обширный набор дистрибутивов это скорее способ распространения и устранения конкуренции, а не разговор на разных языках. А вот касательно технологий несовместимых или плохо/неудобно совместимых друг с другом дело несколько другое, т.к. это уже принцип - разделяй и властвуй. Порой этот принцип хорош - позволяет властвовать, а порой быть на месте тех кого разделяют. Т.е. какое-то множество оказывается в выигрышной позиции, а какое-то в проигрышной. В следствии чего технологии и инженеры начинают быть несовместимыми.
А вот когда есть системный подход - дело то совершенно иное. По крайней мере глупых вопросов какой язык изучать не возникает. Результат программирования и работы + других инженеров это ракеты, самолёты летящие согласно поставленной задачи САУ, суда ходящие по адекватному курсу, веб-сайты, машины, роботы, прикладной софт для документооборота, финансов, сферы развлечений и отдыха, графики, видео и звука. Результат ВУЗа - умение учится и вообще не задумываться о языке программирования. Я вот вообще о них не заморачиваюсь особо - беру и пишу на чем понравилось, для меня это просто инструмент. Но люди не знающие что в итоге они хотят и учатся ради наживы мне не понятны, они просто потеряны. Казалось бы даже ради наживы - как-бы ВУЗы и работодатели должны же как-то вместе работать - и тем и другим хочется заработать. Старая система под старые нужды работала, потому что работала по другому. И вот о нюансах я умолчу - их и так все знают, а я не хочу разводить споры.
Как дети. Уже 20 раз объясняли про сравнение. И да, ты пойди собери этот роксдб. Сколько по времени собирается и какой размер на выходе? Многовато для встраиваемой бд.
Встраиваемой в управление кофеваркой? Возможно.Встраиваемый в десктоп приложение? В самый раз.
Зато у тех же роксов есть гарантия что в автору не придут местные люди с бутылочкой огненной воды и не скажут в каком месте надо выходит за границы буфера.
> Зато у тех же роксов есть гарантия что в автору не придут местные люди с бутылочкой огненной воды и не скажут в каком месте надо выходит за границы буфера.У роксов есть гарантия, что они сотрудничают с неместными людьми, и любые пожелания неместных людей будут нижайше исполнены. Facebook - участник PRISM.
Так это и есть хорошо.
> Встраиваемой в управление кофеваркой? Возможно.
> Встраиваемый в десктоп приложение? В самый раз.Десктоп приложению sqlite хватит. Rocksdb раз в 100 больше.
> Зато у тех же роксов есть гарантия что в автору не придут местные люди с бутылочкой огненной воды и не скажут в каком месте надо выходит за границы буфера.Какая еще гарантия? Вы репозиторий вообще смотрели? Там все пилится одной организацией и что они запилят, то и будет. А для ответов на вопросы пользователей они используют соцсеть facepalm. И нет, это не шитхаб.
Иногда не достаточно, точнее говоря, медленно.Вот пара цитат для случая БД в 2.5 терабайт:
...
a much faster MDBX storage library (instead of LevelDB) that can reduce database size and improve BNB Chain performance. MDBX is one of the fastest embedded databases and the most lightweight.
...
MDBX drivers bring performance up by 30% compared to other databases like RocksDB or LevelDB.https://www.bnbchain.org/en/blog/ankr-contributing-to-bsc-an...
> Есть RocksDB, её недостаточно?У rocksdb фиг пойми график релизов. Кода там много, компилируется долго, размер оч большой (даже у lite версии), багов куча в багтрекере. Это внутренний продукт просто открытый наружу как есть, по факту разработка закрыта.
> Ну это комбо сомнительные преимуществА какие там "комбо" ?
Вроде-бы ровно наоборот и супер-стабильно.
Где-то читал что весь Ethereum на этом движке.
Доклад отклонен https://highload.ru/moscow/2022/abstracts/9342 Я так давно долго не смеялся теперь живот болит.
> Доклад отклонен https://highload.ru/moscow/2022/abstracts/9342 Я так давно долго не
> смеялся теперь живот болит.Автор посмечался первым и фактически сам отказался https://t.me/libmdbx/3854
и я с ним согласен, хайлоад превратился в жеванное стендап-шоу.А в Ethereum этот движок действительно используется, причем во всех развивающихся клиентах.
Странно что автор не кричит об этом на каждом углу.
> Ну это комбо сомнительные преимущества и более чем сомнительный автор.Молодец, ещё 100500 таких сообщений и на юзанную обёртку от бургера заработаешь :)
А скорее на юзанную резинку, для таких как ты - well deserved outcome :)> Поделка для очень узкой аудитории.
О, да ты и в высоконагруженных базах экперт?!?!?
И всё же - спили мушку :) Ну и кастрюлю сними, если не приросла ещё...А по топику:
База вышла - то что надо! Но надо в основном перцам размера билайна\ростелекома и других больших ребят. Для любой моей наколенной поделки (к примеру) - работать будет, но оно и на чём есть работает ;-) Тут размер - таки решает.Автору удачи, проектов и честно заработанных деньжат, денег и деньжищЪ(С)! :)
Как оно относится к Berkeley DB? Должны быть конкурентами, но я ни где не всречал сравнения.
В интернетах так пишут - "For embedded use, LMDB and its spin-off libMDBX are a lot faster than BDB, but have neatly-compatible APIs. (The guy who built LMDB has a paper on how his project, OpenLDAP, had so many performance problems with BDB that he wrote LMDB as a replacement.)" И приводят ссылку на статью - https://lobste.rs/s/avljlh/what_s_big_deal_about_embedded_ke...В статье намеряли огромный выигрыш в производительности: где-то в 2-3 раза, где-то на порядок. Нужно понимать, что это статья от авторов LMDB, и перф они сравнивают на той нагрузке, под которую LMDB целенаправленно задумывался.
> Как оно относится к Berkeley DB? Должны быть конкурентами, но я ни где не всречал сравнения.libmdbx является сильнейшей переработкой LMDB.
А LMDB сделали на замену BerkeleyDB для использования в OpenLDAP (сервер LDAP).
https://www.openldap.org/pub/hyc/mdb-paper.pdfПоэтому в подобных сценариях libmdbx не оставляет BDB никаких шансов: надежнее, быстрее, удобнее, проще и т.д.
А дальше всё зависит от того что именно требуется и массы деталей.
В простых случаях типа "Hello World" вы не заметите разницу, разве что C++ API у libmdbx просто супер-няшка.В сложных сценариях любая фича или особенность может быть как в плюс, так и сильно в минус.
Например, в libmdbx вся БД memory-mapped.
Поэтому чтение холодных данных будет через page fault, что дороже чем прямое чтение из файла.
Зато если данные уже в памяти, то к доступ к ним бесплатен и суммарно может быть как сильно быстрее, так и медленнее.Далее, несколько процессов работающих с одной БД будут (автоматически и без каких-либо усилий) использовать одну копию данных в ОЗУ. А в BDB у каждого процесса будет свой mpool.
Далее, в libmdbx читатели работают без блокировок, зато полная сериализация апдейтов на одном мьютексе.
А в BDB иерархические блокировки 8 типов и возможность кастомизации "conflict matrix".
В конкретном случае эти блокировки могут позволить что-то существенно ускорить, но и одновременно сильно напортачить с изоляцией транзакций и т.п (кто разгребал эти проблемы будет обходить стороной).
Зато libmdbx может сильно выиграть за счет lockfree для читателей и отсутствия мутной возни с блокировками для писателей.И таких "если" и "например" несколько по каждой фичи, т.е. не один десяток.
Как-то так...
mdbx.h++Ну хоть так выделиться. Он не тиктокер?
Есть ли какие-то сравнения этой СУБД с SQLite? 🤔 Чем она лучше или хуже?
SQLite - это реляционная SQL база, а libmdbx - key-value хранилище. То есть кроме того что они встраиваемые и ACID, больше общего у них нет.
Зачем какой-то кривой лисапед, если есть нормальная, зарекомендовавшая себя во всех отношениях Berkeley DB? Причем версии 18 против 0.
В том-то и дело, что Berkeley DB так себя зарекомендовала, что еще 20 лет назад все кинулись писать свои движки хранения.У некоторых это получилось.
Передайте убогим что Oracle уж почти 5 лет как Berkeley DB не релизит ... похоронили походу :(
:)
Oracle тот еще могильщик проектов, в случае BerkeleyDB - ей 30 лет если не больше уже, возможно что некому развивать, сама библиотека довольно компактная по размерам.
Возможно там уже все идеально.
> Передайте убогим что Oracle уж почти 5 лет как Berkeley DB не
> релизит ... похоронили походу :(
> :)Ниже ответили. Как говорится, "If it works don't touch it". Программ, которые уже некуда развивать, мало, и BDB входит в их число.
Там есть все, что нужно для эффективной работы с данными и чего нет у тех неосиляторов, кто пытался ее заменить говно-велосипедами. Все эти попытки напоминают попытки переписать код с фортрана и кобола на более модные и молодежные языки, которые безуспешно продолжаются уже полсотни лет.
BDB -- это единственная из низкоуровневых БД (типа ключ-значение), над которой можно создать полноценный мультипоточный SQL-сервер. И чтобы этого не произошло, Оракл выкупил BDB и создал над ней свой.
Ничего путного ниже не ответили, а вы блистаете экспертизой еще больше.BDB писали по-наитию, как-видели и как-умели 20-30 лет назад.
Действительно старались, много переделывали, еще большие латали и чинили.
Оно действительно как-то работает и широко известно.
Больше достоинств НЕТ.В те времена альтернатив не было, где-то между "почти" и "совсем".
Поэтому BDB была очень популярна.
Собственно и сейчас популярна, если считать заброшенные и стагнирующие проекты 15-20-летней давности.Создать "полноценный мультипоточный SQL-сервер" с использование BDB можно, но ничего нужного (надежности, производительности, удобства сопровождения, удобство разработки) в нем не будет.
Всерьез говорить об этом может только старпер отставший лет на 20 от текущих реалий.Некоторая часть проблем BerkeleyDB компактно описана тут https://www.openldap.org/pub/hyc/mdb-paper.pdf
BerkeleyDB это унаследованный код с корявой архитектурой "разобранный комбайн" и корявым API.
Проще написать с чистого листа, нежели пытаться что-то там.Как пример, Блумберг уже 20 лет пилит Comdb2, переписали половину и то результат нельзя назвать успешным. Даже разработчики бегут.
Oracle купил не BDB, а Sleepycat.
Сонные коты получили наличные, пристроили всех нанятых работников и с чистой совестью вышли на пенсию.
Oracle получил некую клиентскую базу, десяток хороших разработчиков, а главное - гарантии отсутствия претензий по поводу происхождения исходного кода и на тему патентов (например за патентование чужих изобретений).
> Создать "полноценный мультипоточный SQL-сервер" с использование BDB можно, но ничего нужного
> (надежности, производительности, удобства сопровождения, удобство разработки) в нем
> не будет.
> Некоторая часть проблем BerkeleyDB компактно описана тут https://www.openldap.org/pub/hyc/mdb-paper.pdfBDB -- это движок относительно низкого уровня и как вы над ним напишете "сопровождение", так оно и будет работать. Это касается и надежности, в том числе. Что касается удобства разработки, то тут скорее наоборот -- чем ниже уровень АПИ, тем проще с ним работать. Если, конечно, вас в жёппy продавцы воздуха не гонят. Ну а там, где разрабатывают серьезные приложения с литерой, там как раз и не гонят.
Что касается производительности, то нужно понимать, что вы собираетесь обрабатывать и как. И уж точно делать над ней мелкоту типа баз LDAP и прочих AD -- это из пушки по воробьям. А вот для системы хранения и обработки непрерывно валящей с установки телеметрии это в самый раз. На сегодня в базу, в разработке которой я принимал непосредственное участие, зашло более восьми миллиардов записей почти за два года и это около 25 Тбайт данных. При этом никаких задержек при просмотре любых групп датчиков не наблюдается (четыре вторичных ключа). Раньше, когда все это было на микрософт SQL сервере, чтобы получить выборку за период, например, по вибрациям пары точек конкретного узла, ждали более минуты. Сегодня это видно сразу же.
> BerkeleyDB это унаследованный код с корявой архитектурой "разобранный комбайн" и корявым
> API.Я понимаю, что вам АПИ, написанный на си, не нравится. Это кому как. Если вам не нравится АПИ, оберните как можете и как вам нравится. Лично мне нравится, хотя бы потому, что между мной и АПИ никакого говна в виде фреймворков, связывающих руки, нет.
> Как пример, Блумберг уже 20 лет пилит Comdb2, переписали половину и то
> результат нельзя назвать успешным. Даже разработчики бегут.Не понимаю, что там можно еще добавить. Ну разве что возможность с блокировками работать на более низком уровне -- приоткрыть к ним доступ на уровне posix.
Не совсем так, первоначально у BerkeleyDB была коммерческая платная лицензия и бесплатная некоммерческая, что собственно и не способствовало популярности.
После, когда уже Oracle что то сделало с лицензией, было поздно.
А так отличная надежная база данных, все уместно и удобно реализовано. Прекрасно работала где надо.
> А так отличная надежная база данных, все уместно и удобно реализовано.
> Прекрасно работала где надо.Да просто не особо развая - и доволно навороченная при всем этом. Юзали ее потому что ничего сравнимого особо и не было. А как появилось - ну, ой.
>> А так отличная надежная база данных, все уместно и удобно реализовано.
>> Прекрасно работала где надо.
> Да просто не особо развая - и доволно навороченная при всем этом.
> Юзали ее потому что ничего сравнимого особо и не было. А
> как появилось - ну, ой.А что появилось? Вторичные ключи (индексы по полю данных) поддерживаются? Курсоры по ним? Или самому все это колхозить нужно?
первоначально у berkeley db была лицензия berkeley. Название как бы намекает. Но она кончилась на 0.86 (на самом деле даже на 0.84)А коммерческой она стала ровно тогда, когда некоммерческую зохавал дЭффективный манагер и продал в орацл, доломав до полностью нерабочего состояния.
(там еще денежки мразилы каким-то боком поучаствовали, не на свои вся эта рвань гуляла, но это было в довебдаванольную эпоху и пруфы ищи сам)
зачем какой-то лисапед, если есть hashmap
> Причем версии 18 против 0.вот именно по этой причине. bdb была всем хороша, пока ее версия была 0 (и пока она таки была - berkley) - и превратилась в ломучее кривое оно в руках дЭффективных менеджеров (которые, как обычно, прогадив все полимеры, сделали вид что и не было никакого ванятки)
Но конкретно этот лисапет - узкие делали, поэтому сразу наюх.
А mdb, которая была на Delphi, простите не помню как точно называлась - имеет что-то общее с этой разработкой?
mdb - старый формат хранения Microsoft Access. Думаю, он никак не относится к этой теме
Нет, ничего общего."mdb в Delphi" это Microsoft Access.
Есть LevelDB на родном C++ без кривых биндингов
Вот вот а этого автора перекроет и не известно что будет с базой.
> Есть LevelDB на родном C++ без кривых биндинговЭто, который данные теряет? И транзакции не может?
Зашел,почитал тут.По-факту все комментарии "против" просто треп и хлобная попа-боль.
А люди реально использующие библиотеку еще в 2021 написали о 30% приросте производительности (в сравнении с RocksDB) и явно были довольны.
Удивительно что есть такие проекты и люди умеющие их делать.
и надои заколосились, и шрам от вскрытия рассосался.(и может не всем надо 30% производительности ценой зависимости от автора из Б-гом проклятого государства?)
...и все также забытые Б-гом неудачники что-то пишут соплями на заборах
А о какой зависимости речь? Работает решение? Ещё как. 30% производительности это реально много. Никто как бы не запрещает сделать локальную копию или форк, в который втягивать нужные патчи - код открытый, лицензия позволяет. Какие проблемы?
> Какие проблемы?Кастрюля на голове мешает
В этом самом государстве нарасхват, ибо свое, да еще и качественное.
Качество измеряется тестами и code-coverage (пруф — смотри SQLite). Где оно здесь? Три десятка тестов покрывающих пофикшеные баги и всё? "Качество", говоришь? Хеххх!Какое государство такое и качество. Фтопку, короч. Ищем альтернативы дальше.
Вы кастрюлю с головы снимите, а уже после смотрите в тесты/код и "ищите альтернативы" кружевам на трусиках.
Как он относительно RedisDB? Кто в курсе?
> Как он относительно RedisDB? Кто в курсе?Примерно как написано выше https://www.opennet.dev/openforum/vsluhforumID3/135577.html#80