ຜູ້ສະຫມັກປ່ອຍທີສອງສໍາລັບ libmdbx v1.0 ຫຼັງຈາກຫ້າປີຂອງການພັດທະນາ.

ຫ້ອງສະຫມຸດ libmdbx является существенно переработанным потомком LMDB — предельно высокопроизводительной, компактной встраиваемой базой данных класса ключ-значение.
Текущая версия v0.5 является техническим релизом, отмечает завершение каких-либо доработок и переход к фазе публичного финального тестирования и стабилизации, с последующем формированием первого полноценного релиза библиотеки.

LMDB является достаточно известной транзакционной встраиваемой СУБД класса «ключ-значение» на основе ຕົ້ນໄມ້ B+ ໂດຍ​ບໍ່​ມີ​ການ ການຕັດໄມ້ແບບເຄື່ອນໄຫວ, которая позволяет рою многопоточных процессов конкурентно и предельно эффективно работать с локально-разделяемой (не сетевой) БД. В свою очередь MDBX быстрее и надежнее LMDB, при этом libmdbx сохраняет все ключевые возможности своего прародителя, такие как ເອຊີດີ и неблокирующее чтение с линейным масштабированием по ядрам CPU, а также добавляет несколько новых.

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

  • ໂດຍພື້ນຖານແລ້ວ, ຄວາມສົນໃຈຫຼາຍແມ່ນຈ່າຍໃຫ້ກັບຄຸນນະພາບຂອງລະຫັດ, ການທົດສອບແລະການກວດສອບອັດຕະໂນມັດ.
  • ການຄວບຄຸມຫຼາຍຢ່າງຫຼວງຫຼາຍໃນລະຫວ່າງການປະຕິບັດງານ, ຈາກການກວດສອບຕົວກໍານົດການກັບການກວດສອບພາຍໃນຂອງໂຄງສ້າງຖານຂໍ້ມູນ.
  • ການບີບອັດອັດຕະໂນມັດ ແລະການຈັດການຂະໜາດຖານຂໍ້ມູນອັດຕະໂນມັດ.
  • ຮູບແບບຖານຂໍ້ມູນດຽວສໍາລັບການປະກອບ 32-bit ແລະ 64-bit.
  • Оценка объема выборок по диапазонам (range query estimation).
  • ສະຫນັບສະຫນູນຄີສອງເທົ່າຂະຫນາດໃຫຍ່ຂອງ pancakes ແລະຂະຫນາດຫນ້າຖານຂໍ້ມູນທີ່ຜູ້ໃຊ້ເລືອກ.

Выпущенный релиз-кандидат 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.
  • Амальгамация исходного кода для удобства встраивания.
  • CMake ສະຫນັບສະຫນູນ.
  • ສະຫນັບສະຫນູນການເຮັດທຸລະກໍາທີ່ຊ້ອນກັນ.
  • ການນໍາໃຊ້ bootid ເພື່ອກໍານົດວ່າ OS ໄດ້ rebooted (ຢຸດຖານຂໍ້ມູນເປື້ອນ).
  • Сквозной подсчет обновлённых/старых страниц и расширенная информация о транзакциях.
  • ທາງເລືອກ MDBX_ACCEDE ສໍາລັບການເຊື່ອມຕໍ່ກັບຖານຂໍ້ມູນທີ່ເປີດຢູ່ແລ້ວໃນຮູບແບບທີ່ເຂົ້າກັນໄດ້.
  • ການນໍາໃຊ້ OFD ສະກັດ ເມື່ອມີຢູ່.
  • ຮ້ອນສໍາຮອງຂໍ້ມູນໃນທໍ່.
  • Специализированный оптимизированный алгоритм внутренней сортировки (до 2-3 раз быстрее qsort() и до 30% быстрее std::sort()).
  • ຄວາມຍາວກະແຈສູງສຸດໄດ້ເພີ່ມຂຶ້ນ.
  • ການ​ຄວບ​ຄຸມ​ອັດ​ຕະ​ໂນ​ມັດ​ຂອງ​ການ​ອ່ານ​ລ່ວງ​ຫນ້າ (ຍຸດ​ທະ​ສາດ​ການ​ຖານ​ຄວາມ​ຈໍາ​ໄຟລ​໌​ຖານ​ຂໍ້​ມູນ​ໃນ​ຫນ່ວຍ​ຄວາມ​ຈໍາ​)​.
  • ການບີບອັດອັດຕະໂນມັດທີ່ຮຸກຮານ ແລະໄວກວ່າ.
  • ຍຸດທະສາດທີ່ດີທີ່ສຸດສໍາລັບການລວມຫນ້າຕົ້ນໄມ້ B+.
  • Контроль не-локальных файловых систем (NFS, Samba и т.п.) для предотвращения повреждения БД при неверном использовании.
  • ຊຸດຂອງການທົດສອບໄດ້ຖືກຂະຫຍາຍອອກ.

ການພັດທະນາສະບັບ "ຕໍ່ໄປ" ຂອງ libmdbx ຈະສືບຕໍ່ເປັນໂຄງການແຍກຕ່າງຫາກ MithrilDB, ໃນຂະນະທີ່ vector ການພັດທະນາຂອງ MDBX ສະບັບ "ປະຈຸບັນ" ແມ່ນແນໃສ່ການ freezing ຄຸນນະສົມບັດທີ່ກໍານົດໄວ້ແລະສະຖຽນລະພາບມັນ. ການ​ຕັດ​ສິນ​ໃຈ​ນີ້​ໄດ້​ຖືກ​ເຮັດ​ສໍາ​ລັບ​ສາມ​ເຫດ​ຜົນ​:

  • ບໍ່ເຂົ້າກັນໄດ້ທັງໝົດ: MithrilDB ຕ້ອງການຮູບແບບໄຟລ໌ຖານຂໍ້ມູນທີ່ແຕກຕ່າງກັນ (ບໍ່ເຂົ້າກັນໄດ້) ແລະ API ທີ່ແຕກຕ່າງກັນ (ບໍ່ເຂົ້າກັນໄດ້) ເພື່ອປະຕິບັດຄຸນສົມບັດທີ່ວາງແຜນໄວ້ທັງໝົດ.
  • ລະຫັດແຫຼ່ງໃຫມ່: ລະຫັດແຫຼ່ງ MithrilDB ໄດ້ຖືກສ້າງເປັນເອກະລາດຈາກ LMDB, ແລະໂຄງການຕົວມັນເອງໄດ້ຖືກວາງແຜນທີ່ຈະເຜີຍແຜ່ພາຍໃຕ້ໃບອະນຸຍາດທີ່ແຕກຕ່າງກັນ (ອະນຸມັດໂດຍ ຫຼື IF ໃບອະນຸຍາດ Apache 2.0ແລະບໍ່ OpenLDAP Foundation).
  • Разделение позволяет избежать потенциальную путаницу, внести больше определенности и обеспечить независимость пути развития проектов.

MithrilDB, ເຊັ່ນ MDBX, ຍັງອີງໃສ່ ຕົ້ນໄມ້ B+ ແລະຍັງຈະມີລັກສະນະປະສິດທິພາບສູງທີ່ສຸດ, ໃນຂະນະທີ່ກໍາຈັດຂໍ້ເສຍພື້ນຖານຈໍານວນຫນຶ່ງຂອງ MDBX ແລະ LMDB. ໂດຍສະເພາະ, ບັນຫາຂອງ "ອ່ານຍາວ", ເຊິ່ງສະແດງຕົວຂອງມັນເອງເປັນ "ການໃຄ່ບວມ" ຂອງຖານຂໍ້ມູນເນື່ອງຈາກຄວາມຈິງທີ່ວ່າການປຸງແຕ່ງຂີ້ເຫຍື້ອຖືກສະກັດໂດຍການອ່ານຍາວ, ຈະຖືກລົບລ້າງ. ຄຸນ​ນະ​ສົມ​ບັດ MithrilDB ໃຫມ່​ປະ​ກອບ​ມີ​:

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

ແຫຼ່ງຂໍ້ມູນ: linux.org.ru

ເພີ່ມຄວາມຄິດເຫັນ