Tweede libmdbx v1.0 vrystellingskandidaat na vyf jaar van ontwikkeling.

Biblioteek libmdbx is 'n aansienlik herontwerpte afstammeling van LMDB - 'n uiters hoëprestasie, kompakte ingebedde sleutelwaarde-databasis.
Die huidige weergawe v0.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.

LMDB is 'n redelik bekende transaksionele ingebedde sleutel-waarde DBBS gebaseer op boom B+ sonder proaktiewe aanteken, wat 'n swerm multi-draad prosesse toelaat om mededingend en uiters doeltreffend te werk met 'n plaaslik gedeelde (nie netwerk) databasis. Op sy beurt is MDBX vinniger en meer betroubaar as LMDB, terwyl libmdbx al die sleutelkenmerke van sy voorouer behou, soos bv. ACID en nie-blokkerende lees met lineêre skaal oor SVE-kerns, en voeg ook verskeie nuwes by.

'n Beskrywing van die verskille en verbeterings van libmdbx met betrekking tot LMDB verdien 'n aparte artikel (beplan om op Habré en Medium gepubliseer te word). Hier is dit gepas om die belangrikste en opvallendste te noem:

  • 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 steekproefgrootte 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 die besluit (sien hieronder) om die MDBX- en MithrilDB-projekte in Augustus 2019 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 Mac OS 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.
  • Amalgamasie 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 lisensie Apache 2.0en nie OpenLDAP Foundation).
  • Die skeiding vermy potensiële verwarring, bied meer sekerheid en verseker dat projekte 'n onafhanklike pad vorentoe het.

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 hoër werkverrigting in skryf-intensiewe scenario's en data-integriteitwaarborge.
  • Lui inhaalfiksasie van data op skywe.

Bron: linux.org.ru

Voeg 'n opmerking