The OpenNET Project / Index page

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

Выпуск СУБД libmdbx 0.11.7. Перенос разработки на GitFlic после блокировки в GitHub

25.04.2022 06:28

Состоялся выпуск библиотеки libmdbx 0.11.7 (MDBX) с реализацией высокопроизводительной компактной встраиваемой базы данных класса ключ-значение. Код libmdbx распространяется под лицензией OpenLDAP Public License. Поддерживаются все актуальные операционные системы и архитектуры, а также российский Эльбрус 2000.

Релиз примечателен миграцией проекта на сервис GitFlic после того, как 15 апреля 2022 года администрация GitHub без каких-либо предупреждений и объяснения причин удалила libmdbx вместе с массой других проектов, одновременно заблокировав доступ многим разработчикам, связанным с компаниями, попавшими под санкции США. С точки зрения пользователей, все страницы, репозиторий и форки проекта внезапно превратились в страницу "404", без возможности каких-либо коммуникаций и выяснения причин.

К сожалению утрачены почти все issues, в которых было много вопросов с подробными ответами, а также немало обсуждений. Утрата этой информации является единственным объективным ущербом, который администрацией GitHub удалось нанести проекту. Частично копии обсуждений остаются доступны в архиве archive.org.

Потеря отстроенных CI-сценариев и инфраструктуры (доступной для OpenSource-проектов бесплатно) заставила заняться ревизией, унификацией и устранением небольшого техдолга. Сейчас CI восстановлен почти в прежнем объёме (порядка 100 сборочных конфигураций), за исключением сборки и прогона тестов для всех вариантов BSD и Solaris. Что характерно, после действий со стороны GitHub не поступило каких-либо разъяснений или уведомлений, не считая напоминания о необходимости оплаты и попыток списать деньги.

С момента прошлой новости о релизе libmdbx v0.11.3, помимо восстановления после действий GitHub, стоит отметить следующие доработки и исправления:

  • Добавлен обход обнаруженного эффекта/дефекта некогерентности в объединённом кэше страниц и буферов в ядре Linux. В системах где кэш страниц и буферов действительно объединён, ядру нет смысла тратить память под две копии данных при записи в уже отображённый в память файл. Поэтому записываемые данные становятся видимыми через отображение в памяти до завершения системного вызова write(), даже если данные ещё не записаны на диск.

    Суммарно другое поведение не рационально, ибо при отложенном слиянии всё равно придётся захватывать блокировки для списков страниц, копировать данные или корректировать PTE. Поэтому негласное правило когерентности действовало с 1989 года, когда в SVR4 появился unified buffer cache. Вследствие этого, обнаружение странных сбоев в нагруженных сценариях эксплуатации libmdbx потребовало большой работы. Сначала по воспроизведению проблемы, потом по верификации гипотез и проверке доработок.

    Сейчас можно уверенно сказать что проблема достоверно идентифицирована, локализована и надёжно устранена, несмотря на всю сложность и специфичность сценария воспроизведения. Дополнительно работа механизма обхода была подтверждена одним из разработчиков Erigon (Ethereum), в его случае на отладочной сборке срабатывание защиты проявлялось в виде регресса из-за лишней assert-проверки.

    Следует отметить, что в контексте широкого применения libmdbx в рабочих проектах, принципиально важнее обеспечение надёжной работы, а не выяснение «ошибка это или особенность» и можно ли полагаться на такую когерентность, тем более не поиск причин некогерентности внутри ядра Linux. Поэтому здесь речь об устранении проблемы, которая могла затрагивать пользователей.

  • Устранён регресс возникновения ошибки EXDEV (Cross-device link) при горячем копировании БД без компактификации на другую файловую систему, как через API, так и утилитой mdbx_copy.
  • Kris Zyp реализовал поддержку libmdbx в Deno. Kai Wetlesen оформил пакетирование RPM для Fedora. David Bouyssié реализовал привязки для Scala.
  • Поправлена обработка значения, задаваемого опцией MDBX_opt_rp_augment_limit при обработке огромных транзакций в больших БД. Ранее из-за ошибки могли производится лишние действия, что иногда сказывалось на производительности в реализациях Ethereum (Erigon/Akula/Silkworm) и проектах Binance Chain.
  • Исправлено масса недочётов, в том числе в C++ API. Устранено много проблем со сборкой в редких и экзотических конфигурациях. Полный перечень всех значимых доработок доступен в ChangeLog.
  • Суммарно внесено 185 изменений в 89 файлов, добавлено ≈3300 строк, удалено ≈4100. Удалено больше в основном из-за чистки от уже бесполезных технологических файлов связанных с GitHub и зависимых сервисов.

Исторически libmdbx является глубокой переработкой СУБД LMDB и превосходит своего прародителя по надёжности, набору возможностей и производительности. В сравнении с LMDB, в libmdbx большое внимание уделяется качеству кода, стабильной работе API, тестированию и автоматическим проверкам. Поставляется утилита проверки целостности структуры БД с некоторыми возможностями восстановления.

Технологически libmdbx предлагает ACID, строгую сериализацию изменений и неблокирующее чтение с линейным масштабированием по ядрам ЦПУ. Поддерживается автокомпактификация, автоматическое управление размером БД, оценка объёма выборок по диапазонам (range query estimation). С 2016 года проект финансируется компанией Positive Technologies и с 2017 года используется в её продуктах.

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

  1. Главная ссылка к новости (https://gitflic.ru/project/ert...)
  2. OpenNews: Выпуск высокопроизводительной встраиваемой СУБД libmdbx 0.11.3
  3. OpenNews: GitHub начал ограничивать пользователей с территорий, подпадающих под санкции США
  4. OpenNews: Выпуск LDAP-сервера ReOpenLDAP 1.1.9
  5. OpenNews: GitHub заблокировал репозиторий SymPy после ложной жалобы
  6. OpenNews: GitHub меняет политику конфиденциальности и условия соблюдения санкций
Автор новости: erthink
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/57077-libmdbx
Ключевые слова: libmdbx, github
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (38) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, trdm (ok), 07:53, 25/04/2022 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +1 +/
     

     ....ответы скрыты (8)

  • 1.14, Аноним (14), 08:31, 25/04/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +8 +/
    >  Что характерно, после действий со стороны GitHub не поступило каких-либо разъяснений или уведомлений, не считая напоминания о необходимости оплаты и попыток списать деньги.

    Остальное в новости можно было бы и не писать :)

     
     
  • 2.24, freehck (ok), 15:36, 25/04/2022 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Интересно. То есть гитхаб в случае неоплаты корпоративного аккаунта, удаляет в том числе и публичные репы?
     
     
  • 3.25, erthink (ok), 15:47, 25/04/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Интересно. То есть гитхаб в случае неоплаты корпоративного аккаунта, удаляет в том
    > числе и публичные репы?

    Тут речь об удалении личного аккаунта частного лица, а не корпоративного.

    Причем аккаунт заведомо был переведен на free-тариф, из-за ухода visa/matercard.
    А уведомления о не возможности оплаты пришли спустя неделю дней после блокировки:


    > This email is to inform you that we’ve received the following error trying to bill your credit card:
    > Call your payment provider to resolve this issue.
    > We’ll try billing your credit card again over the next two weeks. If our next billing attempt fails, Actions and Packages usage will be restricted to the included amounts for your plan.

    Поэтому удаление/блокировка не связаны с оплатой, если верить письму от github.

     
     
  • 4.26, freehck (ok), 16:14, 25/04/2022 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Тут речь об удалении личного аккаунта частного лица, а не корпоративного.
    > Причем аккаунт заведомо был переведен на free-тариф, из-за ухода visa/matercard.

    Мда. Сразу вспоминаются американские фильмы с этим их: "это потому что я чёрный"?

     
  • 4.31, Ivan_83 (ok), 01:38, 26/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    А написать в суппорт не судьба?
     
     
  • 5.39, erthink (ok), 14:24, 26/04/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > А написать в суппорт не судьба?

    Хмм, а зачем?
    Чтобы что?

     
  • 4.35, a_kusb (ok), 10:03, 26/04/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Похоже на ошибку, можно написать им даже если есть желание уехать на тот сервис. Просто интересно, что они ответят и как произойдёт разблокировка.
     

  • 1.16, Ivan_83 (ok), 09:33, 25/04/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –10 +/
    Так оно и помрёт никому ненужное и неивестноне на ненужно хостинге.

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

     
     
  • 2.17, erthink (ok), 10:42, 25/04/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Так оно и помрёт никому ненужное и неивестноне на ненужно хостинге.

    А в курсе, например, что на libmdbx работают все быстрые реализации Ethereum?

    https://medium.com/@giulio.rebuffo/silkworm-and-akula-the-future-of-erigo

     
     
  • 3.29, Ivan_83 (ok), 01:34, 26/04/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А ещё миранда это поделие использует как один из драйверов базы.
    И у меня под вайном оно почему то не работало, пришлось ждать пока базу на sqlite3 не допилят.

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

     
     
  • 4.32, erthink (ok), 03:13, 26/04/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > А ещё миранда это поделие использует как один из драйверов базы.

    С мирандой плохо.
    Разработчики неверно использовали libmdbx и не следовали советам, а в коде миранды было несколько критических ошибок.
    Поэтому всё глючило и несколько пользователей потеряли все данные.
    Где-то на форумах есть все эти жалобы, обсуждения, мои пояснения и т.п.

    > И у меня под вайном оно почему то не работало, пришлось ждать
    > пока базу на sqlite3 не допилят.

    В вайне нереализованные виндовые функции доступны, но тупо завершают процесс при их вызове.
    А в libmdbx используется несколько таких функций чтобы минимизировать ограничения винды
    https://gitflic.ru/project/erthink/libmdbx/blob?file=src%2Flck-windows.c#
    Поэтому без добавления костылей работать не могло в принципе.
    Причем когда это было пофикшено специально для миранды, вместо "спасибо" традиционно полетели помидоры "задолбали вы со своими багами" и прочие икспертные мнения.

    А sqlite на 15 лет старше и имеет кучу драйверов/биндингов.
    Поэтому в таком виде с мирандовской БД (с контактами и т.п.) можно работать из стороннего софта, чего хотели пользователи.
    В этом была основная причина перехода на sqlite (так мне поясняли разработчики).
    Ну и гибкости у sqline больше чем у голого key-value, особенно когда нет необходимости заморачиваться оптимизацией.

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

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

    А то ведь (не исключено) вы думаете что это for fun и звездочки на гитхабе, и что (например) хром пилит куча народу потому что он крутой.

     
     
  • 5.34, Ivan_83 (ok), 05:46, 26/04/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Опять: "всё сложно, всё не так однозначно".

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

    Я это всё ни один раз уже видел.
    Или проект идёт к пользователям или это фриковское поделие на задворках интернета мучительно доживает до смерти автора.

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

     
     
  • 6.38, erthink (ok), 14:11, 26/04/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Опять: "всё сложно, всё не так однозначно".

    Пардон, но я пытался дать вам понять, что вы рассуждаете имея только иллюзорное представление.

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

    Широкая пользовательская база полезна для тестирования и проверки, а популярность и количество звездочек на гитхабе может тешить ЧСВ, а также позволят иметь более весомую позицию в дискуссиях.
    Но это сугубо второстепенные цели.

    Разработка libmdbx была начата и продолжается для производственных/продуктовых задач.
    Исходный код при этом остается открытым и где-то публично размещается.
    Соответственно "остальной мир" может пользоваться проектом, а community формироваться и помогать развитию.

    Со своей стороны я (по-возможности) стараюсь идти на встречу пользователям, разбираюсь с проблемами и поддерживаю проект в качественном состоянии.
    При этом могут случаться как хорошие истории с бонусами (использование в Erigon/Akula/Silkworm c лимонными донатами), так и плохие (мессенджер Miranda с потерей данных у пользователей).
    Однако, всё это побочные эффекты от основной деятельности/работе/задачи и/или приложения к ней.

    Конечно, у других разработчиков и/или в других open-source проектах всё может быть иначе.

    // Пожалуй для ясности внесу это пояснение куда-нибудь в проект

     

  • 1.20, mikhailnov (ok), 12:34, 25/04/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Немного паранойи: я бы избавлялся от нероссийских доменов в инфраструктуре. Сейчас у libmdbx документация на *.net, а зеркало на abf.io, который также доступен по адресу abf.rosalinux.ru.

    Примеры блокировок доменов:
    1) украинский регистратор прописал свои NS в доменах российских клиентов и отправил трафик на пропагандистские/вредоносные ресурсы
    https://searchengines.guru/ru/forum/1058187
    2) регистратор Namecheap блокировал российских клиентов (но хотя бы предупредил за несколько дней до)

     
     
  • 2.21, erthink (ok), 12:56, 25/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Документация и релизы в процессе переезда на libmdbx.dqdkfa.ru.
    Но это всё равно CNAME для облака Яндекса, которое в *.net

    Про ABF всё забывал что стоит поправить. Спасибо что напомнили.

     
  • 2.30, Ivan_83 (ok), 01:35, 26/04/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Это шиза отгораживатся от всего мира.
     
     
  • 3.33, mikhailnov (ok), 04:53, 26/04/2022 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > Это шиза отгораживатся от всего мира.

    У всего мира есть доступ к *.ru/*.su/*.рф, пока их шизоиды сами себя не отгородят.

     
     
  • 4.37, Ivan_83 (ok), 10:42, 26/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Надо хотя бы OAUTH поддерживать с популярными платформами, а то регатся непонятно где - лишние телодвижения, особенно если там русский язык везде будет.
     
  • 4.45, Aukamo (ok), 23:30, 22/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    А вот и нет. Я сюда без VPN зайти не могу.
     

  • 1.22, achtosluchilos (ok), 14:22, 25/04/2022 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • –3 +/
     

     ....ответы скрыты (3)

  • 1.36, a_kusb (ok), 10:06, 26/04/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Опасно ли использовать эту библиотеку или софт с этой библиотекой? В конце-концов у автора есть право на мнение и странно было бы "отменять" человека как с некоторыми публичными людьми которые высказывались против спецоперации.
    Но политические пристрастия определяют то, что человек считает допустимым и что будет делать. Так что возможны трояны.
     
     
  • 2.46, Aukamo (ok), 23:32, 22/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    10 софизмов из 10ти
     
     
  • 3.47, a_kusb (ok), 23:34, 22/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > 10 софизмов из 10ти

    Никаких софизмов. Просто логика. Прости.

     
  • 3.48, a_kusb (ok), 23:34, 22/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    ;-+
     

  • 1.40, Dmitry22333 (ok), 15:37, 26/04/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Всё тащат и тащат на централизоыванные сервисы. С одного централизованного на другой.
    А ведь есть децентрализованные, например https://radicle.xyz/
     
  • 1.41, PnDx (ok), 17:56, 26/04/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Сходил посмотреть на GitFlic.
    Гм, немного странно: даёт создавать только приватные репо.
    Для "Сделать публичным" — шлёт к администрации ресурса.

    Если уж я решил выложить на шару какой-то проект, наверное, надо наоборот.

     
     
  • 2.42, erthink (ok), 18:25, 26/04/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Сходил посмотреть на GitFlic.
    > Гм, немного странно: даёт создавать только приватные репо.
    > Для "Сделать публичным" — шлёт к администрации ресурса.
    >
    > Если уж я решил выложить на шару какой-то проект, наверное, надо наоборот.

    Исходно так и было.

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

    Для борьбы с подобным нужен штат модераторов, анализаторы контента (с лингвистикой и распознаванием картинок) и/или жесткая авторизация через Госуслуги.
    Поэтому в GitFlic решили временно включать публичность для репо по запросу.

     
     
  • 3.49, a_kusb (ok), 23:36, 22/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    :-)
     

  • 1.44, FixingGunsInAir (ok), 15:20, 08/05/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Чем больше таких новостей всплывает, тем больше я убеждаюсь, что надо уходить в федерацию и/или P2P.
     



    Отправка комментариев в данном обсуждении разрешена только зарегистрированным участникам.
     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



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

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