Utgivelse av høyytelses innebygd DBMS libmdbx 0.11.3

Libmdbx 0.11.3 (MDBX)-biblioteket ble utgitt med implementeringen av en kompakt innebygd nøkkelverdidatabase med høy ytelse. Libmdbx-koden er lisensiert under OpenLDAP Public License. Alle gjeldende operativsystemer og arkitekturer støttes, så vel som den russiske Elbrus 2000. På slutten av 2021 brukes libmdbx som en lagringsbackend i de to raskeste Ethereum-klientene - Erigon og den nye "Shark", som ifølge tilgjengelig informasjon, er Ethereum-klienten med høyest ytelse.

Historisk sett er libmdbx en dyp omarbeiding av LMDB DBMS og er overlegen sin forfedre når det gjelder pålitelighet, funksjonssett og ytelse. Sammenlignet med LMDB legger libmdbx mye vekt på kodekvalitet, API-stabilitet, testing og automatiserte kontroller. Et verktøy for å sjekke integriteten til databasestrukturen med noen gjenopprettingsfunksjoner er levert.

Teknologimessig tilbyr libmdbx ACID, sterk endringsserialisering og ikke-blokkerende lesninger med lineær skalering på tvers av CPU-kjerner. Automatisk komprimering, automatisk administrasjon av databasestørrelser og estimering av rekkeviddespørringer støttes. Siden 2016 har prosjektet blitt finansiert av Positive Technologies og har blitt brukt i produktene siden 2017.

libmdbx tilbyr en C++ API, samt entusiaststøttede språkbindinger for Rust, Haskell, Python, NodeJS, Ruby, Go og Nim.

Store innovasjoner, forbedringer og rettelser lagt til siden forrige nyhet 11. oktober:

  • C++ API anses som klar til bruk.
  • Oppdateringen av GC-data når du utfører store transaksjoner har blitt betydelig akselerert, noe som er spesielt viktig når du bruker libmdbx i Ethereum-økosystemet.
  • Den interne signaturen til databaseformatet er endret for å støtte automatisk oppdatering, som er helt gjennomsiktig for brukerne. Dette lar deg eliminere falske positive meldinger om databasekorrupsjon når utdaterte versjoner av biblioteket brukes til å lese transaksjoner registrert av gjeldende versjoner.
  • Lagt til funksjoner mdbx_env_get_syncbytes(), mdbx_env_get_syncperiod() og mdbx_env_get_syncbytes(). Lagt til støtte for MDBX_SET_UPPERBOUND-operasjonen.
  • Alle advarsler når du bygger med alle støttede kompilatorer i C++ 11/14/17/20-moduser er eliminert. Kompatibilitet med eldre kompilatorer er sikret: klang fra 3.9, gcc fra 4.8, inkludert montering ved bruk av cdevtoolset-9 for CentOS/RHEL 7.
  • Rettet muligheten for en metasidekonflikt etter manuelt bytte til en spesifikk metaside ved å bruke mdbx_chk-verktøyet.
  • Rettet uventet MDBX_PROBLEM-feil som ble returnert ved overskriving av eldre metasider.
  • Rettet returnering av MDBX_NOTFOUND i tilfelle et unøyaktig samsvar ved behandling av en MDBX_GET_BOTH-forespørsel.
  • Rettet en kompileringsfeil på Linux i fravær av overskriftsfiler med beskrivelser av grensesnitt med kjernen.
  • Rettet en konflikt mellom det interne flagget MDBX_SHRINK_ALLOWED og alternativet MDBX_ACCEDE.
  • Flere unødvendige påstandssjekker er eliminert.
  • Rettet uventet retur av MDBX_RESULT_TRUE fra funksjonen mdbx_env_set_option().
  • Totalt ble det gjort mer enn 90 endringer i 25 filer, ~1300 linjer ble lagt til, ~600 ble slettet.

Kilde: opennet.ru

Legg til en kommentar