Uitgave van de compacte, ingebedde DBMS libmdbx 0.9.1

Vrijgelaten bibliotheekversie 0.9.1 libmdbx (MDBX) implementatie van een krachtige, compacte, ingebedde sleutelwaardedatabase. De libmdbx-code wordt onder een licentie gedistribueerd OpenLDAP openbare licentie.

De huidige versie is een compromis tussen de intentie om een ​​stabiele versie 1.0 voor de lange termijn uit te brengen met volledige C++-ondersteuning en de terughoudendheid om releases uit te stellen vanwege onvoorbereidheid op het bevriezen van de nieuwe C++ API. De gepresenteerde release is het resultaat van negen maanden werk gericht op het stabiliseren van de bibliotheek en het verbeteren van de bruikbaarheid ervan, en bevat ook een voorlopige versie C++-API.

De libmdbx-bibliotheek is niet alleen een “vork”, maar een radicaal opnieuw ontworpen afstammeling LMDB — transactioneel ingebedde DBMS van de klasse “sleutelwaarde” op basis van boom B+ без proactief loggen, waardoor processen met meerdere threads concurrerend en efficiënt kunnen werken met een lokaal gedeelde (niet-netwerk) database zonder een speciaal serverproces. libmdbx fundamenteel breidt uit capaciteiten van zijn voorouder, terwijl tegelijkertijd de nadelen worden geëlimineerd of verzacht. Tegelijkertijd is limbdbx volgens de ontwikkelaars iets sneller en aanzienlijk betrouwbaarder dan LMDB.

libmdbx suggereert ACID, strikte serialisatie van wijzigingen en niet-blokkerend lezen met lineaire schaling over CPU-kernen. Prestatietestresultaten (parallelle lees-/zoekverzoeken verzenden in 1-2-4-8 threads op een CPU i7-4600U met 2 fysieke cores in 4-thread HyperThread-modus):

Uitgave van de compacte, ingebedde DBMS libmdbx 0.9.1

De belangrijkste verschillen tussen MDBX en LMDB:

  • Fundamenteel wordt er meer aandacht besteed aan codekwaliteit, API-consistentie, testen en automatische controles.
  • Aanzienlijk meer controle tijdens de werking, van het controleren van parameters tot de interne audit van databasestructuren.
  • Auto-compactificatie en automatisch beheer van de databasegrootte.
  • Eén databaseformaat voor 32-bits en 64-bits assemblages.
  • Schatting van monstervolumes per bereik (schatting van bereikquery's).
  • Ondersteuning voor twee keer zo lange sleutels en door de gebruiker te selecteren databasepaginagrootte.
  • Een hulpprogramma voor het controleren van de integriteit van de databasestructuur met enkele herstelmogelijkheden.

Belangrijkste innovaties en verbeteringen daarna vorig nieuws met de introductie van versie 0.5 in januari 2020:

  • Er is een open systeem gecreëerd voor snelle ondersteuning en antwoorden op vragen. Telegramgroep.
  • Er zijn ruim een ​​dozijn fouten en tekortkomingen geëlimineerd (zie. changelog).
  • Er zijn veel typefouten en spelfouten opgelost en er zijn talloze cosmetische verbeteringen aangebracht.
  • Testscenario's zijn uitgebreid.
  • Ondersteuning voor iOS, Android, bouwwortel, moslim, uClibc, WSL1 и Wijn.
  • C++ API-preview uitgebracht in één headerbestand.
  • Ingebouwde documentatie in Doxygen-formaat en automatische generatie Online documentatie.
  • Automatische generatie van archieven met samengevoegde bronteksten is mogelijk.
  • Ondersteuning toegevoegd voor het voorbereiden van transacties en cursors, gebruikerscontexten voor transacties en cursors.
  • Er zijn aanvullende methoden geïmplementeerd om de referentiële integriteit in B+tree MVCC-snapshots te controleren.
  • Ondersteuning toegevoegd voor het controleren van een MVCC-momentopname van de database, toegankelijk via elke metapagina met de mogelijkheid om over te schakelen voor herstel.
  • Ondersteuning geïmplementeerd voor het heropenen van de database vanuit één proces voor testdoeleinden, enz.
  • Automatische verwerking van de MDBX_NOSUBDIR optie geïmplementeerd bij het openen van een database.
  • Functies toegevoegd voor het genereren van integer-sleutels op basis van drijvende-kommawaarden en JavaScript “universele” getallen.
  • In totaal zijn er 430 wijzigingen aangebracht die betrekking hebben op 93 bestanden, zijn er meer dan 25 duizend regels toegevoegd en zijn er meer dan 8.5 duizend regels verwijderd.

De daaropvolgende ontwikkeling van libmdbx zal zich richten op de uiteindelijke C++ API, verdere stabilisatie van de basiscode, het verbeteren van de bruikbaarheid van de bibliotheek en het verpakken voor populaire Linux-distributies. Onder de voorgestelde verbeteringen is het vermeldenswaard ondersteuning voor sleutels in het formaat Berichtenpakket.

Bron: opennet.ru

Voeg een reactie