til test af den anden kandidat til udgivelserne af biblioteket med implementeringen af en højtydende, kompakt indlejret nøgle-værdi database. Den nuværende version (0.5) er en teknisk udgave, der markerer afslutningen på eventuelle forbedringer og overgangen til fasen for offentlig afsluttende testning og stabilisering, med efterfølgende dannelse af den første fuldt funktionelle udgave af biblioteket. Koden til libmdbx er under OpenLDAP Public License.
MDBX-biblioteket er en væsentligt revideret variant af — en transaktionel indlejret DBMS af "nøgle-værdi" typen baseret på uden , som muliggør, at flertrådet processer kan arbejde effektivt og samtidig med en lokalt delt (ikke-netværk) database. MDBX er hurtigere og mere pålidelig end LMDB, samtidig med at den bevarer alle de vigtigste funktioner fra sin forfader, såsom og ikke-blokerende læsning med lineær skaleringskapacitet pr. CPU-kerne.
De vigtigste forskelle på MDBX i forhold til LMDB:
- 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.
- Estimering af udvalg volume baseret på intervaller (range query estimation).
- Understøttelse af nøgler med dobbelt så stor størrelse og brugerdefineret størrelse af database sider.
Den udgivne kandidat til udgivelserne af libmdbx er resultatet af beslutningen om at adskille projekterne MDBX og MithrilDB, der blev truffet i august 2019. Det blev besluttet at eliminere (rationel) maksimalt teknisk gæld og stabilisere biblioteket. Faktisk er der gjort 2-3 gange mere i den nævnte retning, end der blev vurderet og planlagt oprindeligt:
- Understøttelse af macOS og "anden generations" platforme: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. Understøttelse af AIX og HP-UX kan tilføjes efter behov.
- Koden er blevet saneret ved brug af Undefined Behavior Sanitizer og Address Sanitizer, alle advarsler ved bygning med "-Wpedantic" er blevet fjernet, og alle advarsler fra Coverity Static Analyzer osv.
- Opdatering af .
- Sammenlægning (amalgamering) af kildekoden 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).
- Sammenhængende tælling 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 ved deres tilgængelighed.
- Hot backup i pipe.
- Specialiseret optimeret algoritme til indvendig 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 undgå databasedefekter ved forkert anvendelse.
- Udvidet testudvalg.
Udviklingen af den 'næste' version af libmdbx vil fortsætte inden for et separat projekt , 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 Apache 2.0 licens, ikke ).
- Opdelingen gør det muligt at undgå potentiel forvirring, skabe mere klarhed og sikre uafhængighed i udviklingsvejen for projekterne.
MithrilDB, ligesom MDBX, er også baseret på 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 databasen på flere heterogene medier: HDD, SSD og ikke-flygtig hukommelse.
- Optimale strategier for 'værdifulde' og 'mindre værdifulde', for 'aktive', 'lune' og 'kolde' data.
- Brug af Merkle-træ til at kontrollere databasens integritet.
- Valgfri brug af WAL og væsentligt højere ydeevne i scenarier med intensiv skrivning og garantier for dataintegritet.
- Lazy catch-up data retention på diske.
Kilde: opennet.ru
