Yuqori samarali o'rnatilgan DBMS libmdbx 0.11.3 versiyasini chiqarish

Libmdbx 0.11.3 (MDBX) kutubxonasi yuqori unumli ixcham o'rnatilgan kalit-qiymat ma'lumotlar bazasini amalga oshirish bilan chiqarildi. libmdbx kodi OpenLDAP Public License ostida litsenziyalangan. Barcha joriy operatsion tizimlar va arxitekturalar, shuningdek, rus Elbrus 2000 qo'llab-quvvatlanadi. 2021 yil oxirida libmdbx ikkita eng tezkor Ethereum mijozlari - Erigon va yangi "Shark" da saqlash uchun backend sifatida ishlatiladi. ma'lumot, eng yuqori samarali Ethereum mijozidir.

Tarixiy jihatdan, libmdbx LMDB DBMS ning chuqur qayta ishlanishi bo'lib, ishonchliligi, funktsiyalar to'plami va ishlashi bo'yicha ajdodlaridan ustundir. LMDB bilan solishtirganda, libmdbx kod sifati, API barqarorligi, sinov va avtomatlashtirilgan tekshiruvlarga katta e'tibor beradi. Ba'zi tiklash imkoniyatlariga ega bo'lgan ma'lumotlar bazasi strukturasining yaxlitligini tekshirish uchun yordamchi dastur taqdim etilgan.

Texnologiya nuqtai nazaridan libmdbx protsessor yadrolari bo'ylab chiziqli masshtablash bilan ACID, kuchli o'zgarishlar seriyali va bloklanmagan o'qishlarni taklif qiladi. Avtomatik ixchamlashtirish, ma'lumotlar bazasi hajmini avtomatik boshqarish va diapazon so'rovlarini baholash qo'llab-quvvatlanadi. 2016 yildan buyon loyiha Positive Technologies tomonidan moliyalashtirilib, 2017 yildan buyon o‘z mahsulotlarida qo‘llanilmoqda.

libmdbx C++ API, shuningdek Rust, Haskell, Python, NodeJS, Ruby, Go va Nim uchun ishtiyoqmandlar tomonidan qo'llab-quvvatlanadigan til ulanishlarini taklif etadi.

11 oktyabrdagi oldingi yangiliklardan keyin qo'shilgan asosiy yangiliklar, yaxshilanishlar va tuzatishlar:

  • C++ API foydalanishga tayyor deb hisoblanadi.
  • Katta tranzaktsiyalarni amalga oshirishda GC ma'lumotlarini yangilash sezilarli darajada tezlashdi, bu Ethereum ekotizimida libmdbx-dan foydalanishda ayniqsa muhimdir.
  • Ma'lumotlar bazasi formatining ichki imzosi avtomatik yangilashni qo'llab-quvvatlash uchun o'zgartirildi, bu foydalanuvchilar uchun to'liq shaffof. Bu kutubxonaning eskirgan versiyalari joriy versiyalar tomonidan yozilgan tranzaktsiyalarni o'qish uchun foydalanilganda ma'lumotlar bazasining buzilishi haqidagi noto'g'ri ijobiy xabarlarni yo'q qilish imkonini beradi.
  • mdbx_env_get_syncbytes(), mdbx_env_get_syncperiod() va mdbx_env_get_syncbytes() funksiyalari qo‘shildi. MDBX_SET_UPPERBOUND operatsiyasi uchun qo‘shimcha yordam qo‘shildi.
  • C++ 11/14/17/20 rejimlarida barcha qo'llab-quvvatlanadigan kompilyatorlar bilan qurishda barcha ogohlantirishlar olib tashlandi. Eski kompilyatorlar bilan moslik ta'minlanadi: 3.9 dan boshlab clang, 4.8 dan gcc, shu jumladan CentOS/RHEL 9 uchun cdevtoolset-7 yordamida yig'ish.
  • Mdbx_chk yordam dasturidan foydalanib, ma'lum bir meta-sahifaga qo'lda o'tgandan so'ng, meta-sahifalar bilan ziddiyat yuzaga kelishi ehtimoli tuzatildi.
  • Eski meta-sahifalarni qayta yozishda qaytarilgan kutilmagan MDBX_PROBLEM xatosi tuzatildi.
  • MDBX_GET_BOTH so'rovini qayta ishlashda noto'g'ri moslik bo'lsa, MDBX_NOTFOUND qiymatini qaytarish tuzatildi.
  • Yadro bilan interfeyslar tavsifi bilan sarlavhali fayllar yo'qligi sababli Linuxda kompilyatsiya xatosi tuzatildi.
  • MDBX_SHRINK_ALLOWED ichki bayrog'i va MDBX_ACCEDE opsiyasi o'rtasidagi ziddiyat tuzatildi.
  • Bir nechta keraksiz tasdiqlash tekshiruvlari olib tashlandi.
  • mdbx_env_set_option() funksiyasidan MDBX_RESULT_TRUE ning kutilmagan qaytishi tuzatildi.
  • Hammasi bo'lib 90 ta faylga 25 dan ortiq o'zgartirish kiritildi, ~1300 ta qator qo'shildi, ~600 ta o'chirildi.

Manba: opennet.ru

a Izoh qo'shish