Pambuyo pazaka zisanu zachitukuko, wachiwiri wa libmdbx 1.0 womasulidwa wasindikizidwa

Ipezeka kuyesa munthu wachiwiri kuti atulutse laibulale libmdbx ndi kukhazikitsa kwapamwamba kwambiri, kophatikizana kophatikizidwa ndi nkhokwe yamtengo wapatali. Mtundu wapano (0.5) ndiwotulutsa mwaukadaulo, ukuwonetsa kutha kwa zosintha zilizonse ndikusintha kupita ku gawo la kuyesa komaliza kwa anthu ndi kukhazikika, ndikupangidwa kotsatira koyamba kutulutsidwa kwathunthu kwa laibulale. libmdbx kodi wogawidwa ndi zololedwa pansi pa OpenLDAP Public License.

Laibulale ya MDBX ndi foloko yosinthidwa kwambiri kuchokera Mtengo wa LMDB - DBMS yophatikizidwa ya kalasi ya "key-value" yotengera mtengo B+ popanda kudula mitengo mwachangu, yomwe imalola njira zamitundu yambiri kuti zizigwira ntchito mopikisana komanso mogwira mtima ndi database yogawana nawo (osati maukonde). Komanso, MDBX ndi yachangu komanso yodalirika kuposa LMDB, ndipo nthawi yomweyo imasunga zinthu zonse zofunika za makolo ake, monga ACID komanso osatsekereza kuwerenga ndi makulitsidwe amizere kudutsa ma CPU cores.

Kusiyana kwakukulu pakati pa MDBX ndi LMDB:

  • 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.
  • Kuyerekeza ma voliyumu a zitsanzo potengera milingo (mafunso osiyanasiyana).
  • Kuthandizira makiyi akulu kuwirikiza kawiri kuposa zikondamoyo ndi kukula kwa tsamba la database losankhika.

Wotulutsa libmdbx ndi zotsatira za chigamulo chomwe chinapangidwa mu Ogasiti 2019 cholekanitsa ma projekiti a MDBX ndi MithrilDB. Nthawi yomweyo, libmdbx idaganiza zochotsa (zomveka) ngongole yayikulu yaukadaulo ndikukhazikitsa laibulale. M'malo mwake, nthawi 2-3 zambiri zachitika motsatira njira yomwe idakonzedweratu kuposa zomwe zidaganiziridwa ndikukonzedweratu:

  • Thandizo la macOS ndi nsanja zagawo lachiwiri lakhazikitsidwa: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. Thandizo la AIX ndi HP-UX litha kuwonjezeredwa ngati pakufunika.
  • Khodiyo idayeretsedwa pogwiritsa ntchito Undefined Behavior Sanitizer ndi Address Sanitizer, machenjezo onse pomanga ndi "-Wpedantic", machenjezo onse a Coverity Static Analyzer, ndi zina zotero adachotsedwa.
  • Kusintha Mafotokozedwe a API.
  • Kuphatikiza (kuphatikiza) kwa magwero a code kuti muphatikize mosavuta.
  • 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 nthawi 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 machitidwe omwe si amtundu wa fayilo (NFS, Samba, etc.) kuti muteteze kuwonongeka kwa database ngati kugwiritsidwa 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 Apache 2.0 chilolezo, ayi OpenLDAP Public License).
  • Kupatukana kumapewa chisokonezo chomwe chingakhalepo, kumayambitsa kutsimikizika kowonjezereka ndikuwonetsetsa njira yodziyimira payokha yama projekiti.

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 zoyenera za "zamtengo wapatali" ndi "zotsika mtengo", za "kutentha", "kutentha" ndi "kuzizira" deta.
  • Kugwiritsa ntchito mtengo wa Merkle kuyang'anira kukhulupirika kwa database.
  • Kugwiritsa ntchito mwakufuna kwa WAL ndikuwongolera kwambiri magwiridwe antchito pazolemba zambiri zotsimikizira kukhulupirika kwa data.
  • Waulesi kugwira data ku disks.

Source: opennet.ru

Kuwonjezera ndemanga