Librerija libmdbx huwa dixxendent imfassal mill-ġdid b'mod sinifikanti ta 'LMDB - database ta' valur ewlieni inkorporat kompatt ta 'prestazzjoni għolja ħafna.
Il-verżjoni attwali v0.5 hija rilaxx tekniku, timmarka t-tlestija ta 'kwalunkwe titjib u t-tranżizzjoni għall-fażi ta' ttestjar u stabbilizzazzjoni finali pubbliku, bil-formazzjoni sussegwenti tal-ewwel rilaxx sħiħ tal-librerija.
LMDB huwa DBMS ta' valur ewlieni inkorporat transazzjonali pjuttost magħruf ibbażat fuq siġra B+ mingħajr logging proattiv, li jippermetti li swarm ta 'proċessi b'ħafna kamini jaħdmu b'mod kompetittiv u estremament effiċjenti ma' database kondiviża lokalment (mhux netwerk). Min-naħa tiegħu, MDBX huwa aktar mgħaġġel u aktar affidabbli minn LMDB, filwaqt li libmdbx iżomm il-karatteristiċi ewlenin kollha tal-antenat tiegħu, bħal ACID u jaqra mhux imblukkar bi skalar lineari madwar il-qlub tas-CPU, u jżid ukoll diversi oħrajn ġodda.
Deskrizzjoni tad-differenzi u t-titjib tal-libmdbx relattiv għal LMDB jistħoqqilha artiklu separat (ppjanat li jiġi ppubblikat fuq Habré u Medium). Hawnhekk huwa xieraq li nsemmu l-aktar importanti u notevoli:
- Fundamentalment, tingħata aktar attenzjoni lill-kwalità tal-kodiċi, l-ittestjar u l-kontrolli awtomatiċi.
- Kontroll b'mod sinifikanti aktar waqt it-tħaddim, mill-iċċekkjar tal-parametri għall-verifika interna tal-istrutturi tad-database.
- Kompatifikazzjoni awtomatika u ġestjoni awtomatika tad-daqs tad-database.
- Format ta 'database wieħed għal assemblaġġi ta' 32-bit u 64-bit.
- Stima tad-daqs tal-kampjun skont il-meded (stima tal-mistoqsija tal-firxa).
- Appoġġ għal ċwievet kbar darbtejn daqs pancakes u daqs tal-paġna tad-database li jista 'jagħżel mill-utent.
Il-kandidat għar-rilaxx libmdbx huwa r-riżultat tad-deċiżjoni (ara hawn taħt) li jissepara l-proġetti MDBX u MithrilDB f'Awwissu 2019. Fl-istess ħin, libmdbx iddeċieda li jelimina d-dejn tekniku massimu (razzjonali) u jistabbilizza l-librerija. Fil-fatt, sar 2-3 darbiet aktar fid-direzzjoni magħżula milli kien inizjalment stmat u ppjanat:
- Ġie implimentat appoġġ għal Mac OS u pjattaformi tat-tieni saff: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. Jistgħu jiżdiedu appoġġ AIX u HP-UX kif meħtieġ.
- Sanitated il-kodiċi bl-użu ta 'Undefined Behavior Sanitizer u Address Sanitizer, eliminat it-twissijiet kollha meta tibni b'-Wpedantic, it-twissijiet kollha ta' Coverity Static Analyzer, eċċ.
- Aġġornament Deskrizzjonijiet tal-API.
- Amalgamazzjoni tal-kodiċi tas-sors għal faċilità ta 'inkorporazzjoni.
- CMake appoġġ.
- Appoġġ għal transazzjonijiet nested.
- L-użu ta' bootid biex jiddetermina jekk l-OS reġa' rebooteja (waqfien tad-database maħmuġin).
- Għadd minn tarf sa tarf ta' paġni aġġornati/qodma u informazzjoni estiża dwar it-tranżazzjonijiet.
- Għażla MDBX_ACCEDE għall-konnessjoni ma' database diġà miftuħa f'mod kompatibbli.
- Użu Imblukkar tal-OFD meta disponibbli.
- Backup sħun fil-pajp.
- Algoritmu ta' għażla intern ottimizzat speċjalizzat (sa 2-3 darbiet aktar mgħaġġel minn qsort() u sa 30% aktar mgħaġġel minn std::sort()).
- It-tul massimu taċ-ċavetta żdied.
- Kontroll awtomatiku tal-qari bil-quddiem (strateġija tal-caching tal-fajls tad-database fil-memorja).
- Auto-kompattifikazzjoni aktar aggressiva u aktar mgħaġġla.
- Strateġija aktar ottimali għall-għaqda tal-paġni tas-siġar B+.
- Kontroll ta' sistemi ta' fajls mhux lokali (NFS, Samba, eċċ.) Biex tipprevjeni ħsara fid-database jekk tintuża ħażin.
- Is-sett ta' testijiet ġie estiż.
L-iżvilupp tal-verżjoni "li jmiss" ta' libmdbx se jkompli bħala proġett separat MithrilDB, filwaqt li l-vettur ta 'żvilupp tal-verżjoni "kurrenti" ta' MDBX huwa mmirat biex jiffriża s-sett ta 'karatteristiċi u jistabbilizzah. Din id-deċiżjoni ttieħdet għal tliet raġunijiet:
- Totalment inkompatibbli: MithrilDB jeħtieġ format ta' fajl tad-database differenti (inkompatibbli) u API differenti (inkompatibbli) biex timplimenta l-karatteristiċi kollha ppjanati.
- Kodiċi sors ġdid: Il-kodiċi sors MithrilDB sar liċenzjat indipendenti minn LMDB, u l-proġett innifsu huwa ppjanat li jiġi ppubblikat taħt liċenzja differenti (approvata minn JEW JEKK liċenzja Apache 2.0imma le Fondazzjoni OpenLDAP).
- Is-separazzjoni tevita konfużjoni potenzjali, tipprovdi aktar ċertezza, u tiżgura li l-proġetti jkollhom triq indipendenti 'l quddiem.
MithrilDB, bħal MDBX, huwa wkoll ibbażat fuq siġra B+ u se jkollu wkoll prestazzjoni estremament għolja, filwaqt li jelimina numru ta 'żvantaġġi fundamentali ta' MDBX u LMDB. B'mod partikolari, il-problema ta '"qari fit-tul" se tiġi eliminata, li timmanifesta ruħha bħala "nefħa" tad-database minħabba l-fatt li l-ipproċessar taż-żibel huwa mblukkat minn transazzjonijiet ta' qari fit-tul. Fost il-karatteristiċi ġodda ta 'MithrilDB ta' min jinnota:
- appoġġ għat-tqegħid tad-database fuq diversi midja eteroġenja: HDD, SSD u memorja mhux volatili.
- strateġiji ottimali għal "valur" u "valur baxx", għal data "sħun", "sħun" u "kiesaħ".
- tuża Merkle tree biex tissorvelja l-integrità tad-database.
- użu fakultattiv tal-WAL u prestazzjoni ogħla b'mod sinifikanti f'xenarji ta' kitba intensiva u garanziji tal-integrità tad-dejta.
- Fissazzjoni għażżien ta 'qabda ta' data fuq diski.
Sors: linux.org.ru