Udgivelsen af den indlejrede DBMS libmdbx 0.13.2

Udgivet er version 0.13.2 af libmdbx-biblioteket (MDBX) med implementeringen af en højtydende, kompakt, indbygget nøgle-værdi-database. Koden for libmdbx distribueres under Apache 2.0-licensen. Alle relevante operativsystemer og arkitekturer understøttes, herunder den russiske Elbrus 2000. Der tilbydes et udviklet API for C++, samt understøttede bindinger til sprog som Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno og Scala.

Historisk set er libmdbx en dybgenarbejdning af DBMS LMDB og overgår sin forgænger i pålidelighed, funktionssæt og ydeevne. Sammenlignet med LMDB lægges der i libmdbx stor vægt på kodekvalitet, stabil drift af API, testning og automatiserede kontroller. Der leveres et værktøj til kontrol af databasens integritet med nogle genopretningsmuligheder. Teknologisk tilbyder libmdbx ACID, streng serialisering af ændringer og ikke-blokerende læsning med lineær skalering på CPU-kerner. Auto-komprimering, automatisk management af databasedimensioner og estimering af udvalg over områder (range query estimation) understøttes.

Vigtige ændringer:

  • Opdateringen af GC er blevet accelereret ved tilbagelevering/placering af side-lister i komplekse scenarier. Den tidligere deaktiverede eksperimentelle feedback-korrektionsmode er blevet forbedret og aktiveret. Dette har fundamentalt forbedret konvergensen (antal gentagne forsøg er reduceret) og har elimineret en fejl, der førte til 'uendelig løkke' ved transaktionslåsning (med tilbageføring af MDBX_PROBLEM-fejl) under sjældne, specifikke forhold.
  • CMake-samlescripts inkluderer nu standarden C23.
  • T-makroer til parrede funktioner char/wchar_t er blevet tilføjet.
  • C++ API'en har fået support til indlejrede skrive-transaktioner.
  • Der er foretaget overgangen til det andet reviderede semantic versioning-specifikation ('Semantic Versioning 2') og sikret eksport af versionsinformation til VERSION.json.
  • For at sikre reproducerbarhed af builds er der tilføjet support til miljøvariablen SOURCE_DATE_EPOCH. Støtten til MDBX_BUILD_TIMESTAMP er bevaret, og denne variable har prioritet.
  • Muligheden for at angive yderligere information om libmdbx-build er blevet tilføjet gennem mulighed for MDBX_BUILD_METADATA. Den nuværende information inkluderes simpelthen i biblioteket som værdien mdbx_build.metadata, og vil senere blive brugt ved pakkeopbygning og lignende.
  • Fejllogning, der returneres fra API'en, er blevet tilføjet. Nu er det tilstrækkeligt at angive loggeniveauet MDBX_LOG_DEBUG (for at logge fejl bortset fra MDBX_NOTFOUND) eller MDBX_LOG_TRACE (for at logge alle fejl samt MDBX_RESULT_TRUE).
  • Ændring af adfærd:
    • Metoden mdbx::cursor::get_multiple_samelength() er blevet tilføjet, og mdbx::txn::put_multiple_samelength() er blevet omdøbt.
    • For ensartethed i C++ API'en returneres der nu også værdien af selve nøglen, når operationen MDBX_GET_MULTIPLE udføres.
    • For størrelseskonstanter mdbx::env::geometry er basisdatatypen ændret fra unsigned size_t til signed intptr_t.
    • Valget af at bruge ntdll i stedet for CRT træffes nu kun, når C++ API'en udtrykkeligt deaktiveres.
    • Hukommelsesfrigivelse for annullerede / afbrudte læsetransaktioner, der sendes til mdbx_txn_commit(), er sikret. API-aftalen kræver, at sådanne transaktioner frigives via mdbx_txn_abort(), hvilket medførte, at funktionen mdbx_txn_commit() gav en fejl i disse tilfælde uden at ødelægge selve transaktionerne. Dette førte til hukommelseslækager på grund af fejl i programmerne, hvilket fik os til at ændre adfærden.
    • Brug af makroen __deprecated_enum, hvis den er defineret.
    • Ved bygning via CMake vælges standardsproget C nu i overensstemmelse med CMAKE_C_STANDARD.

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