Utgave av innebygd DBMS libmdbx 0.13

Utgitt versjon 0.13.1 av libmdbx-biblioteket (MDBX) med implementering av en høytytende, kompakt, innebygd nøkkel-verdi database. Koden til libmdbx distribueres under Apache 2.0-lisensen. Alle moderne operativsystemer og arkitekturer støttes, inkludert den russiske Elbrus 2000. Libmdbx tilbyr et utviklet API for C++, samt støttede bindeledninger for språkene Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno og Scala.

Historisk sett er libmdbx en dyp omarbeiding av databasesystemet LMDB og overgår sin forgjenger når det gjelder pålitelighet, funksjonalitet og ytelse. I motsetning til LMDB legger libmdbx stor vekt på kvaliteten på koden, stabiliteten i API-et, testing og automatiserte kontroller. Et verktøy for å sjekke databasens struktur leveres med enkelte gjenopprettingsmuligheter. Teknologisk tilbyr libmdbx ACID, streng serialisering av endringer, og ikke-blokkerende lesing med lineær skalerbarhet over CPU-kjerner. Automatisk komprimering, automatisk håndtering av databasestørrelsen, samt vurdering av utvalg etter intervaller (range query estimation) støttes.

Hovedendringer:

  • Endring av lisensen for koden fra OpenLDAP Public License til Apache 2.0.
  • Utvidelse av API for markører med mer bekvemme og åpenbare posisjoneringsoperasjoner, analogt til betingelsene <, =, > for både nøkler og nøkkel-verdi-par. Funktionene mdbx_cursor_unbind() og mdbx_txn_release_all_cursors() er lagt til for fleksibel håndtering av markører i gjenbruks-scenarier for å redusere overhead. Funksjonene mdbx_cursor_scan() og mdbx_cursor_scan_from() for scanning av tabeller ved bruk av funksjonell predikat og redusert tilknyttede kostnader.
  • Omformulering av markører for å enhetliggjøre atferden, mer regelmessig kode, og redusere antall forgreninger og maskinoperasjoner.
  • Flyttingen av funksjonaliteten til verktøyet mdbx_chk inn i biblioteket som funksjonen mdbx_env_chk() for å sjekke integriteten til database-strukturen, inkludert involvering av applikasjonslogikken.
  • Alternativet MDBX_opt_gc_time_limit for mer fleksibel kontroll over tiden brukt på å finne sekvenser av tilstøtende ledige sider i GC.
  • Betydelig reduksjon av overhead ved oppstart av transaksjoner i scenarier med mange DBI-håndtak, på grunn av utsatt/lazy initialisering av elementer i hjelpemiddeltabeller. Inkludert støtte for tynne sett av DBI-håndtak, styrt av byggealternativet MDBX_ENABLE_DBI_SPARSE, som er aktivert som standard.
  • Redusert overhead ved åpning av DBI-håndtak. Inkludert mekanisme for utsatt frigjøring og støtte for rask åpning uten bruk av låser, styrt av byggealternativet MDBX_ENABLE_DBI_LOCKFREE, som er aktivert som standard.
  • Støtte for "parkering" av lesetransaksjoner med utstøting for å gjenvinne gamle MVCC-bilder og forhindre problemer som oppstår ved pauser i avfallsgjenvinning. Mekanismen for parkering og utstøting av parkerte transaksjoner fungerer både som et supplement og som et enklere alternativ til tilbakekallingen av Handle-Slow-Readers. For enkelhets skyld har funksjonene mdbx_txn_park() og mdbx_txn_unpark() ekstra argumenter som lar deg be om automatisk "avparkering" av parkerte og omstart av utstøtte transaksjoner. Verktøyet mdbx_copy har fått tilsvarende alternativer -d og -p.
  • Støtte for å gjenopprette åpen arbeidsmiljø med DB i et barneprosess etter prosessforklaring/deling via mdbx_env_resurrect_after_fork().
  • Støtte for omdøping av tabeller ved hjelp av mdbx_dbi_rename() og mdbx_dbi_rename2(). Den nye funksjonen mdbx_enumerate_tables() er lagt til for å hente informasjon om navngitte brukertabeller.
  • MDBX_NOSTICKYTHREADS-modus i stedet for MDBX_NOTLS for å forenkle integrasjonen med lettvekts tråder/multiplexing sammen med operativsystemets trådtransaksjoner.
  • For identifikasjon av DB er UUID lagt til i feltet mi_dxbid i strukturen MDBX_envinfo, som er tilgjengelig via mdbx_env_info_ex(). Informasjon om DB kan hentes uten at den åpnes ved hjelp av mdbx_preopen_snapinfo().
  • Støtte for callback-loggføringsfunksjoner uten vprintf()-funksjonalitet, noe som betydelig forenkler bruken av loggføring i bindelser til andre programmeringsspråk.
  • Tillegg av API-funksjonene mdbx_txn_copy2pathname() og mdbx_txn_copy2fd().
  • Omdisponering av kildekoden med refaktorering.
  • Bruk av termen "tabell" i stedet for "subDb".
  • Erklæring av alternativene MDBX_COALESCE og MDBX_NOTLS som utdaterte. Erstatning av byggealternativet MDBX_USE_VALGRIND med den bredt anerkjente ENABLE_MEMCHECK.

Kilde: opennet.ru

Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere 🔥 Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere | ProHoster