După cinci ani de dezvoltare, a fost publicat al doilea candidat la versiunea libmdbx 1.0

Disponibil pentru testarea celui de-al doilea candidat în versiunile bibliotecii libmdbx cu implementarea unei baze de date încorporate de tip cheie-valoare, de mare performanță și compactă. Versiunea actuală (0.5) este o versiune tehnică, marcând finalizarea oricăror modificări și trecerea la faza de testare publică finală și stabilizare, urmată de formarea primei versiuni complete a bibliotecii. Codul libmdbx se răspândește sub licența OpenLDAP Public License.

Biblioteca MDBX este o ramură considerabil reconfigurată de LMDB — un SGBD încorporat, tranzacțional, de tip „cheie-valoare”, bazat pe arborele B+ fără jurnalizarea anticipată, care permite proceselor multithreading să lucreze concurent și eficient cu o bază de date local împărțită (nu de rețea). În schimb, MDBX este mai rapid și mai fiabil decât LMDB și păstrează toate caracteristicile cheie ale strămoșului său, cum ar fi ACID și citirea non-blocantă cu scalare liniară pe nucleele CPU.

Se acordă o atenție considerabil mai mare calității codului, „rezistenței” API-ului, testării și verificărilor automate.

  • O atenție semnificativ mai mare este acordată calității codului, testării și verificărilor automate.
  • Compactarea automată și gestionarea automată a dimensiunii Bazei de Date.
  • Format unic de Baza de Date pentru build-uri de 32 și 64 de biți.
  • Estimarea volumului interogărilor pe intervale (range query estimation).
  • Suport pentru chei de două ori mai lungi și dimensiunea paginii bazei de date aleasă de utilizator.
  • Suport pentru chei de două ori mai mari și dimensiunea paginii bazei de date aleasă de utilizator.

Candidatul lansat al libmdbx este rezultatul deciziei luate în august 2019 de a separa proiectele MDBX și MithrilDB. Aici, în libmdbx s-a decis să se elimine (rațional) maximum de datorii tehnice și să se stabilizeze biblioteca. De fapt, în direcția indicată s-au realizat de 2-3 ori mai multe decât se estima și se plănuia inițial:

  • A fost implementat suport pentru macOS și platformele din «a doua ligă»: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. Suportul pentru AIX și HP-UX poate fi adăugat la nevoie.
  • A fost efectuată sanitizarea codului prin Undefined Behavior Sanitizer și Address Sanitizer, eliminând toate avertizările în timpul compilării cu «-Wpedantic», toate avertizările Coverity Static Analyzer etc.
  • Actualizarea descrierii API.
  • Fuzionarea (amalgamează) codului sursă pentru comoditatea încorporării.
  • Suport pentru CMake.
  • Suport pentru tranzacții imbricate.
  • Utilizarea bootid pentru a determina existența unei reporniri a sistemului de operare (oprirea murdară a bazei de date).
  • Numărarea totală a paginilor actualizate/vechi și informații extinse despre tranzacții.
  • Opțiunea MDBX_ACCEDE pentru conectarea la o bază de date deja deschisă în modul compatibil.
  • Utilizare blocări OFD în cazul în care sunt disponibile.
  • Backup la cald în pipe.
  • Un algoritm intern de sortare optimizat specializat (de 2-3 ori mai rapid decât «qsort()» și cu până la 30% mai rapid decât «std::sort()»).
  • Lungimea maximă a cheii a fost extinsă.
  • Gestionarea automată a citirii anticipate (strategia de caching a fișierului bazei de date în memorie).
  • Compacție automată mai agresivă și rapidă.
  • O strategie de îmbinare a paginilor B+ mai optimă.
  • Controlul sistemelor de fișiere externe (NFS, Samba etc.) pentru a preveni deteriorarea bazei de date în cazul utilizării incorecte.
  • Setul de teste a fost extins.

Dezvoltarea versiunii „următoare” a libmdbx va continua în cadrul unui proiect separat. MithrilDB, în timp ce vectorul de dezvoltare al versiunii „curente” MDBX este orientat spre înghețarea setului de funcționalități și stabilizare. Această decizie a fost luată din trei motive:

  • Incompatibilitate totală: pentru implementarea tuturor funcționalităților planificate în MithrilDB este necesar un format de fișier al bazei de date diferit (incompatibil) și un API diferit (incompatibil).
  • Noul cod sursă: codul sursă al MithrilDB va avea independență de licență față de LMDB, iar proiectul va fi publicat sub o altă licență (aprobată OSI licenței Apache 2.0, nu sub Licența Publică OpenLDAP).
  • Separarea permite evitarea confuziei potențiale, oferind mai multă certitudine și asigurând independența căilor de dezvoltare a proiectelor.

MithrilDB, ca și MDBX, se bazează și pe arborele B+ și se va distinge printr-o performanță extrem de înaltă, eliminând în același timp o serie de defecte fundamentale ale MDBX și LMDB. În special, va fi rezolvată problema „lecturilor îndelungate”, care se manifestă ca o „umflare” a bazei de date din cauza faptului că procesarea de curățare este blocată de tranzacțiile de citire lungi. Printre noile funcționalități ale MithrilDB se numără:

  • Sprijin pentru stocarea bazei de date pe suporturi heterogene: HDD, SSD și memorie non-volatilă.
  • Strategii optime pentru datele „valoroase” și „puțin valoroase”, pentru datele „fierbinți”, „calde” și „reci”.
  • Utilizarea arborelui Merkle pentru a controla integritatea bazei de date.
  • Utilizarea opțională a WAL și o performanță semnificativ mai mare în scenariile cu scriere intensă și garanții de integritate a datelor.
  • Fixarea leneșă a datelor pe discuri.

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