Etter fem år med utvikling har den andre utgivelseskandidaten for libmdbx 1.0 blitt publisert

Tilgjengelig for å teste den andre kandidaten for bibliotekutgivelser libmdbx med implementering av en høyytelses, kompakt innebygd nøkkelverdi-database. Den nåværende versjonen (0.5) er en teknisk utgivelse, markerer fullføringen av eventuelle forbedringer og overgangen til fasen med offentlig slutttesting og stabilisering, med den påfølgende dannelsen av den første fullstendige utgivelsen av biblioteket. libmdbx kode distribuert av lisensiert under OpenLDAP Public License.

MDBX-biblioteket er en betydelig revidert gaffel fra LMDB — transaksjonelt innebygd DBMS av klassen "nøkkelverdi" basert på tre B+ без proaktiv logging, som lar flertrådede prosesser fungere konkurransedyktig og effektivt med en lokalt delt (ikke nettverk) database. I sin tur er MDBX raskere og mer pålitelig enn LMDB, og beholder samtidig alle hovedtrekkene til sin forfar, som f.eks. ACID og ikke-blokkerende avlesninger med lineær skalering over CPU-kjerner.

De viktigste forskjellene mellom MDBX og LMDB:

  • I bunn og grunn er det lagt mer vekt på kodekvalitet, testing og automatiske kontroller.
  • Betydelig mer kontroll under drift, fra parameterkontroll til intern revisjon av databasestrukturer.
  • Automatisk komprimering og automatisk databasestørrelsesadministrasjon.
  • Et enkelt databaseformat for 32-biters og 64-biters sammenstillinger.
  • Estimering av prøvevolumer etter områder (estimat av rekkeviddespørring).
  • Støtte for nøkler som er dobbelt så store som pannekaker og brukervalgbar databasesidestørrelse.

Libmdbx-utgivelseskandidaten er resultatet av en beslutning tatt i august 2019 om å skille MDBX- og MithrilDB-prosjektene. Samtidig bestemte libmdbx seg for å eliminere den (rasjonelle) maksimale tekniske gjelden og stabilisere biblioteket. Faktisk har det blitt gjort 2-3 ganger mer i den angitte retningen enn det som opprinnelig ble estimert og planlagt:

  • Støtte for macOS og andre plattformer er implementert: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. AIX- og HP-UX-støtte kan legges til etter behov.
  • Koden ble renset med Undefined Behavior Sanitizer og Address Sanitizer, alle advarsler ved bygging med "-Wpedantic", alle Coverity Static Analyzer-advarsler osv. ble eliminert.
  • Oppdater API-beskrivelser.
  • Sammenslåing (sammenslåing) av kildekode for enkel innebygging.
  • CMake støtte.
  • Støtte for nestede transaksjoner.
  • Bruke bootid for å finne ut om operativsystemet har startet på nytt (skitten nedleggelse av databasen).
  • End-to-end telling av oppdaterte/gamle sider og utvidet transaksjonsinformasjon.
  • MDBX_ACCEDE alternativ for å koble til en allerede åpen database i kompatibel modus.
  • Bruk OFD låser etter deres tilgjengelighet.
  • Varm backup i rør.
  • Spesialisert optimert intern sorteringsalgoritme (opptil 2-3 ganger raskere enn “qsort()” og opptil 30 % raskere enn “std::sort()”).
  • Økt maksimal nøkkellengde.
  • Automatisk kontroll over lesing fremover (in-memory database file caching strategi).
  • Mer aggressiv og raskere automatisk komprimering.
  • En mer optimal strategi for å slå sammen B+ tresider.
  • Kontroll av ikke-lokale filsystemer (NFS, Samba, etc.) for å forhindre databaseskade ved feil bruk.
  • Utvidet testpakke.

Utvikling av «neste» versjon av libmdbx vil fortsette som et eget prosjekt MithrilDB, mens utviklingsvektoren til den "gjeldende" versjonen av MDBX er rettet mot å fryse funksjonssettet og stabilisere. Denne avgjørelsen ble tatt av tre grunner:

  • Total inkompatibilitet: MithrilDB krever et annet (inkompatibelt) databasefilformat og et annet (inkompatibelt) API for å implementere alle de planlagte funksjonene.
  • Ny kildekode: MithrilDB-kildekoden er lisensuavhengig av LMDB, og selve prosjektet er planlagt publisert under en annen lisens (godkjent av OSI Apache 2.0-lisens, ikke OpenLDAP offentlig lisens).
  • Separasjonen unngår potensiell forvirring, introduserer mer sikkerhet og sikrer en uavhengig vei for prosjekter.

MithrilDB, som MDBX, er også basert på tre B+ og vil også være preget av ekstremt høy ytelse, samtidig som den eliminerer en rekke grunnleggende mangler ved MDBX og LMDB. Spesielt vil problemet med "lange lesninger", som manifesterer seg som "hevelse" av databasen på grunn av at søppelbehandling blokkeres av langlesende transaksjoner, elimineres. Nye MithrilDB-funksjoner inkluderer:

  • Støtte for å plassere databasen på flere heterogene medier: HDD, SSD og ikke-flyktig minne.
  • Optimale strategier for «verdifull» og «lav verdi», for «varm», «varm» og «kald» data.
  • Bruker Merkle-treet for å overvåke databaseintegritet.
  • Valgfri bruk av WAL og betydelig forbedret ytelse i skriveintensive scenarier med dataintegritetsgarantier.
  • Lat innhenting av data til disker.

Kilde: opennet.ru

Legg til en kommentar