Besh yillik rivojlanishdan so'ng, ikkinchi libmdbx 1.0 reliz nomzodi nashr etildi

Mavjud для тСстирования Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ Π² Ρ€Π΅Π»ΠΈΠ·Ρ‹ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ libmdbx с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ, ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎΠΉ встраиваСмой Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… класса ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ВСкущая вСрсия (0.5) являСтся тСхничСским Ρ€Π΅Π»ΠΈΠ·ΠΎΠΌ, ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π΅Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΎΠΊ ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΊ Ρ„Π°Π·Π΅ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Ρ„ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ тСстирования ΠΈ стабилизации, с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠ³ΠΎ Ρ€Π΅Π»ΠΈΠ·Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Код libmdbx tarqaladi ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ OpenLDAP Public License.

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° MDBX являСтся сущСствСнно ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΎΡ‚ LMDB β€” Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π½ΠΎΠΉ встраиваСмой Π‘Π£Π‘Π” класса Β«ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Β» Π½Π° основС daraxt B+ holda proaktiv ro'yxatga olish, которая позволяСт ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹ΠΌ процСссам ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π½ΠΎ ΠΈ эффСктивно Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с локально-раздСляСмой (Π½Π΅ сСтСвой) Π‘Π”. Π’ свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ MDBX быстрСС ΠΈ Π½Π°Π΄Ρ‘ΠΆΠ½Π΅Π΅ LMDB, ΠΈ ΠΏΡ€ΠΈ этом сохраняСт всС ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ возмоТности своСго прародитСля, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ACID ΠΈ Π½Π΅Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰Π΅Π΅ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ с Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΌ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ядрам CPU.

Π‘Π°ΠΌΡ‹Π΅ Π²Π°ΠΆΠ½Ρ‹Π΅ отличия MDBX, ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ LMDB:

  • Asosan, kod sifati, sinov va avtomatik tekshiruvlarga ko'proq e'tibor beriladi.
  • Parametrlarni tekshirishdan ma'lumotlar bazasi tuzilmalarining ichki auditiga qadar ishlash jarayonida sezilarli darajada ko'proq nazorat.
  • Avtomatik ixchamlashtirish va ma'lumotlar bazasi hajmini avtomatik boshqarish.
  • 32 va 64 bitli yig'ilishlar uchun yagona ma'lumotlar bazasi formati.
  • ΠžΡ†Π΅Π½ΠΊΠ° ΠΎΠ±ΡŠΡ‘ΠΌΠ° Π²Ρ‹Π±ΠΎΡ€ΠΎΠΊ ΠΏΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°ΠΌ (range query estimation).
  • Pancakes va foydalanuvchi tomonidan tanlanadigan ma'lumotlar bazasi sahifasi hajmidan ikki baravar katta kalitlarni qo'llab-quvvatlash.

Π’Ρ‹ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΉ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ Π² Ρ€Π΅Π»ΠΈΠ·Ρ‹ 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 ΠΈ Ρ‚.Π΄.
  • Yangilash API tavsiflari.
  • БлияниС (Π°ΠΌΠ°Π»ΡŒΠ³Π°ΠΌΠ°Ρ†ΠΈΡ) исходного ΠΊΠΎΠ΄Π° для удобства встраивания.
  • CMake qo'llab-quvvatlash.
  • Ichki tranzaktsiyalarni qo'llab-quvvatlash.
  • OT qayta ishga tushirilganligini aniqlash uchun bootid-dan foydalanish (iflos ma'lumotlar bazasini to'xtatish).
  • Π‘ΠΊΠ²ΠΎΠ·Π½ΠΎΠΉ подсчёт ΠΎΠ±Π½ΠΎΠ²Π»Ρ‘Π½Π½Ρ‹Ρ…/старых страниц ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Π°Ρ информация ΠΎ транзакциях.
  • Mos rejimda allaqachon ochiq ma'lumotlar bazasiga ulanish uchun MDBX_ACCEDE opsiyasi.
  • foydalanish OFD blokirovkasi mavjud bo'lganda.
  • Quvurdagi issiq zaxira.
  • Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ сортировки (Π΄ΠΎ 2-3 Ρ€Π°Π· быстрСС Β«qsort()Β» ΠΈ Π΄ΠΎ 30% быстрСС Β«std::sort()Β»).
  • Maksimal kalit uzunligi oshirildi.
  • Oldindan o'qishni avtomatik boshqarish (xotirada ma'lumotlar bazasi fayllarini keshlash strategiyasi).
  • Yana agressiv va tezroq avtomatik ixchamlashtirish.
  • B + daraxt sahifalarini birlashtirish uchun yanada maqbul strategiya.
  • ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π΅Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… систСм (NFS, Samba ΠΈ Ρ‚.ΠΏ.) для прСдотвращСния поврСТдСния Π‘Π” ΠΏΡ€ΠΈ Π½Π΅Π²Π΅Ρ€Π½ΠΎΠΌ использовании.
  • Testlar majmuasi kengaytirildi.

libmdbx ning "keyingi" versiyasini ishlab chiqish alohida loyiha sifatida davom etadi MithrilDB, MDBX ning "joriy" versiyasini ishlab chiqish vektori xususiyatlar to'plamini muzlatish va uni barqarorlashtirishga qaratilgan. Ushbu qaror uchta sababga ko'ra qabul qilindi:

  • To'liq mos kelmaydi: MithrilDB barcha rejalashtirilgan xususiyatlarni amalga oshirish uchun boshqa (mos kelmaydigan) ma'lumotlar bazasi fayl formati va boshqa (mos kelmaydigan) API talab qiladi.
  • Yangi manba kodi: MithrilDB manba kodi LMDB-dan mustaqil litsenziyalangan va loyihaning o'zi boshqa litsenziya ostida nashr etilishi rejalashtirilgan (tasdiqlangan) YoKI Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ Apache 2.0, Π° Π½Π΅ OpenLDAP Public License).
  • Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ позволяСт ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρƒ, внСсти большС опрСдСлённости ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΡƒΡ‚ΠΈ развития ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ².

MithrilDB, MDBX kabi, ham asoslangan daraxt B+ va MDBX va LMDB ning bir qator asosiy kamchiliklarini bartaraf etish bilan birga juda yuqori unumdorlikka ega bo'ladi. Xususan, axlatni qayta ishlash uzoq o'qish tranzaksiyalari bilan bloklanganligi sababli ma'lumotlar bazasining "shishishi" sifatida namoyon bo'ladigan "uzoq o'qish" muammosi bartaraf etiladi. Yangi MithrilDB xususiyatlariga quyidagilar kiradi:

  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° размСщСния Π‘Π” Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ€Π°Π·Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹Ρ… носитСлях: HDD, SSD ΠΈ энСргонСзависимой памяти.
  • ΠžΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ стратСгии для Β«Ρ†Π΅Π½Π½Ρ‹Ρ…Β» ΠΈ Β«ΠΌΠ°Π»ΠΎΡ†Π΅Π½Π½Ρ‹Ρ…Β», для «горячих», Β«Ρ‚Π΅ΠΏΠ»Ρ‹Ρ…Β» ΠΈ Β«Ρ…ΠΎΠ»ΠΎΠ΄Π½Ρ‹Ρ…Β» Π΄Π°Π½Π½Ρ‹Ρ….
  • ИспользованиС Merkle tree для контроля цСлостности Π‘Π”.
  • ΠžΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ использованиС WAL ΠΈ сущСствСнно Π±ΠΎΠ»Π΅Π΅ высокая ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π² сцСнариях с интСнсивной записью ΠΈ гарантиями Π½Π° Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ….
  • ЛСнивая Π΄ΠΎΠ³ΠΎΠ½ΡΡŽΡ‰Π°Ρ фиксация Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° дисках.

Manba: opennet.ru

a Izoh qo'shish