DBMS-nin buraxılışı libmdbx 0.11.7. GitHub-da kilidləndikdən sonra inkişafı GitFlic-ə köçürün

Libmdbx 0.11.7 (MDBX) kitabxanası yüksək performanslı yığcam daxil edilmiş açar-dəyər verilənlər bazasının tətbiqi ilə buraxılmışdır. libmdbx kodu OpenLDAP İctimai Lisenziyası altında paylanır. Bütün cari əməliyyat sistemləri və arxitekturaları, eləcə də Rus Elbrus 2000 dəstəklənir.

Buraxılış, GitHub administrasiyası libmdbx-i bir sıra digər layihələrlə birlikdə 15 aprel 2022-ci ildə heç bir xəbərdarlıq və ya izahat olmadan sildikdən sonra layihənin GitFlic xidmətinə köçməsi ilə diqqəti çəkir, eyni zamanda düşmüş şirkətlərlə əlaqəli bir çox tərtibatçıya girişi bloklayır. ABŞ sanksiyaları altında. İstifadəçi nöqteyi-nəzərindən layihənin bütün səhifələri, anbarı və çəngəlləri heç bir ünsiyyət və səbəbləri öyrənmək imkanı olmadan birdən-birə “404” səhifəsinə çevrildi.

Təəssüflər olsun ki, demək olar ki, bütün məsələlər itirilib ki, orada ətraflı cavabları olan çoxsaylı suallar, eləcə də çoxlu müzakirələr aparılıb. Bu məlumatın itirilməsi GitHub administrasiyasının layihəyə vura bildiyi yeganə obyektiv ziyandır. Müzakirələrin qismən nüsxələri archive.org arxivində saxlanılır.

Daxili CI skriptlərinin və infrastrukturun itirilməsi (OpenSource layihələri üçün pulsuz olaraq mövcuddur) bizi kiçik texniki borcun yenidən nəzərdən keçirilməsi, unifikasiyası və aradan qaldırılmasına məcbur etdi. İndi CI, bütün BSD və Solaris variantları üçün qurma və sınaq sınaqları istisna olmaqla, demək olar ki, eyni dərəcədə bərpa edilmişdir. Bildirək ki, GitHub-ın hərəkətlərindən sonra ödəniş ehtiyacı barədə xatırlatma və pulu silmək cəhdlərindən başqa heç bir açıqlama və ya bildiriş alınmadı.

Libmdbx v0.11.3-ün buraxılışı ilə bağlı son xəbərdən bəri, GitHub əməliyyatlarından bərpa etməklə yanaşı, aşağıdakı təkmilləşdirmələr və düzəlişlər diqqətə layiqdir:

  • Birləşdirilmiş səhifədə aşkar edilmiş uyğunsuzluq effekti/qüsuru və Linux nüvəsindəki bufer keşi üçün həll yolu əlavə edildi. Səhifənin və bufer keşlərinin həqiqətən birləşdiyi sistemlərdə, artıq yaddaşa uyğunlaşdırılmış fayla yazarkən nüvənin yaddaşı iki nüsxədə məlumatlara sərf etməsinin mənası yoxdur. Beləliklə, yazılan məlumatlar, hətta diskə hələ yazılmamış olsa belə, yazma () sistem çağırışı tamamlanmazdan əvvəl yaddaş xəritələşdirilməsi vasitəsilə görünən olur.

    Ümumilikdə, digər davranışlar rasional deyil, çünki gecikmiş birləşmə ilə siz hələ də səhifə siyahıları üçün kilidləri tutmalı, məlumatları köçürməli və ya PTE-ni tənzimləməlisiniz. Buna görə də, açıqlanmayan uyğunluq qaydası SRV1989-də vahid bufer keşinin meydana çıxdığı 4-cu ildən bəri qüvvədədir. Buna görə də, məşğul libmdbx istehsal ssenarilərində qəribə uğursuzluqların tapılması çox iş tələb edirdi. Əvvəlcə problemi təkrarlamaqla, sonra fərziyyələri yoxlamaq və təkmilləşdirmələri yoxlamaqla.

    İndi biz əminliklə deyə bilərik ki, oynatma ssenarisinin mürəkkəbliyinə və spesifikliyinə baxmayaraq, problem etibarlı şəkildə müəyyən edilib, lokallaşdırılıb və etibarlı şəkildə aradan qaldırılıb. Bundan əlavə, bypass mexanizminin işi Erigon (Ethereum) tərtibatçılarından biri tərəfindən təsdiqləndi, onun vəziyyətində, debug quruluşunda qorunma əlavə təsdiq yoxlaması səbəbindən reqressiya kimi işə salındı.

    Qeyd etmək lazımdır ki, libmdbx-in işçi layihələrdə geniş tətbiqi kontekstində “bu səhvdir, yoxsa xüsusiyyətdir” və bu cür ardıcıllığa etibar etmək mümkün olub-olmadığını öyrənmək yox, etibarlı əməliyyatın təmin edilməsi prinsipial olaraq daha vacibdir. , xüsusilə Linux nüvəsində uyğunsuzluğun səbəblərini axtarmamaq. Buna görə də, burada istifadəçilərə təsir edə biləcək problemin aradan qaldırılmasından danışırıq.

  • Həm API vasitəsilə, həm də mdbx_copy yardım proqramından istifadə edərək verilənlər bazasını sıxlaşdırmadan başqa fayl sisteminə isti surətdə köçürərkən EXDEV (Cross-device link) xətasının reqressiyası düzəldildi.
  • Kris Zyp Denoda libmdbx dəstəyi həyata keçirdi. Kai Wetlesen Fedora üçün RPM-ləri paketlədi. David Bouyssié Scala üçün bağlamalar həyata keçirdi.
  • Böyük verilənlər bazalarında böyük tranzaksiyaları emal edərkən MDBX_opt_rp_augment_limit seçimi ilə müəyyən edilmiş dəyərin sabit idarə edilməsi. Əvvəllər səhvə görə, bəzən Ethereum tətbiqlərində (Erigon/Akula/Silkworm) və Binance Chain layihələrində performansa təsir edən lazımsız hərəkətlər edilə bilərdi.
  • C++ API-də olanlar da daxil olmaqla bir çox səhvlər düzəldildi. Nadir və ekzotik konfiqurasiyalarda bir çox tikinti problemləri həll edildi. Bütün əhəmiyyətli təkmilləşdirmələrin tam siyahısı ChangeLog-da mövcuddur.
  • 185 faylda cəmi 89 dəyişiklik edildi, ≈3300 sətir əlavə edildi, ≈4100 silindi. Daha çox GitHub və asılı xidmətlərlə əlaqəli artıq yararsız texnoloji faylların təmizlənməsi səbəbindən silindi.

Tarixən libmdbx LMDB DBMS-nin dərin yenidən dizaynıdır və etibarlılıq, xüsusiyyətlər dəsti və performans baxımından onun əcdadını üstələyir. LMDB ilə müqayisədə libmdbx kodun keyfiyyətinə, API sabitliyinə, sınaqlara və avtomatlaşdırılmış yoxlamalara çox diqqət yetirir. Verilənlər bazası strukturunun bütövlüyünü yoxlamaq üçün bir yardım proqramı bəzi bərpa variantları ilə təchiz edilmişdir.

Texnoloji cəhətdən libmdbx ACID, ciddi dəyişiklik serializasiyası və CPU nüvələri arasında xətti miqyasla bloklanmayan oxunuşlar təklif edir. Avtomatik kompaktlaşdırma, verilənlər bazası ölçüsünün avtomatik idarə edilməsi və diapazon sorğusunun qiymətləndirilməsi dəstəklənir. 2016-cı ildən layihə Positive Technologies tərəfindən maliyyələşdirilir və 2017-ci ildən məhsullarında istifadə olunur.

libmdbx inkişaf etmiş C++ API, həmçinin Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno, Scala üçün həvəskarlar tərəfindən dəstəklənən bağlamalar təklif edir.

Mənbə: opennet.ru

Добавить комментарий