Frigivelse af højtydende indlejret DBMS libmdbx 0.11.3

Biblioteket libmdbx 0.11.3 (MDBX) blev frigivet med implementeringen af ​​en højtydende kompakt indlejret nøgleværdidatabase. Libmdbx-koden er licenseret under OpenLDAP Public License. Alle nuværende operativsystemer og arkitekturer understøttes, samt den russiske Elbrus 2000. I slutningen af ​​2021 bruges libmdbx som storage backend i de to hurtigste Ethereum-klienter - Erigon og den nye "Shark", som ifølge tilgængelig information, er den højeste ydeevne Ethereum-klient.

Historisk set er libmdbx et dybt redesign af LMDB DBMS og overgår dets stamfader med hensyn til pålidelighed, funktionssæt og ydeevne. Sammenlignet med LMDB lægger libmdbx meget vægt på kodekvalitet, API-stabilitet, test og automatiserede kontroller. Et værktøj til kontrol af databasestrukturens integritet leveres med nogle gendannelsesmuligheder.

Teknologimæssigt tilbyder libmdbx ACID, stærk ændringsserialisering og ikke-blokerende læsninger med lineær skalering på tværs af CPU-kerner. Auto-komprimering, automatisk databasestørrelsesstyring og estimering af rækkeviddeforespørgsler understøttes. Siden 2016 har projektet været finansieret af Positive Technologies og har været brugt i dets produkter siden 2017.

libmdbx tilbyder en C++ API samt entusiast-understøttede sprogbindinger til Rust, Haskell, Python, NodeJS, Ruby, Go og Nim.

Større innovationer, forbedringer og rettelser tilføjet siden den forrige nyhed den 11. oktober:

  • C++ API anses for at være klar til brug.
  • Opdateringen af ​​GC-data, når du begår enorme transaktioner, er blevet betydeligt fremskyndet, hvilket er særligt vigtigt, når du bruger libmdbx i Ethereum-økosystemet.
  • Den interne signatur af databaseformatet er blevet ændret til at understøtte automatisk opdatering, som er fuldstændig gennemsigtig for brugerne. Dette giver dig mulighed for at eliminere falsk-positive meddelelser om databasekorruption, når forældede versioner af biblioteket bruges til at læse transaktioner registreret af aktuelle versioner.
  • Tilføjede funktioner mdbx_env_get_syncbytes(), mdbx_env_get_syncperiod() og mdbx_env_get_syncbytes(). Tilføjet understøttelse af MDBX_SET_UPPERBOUND operationen.
  • Alle advarsler ved bygning med alle understøttede compilere i C++ 11/14/17/20-tilstande er blevet elimineret. Kompatibilitet med ældre compilere er sikret: clang fra 3.9, gcc fra 4.8, inklusive samling ved hjælp af cdevtoolset-9 til CentOS/RHEL 7.
  • Rettede muligheden for en metasidekonflikt efter manuelt at skifte til en specifik metaside ved hjælp af mdbx_chk-værktøjet.
  • Rettet uventet MDBX_PROBLEM-fejl, der blev returneret ved overskrivning af ældre metasider.
  • Rettet returnering af MDBX_NOTFOUND i tilfælde af en upræcis match ved behandling af en MDBX_GET_BOTH-anmodning.
  • Rettede en kompileringsfejl på Linux i mangel af header-filer med beskrivelser af grænseflader med kernen.
  • Rettede en konflikt mellem MDBX_SHRINK_ALLOWED interne flag og MDBX_ACCEDE-indstillingen.
  • Adskillige unødvendige påstandskontroller er blevet elimineret.
  • Rettet uventet returnering af MDBX_RESULT_TRUE fra mdbx_env_set_option()-funktionen.
  • I alt blev der foretaget mere end 90 ændringer i 25 filer, ~1300 linjer blev tilføjet, ~600 blev slettet.

Kilde: opennet.ru

Tilføj en kommentar