Udgivelsen af den højtydende indbyggede database libmdbx 0.11.3

Biblioteket libmdbx 0.11.3 (MDBX) er blevet udgivet med implementeringen af en højtydende, kompakt indbygget nøgle-værdi database. Koden til libmdbx distribueres under OpenLDAP Public License. Alle aktuelle operativsystemer og arkitekturer understøttes, samt den russiske Elbrus 2000. Ved udgangen af 2021 blev libmdbx brugt som lager-backend i de to hurtigste Ethereum-klienter — Erigon og den nye «Haj», som ifølge tilgængelige oplysninger er den mest højtydende Ethereum-klient.

Historisk set er libmdbx en dyb omarbejdning af databasen LMDB og overgår sin forgænger i pålidelighed, funktionalitet og ydeevne. I forhold til LMDB lægger libmdbx stor vægt på kodekvalitet, stabilt API-arbejde, testning og automatiske tjek. Der medfølger et værktøj til at kontrollere databasens strukturintegritet med nogle genoprettelsesmuligheder.

Teknologisk set tilbyder libmdbx ACID, streng serialisering af ændringer og ikke-blokerende læsning med lineær skalering over CPU-kerner. Autokompaktering understøttes, automatisk database-størrelsesstyring og estimering af udvalg efter intervaller (range query estimation). Siden 2016 er projektet blevet finansieret af Positive Technologies, og fra 2017 er det blevet brugt i deres produkter.

Der tilbydes et C++ API til libmdbx, samt understøttede bindinger til programmeringssprog som Rust, Haskell, Python, NodeJS, Ruby, Go og Nim.

De vigtigste nyheder, opdateringer og rettelser tilføjet siden den forrige nyhed den 11. oktober:

  • C++ API'et anses for at være klar til brug.
  • Opdateringen af GC-data er væsentligt hurtigere ved fastsættelse af store transaktioner, hvilket er særlig relevant ved brug af libmdbx i Ethereum-økosystemet.
  • Den interne signatur af databaseformatet er blevet ændret med støtte til automatisk opdatering, der er helt gennemsigtig for brugerne. Dette gør det muligt at udelukke falsk-positive meddelelser om beskadigede databaser, når forældede versioner af biblioteket bruges til at læse transaktioner, der er bekræftet af de nyeste versioner.
  • Funktionerne mdbx_env_get_syncbytes(), mdbx_env_get_syncperiod() og mdbx_env_get_syncbytes() er tilføjet. Støtte til operationen MDBX_SET_UPPERBOUND er tilføjet.
  • Alle advarsler under byggeri er blevet fjernet for alle understøttede compilere i C++ 11/14/17/20. Kompatibilitet med ældre compilere er sikret: clang fra 3.9, gcc fra 4.8, inklusive bygning ved hjælp af devtoolset-9 til CentOS/RHEL 7.
  • Muligheden for konflikt mellem meta-sider er blevet elimineret efter manuel skift til en bestemt meta-side ved hjælp af værktøjet mdbx_chk.
  • Uventet fejl MDBX_PROBLEM ved overskrivning af ældre meta-sider er blevet rettet.
  • MDBX_NOTFOUND returneres korrekt ved unøjagtig match i behandlingen af forespørgslen MDBX_GET_BOTH.
  • Byggefejl på Linux i fravær af header filer med beskrivelse af interface med kernen er blevet rettet.
  • Kollisionen mellem den interne flag MDBX_SHRINK_ALLOWED og indstillingen MDBX_ACCEDE er blevet løst.
  • Flere unødvendige assert-tjek er blevet fjernet.
  • Uventet returnering af MDBX_RESULT_TRUE fra funktionen mdbx_env_set_option() er blevet rettet.
  • I alt er der blevet foretaget over 90 ændringer i 25 filer, tilføjet ~1300 linjer og fjernet ~600.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster