Пас аз панҷ соли рушд, номзади дуюми libmdbx 1.0 нашр шуд

Дастрас для тестирования второй кандидат в релизы библиотеки libmdbx с реализацией высокопроизводительной, компактной встраиваемой базой данных класса ключ-значение. Текущая версия (0.5) является техническим релизом, отмечает завершение каких-либо доработок и переход к фазе публичного финального тестирования и стабилизации, с последующем формированием первого полноценного релиза библиотеки. Код libmdbx паҳн мекунад под лицензией OpenLDAP Public License.

Библиотека MDBX является существенно переработанным ответвлением от LMDB — DBMS-и дарунсохташудаи транзаксионии синфи "калид-арзиш" дар асоси дарахти B+ бе он бақайдгирии фаъол, которая позволяет многопоточным процессам конкурентно и эффективно работать с локально-разделяемой (не сетевой) БД. В свою очередь MDBX быстрее и надёжнее LMDB, и при этом сохраняет все ключевые возможности своего прародителя, такие как Кислота и неблокирующее чтение с линейным масштабированием по ядрам CPU.

Муҳимтарин фарқиятҳо байни MDBX ва LMDB:

  • Асосан, ба сифати код, санҷиш ва санҷишҳои автоматӣ диққати бештар дода мешавад.
  • Ба таври назаррас бештар назорат ҳангоми кор, аз санҷиши параметрҳо то аудити дохилии сохторҳои пойгоҳи додаҳо.
  • Автоматсозӣ ва идоракунии автоматии андозаи пойгоҳи додаҳо.
  • Формати ягонаи пойгоҳи додаҳо барои анҷуманҳои 32-бит ва 64-бит.
  • Арзёбии ҳаҷми намуна аз рӯи диапазон (баҳодиҳии дархости диапазон).
  • Дастгирии калидҳо ду маротиба калонтар аз pancakes ва андозаи саҳифаи пойгоҳи додаҳои аз ҷониби корбар интихобшаванда.

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

  • Реализована поддержка macOS и платформ «второго эшелона»: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. Поддержка AIX и HP-UX может быть добавлена при необходимости.
  • Проведена санация кода при помощи Undefined Behavior Sanitizer и Address Sanitizer, устранены все предупреждения при сборке с «-Wpedantic», все предупреждения Coverity Static Analyzer и т.д.
  • Навсозӣ Тавсифи API.
  • Слияние (амальгамация) исходного кода для удобства встраивания.
  • Дастгирии CMake.
  • Дастгирии амалиёти лона.
  • Истифодаи bootid барои муайян кардани он, ки оё ОС аз нав оғоз шудааст (истеъмоли пойгоҳи додаҳои ифлос).
  • Сквозной подсчёт обновлённых/старых страниц и расширенная информация о транзакциях.
  • Опсияи MDBX_ACCEDE барои пайвастшавӣ ба пойгоҳи додаҳои аллакай кушода дар ҳолати мувофиқ.
  • Истифода кунед бастани OFD вақте ки дастрас.
  • Нусхаи гарм дар қубур.
  • Специализированный оптимизированный алгоритм внутренней сортировки (до 2-3 раз быстрее «qsort()» и до 30% быстрее «std::sort()»).
  • Дарозии максималии калид зиёд карда шуд.
  • Назорати худкори хондан дар пеш (стратегияи кэшкунии файлҳои махзани маълумот дар хотира).
  • Ба таври хашмгинтар ва тезтар компактизатсияи худкор.
  • Стратегияи беҳтарин барои якҷоя кардани саҳифаҳои дарахти B+.
  • Контроль нелокальных файловых систем (NFS, Samba и т.п.) для предотвращения повреждения БД при неверном использовании.
  • Маҷмӯи санҷишҳо васеъ карда шуд.

Таҳияи версияи "ояндаи" libmdbx ҳамчун лоиҳаи алоҳида идома хоҳад ёфт MithrilDB, дар ҳоле ки вектори таҳияи версияи "ҷории" MDBX барои ях кардани маҷмӯи хусусиятҳо ва устувор кардани он нигаронида шудааст. Ин тасмим бо се сабаб гирифта шудааст:

  • Комилан номувофиқ: MithrilDB барои татбиқи ҳамаи хусусиятҳои банақшагирифташуда формати файли махзани маълумотҳои гуногун (номувофиқ) ва API-и гуногун (номувофиқ) талаб мекунад.
  • Рамзи нави сарчашма: Рамзи сарчашмаи MithrilDB аз LMDB мустақил литсензия карда шудааст ва худи лоиҳа ба нақша гирифта шудааст, ки тибқи иҷозатномаи дигар нашр шавад (аз ҷониби аз ҷониби Ё АГАР лицензией Apache 2.0, а не Иҷозатномаи ҷамъиятии OpenLDAP).
  • Разделение позволяет избежать потенциальную путаницу, внести больше определённости и обеспечить независимость пути развития проектов.

MithrilDB, ба монанди MDBX, инчунин ба он асос ёфтааст дарахти B+ ва инчунин як қатор нуқсонҳои бунёдии MDBX ва LMDB-ро аз байн бурда, иҷрои бениҳоят баландро нишон медиҳад. Аз ҷумла, мушкилоти "хондаҳои тӯлонӣ", ки ҳамчун "варам кардани" базаи маълумотҳо аз сабаби он, ки коркарди партовҳо тавассути транзаксияҳои хониши тӯлонӣ баста мешавад, аз байн меравад. Хусусиятҳои нави MithrilDB иборатанд аз:

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

Манбаъ: opennet.ru

Илова Эзоҳ