Lansare a SGBD libmdbx 0.11.7. Transferul dezvoltării pe GitFlic după blocarea în GitHub

A avut loc lansarea bibliotecii libmdbx 0.11.7 (MDBX) cu implementarea unei baze de date încorporabile de tip cheie-valoare, de înaltă performanță și compactă. Codul libmdbx este distribuit sub licența OpenLDAP Public License. Sunt suportate toate sistemele de operare și arhitecturile actuale, precum și Elbrus 2000 din Rusia.

Lansarea este remarcabilă prin migrarea proiectului pe serviciul GitFlic, după ce pe 15 aprilie 2022, administrația GitHub a șters libmdbx, împreună cu multe alte proiecte, fără nicio avertizare sau explicație, blocând simultan accesul multor dezvoltatori asociați cu companii vizate de sancțiunile din SUA. Din perspectiva utilizatorilor, toate paginile, repositorul și fork-urile proiectului s-au transformat brusc într-o pagină '404', fără posibilitatea de a comunica sau de a clarifica motivele.

Din păcate, aproape toate problemele au fost pierdute, în care existau multe întrebări cu răspunsuri detaliate, precum și numeroase discuții. Pierderea acestei informații este singurul prejudiciu obiectiv pe care administrația GitHub a reușit să-l aducă proiectului. Parțial, copiile discuțiilor rămân accesibile în arhiva archive.org.

Pierderea scenariilor CI construite și a infrastructurii (disponibile gratuit pentru proiectele OpenSource) a determinat revizuirea, unificarea și eliminarea unor mici datorii tehnice. Acum CI a fost restabilit aproape în totalitate, cu excepția construirii și testării pentru toate variantele BSD și Solaris. Este caracteristic că, după acțiunile GitHub, nu au fost primite clarificări sau notificări, cu excepția unei reamintiri despre necesitatea plății și a încercărilor de a reține bani.

De la ultima știre despre lansarea libmdbx v0.11.3, pe lângă recuperarea de la acțiunile GitHub, merită menționate următoarele îmbunătățiri și corecții:

  • A fost adăugată o soluție pentru efectul/defectul de incoerență descoperit în cache-ul combinat de pagini și buffere în nucleul Linux. În sistemele în care cache-ul de pagini și buffere este într-adevăr combinat, nucleul nu are sens să aloce memorie pentru două copii ale datelor atunci când scrie într-un fișier deja mapat în memorie. Astfel, datele scrise devin vizibile prin maparea în memorie înainte de finalizarea apelului de sistem write(), chiar dacă datele nu au fost încă scrise pe disc.

    În total, un comportament diferit nu este rațional, deoarece în cazul unui merge întârziat, va trebui totuși să se capteze blocaje pentru listele de pagini, să se copieze datele sau să se corecteze PTE. Deci, regula tacită a coerenței a fost în vigoare din 1989, când SRV4 a introdus un cache unificat. Prin urmare, identificarea erorilor ciudate în scenarii de utilizare încărcate ale libmdbx a necesitat mult efort. Inițial, s-a lucrat la reproducerea problemei, apoi la verificarea ipotezelor și testarea îmbunătățirilor.

    Acum se poate spune cu încredere că problema a fost corect identificată, localizată și eliminată cu succes, în ciuda întregii complexități și specificități a scenariului de reproducere. În plus, funcționarea mecanismului de ocolire a fost confirmată de unul dintre dezvoltatorii Erigon (Ethereum), în cazul său, în compilarea de depanare, activarea protecției s-a manifestat ca o regresie din cauza unei verificări assert suplimentare.

    De reținut este că, în contextul aplicării pe scară largă a libmdbx în proiecte de muncă, este esențial să se asigure o funcționare fiabilă, nu să se stabilească dacă „aceasta este o eroare sau o caracteristică” și dacă se poate conta pe o astfel de coerență, cu atât mai mult să se caute cauzele necoerenței în nucleul Linux. Prin urmare, aici se vorbește despre eliminarea unei probleme care ar fi putut afecta utilizatorii.

  • A fost eliminată regresia care cauza eroarea EXDEV (Cross-device link) în timpul copiei active a bazei de date fără compactare pe un alt sistem de fișiere, atât prin API, cât și cu utilitarul mdbx_copy.
  • Kris Zyp a implementat suportul libmdbx în Deno. Kai Wetlesen a realizat pachetizarea RPM pentru Fedora. David Bouyssié a implementat legături pentru Scala.
  • A fost corectată procesarea valorii specifice opțiunii MDBX_opt_rp_augment_limit în gestionarea tranzacțiilor mari în baze de date mari. Precedent, din cauza unei erori, puteau fi efectuate acțiuni suplimentare, ceea ce uneori afecta performanța în implementările Ethereum (Erigon/Akula/Silkworm) și în proiectele Binance Chain.
  • Au fost corectate o mulțime de neajunsuri, inclusiv în API-ul C++. Au fost eliminate multe probleme de compilare în configurații rare și exotice. Lista completă a tuturor îmbunătățirilor semnificative este disponibilă în ChangeLog.
  • În total, au fost efectuate 185 de modificări în 89 de fișiere, adăugând aproximativ 3300 de linii și eliminând aproximativ 4100. Mai mult a fost eliminat în principal din cauza curățării fișierelor tehnologice deja inutile legate de GitHub și serviciile asociate.

Din punct de vedere istoric, libmdbx reprezintă o refacere profundă a SGBD-ului LMDB și îl depășește pe acesta din urmă în ceea ce privește fiabilitatea, setul de funcționalități și performanță. Comparativ cu LMDB, libmdbx acordă o mare atenție calității codului, stabilității API-ului, testării și verificărilor automate. Este inclus un utilitar de verificare a integrității structurii Bazei de date, cu unele funcționalități de recuperare.

Tehnologic, libmdbx oferă ACID, serializare strictă a modificărilor și citire non-blocantă cu scalare liniară pe nucleele CPU. Suportă auto-compacția, gestionarea automată a dimensiunii bazei de date și estimarea volumului selecțiilor pe intervale (range query estimation). Din 2016, proiectul este finanțat de compania Positive Technologies și din 2017 este utilizat în produsele ei.

Pentru libmdbx este disponibil un API C++ dezvoltat, precum și legături susținute de entuziaști pentru limbaje precum Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno, Scala.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster