Wachiwiri wa libmdbx v1.0 wotulutsa patatha zaka zisanu zachitukuko.

Library libmdbx ndi mbadwa yokonzedwanso kwambiri ya LMDB - yogwira ntchito kwambiri, yophatikizika yophatikizika yamtengo wapatali.
Mtundu wamakono wa v0.5 ndi kumasulidwa kwaumisiri, kumasonyeza kutha kwa zosintha zilizonse ndi kusintha kwa gawo la kuyesa komaliza kwa anthu ndi kukhazikika, ndi kupangidwa kotsatira kwa kutulutsidwa kwathunthu kwa laibulale.

Mtengo wa LMDB ndi DBMS yodziwika bwino yophatikizira makiyi otengera mtengo B+ popanda kudula mitengo mwachangu, yomwe imalola kuti njira zambiri zamitundu yambiri zizigwira ntchito mopikisana komanso mogwira mtima kwambiri ndi database yogawana nawo (osati maukonde). Komanso, MDBX ndiyofulumira komanso yodalirika kuposa LMDB, pomwe libmdbx imasunga zinthu zonse zofunika za makolo ake, monga ACID ndi osatsekereza kuwerenga ndi mizere mizere makulitsidwe CPU cores, komanso kuwonjezera angapo atsopano.

Kufotokozera za kusiyana ndi kusintha kwa libmdbx wachibale ku LMDB kukuyenera kukhala ndi nkhani ina (yokonzedwa kuti isindikizidwe pa HabrΓ© ndi Medium). Apa ndi koyenera kutchula zofunika kwambiri komanso zowoneka bwino:

  • Kwenikweni, chidwi chochulukirapo chimaperekedwa ku mtundu wa code, kuyesa ndi kuwunika kodziwikiratu.
  • Kuwongolera kochulukirapo panthawi yogwira ntchito, kuyambira pakuwunika magawo mpaka kuwunika kwamkati kwazinthu zama database.
  • Auto-compacting and automatic database size management.
  • Mtundu umodzi wa database wa misonkhano ya 32-bit ndi 64-bit.
  • Chiyerekezo cha kukula kwachitsanzo potengera milingo (mafunso osiyanasiyana).
  • Kuthandizira makiyi akulu kuwirikiza kawiri kuposa zikondamoyo ndi kukula kwa tsamba la database losankhika.

Wosankhidwa wa libmdbx kumasulidwa ndi zotsatira za chisankho (onani m'munsimu) kuti alekanitse mapulojekiti a MDBX ndi MithrilDB mu August 2019. Panthawi imodzimodziyo, libmdbx inaganiza zochotsa ngongole (zomveka) zapamwamba zaukadaulo ndikukhazikitsa laibulale. M'malo mwake, nthawi 2-3 zambiri zachitika motsatira njira yomwe idakonzedweratu kuposa zomwe zidaganiziridwa ndikukonzedweratu:

  • Thandizo la Mac OS ndi nsanja zachiwiri zakhazikitsidwa: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. Thandizo la AIX ndi HP-UX litha kuwonjezeredwa ngati pakufunika.
  • Kuyeretsa kachidindo pogwiritsa ntchito Undefined Behavior Sanitizer ndi Address Sanitizer, kuchotsa machenjezo onse pomanga ndi -Wpedantic, machenjezo onse a Coverity Static Analyzer, ndi zina zotero.
  • Kusintha Mafotokozedwe a API.
  • Kuphatikizika kwa magwero a magwero kuti musavutike kuyika.
  • CPangani thandizo.
  • Thandizo pazochita zomwe zaperekedwa.
  • Kugwiritsa ntchito bootid kuti muwone ngati OS yayambiranso (kuyimitsidwa kwa database yakuda).
  • Kuwerengera mpaka kumapeto kwa masamba osinthidwa/akale komanso zambiri zamalonda.
  • Njira MDBX_ACCEDE yolumikiza ku database yotseguka kale mumayendedwe ogwirizana.
  • Gwiritsani ntchito OFD kutsekereza zikapezeka.
  • Hot zosunga zobwezeretsera mu chitoliro.
  • Ma aligorivimu okhathamiritsa mwapadera (mpaka 2-3 mwachangu kuposa qsort() mpaka 30% mwachangu kuposa std::sort()).
  • Kutalika kwakukulu kwa makiyi awonjezedwa.
  • Kuwongolera zokha zowerengera patsogolo (database file caching strategy in memory).
  • Mwamwayi kwambiri komanso mwachangu kuphatikizika.
  • Njira yabwino kwambiri yolumikizira masamba amitengo ya B+.
  • Kuwongolera mafayilo omwe si a m'deralo (NFS, Samba, etc.) kuti ateteze kuwonongeka kwa database ngati atagwiritsidwa ntchito molakwika.
  • Gulu la mayeso lakulitsidwa.

Kupanga mtundu "wotsatira" wa libmdbx kupitilira ngati projekiti ina MithrilDB, pamene vekitala ya "panopa" MDBX cholinga chake ndi kuziziritsa mawonekedwe ndi kukhazikika. Chigamulochi chinapangidwa pazifukwa zitatu:

  • Zosagwirizana konse: MithrilDB imafuna mtundu wina wa fayilo ya database (yosagwirizana) ndi API yosiyana (yosagwirizana) kuti ikwaniritse zonse zomwe zakonzedwa.
  • Khodi yatsopano yochokera: Khodi ya MithrilDB idapangidwa kuti ikhale yodziyimira pawokha kuchokera ku LMDB, ndipo polojekitiyo ikukonzekera kusindikizidwa pansi pa laisensi ina (yovomerezedwa ndi KAPENA NGATI chiphaso Apache 2.0, osati OpenLDAP Foundation).
  • Kupatukana kumapewa chisokonezo chomwe chingakhalepo, kumapereka chitsimikizo chowonjezereka, ndikuwonetsetsa kuti mapulojekiti ali ndi njira yodziyimira payokha.

MithrilDB, ngati MDBX, idakhazikitsidwanso mtengo B+ ndipo ikhalanso ndi magwiridwe antchito apamwamba kwambiri, ndikuchotsa zovuta zingapo za MDBX ndi LMDB. Makamaka, vuto la "kuwerenga kwanthawi yayitali", lomwe limadziwonetsera ngati "kutupa" kwa database chifukwa chakuti kukonza zinyalala kumatsekedwa ndi kuwerengera kwanthawi yayitali, kutha. Zatsopano za MithrilDB zikuphatikiza:

  • kuthandizira kuyika nkhokwe pama media angapo osiyanasiyana: HDD, SSD ndi kukumbukira kosasunthika.
  • njira zabwino kwambiri za "zamtengo wapatali" ndi "zotsika mtengo", "zotentha", "zofunda" ndi "zozizira" deta.
  • kugwiritsa ntchito mtengo wa Merkle kuyang'anira kukhulupirika kwa database.
  • kugwiritsa ntchito mwachisawawa kwa WAL komanso magwiridwe antchito apamwamba kwambiri pazolemba zambiri komanso kutsimikizira kukhulupirika kwa data.
  • Kukonzekera kwaulesi kwa data pa disks.

Source: linux.org.ru

Kuwonjezera ndemanga