Ma hope o ʻelima mau makahiki o ka hoʻomohala ʻana, ua paʻi ʻia ka moho hoʻokuʻu lua libmdbx 1.0

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

Библиотека MDBX является существенно переработанным ответвлением от LMDB — транзакционной встраиваемой СУБД класса «ключ-значение» на основе lāʻau B+ me kaʻole hoʻopaʻa paʻa, которая позволяет многопоточным процессам конкурентно и эффективно работать с локально-разделяемой (не сетевой) БД. В свою очередь MDBX быстрее и надёжнее LMDB, и при этом сохраняет все ключевые возможности своего прародителя, такие как ʻĀKIKA и неблокирующее чтение с линейным масштабированием по ядрам CPU.

Самые важные отличия MDBX, относительно LMDB:

  • ʻO ke kumu, ʻoi aku ka nui o ka nānā ʻana i ka maikaʻi o ke code, ka hoʻāʻo ʻana a me nā loiloi ʻakomi.
  • Существенно больше контроля во время работы, начиная от проверки параметров, до внутреннего аудита структур базы данных.
  • Auto-compactification a me ka hooponopono ana i ka nui o ka waihona.
  • Hoʻokahi waihona waihona no nā hui 32-bit a me 64-bit.
  • Оценка объёма выборок по диапазонам (range query estimation).
  • Kākoʻo i nā kī ʻelua ʻoi aku ka nui ma mua o ka pancakes a me ka nui o ka ʻaoʻao waihona waihona mea hoʻohana.

Выпущенный кандидат в релизы 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 и т.д.
  • Hōʻano hou Nā wehewehe API.
  • Слияние (амальгамация) исходного кода для удобства встраивания.
  • Kākoʻo CMake.
  • Kākoʻo no nā kālepa pūnana.
  • Использование bootid для определения факта перезагрузки ОС (грязной остановки БД).
  • Сквозной подсчёт обновлённых/старых страниц и расширенная информация о транзакциях.
  • Koho MDBX_ACCEDE no ka hoʻopili ʻana i kahi waihona i wehe ʻia ma ke ʻano kūpono.
  • E hoʻohana Kāohi ʻo OFD ke loaa.
  • Hoʻihoʻi wela i ka paipu.
  • Специализированный оптимизированный алгоритм внутренней сортировки (до 2-3 раз быстрее «qsort()» и до 30% быстрее «std::sort()»).
  • Ua hoʻonui ʻia ka lōʻihi o ke kī.
  • Ka mana ʻakomi o ka heluhelu ʻana ma mua (ka hoʻolālā waihona waihona waihona ma ka hoʻomanaʻo).
  • ʻOi aku ka huhū a me ka wikiwiki o ka auto-compactification.
  • ʻO kahi hoʻolālā maikaʻi loa no ka hoʻohui ʻana i nā ʻaoʻao kumulāʻau B+.
  • Контроль нелокальных файловых систем (NFS, Samba и т.п.) для предотвращения повреждения БД при неверном использовании.
  • Ua hoʻonui ʻia ka hoʻonohonoho o nā hoʻokolohua.

E hoʻomau ʻia ka hoʻomohala ʻana o ka mana "next" o libmdbx ma ke ʻano he papahana kaʻawale MithrilDB, ʻoiai ke kuhikuhi ʻia nei ka vector hoʻomohala o ka mana "o kēia manawa" o MDBX e hoʻomaloʻo i ka hiʻohiʻona hoʻonohonoho a hoʻopaʻa ʻia. Ua hoʻoholo ʻia kēia hoʻoholo no ʻekolu kumu:

  • ʻAʻole kūpono loa: Pono ʻo MithrilDB i kahi ʻano waihona waihona waihona ʻokoʻa (incompatible) a me kahi API ʻokoʻa (incompatible) e hoʻokō i nā hiʻohiʻona āpau i hoʻolālā ʻia.
  • Kumu kumu hou: Ua laikini kūʻokoʻa ka MithrilDB source code mai LMDB, a ua hoʻolālā ʻia ka papahana ponoʻī e paʻi ʻia ma lalo o kahi laikini ʻē aʻe (apono ʻia e A I OLE лицензией Apache 2.0, а не OpenLDAP Public License).
  • Разделение позволяет избежать потенциальную путаницу, внести больше определённости и обеспечить независимость пути развития проектов.

Hoʻokumu pū ʻia ʻo MithrilDB, e like me MDBX lāʻau B+ a e hōʻike pū i ka hana kiʻekiʻe loa, ʻoiai e hoʻopau ana i kekahi mau hemahema kumu o MDBX a me LMDB. ʻO ka mea nui, e hoʻopau ʻia ka pilikia o ka "heluhelu lōʻihi", e hōʻike ana iā ia iho he "huhū" o ka waihona ma muli o ka hoʻopaʻa ʻia ʻana o ka ʻōpala e nā hana heluhelu lōʻihi. Aia nā hiʻohiʻona MithrilDB hou:

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

Source: opennet.ru

Pākuʻi i ka manaʻo hoʻopuka