Udgivelse af den indbyggede DBMS libmdbx 0.13

Udgivelsen af biblioteket libmdbx 0.13.1 (MDBX) er offentliggjort med implementeringen af en højtydende, kompakt indbygget nøgle-værdi database. Koden til libmdbx distribueres under Apache 2.0 licensen. Alle aktuelle operativsystemer og arkitekturer understøttes, samt den russiske Elbrus 2000. Der tilbydes et veludviklet API til 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:

  • Ændring af licensen for koden fra OpenLDAP Public License til Apache 2.0.
  • Udvidelse af cursor API med mere bekvemme og indlysende positioneringsoperationer svarende til forholdene <, =, > for både nøgler og nøgle-værdi par. Funktionerne mdbx_cursor_unbind() og mdbx_txn_release_all_cursors() er tilføjet for fleksibel håndtering af cursors i genbrugsscenarier for at mindske overhead. Funktionerne mdbx_cursor_scan() og mdbx_cursor_scan_from() til scanning af tabeller ved hjælp af en funktionel prædikat og reduktion af tilknyttede omkostninger.
  • Omstrukturering af cursors for at ensarte adfærden, skabe mere regelmæssig kode, reducere antallet af forgreninger og maskinoperationer.
  • Flytning af funktionaliteten i værktøjet mdbx_chk ind i biblioteket som funktionen mdbx_env_chk() for at kontrollere integriteten af databasens struktur, herunder inddragelse af applikationslogik.
  • Muligheden MDBX_opt_gc_time_limit for mere fleksibel kontrol over den tid, der bruges på at finde sekvenser af nærliggende frie sider i GC.
  • Betydelig reduktion af overheadomkostninger ved opstart af transaktioner i scenarier med mange DBI-handtag, takket være den udsatte/lazy initialisering af elementer i hjælpetabeller. Dette inkluderer en mekanisme til understøttelse af sparsomme sæt af DBI-handtag, styret af konfigurationsmuligheden MDBX_ENABLE_DBI_SPARSE, som er aktiveret som standard.
  • Reduktion af overheadomkostninger ved åbning af DBI-handtag. Dette inkluderer en mekanisme til forsinket frigivelse og understøttelse af hurtige åbninger uden brug af låse, styret af konfigurationsmuligheden MDBX_ENABLE_DBI_LOCKFREE, som er aktiveret som standard.
  • Understøttelse af "parkering" af læsetransaktioner med deres udskiftning for at genbehandle gamle MVCC-snapshots og forhindre problemer, der opstår ved suspension af affaldshåndtering. Mekanismen til parkering og udskiftning af parkerede transaktioner er både et supplement og et enklere alternativ til callback'en Handle-Slow-Readers. Som en bekvemmelighed har funktionerne mdbx_txn_park() og mdbx_txn_unpark() yderligere argumenter, der muliggør anmodning om automatisk "afparkering" af parkerede og genstart af udskiftede transaktioner. Relevante muligheder -d og -p er blevet tilføjet til mdbx_copy-værktøjet.
  • Understøttelse af genopretning af en åben databasearbejdsmiljø i et dattersubjekt efter forgrening/splitting af processen via mdbx_env_resurrect_after_fork().
  • Understøttelse af omdøbning af tabeller via mdbx_dbi_rename() og mdbx_dbi_rename2(). En funktion mdbx_enumerate_tables() er blevet tilføjet til at hente information om navngivne brugertabeller.
  • Driftsmode MDBX_NOSTICKYTHREADS i stedet for MDBX_NOTLS for at forenkle integrationen med letvægts-tråde/multiplexering af dem sammen med transaktioner af operativsystemtråde.
  • For at identificere databasen er UUID blevet tilføjet til feltet mi_dxbid i strukturen MDBX_envinfo, der indhentes via mdbx_env_info_ex(). Implementeret muligheden for at indsamle oplysninger om databasen uden at åbne den via mdbx_preopen_snapinfo().
  • Understøttelse af logging callback-funktioner uden vprintf()-funktionalitet, hvilket væsentligt letter brugen af logging i bindings til andre programmeringssprog.
  • Tilføjelse af funktioner mdbx_txn_copy2pathname() og mdbx_txn_copy2fd() til API'et.
  • Omstrukturering af kildekoden med refactoring.
  • Brug af termen "tabel" i stedet for "subDb".
  • Meddelelse om forældede indstillinger MDBX_COALESCE og MDBX_NOTLS. Erstatning af byggeindstillingen MDBX_USE_VALGRIND med den almindelige ENABLE_MEMCHECK.

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