Release av högpresterande inbäddad DBMS libmdbx 0.11.3

Biblioteket libmdbx 0.11.3 (MDBX) släpptes med implementeringen av en högpresterande kompakt inbäddad nyckel-värdesdatabas. Libmdbx-koden är licensierad under OpenLDAP Public License. Alla nuvarande operativsystem och arkitekturer stöds, liksom ryska Elbrus 2000. I slutet av 2021 används libmdbx som lagringsbackend i de två snabbaste Ethereum-klienterna - Erigon och den nya "Shark", som enligt tillgängligt information, är den högst presterande Ethereum-klienten.

Historiskt sett är libmdbx en djup omdesign av LMDB DBMS och överträffar dess stamfader när det gäller tillförlitlighet, funktionsuppsättning och prestanda. Jämfört med LMDB lägger libmdbx stor vikt vid kodkvalitet, API-stabilitet, testning och automatiserade kontroller. Ett verktyg för att kontrollera databasstrukturens integritet levereras med några återställningsalternativ.

Teknikmässigt erbjuder libmdbx ACID, stark serialisering av förändringar och icke-blockerande läsningar med linjär skalning över CPU-kärnor. Automatisk komprimering, automatisk databasstorlekshantering och uppskattning av intervallfrågor stöds. Sedan 2016 har projektet finansierats av Positive Technologies och har använts i dess produkter sedan 2017.

libmdbx erbjuder ett C++ API, såväl som språkbindningar som stöds av entusiaster för Rust, Haskell, Python, NodeJS, Ruby, Go och Nim.

Stora innovationer, förbättringar och korrigeringar som lagts till sedan den tidigare nyheten den 11 oktober:

  • C++ API anses vara redo att användas.
  • Uppdateringen av GC-data när man genomför enorma transaktioner har påskyndats avsevärt, vilket är särskilt viktigt när man använder libmdbx i Ethereum-ekosystemet.
  • Databasformatets interna signatur har ändrats för att stödja automatisk uppdatering, vilket är helt transparent för användarna. Detta gör att du kan eliminera falskt positiva meddelanden om databaskorruption när föråldrade versioner av biblioteket används för att läsa transaktioner som registrerats av aktuella versioner.
  • Lade till funktionerna mdbx_env_get_syncbytes(), mdbx_env_get_syncperiod() och mdbx_env_get_syncbytes(). Lade till stöd för MDBX_SET_UPPERBOUND-operationen.
  • Alla varningar när man bygger med alla kompilatorer som stöds i C++ 11/14/17/20-lägen har eliminerats. Kompatibilitet med äldre kompilatorer säkerställs: klang från 3.9, gcc från 4.8, inklusive montering med cdevtoolset-9 för CentOS/RHEL 7.
  • Fixade möjligheten för en metasidakonflikt efter att manuellt byta till en specifik metasida med hjälp av verktyget mdbx_chk.
  • Fixat ett oväntat MDBX_PROBLEM-fel som returneras vid överskrivning av äldre metasidor.
  • Fixade att returnera MDBX_NOTFOUND i händelse av en inexakt matchning vid bearbetning av en MDBX_GET_BOTH-förfrågan.
  • Fixat ett kompileringsfel på Linux i avsaknad av header-filer med beskrivningar av gränssnitt med kärnan.
  • Fixade en konflikt mellan den interna flaggan MDBX_SHRINK_ALLOWED och alternativet MDBX_ACCEDE.
  • Flera onödiga påståendekontroller har eliminerats.
  • Fixat oväntad retur av MDBX_RESULT_TRUE från mdbx_env_set_option()-funktionen.
  • Totalt gjordes mer än 90 ändringar i 25 filer, ~1300 rader lades till, ~600 raderades.

Källa: opennet.ru

Lägg en kommentar