Таван жил хөгжүүлсний дараа libmdbx 1.0 хувилбарын хоёр дахь нэр дэвшигчийг нийтлэв

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

Библиотека MDBX является существенно переработанным ответвлением от LMDB — үндсэн дээр суурилсан “түлхүүр-утга” ангиллын гүйлгээний суулгагдсан DBMS мод B+ ямар ч идэвхтэй мод бэлтгэх, которая позволяет многопоточным процессам конкурентно и эффективно работать с локально-разделяемой (не сетевой) БД. В свою очередь MDBX быстрее и надёжнее LMDB, и при этом сохраняет все ключевые возможности своего прародителя, такие как ХҮЧИЛ и неблокирующее чтение с линейным масштабированием по ядрам CPU.

MDBX болон LMDB хоорондын хамгийн чухал ялгаа:

  • Үндсэндээ кодын чанар, туршилт, автомат шалгалтанд илүү анхаарал хандуулдаг.
  • Ашиглалтын явцад параметрүүдийг шалгахаас эхлээд мэдээллийн сангийн бүтцийн дотоод аудит хүртэл мэдэгдэхүйц илүү хяналт.
  • Автомат нягтаршил, мэдээллийн сангийн хэмжээг автоматаар удирдах.
  • 32 ба 64 битийн угсралтад зориулсан мэдээллийн сангийн нэг формат.
  • Түүврийн хэмжээг мужаар тооцох (мужийн асуулгын тооцоо).
  • Хуушуураас хоёр дахин том товчлуурууд болон хэрэглэгчийн сонгох боломжтой мэдээллийн сангийн хуудасны хэмжээг дэмждэг.

Выпущенный кандидат в релизы 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 нийтийн лиценз).
  • Разделение позволяет избежать потенциальную путаницу, внести больше определённости и обеспечить независимость пути развития проектов.

MDBX шиг MithrilDB нь мөн дээр суурилсан мод B+ Мөн MDBX болон LMDB-ийн хэд хэдэн үндсэн сул талуудыг арилгахын зэрэгцээ маш өндөр гүйцэтгэлтэй байх болно. Тэр дундаа удаан уншсан гүйлгээгээр хог боловсруулах үйл ажиллагаа гацаж, мэдээллийн санд “хавдардаг” асуудал арилна. MithrilDB-ийн шинэ онцлогууд нь:

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

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх