Utgivelse av den kompakte innebygde DBMS libmdbx 0.9.1

Løslatt bibliotekversjon 0.9.1 libmdbx (MDBX) implementering av en høyytelses, kompakt innebygd nøkkelverdi-database. Libmdbx-koden distribueres under en lisens OpenLDAP offentlig lisens.

Den nåværende versjonen er et kompromiss mellom intensjonen om å gi ut en langsiktig stabil versjon 1.0 med full C++-støtte og motviljen til å utsette utgivelser på grunn av uforberedthet for å fryse den nye C++ API. Den presenterte utgivelsen er resultatet av 9 måneders arbeid rettet mot å stabilisere biblioteket og forbedre brukervennligheten, og inkluderer også en foreløpig versjon C ++ API.

Libmdbx-biblioteket er ikke bare en "gaffel", men en radikalt redesignet etterkommer 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 uten en dedikert serverprosess. libmdbx grunnleggende utvides evner til sin forfar, samtidig som de eliminerer eller reduserer ulemper. Samtidig er libmdbx, ifølge utviklerne, litt raskere og betydelig mer pålitelig enn LMDB.

libmdbx foreslår ACID, streng serialisering av endringer og ikke-blokkerende lesing med lineær skalering på tvers av CPU-kjerner. Ytelsestestresultater (sender parallelle lese-/søkeforespørsler i 1-2-4-8 tråder på en CPU i7-4600U med 2 fysiske kjerner i 4-tråds HyperThread-modus):

Utgivelse av den kompakte innebygde DBMS libmdbx 0.9.1

De viktigste forskjellene mellom MDBX og LMDB:

  • I bunn og grunn er det lagt mer vekt på kodekvalitet, API-konsistens, 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 dobbelt så lange taster og brukervalgbar databasesidestørrelse.
  • Et verktøy for å sjekke integriteten til databasestrukturen med noen gjenopprettingsmuligheter.

Hovedinnovasjoner og forbedringer etter tidligere nyheter med introduksjonen av versjon 0.5 i januar 2020:

  • Det er opprettet et åpent system for rask støtte og svar på spørsmål. Telegram gruppe.
  • Mer enn et dusin feil og mangler er eliminert (se. endre logg).
  • Mange skrive- og stavefeil er rettet, og det er gjort en rekke kosmetiske forbedringer.
  • Testscenarier er utvidet.
  • Støtte for iOS, Android, byggerot, musl, uClibc, WSL1 и Vin.
  • C++ API forhåndsvisning utgitt i én overskriftsfil.
  • Innebygd dokumentasjon i Doxygen-format og automatisk generering Online dokumentasjon.
  • Automatisk generering av arkiver med sammenslåtte kildetekster tilbys.
  • Lagt til støtte for å forberede transaksjoner og markører, brukerkontekster for transaksjoner og markører.
  • Ytterligere metoder har blitt implementert for å kontrollere referanseintegritet i B+tree MVCC øyeblikksbilder.
  • Lagt til støtte for å sjekke et MVCC-øyeblikksbilde av databasen, tilgjengelig via enhver metaside med muligheten til å bytte for gjenoppretting.
  • Implementert støtte for gjenåpning av databasen fra én prosess for testformål, etc.
  • Implementerte automatisk behandling av MDBX_NOSUBDIR-alternativet ved åpning av en database.
  • Lagt til funksjoner for å generere heltallsnøkler fra flytende kommaverdier og JavaScript "universelle" tall.
  • Totalt ble det gjort 430 endringer som påvirker 93 filer, mer enn 25 tusen linjer ble lagt til, mer enn 8.5 tusen linjer ble slettet.

Påfølgende utvikling av libmdbx vil fokusere på den endelige C++ API, ytterligere stabilisering av basiskoden, forbedring av brukervennligheten til biblioteket og pakking for populære Linux-distribusjoner. Blant de foreslåtte forbedringene er det verdt å merke seg støtte for nøkler i formatet MessagePack.

Kilde: opennet.ru

Legg til en kommentar