Release van de ingebedde database libmdbx 0.13.3

De release van de libmdbx-bibliotheek 0.13.3 (MDBX) is gepubliceerd, die een hoogwaardige compacte embedded key-value database implementeert. De libmdbx-code wordt verspreid onder de Apache 2.0-licentie. Alle actuele besturingssystemen en architecturen worden ondersteund, evenals de Russische Elbrus 2000. Voor libmdbx wordt een uitgebreid API voor C++ aangeboden, evenals door enthousiastelingen ondersteunde bindings voor de talen Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno en Scala.

Historisch gezien is libmdbx een grondige herwerking van de database LMDB en overtreft het zijn voorganger op het gebied van betrouwbaarheid, mogelijkheden en prestaties. In vergelijking met LMDB wordt er in libmdbx veel aandacht besteed aan de kwaliteit van de code, de stabiele werking van de API, testen en automatische controles. Een tool voor het controleren van de integriteit van de database-structuur wordt geleverd met enkele herstelmogelijkheden. Technologisch biedt libmdbx ACID, strikte serialisatie van wijzigingen en niet-blokkerend lezen met lineaire schaalbaarheid over CPU-kernen. Automatische compactering, automatisch beheer van de grootte van de database en schatting van de hoeveelheid gegevens voor bereikquery's (range query estimation) worden ondersteund.

Belangrijkste wijzigingen:

  • De 0.13.x-tak heeft de status van stabiel gekregen. De ontwikkeling van de 0.14.x-tak is begonnen.
  • In de C API is de functie mdbx_cursor_count_ex() toegevoegd, waarmee zowel het aantal multi-waarden dat overeenkomt met de huidige sleutel kan worden verkregen als informatie over de geneste bomen die deze waarden opslaan.
  • In de C++ API is de methode mdbx::txn::make_broken() toegevoegd, die vergelijkbaar is met mdbx_txn_break().
  • In de utilities mdbx_copy, mdbx_drop, mdbx_dump, mdbx_load, mdbx_stat is foutlogging, waarschuwingen en belangrijke berichten van libmdbx geĆÆmplementeerd.
  • Verandering in gedrag:
    • Wanneer het profileringsmechanisme voor de garbage collector is ingeschakeld (compilatie met de optie MDBX_ENABLE_PROFGC=ON), worden nu de CPU-tijdbestedingen voor het samenvoegen van pagina-lijsten geteld, dat wil zeggen voor de functie pnl_merge().
    • In de testutility is de waarde van de gegevensmodus hernoemd van data.dups naar data.multi.
    • De controle van de sleutel lengte in cursor_seek() is verbeterd.
    • Als via mdbx_env_set_option(MDBX_opt_txn_dp_limit) door de gebruiker geen specifieke waarde is opgegeven, wordt de dirty-pages-limit bij de start van elke niet-geneste schrijfactie aangepast op basis van het beschikbare RAM en de grootte van de database.
    • In de MDBX_NOSTICKYTHREADS-modus zijn commit/abort van geneste transacties vanuit elke thread/stroom toegestaan.
    • Bij het proberen te starten van geneste transacties in de MDBX_WRITEMAP-modus worden logging en de fout MDBX_INCOMPATIBLE geretourneerd.
    • In de C++ API worden in de constructeurs/inits en methoden die verband houden met de vorming van de database-geometrie standaard alleen de default-waarden gebruikt.
    • Binnen mdbx_env_set_geometry() zijn heuristieken verfijnd voor het afstemmen van de door de gebruiker gevraagde database-geometrie standaardparameters.
  • Bugfixes:
    • De regressie met betrekking tot het niet ontgrendelen van de mutex bij het opnieuw sluiten van de dbi-descriptor is verholpen, inclusief het expliciet sluiten van de descriptor na het verwijderen van de bijbehorende tabel.
    • De regressie van de status van de geneste/dupsort cursor na het invoegen van gegevens in de MDBX_APPEND-modus is verholpen.
    • Ondersteuning voor het verkrijgen van boot_id bij het werken binnen een LXC-container.
    • De fout van onjuiste verwerking bij het starten van een geneste leestransactie is opgelost. In dergelijke situaties wordt nu een foutmelding MDBX_EINVAL weergegeven, aangezien geneste transacties alleen worden ondersteund voor schrijf- en leistransacties.
    • De SIGSEGV-regressie bij toegang tot een nuladres in de alleen-lezen modus zonder gebruik van een LCK-bestand is opgelost, bijvoorbeeld bij het hosten van een database op een media dat alleen-lezen toegankelijk is.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster