Na vijf jaar ontwikkeling is de tweede releasekandidaat van libmdbx 1.0 gepubliceerd.

Beschikbaar voor het testen van de tweede kandidaat in de releases van de bibliotheek libmdbx met de implementatie van een krachtige, compacte embedded key-value database. De huidige versie (0.5) is een technische release, die het einde van verdere aanpassingen markeert en de overgang naar de fase van publieke eindtesting en stabilisatie aan geeft, met de daaropvolgende vorming van de eerste volledige release van de bibliotheek. De code van libmdbx wordt verspreid onder de OpenLDAP Public License.

De MDBX-bibliotheek is een wezenlijk herwerkte aftakking van LMDB — een transactionele embedded database management systeem van de klasse 'key-value' gebaseerd op B+ boom zonder read-ahead journaling, die het mogelijk maakt voor multi-threaded processen om concurrent en efficiĆ«nt te werken met een lokaal gedeelde (niet-netwerk) database. MDBX is daarentegen sneller en betrouwbaarder dan LMDB, terwijl het alle belangrijke mogelijkheden van zijn voorouder behoudt, zoals ACID en niet-blokkerende lezing met lineaire schaalbaarheid naar CPU-kernen.

De belangrijkste verschillen tussen MDBX en LMDB zijn:

  • Er wordt principieel meer aandacht besteed aan codekwaliteit, 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 van sleutels van twee keer zo grote toegangspagina's en de door de gebruiker gekozen grootte van de databasepagina.

De uitgebrachte kandidaat in de releases van libmdbx is het resultaat van de beslissing genomen in augustus 2019 om de projecten MDBX en MithrilDB te splitsen. Daarbij is besloten in libmdbx de (rationele) maximale technische schuld te elimineren en de bibliotheek te stabiliseren. Feitelijk is er in deze richting 2-3 keer meer gedaan dan oorspronkelijk werd geschat en gepland:

  • Ondersteuning voor macOS en 'tweede-lijn' platformen: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. Ondersteuning voor AIX en HP-UX kan indien nodig worden toegevoegd.
  • Code sanering met behulp van Undefined Behavior Sanitizer en Address Sanitizer, alle waarschuwingen zijn verholpen bij het bouwen met '-Wpedantic', alle waarschuwingen van Coverity Static Analyzer etc.
  • Bijwerking van de API-beschrijving.
  • Samenvoeging (amalgamatie) van de broncode voor het gemak van integratie.
  • Ondersteuning voor CMake.
  • Ondersteuning voor geneste transacties.
  • Gebruik van bootid om de herstart van het besturingssysteem (vuile database stop) te bepalen.
  • Doorlopende telling van bijgewerkte/oude pagina's en uitgebreide informatie over transacties.
  • MDBX_ACCEDE optie voor verbinding met een al geopende database in compatibiliteitsmodus.
  • Gebruik van OFD-vergrendelingen wanneer deze beschikbaar zijn.
  • Hot backup via pipe.
  • Gespecialiseerd geoptimaliseerd algoritme voor interne sortering (tot 2-3 keer sneller dan 'qsort()' en tot 30% sneller dan 'std::sort()').
  • Maximale sleutel lengte vergroot.
  • Automatisch beheer van read ahead (cache-strategie voor databasebestanden in geheugen).
  • Aggressievere en snellere auto-compactering.
  • Optimale strategie voor het samenvoegen van B+ boom pagina's.
  • Controle van niet-lokale bestandssystemen (NFS, Samba, enz.) ter voorkoming van datacorruptie bij verkeerd gebruik.
  • Testset uitgebreid.

De ontwikkeling van de "volgende" versie van libmdbx zal worden voortgezet in het kader van een apart project MithrilDB, terwijl de ontwikkelingsrichting van de "huidige" versie MDBX gericht is op het bevriezen van de mogelijkheden en stabilisatie. Deze beslissing is genomen om drie redenen:

  • Volledige incompatibiliteit: voor de implementatie van alle geplande functies in MithrilDB is een ander (incompatibel) bestandstype en een andere (incompatibele) API vereist.
  • Nieuwe broncode: de broncode van MithrilDB wordt vergunningonafhankelijk van LMDB vastgesteld, en het project is van plan om onder een andere goedgekeurde licentie gepubliceerd te worden OSI licentie Apache 2.0, en niet OpenLDAP Public License).
  • De splitsing voorkomt mogelijke verwarring, brengt meer duidelijkheid en zorgt voor onafhankelijkheid in de ontwikkelingspaden van de projecten.

MithrilDB, net als MDBX, is ook gebaseerd op B+ boom en zal ook uitblinken in hoge prestaties, terwijl het een aantal fundamentele tekortkomingen van MDBX en LMDB elimineert. In het bijzonder zal het probleem van "lange lezingen" worden verholpen, dat zich manifesteert als "opblazen" van de database omdat garbage collection wordt geblokkeerd door lange leestransacties. Onder de nieuwe functies van MithrilDB moet worden opgemerkt:

  • Ondersteuning voor databaseplaatsing op meerdere verschillende opslagmedia: HDD, SSD en niet-vluchtig geheugen.
  • Optimale strategieĆ«n voor 'waardevolle' en 'minder waardevolle', voor 'hete', 'warme' en 'koude' gegevens.
  • Gebruik van Merkle-boom voor integriteitscontrole van de database.
  • Optioneel gebruik van WAL en aanzienlijk hogere prestaties in scenario's met intensieve schrijfbewerkingen en garanties voor gegevensintegriteit.
  • Lui achterlopende gegevensvastlegging op schijven.

Bron: opennet.ru

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