Besh yillik rivojlanishdan so'ng ikkinchi libmdbx v1.0 versiyasi nomzodi.

kutubxona libmdbx LMDB ning sezilarli darajada qayta ishlangan avlodi - juda yuqori unumdor, ixcham o'rnatilgan kalit-qiymat ma'lumotlar bazasi.
Joriy versiya v0.5 texnik reliz bo'lib, har qanday yaxshilanishlar tugallanganligini va ommaviy yakuniy sinov va barqarorlashtirish bosqichiga o'tishni, keyinchalik kutubxonaning birinchi to'liq nashrini shakllantirishni anglatadi.

LMDB ga asoslangan juda mashhur tranzaktsion o'rnatilgan kalit-qiymatli DBMS daraxt B+ holda proaktiv ro'yxatga olish, bu ko'p tarmoqli jarayonlar to'dasiga mahalliy umumiy (tarmoq emas) ma'lumotlar bazasi bilan raqobatbardosh va juda samarali ishlash imkonini beradi. O'z navbatida, MDBX LMDB ga qaraganda tezroq va ishonchliroq, libmdbx esa o'z ajdodining barcha asosiy xususiyatlarini saqlab qoladi, masalan. ACID va protsessor yadrolari bo'ylab chiziqli masshtablash bilan bloklanmagan o'qiydi, shuningdek, bir nechta yangilarini qo'shadi.

LMDB ga nisbatan libmdbx-ning farqlari va yaxshilanishlarining tavsifi alohida maqolaga loyiqdir (HabrΓ© va Medium-da nashr etilishi rejalashtirilgan). Bu erda eng muhim va diqqatga sazovor narsalarni eslatib o'tish o'rinlidir:

  • 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.
  • Namuna hajmini diapazonlar bo'yicha baholash (diapazon so'rovini baholash).
  • Pancakes va foydalanuvchi tomonidan tanlanadigan ma'lumotlar bazasi sahifasi hajmidan ikki baravar katta kalitlarni qo'llab-quvvatlash.

libmdbx nashri nomzodi 2019-yil avgust oyida MDBX va MithrilDB loyihalarini ajratish toΚ»gΚ»risidagi qarorning natijasidir (pastga qarang). Shu bilan birga, libmdbx (ratsional) maksimal texnik qarzni bartaraf etishga va kutubxonani barqarorlashtirishga qaror qildi. Darhaqiqat, belgilangan yo'nalish bo'yicha dastlab taxmin qilingan va rejalashtirilganidan 2-3 baravar ko'p bajarildi:

  • Mac OS va ikkinchi darajali platformalarni qo'llab-quvvatlash amalga oshirildi: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. Agar kerak bo'lsa, AIX va HP-UX qo'llab-quvvatlashlari qo'shilishi mumkin.
  • Noma'lum xatti-harakatlarni tozalash vositasi va manzilni tozalash vositasi yordamida kodni tozaladi, -Wpedantic bilan qurishda barcha ogohlantirishlarni, Coverity Static Analyzer ogohlantirishlarini va hokazolarni yo'q qildi.
  • Yangilash API tavsiflari.
  • O'rnatish qulayligi uchun manba kodini birlashtirish.
  • CMake qo'llab-quvvatlash.
  • Ichki tranzaktsiyalarni qo'llab-quvvatlash.
  • OT qayta ishga tushirilganligini aniqlash uchun bootid-dan foydalanish (iflos ma'lumotlar bazasini to'xtatish).
  • Yangilangan/eski sahifalarni va kengaytirilgan tranzaksiya ma'lumotlarini oxirigacha hisoblash.
  • Mos rejimda allaqachon ochiq ma'lumotlar bazasiga ulanish uchun MDBX_ACCEDE opsiyasi.
  • foydalanish OFD blokirovkasi mavjud bo'lganda.
  • Quvurdagi issiq zaxira.
  • Ixtisoslashgan optimallashtirilgan ichki tartiblash algoritmi (qsort() dan 2-3 baravar tezroq va std::sort() dan 30% gacha tezroq).
  • 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.
  • Agar noto'g'ri ishlatilsa, ma'lumotlar bazasiga zarar yetkazmaslik uchun mahalliy bo'lmagan fayl tizimlarini (NFS, Samba va boshqalar) nazorat qilish.
  • 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 litsenziya Apache 2.0, va emas OpenLDAP fondi).
  • Ajratish mumkin bo'lgan chalkashliklarni oldini oladi, ko'proq aniqlikni ta'minlaydi va loyihalarning mustaqil yo'lini ta'minlaydi.

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:

  • ma'lumotlar bazasini bir nechta heterojen muhitga joylashtirishni qo'llab-quvvatlash: HDD, SSD va doimiy xotira.
  • "qimmatli" va "past qiymatli", "issiq", "issiq" va "sovuq" ma'lumotlar uchun optimal strategiyalar.
  • ma'lumotlar bazasi yaxlitligini kuzatish uchun Merkle daraxtidan foydalanish.
  • WAL-dan ixtiyoriy foydalanish va yozishni talab qiladigan stsenariylarda sezilarli darajada yuqori ishlash va ma'lumotlar yaxlitligi kafolatlari.
  • Disklardagi ma'lumotlarni dangasa ushlab turish.

Manba: linux.org.ru

a Izoh qo'shish