Anden libmdbx v1.0 udgivelseskandidat efter fem års udvikling.

bibliotek libmdbx er en væsentligt redesignet efterkommer af LMDB - en ekstremt højtydende, kompakt indlejret nøgleværdidatabase.
Den nuværende version v0.5 er en teknisk udgivelse, som markerer afslutningen af ​​eventuelle forbedringer og overgangen til fasen med offentlig endelig test og stabilisering, med den efterfølgende dannelse af den første fulde udgivelse af biblioteket.

LMDB er en ret velkendt transaktionel indlejret nøgle-værdi DBMS baseret på træ B+ без proaktiv logning, som tillader en sværm af flertrådede processer at arbejde konkurrencedygtigt og ekstremt effektivt med en lokalt delt (ikke netværk) database. Til gengæld er MDBX hurtigere og mere pålidelig end LMDB, mens libmdbx bevarer alle nøglefunktionerne fra sin forfader, som f.eks. ACID og ikke-blokerende læsninger med lineær skalering på tværs af CPU-kerner, og tilføjer også flere nye.

En beskrivelse af forskellene og forbedringerne af libmdbx i forhold til LMDB fortjener en separat artikel (planlagt at blive publiceret på Habré og Medium). Her er det passende at nævne det vigtigste og mest bemærkelsesværdige:

  • Grundlæggende lægges der mere vægt på kodekvalitet, test og automatiske kontroller.
  • Betydeligt mere kontrol under drift, fra kontrol af parametre til intern revision af databasestrukturer.
  • Automatisk komprimering og automatisk databasestørrelsesstyring.
  • Et enkelt databaseformat til 32-bit og 64-bit samlinger.
  • Estimering af stikprøvestørrelse efter intervaller (estimering af intervalforespørgsel).
  • Understøttelse af nøgler dobbelt så store som pandekager og brugervalgbar databasesidestørrelse.

Libmdbx-udgivelseskandidaten er resultatet af beslutningen (se nedenfor) om at adskille MDBX- og MithrilDB-projekterne i august 2019. Samtidig besluttede libmdbx at eliminere den (rationelle) maksimale tekniske gæld og stabilisere biblioteket. Faktisk er der blevet gjort 2-3 gange mere i den udpegede retning, end det oprindeligt var estimeret og planlagt:

  • Support til Mac OS og second-tier platforme er blevet implementeret: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. AIX og HP-UX support kan tilføjes efter behov.
  • Koden blev renset ved hjælp af Undefined Behavior Sanitizer og Address Sanitizer, alle advarsler ved bygning med -Wpedantic, alle Coverity Static Analyzer-advarsler osv. blev elimineret.
  • Opdatering API-beskrivelser.
  • Sammenlægning af kildekode for nem indlejring.
  • CMake support.
  • Understøttelse af indlejrede transaktioner.
  • Brug af bootid til at bestemme, om operativsystemet er genstartet (stop af beskidt database).
  • End-to-end optælling af opdaterede/gamle sider og udvidet transaktionsinformation.
  • Mulighed MDBX_ACCEDE for at oprette forbindelse til en allerede åben database i kompatibel tilstand.
  • Brug OFD blokering når det er tilgængeligt.
  • Varm backup i rør.
  • Specialiseret optimeret intern sorteringsalgoritme (op til 2-3 gange hurtigere end qsort() og op til 30% hurtigere end std::sort()).
  • Den maksimale nøglelængde er blevet øget.
  • Automatisk styring af fremadlæsning (databasefil-caching-strategi i hukommelsen).
  • Mere aggressiv og hurtigere auto-komprimering.
  • En mere optimal strategi til at flette B+ træsider.
  • Kontrol af ikke-lokale filsystemer (NFS, Samba osv.) for at forhindre databaseskader, hvis de bruges forkert.
  • Sættet af test er blevet udvidet.

Udviklingen af ​​den "næste" version af libmdbx vil fortsætte som et separat projekt MithrilDB, mens udviklingsvektoren for den "aktuelle" version af MDBX er rettet mod at fryse funktionssættet og stabilisere det. Denne beslutning blev truffet af tre grunde:

  • Fuldstændig inkompatibel: MithrilDB kræver et andet (inkompatibelt) databasefilformat og et andet (inkompatibelt) API for at implementere alle planlagte funktioner.
  • Ny kildekode: MithrilDB-kildekoden er blevet licenseret uafhængig af LMDB, og selve projektet er planlagt udgivet under en anden licens (godkendt af ELLER HVIS licenseret Apache 2.0Og ikke OpenLDAP Foundation).
  • Adskillelsen undgår potentiel forvirring, giver mere sikkerhed og sikrer, at projekter har en selvstændig vej fremad.

MithrilDB er ligesom MDBX også baseret på træ B+ og vil også have ekstrem høj ydeevne, samtidig med at en række grundlæggende ulemper ved MDBX og LMDB elimineres. Især problemet med "lange læsninger", som manifesterer sig som "hævelse" af databasen på grund af det faktum, at affaldsbehandling er blokeret af lange læsningstransaktioner, vil blive elimineret. Nye MithrilDB-funktioner inkluderer:

  • understøttelse af placering af databasen på flere heterogene medier: HDD, SSD og ikke-flygtig hukommelse.
  • optimale strategier for "værdifulde" og "lavværdi", for "varme", "varme" og "kolde" data.
  • ved at bruge Merkle tree til at overvåge databaseintegritet.
  • valgfri brug af WAL og markant højere ydeevne i skrivetunge scenarier og dataintegritetsgarantier.
  • Lazy catch-up fiksering af data på diske.

Kilde: linux.org.ru

Tilføj en kommentar