Uitgave van de compacte ingebedde database libmdbx 0.9.1

Vrijgegeven versie 0.9.1 van de bibliotheek libmdbx (MDBX) met de implementatie van een hoogpresterende, compacte embedded key-value database. De code van libmdbx wordt verspreid onder de licentie OpenLDAP Public License.

De huidige versie is een compromis tussen de bedoeling om een langdurige stabiele versie 1.0 uit te brengen met volledige C++-ondersteuning en de onwil om releases uit te stellen vanwege ongereedheid om de nieuwe C++ API te bevriezen. Deze release is het resultaat van 9 maanden werk gericht op het stabiliseren van de bibliotheek en het verbeteren van het gebruiksgemak, en omvat ook een voorlopige versie C++ API.

De libmdbx-bibliotheek is niet gewoon een 'fork', maar een radicaal herwerkte afstammeling LMDB — een transactionele embedded database management systeem van de klasse 'key-value' gebaseerd op B+ boom zonder read-ahead journaling, die meerdere gelijktijdige processen in staat stelt om concurrerend en efficiënt te werken met een lokaal gedeelde (niet-netwerk) database zonder een dedicated serverproces. Libmdbx is principieel breidt de mogelijkheden van zijn voorouder, terwijl het tegelijkertijd de tekortkomingen verhelpt of verzacht. Volgens de ontwikkelaars is libmdbx iets sneller en aanzienlijk betrouwbaarder dan LMDB.

libmdbx biedt ACID, strikte serialisatie van wijzigingen en niet-blokkerend lezen met lineaire schaalbaarheid over CPU-kernen. De prestatie testresultaten (verzending van parallelle lees-/zoekverzoeken in 1-2-4-8 threads op een i7-4600U CPU met 2 fysieke kernen in de modus van 4 threads HyperThread):

Uitgave van de compacte ingebedde database libmdbx 0.9.1

De belangrijkste verschillen tussen MDBX en LMDB zijn:

  • Er is principieel meer aandacht voor de codekwaliteit, 'vastheid' van de API, testen en automatische controles.
  • Er is aanzienlijk meer controle tijdens de werking, van parametercontroles tot interne audits van database-structuren.
  • Auto-compaction en automatisch beheer van de databasegrootte.
  • Een uniform databaseformaat voor 32-bit en 64-bit builds.
  • Beoordeling van het volume van gegevensselecties op basis van reeksen (range query estimation).
  • Ondersteuning voor sleutels met dubbele lengte en een door de gebruiker gekozen paginaformaat voor de database.
  • Een tool voor het controleren van de integriteit van de database-structuur met enige herstelmogelijkheden.

Belangrijkste vernieuwingen en verbeteringen na het laatste nieuws met de introductie van versie 0.5 in januari 2020:

  • Voor directe ondersteuning en antwoorden op vragen is er een open groep op Telegram.
  • Meer dan tien bugs en tekortkomingen zijn verholpen (zie wijzigingslog).
  • Talloze spelfouten en typfouten zijn gecorrigeerd, naast meerdere cosmetische verbeteringen.
  • De testscripts zijn uitgebreid.
  • Ondersteuning voor iOS, Android, buildroot, Musl, uClibc, WSL1 en Wijn.
  • Een voorlopige versie van de C++ API is gepresenteerd in één headerbestand.
  • Ingebouwde documentatie is opgesteld in Doxygen-formaat en automatische generatie Online documentatie.
  • Automatische archivering met samengevoegde bronteksten is verzekerd.
  • Ondersteuning toegevoegd voor het voorbereiden van transacties en cursoren, gebruikerscontexten voor transacties en cursoren.
  • Extra methoden voor het controleren van referentiële integriteit in MVCC-snapshots van B+tree zijn geïmplementeerd.
  • Ondersteuning toegevoegd voor het controleren van MVCC-snapshots van de database, beschikbaar via elke meta-pagina met de mogelijkheid om te schakelen voor herstel.
  • Ondersteuning voor het opnieuw openen van de database vanuit één proces voor testdoeleinden en dergelijke is gerealiseerd.
  • Automatische verwerking van de optie MDBX_NOSUBDIR bij het openen van de database is geïmplementeerd.
  • Functies toegevoegd voor het genereren van gehele getalsleutels uit drijvende-kommawaarden en 'universële' JavaScript-getallen.
  • In totaal zijn er 430 wijzigingen aangebracht in 93 bestanden, meer dan 25.000 regels toegevoegd en meer dan 8.500 regels verwijderd.

Verdere ontwikkeling van libmdbx zal zich richten op het creëren van de definitieve C++ API, het verder stabiliseren van de basiscode, het verbeteren van de gebruiksvriendelijkheid van de bibliotheek en het creëren van pakketten voor populaire Linux-distributies. Onder de verwachte verbeteringen valt de ondersteuning voor sleutels in het formaat. MessagePack.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster