Бес жылдық дамудан кейін libmdbx v1.0 үшін екінші шығарылым үміткері.

Кітапхана libmdbx является существенно переработанным потомком LMDB — предельно высокопроизводительной, компактной встраиваемой базой данных класса ключ-значение.
Текущая версия v0.5 является техническим релизом, отмечает завершение каких-либо доработок и переход к фазе публичного финального тестирования и стабилизации, с последующем формированием первого полноценного релиза библиотеки.

LMDB является достаточно известной транзакционной встраиваемой СУБД класса «ключ-значение» на основе ағаш B+ жоқ проактивті тіркеу, которая позволяет рою многопоточных процессов конкурентно и предельно эффективно работать с локально-разделяемой (не сетевой) БД. В свою очередь MDBX быстрее и надежнее LMDB, при этом libmdbx сохраняет все ключевые возможности своего прародителя, такие как ACID и неблокирующее чтение с линейным масштабированием по ядрам CPU, а также добавляет несколько новых.

Описание отличий и усовершенствований libmdbx относительно LMDB заслуживает отдельной статьи (планируется публикации на «Хабре» и «Medium»). Здесь же уместно упомянуть самые важные и заметные:

  • Негізінен код сапасына, тестілеуге және автоматты тексерулерге көбірек көңіл бөлінеді.
  • Параметрлерді тексеруден дерекқор құрылымдарының ішкі аудитіне дейін жұмыс кезінде айтарлықтай көбірек бақылау.
  • Автоматты ықшамдау және дерекқор өлшемін автоматты басқару.
  • 32 биттік және 64 биттік жинақтарға арналған бірыңғай дерекқор пішімі.
  • Оценка объема выборок по диапазонам (range query estimation).
  • Құймақтардан екі есе үлкен кілттерге және пайдаланушы таңдайтын дерекқор бетінің өлшеміне қолдау көрсету.

Выпущенный релиз-кандидат libmdbx является результатом решения (см далее) о разделении проектов MDBX и MithrilDB в августе 2019. При этом в libmdbx было решено устранить (рациональный) максимум технического долга и стабилизировать библиотеку. По-факту в обозначенном направлении сделано в 2-3 раза больше, чем оценивалось и планировалось исходно:

  • Реализована поддержка Mac OS и платформ «второго эшелона»: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. Поддержка AIX и HP -UX может быть добавлена при необходимости.
  • Проведена санация кода при помощи Undefined Behavior Sanitizer и Address Sanitizer, устранены все предупреждения при сборке с -Wpedantic, все предупреждения Coverity Static Analyzer и т. д.
  • Жаңарту API сипаттамалары.
  • Амальгамация исходного кода для удобства встраивания.
  • CҚолдау жасау.
  • Кірістірілген транзакцияларды қолдау.
  • ОЖ қайта жүктелгенін анықтау үшін bootid пайдалану (лас дерекқорды тоқтату).
  • Сквозной подсчет обновлённых/старых страниц и расширенная информация о транзакциях.
  • Үйлесімді режимде бұрыннан ашық дерекқорға қосылу үшін MDBX_ACCEDE опциясы.
  • Пайдаланыңыз OFD блоктауы қол жетімді болғанда.
  • Құбырдағы ыстық резервтік көшірме.
  • Специализированный оптимизированный алгоритм внутренней сортировки (до 2-3 раз быстрее qsort() и до 30% быстрее std::sort()).
  • Кілттің максималды ұзындығы ұлғайтылды.
  • Алдын ала оқуды автоматты басқару (жадтағы деректер қоры файлдарын кэштеу стратегиясы).
  • Агрессивті және жылдамырақ автоматты жинақтау.
  • B+ ағаш беттерін біріктірудің оңтайлы стратегиясы.
  • Контроль не-локальных файловых систем (NFS, Samba и т.п.) для предотвращения повреждения БД при неверном использовании.
  • Тесттер жиынтығы кеңейтілді.

libmdbx «келесі» нұсқасын әзірлеу жеке жоба ретінде жалғасады MithrilDB, ал MDBX «ағымдағы» нұсқасының даму векторы мүмкіндіктер жинағын қатыру және оны тұрақтандыруға бағытталған. Бұл шешім үш себеп бойынша қабылданды:

  • Толық үйлесімсіз: MithrilDB барлық жоспарланған мүмкіндіктерді жүзеге асыру үшін басқа (үйлесімсіз) дерекқор файл пішімін және басқа (үйлесімді емес) API қажет етеді.
  • Жаңа бастапқы код: MithrilDB бастапқы коды LMDB-ден тәуелсіз лицензияланған және жобаның өзі басқа лицензия бойынша жарияланады деп жоспарлануда (мақұлдаған НЕМЕСЕ лицензия Apache 2.0, жоқ OpenLDAP Foundation).
  • Разделение позволяет избежать потенциальную путаницу, внести больше определенности и обеспечить независимость пути развития проектов.

MithrilDB, MDBX сияқты, сондай-ақ негізделген ағаш B+ сонымен қатар MDBX және LMDB бірқатар негізгі кемшіліктерін жоя отырып, өте жоғары өнімділікке ие болады. Атап айтқанда, қоқыс өңдеу ұзақ оқу транзакциялары арқылы бұғатталғандықтан, дерекқордың «ісінуі» ретінде көрінетін «ұзақ оқу» проблемасы жойылады. Жаңа MithrilDB мүмкіндіктері мыналарды қамтиды:

  • поддержка размещения БД на нескольких разнородных носителях: HDD, SSD и энергонезависимой памяти.
  • оптимальные стратегии для «ценных» и «малоценных», для «горячих», «теплых» и «холодных» данных.
  • использование Merkle tree для контроля целостности БД.
  • опциональное использование WAL и существенно более высокая производительно в сценариях с интенсивной записью и гарантиями на целостность данных.
  • ленивая догоняющая фиксация данных на дисках.

Ақпарат көзі: linux.org.ru

пікір қалдыру