Utgivning av den inbyggda databashanteraren libmdbx 0.13

UtgÄvan av biblioteket libmdbx 0.13.1 (MDBX) har publicerats, med implementeringen av en högpresterande, kompakt inbÀddad nyckel-vÀrde-databas. Koden för libmdbx distribueras under Apache 2.0-licensen. Alla aktuella operativsystem och arkitekturer, inklusive den ryska Elbrus 2000, stöds. För libmdbx erbjuds ett utvecklat API för C++, samt stödjande bindningar för sprÄk som Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno och Scala.

Historiskt sett Àr libmdbx en djup omarbetning av databashanteraren LMDB och övertrÀffar sin föregÄngare i pÄlitlighet, funktionalitet och prestanda. I jÀmförelse med LMDB lÀggs det stor vikt vid kodkvalitet, stabilitet i API:et, testning och automatiska kontroller. En verktyg för integritetskontroll av databasstrukturen levereras med vissa ÄterstÀllningsmöjligheter. Teknologiskt erbjuder libmdbx ACID, strikt serialisering av Àndringar och icke-blockerande lÀsning med linjÀr skalning över CPU-kÀrnor. Automatisk komprimering av data, automatisk hantering av databasens storlek samt skattning av urvalsstorlekar baserat pÄ intervall (range query estimation) stödjs.

Huvudsakliga förÀndringar:

  • Ändring av licens för koden frĂ„n OpenLDAP Public License till Apache 2.0.
  • Utvidgning av API:et för pekare med mer anvĂ€ndarvĂ€nliga och uppenbara positionsoperationer, liknande villkoren <, =, > för bĂ„de nycklar och nyckel-vĂ€rde-par. Funktionerna mdbx_cursor_unbind() och mdbx_txn_release_all_cursors() har lagts till för flexibel hantering av pekare i Ă„teranvĂ€ndningsscenarier för att minska overhead. Funktionerna mdbx_cursor_scan() och mdbx_cursor_scan_from() för att skanna tabeller med hjĂ€lp av en funktionell predikat och för att minska dĂ€rmed kopplad overhead.
  • Omarbetning av pekare för att förena beteendet, mer konsekvent kod och minska antalet förgreningar och maskinoperationer.
  • Flytt av funktionaliteten hos verktyget mdbx_chk inuti biblioteket som funktionen mdbx_env_chk() för att kontrollera databasstrukturens integritet, inklusive involverande av applikationslogik.
  • Alternativet MDBX_opt_gc_time_limit för mer flexibel kontroll över den tid som spenderas pĂ„ att söka efter följd av intilliggande fria sidor i GC.
  • Betydande minskning av overheadkostnader för att starta transaktioner i scenarier med ett stort antal DBI-handtag, genom fördröjd/lazier initialisering av elementen i hjĂ€lptabeller. Detta inkluderar en mekanism för att stödja sparade DBI-handtag, som styrs av byggalternativet MDBX_ENABLE_DBI_SPARSE, vilket Ă€r aktiverat som standard.
  • Minskning av overheadkostnader för öppning av DBI-handtag. Detta inkluderar en mekanism för fördröjd frigöring och stöd för snabb öppning utan att anvĂ€nda lĂ„s, som styrs av byggalternativet MDBX_ENABLE_DBI_LOCKFREE, vilket Ă€r aktiverat som standard.
  • Stöd för "parkering" av lĂ€sande transaktioner med deras utryckande för att Ă„teranvĂ€nda gamla MVCC-snapshotar och förhindra problem som uppstĂ„r vid tillfĂ€llig fördröjning av skrĂ€putvinning. Mekanismen för parkering och utryckande av parkerade transaktioner Ă€r bĂ„de ett komplement och en enklare alternativ till callbacken Handle-Slow-Readers. För bekvĂ€mlighet har funktionerna mdbx_txn_park() och mdbx_txn_unpark() ytterligare argument som gör det möjligt att begĂ€ra automatisk "avparkering" av parkerade och omstart av utryckta transaktioner. Relevanta alternativ -d och -p har lagts till i verktyget mdbx_copy.
  • Stöd för Ă„terstĂ€llning av en öppen databasarbetsmiljö i ett barnprocess efter förgrening/uppdelning av processen via mdbx_env_resurrect_after_fork().
  • Stöd för att döpa om tabeller via mdbx_dbi_rename() och mdbx_dbi_rename2(). En funktion mdbx_enumerate_tables() har lagts till för att fĂ„ information om namngivna anvĂ€ndartabeller.
  • DriftlĂ€ge MDBX_NOSTICKYTHREADS istĂ€llet för MDBX_NOTLS för att förenkla integrationen med lĂ€tta trĂ„dar/multiplexing av dessa tillsammans med operativsystemets trĂ„dtransaktioner.
  • För identifiering av databasen har UUID lagts till, tillgĂ€ngligt i fĂ€ltet mi_dxbid i strukturen MDBX_envinfo, som erhĂ„lls via mdbx_env_info_ex(). Implementerat att hĂ€mta databasinformation utan att öppna den via mdbx_preopen_snapinfo().
  • Stöd för callback-loggfunktioner utan vprintf()-funktionalitet, vilket avsevĂ€rt underlĂ€ttar anvĂ€ndningen av loggning i bindningar till andra programmeringssprĂ„k.
  • TillĂ€gg av funktionerna mdbx_txn_copy2pathname() och mdbx_txn_copy2fd() till API:et.
  • Ommöblering av kĂ€llkoden med refaktorering.
  • AnvĂ€ndning av termen "tabell" istĂ€llet för "subDb".
  • FörĂ„ldrade MDBX_COALESCE och MDBX_NOTLS alternativ har meddelats. Byter ut byggalternativet MDBX_USE_VALGRIND mot det allmĂ€nt accepterade ENABLE_MEMCHECK.

KĂ€lla: opennet.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster