Den anden kandidat til udgivelserne af libmdbx v1.0 efter fem års udvikling.

Bibliotek libmdbx er en væsentligt forbedret efterkommer af LMDB - en ekstremt højtydende, kompakt indlejret nøgle-værdi database.
Den aktuelle version v0.5 er en teknisk udgivelse, der markerer afslutningen på eventuelle forbedringer og overgangen til fasen for offentlig sluttestning og stabilisering, med efterfølgende dannelse af den første fuldgyldige udgivelse af biblioteket.

LMDB er en velkendt transaktionel indlejret DBMS af typen 'nøgle-værdi' baseret på B+-træ uden foregribende journalisering, som tillader en gruppe af multitrådede processer at arbejde konkurrelt og ekstremt effektivt med en lokalt delt (ikke-netværksbaseret) database. På den anden side er MDBX hurtigere og mere pålidelig end LMDB, samtidig med at libmdbx bevarer alle nøglefunktioner fra sit forfader, såsom ACID og ikke-blokerende læsning med lineær skalering over CPU-kerner, samt tilføjer flere nye.

Beskrivelsen af forskellene og forbedringerne af libmdbx i forhold til LMDB fortjener en særskilt artikel (publikationen er planlagt på 'Habr' og 'Medium'). Her skal de vigtigste og mest bemærkelsesværdige nævnes:

  • Der lægges principielt større vægt på kodekvalitet, testning og automatiserede kontroller.
  • Der er væsentligt mere kontrol under drift, fra parameterkontrol til intern revision af databasens strukturer.
  • Automatisk komprimering og automatisk styring af databasen størrelse.
  • Enkelt databaseformat for 32-bit og 64-bit versioner.
  • Vurdering af udvalgsvolumen efter intervaller (range query estimation).
  • Understøttelse af nøgler med dobbelt så stor størrelse og brugerdefineret størrelse af database sider.

Den frigivne kandidat-version af libmdbx er resultatet af beslutningen (se nedenfor) om at adskille projekterne MDBX og MithrilDB i august 2019. I denne forbindelse blev det besluttet at fjerne (rationelt) maksimum af teknisk gæld og stabilisere biblioteket. Faktisk er der gjort 2-3 gange mere i den nævnte retning, end vurderet og planlagt oprindeligt:

  • Der er implementeret support til Mac OS og 'anden niveau' platforme: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. Support til AIX og HP-UX kan tilføjes efter behov.
  • Koden er blevet saneret ved hjælp af Undefined Behavior Sanitizer og Address Sanitizer, og alle advarsler under kompilering med -Wpedantic, alle advarsler fra Coverity Static Analyzer osv. er fjernet.
  • Opdatering af API-beskrivelsen.
  • Amalgamering af kildekode for nem integration.
  • Understøttelse af CMake.
  • Understøttelse af indlejrede transaktioner.
  • Brug af bootid til at bestemme, om OS er genstartet (beskidt stop af databasen).
  • Krydsning af opdaterede/gamle sider og udvidet information om transaktioner.
  • MDBX_ACCEDE-optionen til at oprette forbindelse til en allerede åben database i kompatibel tilstand.
  • Brugen af OFD-låsninger ved deres tilgængelighed.
  • Hot backup i pipe.
  • Specialiseret optimeret algoritme til intern sortering (op til 2-3 gange hurtigere end qsort() og op til 30 % hurtigere end std::sort()).
  • Maksimal nøglens længde er forøget.
  • Automatisk styring af read ahead (cache-strategi for databasen i hukommelsen).
  • Mere aggressiv og hurtigere auto-kompakttering.
  • Mere optimal strategi for sammenfletning af B+-træ sider.
  • Kontrol af ikke-lokale filsystemer (NFS, Samba osv.) for at forhindre beskadigelse af databasen ved forkert brug.
  • Udvidet testudvalg.

Udviklingen af den 'næste' version af libmdbx vil fortsætte inden for et separat projekt MithrilDB, mens udviklingsretningen for den 'nuværende' version af MDBX er rettet mod at binde sæt af funktioner og stabilisering. Denne beslutning er taget af tre grunde:

  • Komplett inkompatibilitet: For at implementere alle planlagte funktioner i MithrilDB kræves et andet (inkompatibelt) databasenhedsformat og et andet (inkompatibelt) API.
  • Ny kildekode: Kildekoden til MithrilDB sikrer licens-uafhængighed fra LMDB, og selve projektet planlægges udgivet under en anden licens (godkendt OSI licens Apache 2.0, ikke OpenLDAP Foundation).
  • Deling hjælper med at undgå potentielle misforståelser, giver mere klarhed og sikrer uafhængighed i udviklingen af projekter.

MithrilDB, ligesom MDBX, er også baseret på B+-træet og vil også have ekstremt høj ydeevne, samtidig med at det eliminerer en række fundamentale ulemper ved MDBX og LMDB. Især vil problemet med 'lange læsninger', der viser sig som 'oppustning' af databasen på grund af, at affaldsbehandling blokeres af lange læse-transaktioner, blive løst. Blandt de nye egenskaber ved MithrilDB skal nævnes:

  • understøttelse af placering af databaser på flere heterogene medier: HDD, SSD og energifri hukommelse.
  • optimale strategier for "dyre" og "billige", for "varme", "lune" og "kolde" data.
  • brug af Merkle-træ til kontrol af databasens integritet.
  • valgfri brug af WAL og væsentligt højere ydelse i scenarier med intensiv skrivning og garantier for dataintegritet.
  • forsinket efterfølgende registrering af data på diske.

Kilde: linux.org.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster