Na vyf jaar van ontwikkeling is die tweede libmdbx 1.0-vrystellingskandidaat gepubliseer

Beskikbaar vir die toets van die tweede kandidaat vir biblioteekvrystellings libmdbx met die implementering van 'n hoëprestasie, kompakte ingebedde sleutelwaarde-databasis. Die huidige weergawe (0.5) is 'n tegniese vrystelling, dui op die voltooiing van enige verbeterings en die oorgang na die fase van openbare finale toetsing en stabilisering, met die daaropvolgende vorming van die eerste volledige vrystelling van die biblioteek. libmdbx kode versprei deur gelisensieer onder die OpenLDAP Public License.

Die MDBX-biblioteek is 'n aansienlik hersiene vurk van LMDB - transaksionele ingebedde DBBS van die "sleutel-waarde" klas gebaseer op boom B+ sonder proaktiewe aanteken, wat multi-draad prosesse toelaat om mededingend en doeltreffend te werk met 'n plaaslik gedeelde (nie netwerk) databasis. Op sy beurt is MDBX vinniger en meer betroubaar as LMDB, en behou terselfdertyd al die sleutelkenmerke van sy voorouer, soos bv. ACID en nie-blokkerende leeswerk met lineêre skaal oor SVE-kerns.

Die belangrikste verskille tussen MDBX en LMDB:

  • Fundamenteel word meer aandag geskenk aan kodekwaliteit, toetsing en outomatiese kontrole.
  • Aansienlik meer beheer tydens operasie, van kontrolering van parameters tot interne oudit van databasisstrukture.
  • Outo-kompaktifisering en outomatiese databasisgroottebestuur.
  • 'n Enkele databasisformaat vir 32-bis en 64-bis samestellings.
  • Skatting van monstervolumes volgens reekse (reeksnavraagskatting).
  • Ondersteuning vir sleutels twee keer so groot soos pannekoek en gebruiker-kiesbare databasis bladsy grootte.

Die libmdbx-vrystellingskandidaat is die resultaat van 'n besluit wat in Augustus 2019 geneem is om die MDBX- en MithrilDB-projekte te skei. Terselfdertyd het libmdbx besluit om die (rasionele) maksimum tegniese skuld uit te skakel en die biblioteek te stabiliseer. Trouens, 2-3 keer meer is in die aangewese rigting gedoen as wat aanvanklik beraam en beplan is:

  • Ondersteuning vir macOS en tweedevlak-platforms is geïmplementeer: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. AIX- en HP-UX-ondersteuning kan bygevoeg word soos nodig.
  • Die kode is ontsmet met behulp van Undefined Behaviour Sanitizer en Address Sanitizer, alle waarskuwings wanneer gebou word met “-Wpedantic”, alle Coverity Static Analyzer waarskuwings, ens. is uitgeskakel.
  • Opdateer API beskrywings.
  • Samevoeging (samevoeging) van bronkode vir gemak van inbedding.
  • CMaak ondersteuning.
  • Ondersteuning vir geneste transaksies.
  • Gebruik bootid om te bepaal of die bedryfstelsel herlaai is (vuil databasis stop).
  • Einde-tot-einde telling van opgedateerde/ou bladsye en uitgebreide transaksie-inligting.
  • Opsie MDBX_ACCEDE vir koppeling aan 'n reeds oop databasis in versoenbare modus.
  • Gebruik OFD blokkering wanneer beskikbaar.
  • Warm rugsteun in pyp.
  • Gespesialiseerde geoptimaliseerde interne sorteeralgoritme (tot 2-3 keer vinniger as "qsort()" en tot 30% vinniger as "std::sort()").
  • Die maksimum sleutellengte is verhoog.
  • Outomatiese beheer van lees vooruit (databasis lêer kas strategie in die geheue).
  • Meer aggressief en vinniger outomatiese verdigting.
  • 'n Meer optimale strategie om B+ boombladsye saam te voeg.
  • Beheer van nie-plaaslike lêerstelsels (NFS, Samba, ens.) om databasisskade te voorkom indien dit verkeerd gebruik word.
  • Die stel toetse is uitgebrei.

Ontwikkeling van die "volgende" weergawe van libmdbx sal voortgaan as 'n aparte projek MithrilDB, terwyl die ontwikkelingsvektor van die "huidige" weergawe van MDBX daarop gemik is om die kenmerkstel te vries en dit te stabiliseer. Hierdie besluit is om drie redes geneem:

  • Heeltemal onversoenbaar: MithrilDB vereis 'n ander (onversoenbare) databasislêerformaat en 'n ander (onversoenbare) API om alle beplande funksies te implementeer.
  • Nuwe bronkode: Die MithrilDB-bronkode is onafhanklik van LMDB gelisensieer gemaak, en die projek self word beplan om onder 'n ander lisensie gepubliseer te word (goedgekeur deur OF INDIEN Apache 2.0 lisensie, nie OpenLDAP publieke lisensie).
  • Die skeiding vermy potensiële verwarring, stel meer sekerheid in en verseker 'n onafhanklike pad vir projekte.

MithrilDB, soos MDBX, is ook gebaseer op boom B+ en sal ook uiters hoë werkverrigting hê, terwyl 'n aantal fundamentele nadele van MDBX en LMDB uitgeskakel word. In die besonder sal die probleem van "langlees" uitgeskakel word, wat hom manifesteer as "swelling" van die databasis as gevolg van die feit dat vullisverwerking deur langleestransaksies geblokkeer word. Nuwe MithrilDB-kenmerke sluit in:

  • Ondersteuning vir die plasing van die databasis op verskeie heterogene media: HDD, SSD en nie-vlugtige geheue.
  • Optimale strategieë vir "waardevolle" en "lae-waarde", vir "warm", "warm" en "koue" data.
  • Gebruik Merkle-boom om databasisintegriteit te monitor.
  • Opsionele gebruik van WAL en aansienlik verbeterde werkverrigting in skryf-intensiewe scenario's met data-integriteitwaarborge.
  • Lui inhaal wat data na skywe oordra.

Bron: opennet.ru

Voeg 'n opmerking