Pärast viieaastast arendustööd on avaldatud teine ​​libmdbx 1.0 väljalaskekandidaat

Saadaval raamatukogu väljaannete teise kandidaadi testimiseks LIMBDBX suure jõudlusega kompaktse manustatud võtmeväärtuste andmebaasi rakendamisega. Praegune versioon (0.5) on tehniline väljalase, tähistab kõigi täiustuste lõpuleviimist ja üleminekut avaliku lõpliku testimise ja stabiliseerimise faasi, millele järgneb teegi esimese täieliku väljalase moodustamine. libmdbx kood jaotatud litsentsitud OpenLDAP avaliku litsentsi alusel.

MDBX teek on oluliselt muudetud kahvel alates LMDB — tehingupõhise manustatud DBMS-i klassi „võtmeväärtus”, mis põhineb puu B+ ilma ennetav metsaraie, mis võimaldab mitme lõimega protsessidel töötada konkurentsivõimeliselt ja tõhusalt kohalikult jagatud (mitte võrgu) andmebaasiga. MDBX on omakorda kiirem ja töökindlam kui LMDB ning säilitab samal ajal kõik oma esivanema põhiomadused, nagu nt. ACID ja mitteblokeeriv lugemine lineaarse skaleerimisega protsessori tuumade lõikes.

Kõige olulisemad erinevused MDBX ja LMDB vahel:

  • Põhimõtteliselt pööratakse rohkem tähelepanu koodi kvaliteedile, testimisele ja automaatsele kontrollile.
  • Oluliselt suurem kontroll töö ajal, alates parameetrite kontrollimisest kuni andmebaasistruktuuride siseauditini.
  • Automaatne tihendamine ja automaatne andmebaasi suuruse haldamine.
  • Üks andmebaasivorming 32-bitiste ja 64-bitiste komplektide jaoks.
  • Proovimahtude hindamine vahemike kaupa (vahemiku päringu hinnang).
  • Pannkookidest kaks korda suuremate võtmete tugi ja kasutaja poolt valitud andmebaasi lehe suurus.

Libmdbx väljalaskekandidaat on 2019. aasta augustis tehtud otsuse tulemus MDBX ja MithrilDB projektid eraldada. Samal ajal otsustas libmdbx kaotada (ratsionaalne) maksimaalne tehniline võlg ja stabiliseerida raamatukogu. Tegelikult on määratud suunas tehtud 2-3 korda rohkem, kui esialgu arvati ja planeeriti:

  • Rakendatud on MacOS-i ja teise astme platvormide tugi: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. Vajadusel saab lisada AIX ja HP-UX tuge.
  • Koodi desinfitseerimiseks kasutati Undefined Behaviour Sanitizerit ja Address Sanitizerit, kõik hoiatused “-Wpedanticuga” ehitamisel, kõik Coverity Static Analyzeri hoiatused jne eemaldati.
  • Värskenda API kirjeldused.
  • Lähtekoodi ühendamine (liitmine) manustamise hõlbustamiseks.
  • CTee tuge.
  • Pesastatud tehingute tugi.
  • Alglaadimiskoodi kasutamine, et teha kindlaks, kas OS on taaskäivitatud (määrdunud andmebaasi peatus).
  • Värskendatud/vanade lehtede ja laiendatud tehinguteabe loendus otsast lõpuni.
  • Valik MDBX_ACCEDE juba avatud andmebaasiga ühilduvas režiimis ühenduse loomiseks.
  • Kasutama OFD blokeerimine kui saadaval.
  • Kuum varukoopia torus.
  • Spetsiaalne optimeeritud sisemine sortimisalgoritm (kuni 2-3 korda kiirem kui “qsort()” ja kuni 30% kiirem kui “std::sort()”).
  • Võtme maksimaalset pikkust on suurendatud.
  • Ettelugemise automaatne juhtimine (andmebaasifailide vahemällu salvestamise strateegia mällu).
  • Agressiivsem ja kiirem automaatne tihendamine.
  • Optimaalsem strateegia B+ puulehtede liitmiseks.
  • Mittekohalike failisüsteemide (NFS, Samba jne) juhtimine, et vältida andmebaasi kahjustamist, kui seda kasutatakse valesti.
  • Testide komplekti on laiendatud.

Libmdbx "järgmise" versiooni arendamine jätkub eraldi projektina MithrilDB, samas kui MDBX "praeguse" versiooni arendusvektori eesmärk on funktsioonide komplekti külmutamine ja selle stabiliseerimine. See otsus tehti kolmel põhjusel:

  • Täiesti kokkusobimatu: MithrilDB vajab kõigi kavandatud funktsioonide rakendamiseks teistsugust (ühildumatut) andmebaasi failivormingut ja erinevat (ühildumatut) API-d.
  • Uus lähtekood: MithrilDB lähtekood on litsentsitud LMDB-st sõltumatuks ja projekt ise on kavas avaldada teise litsentsi all (kinnitatud: OSI Apache 2.0 litsents, mitte OpenLDAP avalik litsents).
  • Eraldamine väldib võimalikku segadust, lisab kindlust ja tagab projektidele iseseisva tee.

MithrilDB, nagu MDBX, põhineb samuti puu B+ ning sellel on ka äärmiselt kõrge jõudlus, kõrvaldades samal ajal mitmed MDBX ja LMDB põhilised puudused. Eelkõige kaob ära “pikkade lugemiste” probleem, mis väljendub andmebaasi “paisumisena”, mis on tingitud sellest, et prügi töötlemine on blokeeritud pikkade lugemiste tehingutega. Uute MithrilDB funktsioonide hulka kuuluvad:

  • Andmebaasi paigutamise tugi mitmele heterogeensele andmekandjale: HDD, SSD ja püsimälu.
  • Optimaalsed strateegiad "väärtuslike" ja "madala väärtusega", "kuumade", "soojade" ja "külmade" andmete jaoks.
  • Merkle'i puu kasutamine andmebaasi terviklikkuse jälgimiseks.
  • Valikuline WAL-i kasutamine ja oluliselt täiustatud jõudlus intensiivsete kirjutamisstsenaariumide korral koos andmete terviklikkuse garantiiga.
  • Laisk järelejõudmine andmete salvestamisel ketastele.

Allikas: opennet.ru

Lisa kommentaar