Release van de embedded database libmdbx 0.13.7

De release van de libmdbx bibliotheek 0.13.7 (MDBX) is gepubliceerd, met de implementatie van een krachtige, compacte, ingebedde key-value database. 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 uitgebreide API voor C++ aangeboden, evenals ondersteunde bindings voor de talen Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno en Scala. Projecten die gebruik maken van libmdbx omvatten Isar, Erigon en Reth, evenals de ontwikkelingen van de bedrijven StarkWare en Positive Technologies.

Historisch gezien is libmdbx een grondige herwerking van de LMDB database 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, tests en automatische verificaties. Een tool voor het controleren van de integriteit van de database-structuur wordt meegeleverd met enkele herstelmogelijkheden. Technologisch biedt libmdbx ACID, strikte serialisatie van wijzigingen en niet-blokkerend lezen met lineaire schaalbaarheid over CPU-kernen. Automatische compressie, automatisch beheer van de databasegrootte en het inschatten van queryvolumes op basis van reeksen (range query estimation) worden ondersteund.

Belangrijkste wijzigingen:

  • Een kritieke fout in de functionaliteit van mdbx_env_resurrect_after_fork() bij het gebruik van SysV-semaforen is opgelost. De fout deed zich alleen voor na het aanmaken van een kindproces via fork() tijdens een actieve schrijfbewerking, wat leidde tot onjuiste werking van de semaforen en vervolgens tot verschillende fouten, tot zelfs databasebeschadiging. Het probleem bestond sinds de introductie van mdbx_env_resurrect_after_fork() en raakte macOS en POSIX-platformen bij compilatie met de optie MDBX_LOCKING=5.
  • Een probleem in de API voor het kopiĆ«ren van databases is opgelost, dat zich voordeed op POSIX-systemen die afweken van Linux (voornamelijk op macOS), evenals in sommige gevallen wanneer het doelbestand op een niet-lokale bestandsstructuur was geplaatst. Het probleem leidde tot de foutmelding EWOULDBLOCK/EAGAIN, veroorzaakt door een tekortkoming/conflict in de bestandsvergrendeling met fcntl(F_SETLK) en flock() in de besturingssysteemkern. De foutverwerking van het vastleggen van bestandsvergrendelingen in de API voor het kopiĆ«ren op POSIX-systemen is herzien.
  • Een fout die leidde tot een onverwachte terugkeer van MDBX_BAD_DBI bij de gelijktijdige start van meerdere transacties binnen hetzelfde proces na het openen van de database is opgelost.
  • Een fout is verholpen die leidde tot onverwachte MDBX_DBS_FULL terugkeer bij het opnieuw openen van al geopende tabellen en het bereikt limiet voor geopende DBI-descriptoren.
  • Een fout in de build voor het Android-platform is opgelost bij het expliciet definiĆ«ren van _FILE_OFFSET_BITS.
  • Een fout in het gebruik van ENOMEM in plaats van MDBX_ENOMEM is verholpen. Dit kon de build op niet-POSIX/Windows platforms verstoren, afhankelijk van de configuratie en/of SDK-versie.
  • Verschillende onjuiste assert-controles zijn gecorrigeerd of verwijderd, wat leidde tot crashes in debug-builds onder specifieke omstandigheden. Voornaamlijk in de code van de functies txn_end(), txn_lock() en txn_unlock() op zowel Windows als POSIX.
  • Niet-significante waarschuwingen van MSVC zijn verholpen. Waarschuwingen C5286 en C5287 zijn uitgeschakeld.
  • De logica voor het afzien van OFD-locks op POSIX-platforms is verfijnd. Nu worden naast EINVAL ook extra foutcodes (ENOSYS, ENOIMPL, ENOTSUP, ENOSUPP, EOPNOTSUPP) in aanmerking genomen, wat de gebundelde bibliotheek in staat stelt om in sommige gevallen te werken wanneer de actuele kernel/container/emulator niet de noodzakelijke systeemspecificaties ondersteunt.
  • Ondersteuning voor de optie "--numa " is toegevoegd aan het testframework om een stochastische test aan een NUMA-knooppunt te koppelen. In het battery/tmux-script is een expliciete distributie over NUMA-knopen toegevoegd, wat de efficiĆ«ntie bij het testen op NUMA-machines aanzienlijk heeft verhoogd.
  • In het stochastische script is een willekeurige volgorde van het uitvoeren van afzonderlijke tests geĆÆmplementeerd.

Bron: opennet.ru

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