Yuqori samarali o'rnatilgan DBMS libmdbx 0.10.4 va libfpta 0.3.9 ning chiqarilishi

Libmdbx 0.10.4 (MDBX) kutubxonalari yuqori unumli ixcham oʻrnatilgan kalit-qiymatli maʼlumotlar bazasi va ikkilamchi va kompozit indekslar bilan maʼlumotlarning jadval koʻrinishini amalga oshiradigan tegishli libfpta 0.3.9 (FPTA) kutubxonasi bilan chiqarildi. MDBX tepasida. Ikkala kutubxona ham OSI tomonidan tasdiqlangan litsenziyalar asosida tarqatiladi. Barcha joriy operatsion tizimlar va arxitekturalar, shuningdek, rus Elbrus 2000 qo'llab-quvvatlanadi.

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 loyihalar Positive Technologies tomonidan moliyalashtirilib, 2017 yildan boshlab uning mahsulotlarida foydalanilmoqda.

libmdbx C++ API, shuningdek Rust, Haskell, Python, NodeJS, Ruby, Go va Nim uchun ishtiyoqmandlar tomonidan qo'llab-quvvatlanadigan til ulanishlarini taklif etadi. Libfpta uchun faqat API tavsifi C/C++ sarlavha fayli ko'rinishida ochiqdir.

9 maydagi oldingi yangiliklardan keyin qo'shilgan asosiy yangiliklar, yaxshilanishlar va tuzatishlar:

  • Qayta ishlab chiqarishga imkon beradi.
  • Juda kamdan-kam hollarda tranzaktsiyani amalga oshirish paytida loop/muzlatish sodir bo'lishi mumkin bo'lgan xatolik tuzatildi. Muammo Positive Technologies mutaxassislari tomonidan o'z mahsulotlarini ichki sinovdan o'tkazishda aniqlandi.
  • Testlar takomillashtirildi va test stsenariylari sahifa daraxtining barcha izomorf bo'lmagan holatlarini va ma'lumotlar bazasi ichidagi GC tarkibini tekshirish uchun kengaytirildi.
  • C++ API-da qo'shimcha "noexcept" tuzatildi, "kursor::erase()" usuli uchun qo'shimcha ortiqcha yuklar qo'shildi, hizalanishni ta'minlash uchun buferlarni amalga oshirish "std::string" dan foydalanishdan saqlandi. (CLANG libstdc++ uchun tegishli).
  • Katta tranzaktsiyalarda ma'lumotlarni o'zgartirishda nodir kutilmagan MDBX_PROBLEM xatosi bilan namoyon bo'lgan iflos sahifalarni to'kish algoritmidagi regressiya (o'zgartirilgan ma'lumotlar bazasi sahifalarini tanlab chiqarish) bartaraf etildi.
  • Ma'lumotlar bazasiga qasddan zarar etkazilgan taqdirda barqarorlikni ta'minlash uchun bir qator tekshiruvlar qo'shilgan holda bosqichma-bosqich test o'tkazildi.
  • Ruxsat etilgan kichik ogohlantirishlar UndefinedBehaviorSanitizer va Coverity Scan muammolari.
  • Kutubxonaning eski versiyalari tomonidan yaratilgan ma'lumotlar bazasi tasvirlari ichidagi ichki sahifalardagi eskirgan va endi ishlatilmaydigan "P_DIRTY" ichki bayrog'ini tekshirish tuzatildi.
  • CMake skriptlarida LTO (bog'lanish vaqtini optimallashtirish) uchun zarur bo'lgan kompilyator komponentlarini qidirish yaxshilandi.
  • Bir vaqtning o'zida o'quvchilarning maksimal soni 32767 taga ko'paytirildi.
  • Valgrind va AddressSanitizer-dan foydalanganda yaxshilangan ishlash.
  • Windows tizimida MDBX_NOTLS rejimida ishlaganda (mahalliy tarmoq xotirasidan foydalanmasdan) SRW-lockdan rekursiv foydalanish bekor qilindi, agar tizim vaqti o'zgargan bo'lsa, bootid yaratish tuzatildi, WSL1 va WSL2 aniqlash yaxshilandi va DrvFS orqali o'rnatilgan 9-rejada ma'lumotlar bazasini ochish qo'shildi.
  • Hammasi bo'lib 160 ta faylga 57 dan ortiq o'zgartirish kiritildi, ~5000 ta qator qo'shildi, ~2500 ta o'chirildi.

Erigon loyiha jamoasiga (Ethereum ekotizimiga) ekstremal foydalanish stsenariylarini sinovdan o'tkazishda yordam bergani uchun alohida minnatdorchilik bildirmoqchiman. libmdbx v0.10.0 versiyasi chiqarilgandan so'ng besh oy ichida, har bir Erigon o'rnatishida 1-2 TB ma'lumotlar bazasi hajmi (Ethereum tugunlarining 7 foizida qo'llaniladi) ma'lumotlar bazasining buzilishi haqida faqat uchta hisobot olingani juda muhimdir. Bu dasturiy ta'minotdagi xatolar emas, balki tashqi sabablarga ko'ra sodir bo'lgan: ikkita holatda sabab operativ xotiraning ishdan chiqishi, uchinchisida BTRFS yordamida saqlash quyi tizimining ma'lum bir konfiguratsiyasidagi ma'lumotlarni qayta o'rnatishda xatolik.

Manba: opennet.ru

a Izoh qo'shish