DBMS libmdbx 0.11.7 versiyasi. GitHub-da blokirovka qilinganidan keyin dasturni GitFlic-ga o'tkazing

Libmdbx 0.11.7 (MDBX) kutubxonasi yuqori unumli ixcham o'rnatilgan kalit-qiymatli 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.

Reliz 15-yil 2022-aprelda GitHub maʼmuriyati hech qanday ogohlantirishsiz yoki tushuntirishsiz libmdbx-ni boshqa koʻplab loyihalar bilan birga oʻchirib tashlaganidan soʻng loyihaning GitFlic xizmatiga koʻchirilishi bilan ajralib turadi. kompaniyalar AQSh sanksiyalariga duchor bo'ladi. Foydalanuvchilar nuqtai nazaridan, loyihaning barcha sahifalari, ombori va vilkalari birdaniga hech qanday aloqa va sabablarni aniqlash imkoniyatisiz 404 sahifaga aylandi.

Afsuski, batafsil javoblar bilan ko'plab savollar, shuningdek, ko'plab muhokamalar mavjud bo'lgan deyarli barcha masalalar yo'qolgan. Ushbu ma'lumotlarning yo'qolishi GitHub ma'muriyati loyihaga etkaza olgan yagona ob'ektiv zarardir. Muhokamalarning qisman nusxalari archive.org saytida saqlanadi.

O'rnatilgan CI stsenariylari va infratuzilmasining yo'qolishi (OpenSource loyihalari uchun bepul mavjud) bizni kichik texnik qarzlarni qayta ko'rib chiqish, birlashtirish va yo'q qilishga majbur qildi. Endi CI deyarli bir xil darajada tiklandi, barcha BSD va Solaris variantlari uchun qurish va ishga tushirish testlari bundan mustasno. Odatda, harakatlardan so'ng, GitHub to'lov zarurligi haqidagi eslatmalar va pulni hisobdan chiqarishga urinishlardan tashqari, hech qanday tushuntirish yoki bildirishnoma olmadi.

libmdbx v0.11.3 versiyasining chiqarilishi haqidagi so'nggi yangiliklardan boshlab, GitHub harakatlaridan tiklanishdan tashqari, quyidagi yaxshilanishlar va tuzatishlarni ta'kidlash kerak:

  • Birlashtirilgan sahifada aniqlangan nomuvofiqlik effekti/nuqsoni va Linux yadrosidagi bufer keshiga vaqtinchalik yechim qoʻshildi. Sahifa va bufer keshlari haqiqatan birlashtirilgan tizimlarda, xotiraga allaqachon joylashtirilgan faylga yozishda yadroning ikki nusxadagi ma'lumotlar uchun xotirani isrof qilishdan foydasi yo'q. Shunday qilib, yozilayotgan ma'lumotlar, hatto diskga hali yozilmagan bo'lsa ham, write() tizimi chaqiruvi tugagunga qadar xotira xaritasi orqali ko'rinadi.

    Umuman olganda, boshqa xatti-harakatlar oqilona emas, chunki kechiktirilgan birlashish bilan siz hali ham sahifalar ro'yxati uchun qulflarni olishingiz, ma'lumotlarni nusxalashingiz yoki PTE-ni sozlashingiz kerak bo'ladi. Shu sababli, aytilmagan muvofiqlik qoidasi SRV1989 da birlashgan bufer kesh paydo bo'lgan 4 yildan beri amal qiladi. Shuning uchun yuklangan libmdbx ekspluatatsiyasi stsenariylarida g'alati nosozliklarni aniqlash juda ko'p mehnat talab qildi. Avval muammoni takrorlash, keyin farazlarni tekshirish va yaxshilanishlarni tekshirish.

    Endi biz ishonch bilan aytishimiz mumkinki, ko'payish stsenariysining murakkabligi va o'ziga xosligiga qaramay, muammo ishonchli tarzda aniqlangan, mahalliylashtirilgan va ishonchli tarzda bartaraf etilgan. Bundan tashqari, aylanib o'tish mexanizmining ishlashi Erigon (Ethereum) ishlab chiquvchilaridan biri tomonidan tasdiqlangan; uning holatida, disk raskadrovka qurilishida himoya keraksiz tasdiqlash tekshiruvi tufayli regressiya sifatida ishga tushirildi.

    Shuni ta'kidlash kerakki, ishlab chiqarish loyihalarida libmdbx-ning keng qo'llanilishi kontekstida ishonchli ishlashni ta'minlash uning xato yoki xususiyat ekanligini aniqlashdan ko'ra muhimroqdir. Linux yadrosidagi nomuvofiqlik sabablari. Shuning uchun, bu erda biz foydalanuvchilarga ta'sir qilishi mumkin bo'lgan muammoni hal qilish haqida gapiramiz.

  • API va mdbx_copy yordam dasturi yordamida boshqa fayl tizimiga ixchamlashtirmasdan ma'lumotlar bazasini issiq nusxa ko'chirishda EXDEV (qurilmalar o'rtasidagi havola) xatosining regressiyasi bartaraf etildi.
  • Kris Zyp Deno'da libmdbx qo'llab-quvvatlashini amalga oshirdi. Kai Wetlesen Fedora uchun RPM paketini ishlab chiqdi. David Bouyssié Scala uchun bog'lanishlarni amalga oshirdi.
  • Katta ma'lumotlar bazalarida katta tranzaktsiyalarni qayta ishlashda MDBX_opt_rp_augment_limit opsiyasi tomonidan belgilangan qiymatni qattiq qayta ishlash. Ilgari, xato tufayli keraksiz harakatlar amalga oshirilishi mumkin edi, bu ba'zan Ethereum ilovalari (Erigon/Akula/Silkworm) va Binance Chain loyihalarida ishlashga ta'sir ko'rsatdi.
  • Ko'pgina xatolar, jumladan C++ API da tuzatildi. Noyob va ekzotik konfiguratsiyalarda ko'plab qurilish muammolari tuzatildi. Barcha muhim yaxshilanishlarning to'liq ro'yxati ChangeLog-da mavjud.
  • 185 ta faylga jami 89 ta oʻzgartirish kiritildi, ≈3300 ta satr qoʻshildi, ≈4100 tasi oʻchirildi. Ko'proq narsa, asosan, GitHub va unga bog'liq xizmatlar bilan bog'liq allaqachon foydasiz texnologiya fayllarini tozalash tufayli olib tashlandi.

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 ishlab chiqilgan C++ API, shuningdek, Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno, Scala tillariga ishtiyoqmandlar tomonidan qo‘llab-quvvatlanadigan ulanishlarni taklif etadi.

Manba: opennet.ru

a Izoh qo'shish