Llyfrgell libmdbx yn un o ddisgynyddion LMDB sydd wedi'i hailgynllunio'n sylweddol - cronfa ddata hynod o uchel o berfformiad uchel, cryno wedi'i hymgorffori o werth allwedd.
Mae'r fersiwn gyfredol v0.5 yn ddatganiad technegol, yn nodi cwblhau unrhyw welliannau a'r trawsnewidiad i'r cam o brofi a sefydlogi terfynol cyhoeddus, gyda ffurfio'r datganiad llawn cyntaf o'r llyfrgell wedi hynny.
LMDB yn DBMS gwerth bysell wedi'i fewnosod trafodaethol eithaf adnabyddus yn seiliedig ar coeden B+ без logio rhagweithiol, sy'n caniatáu i haid o brosesau aml-edau weithio'n gystadleuol ac yn hynod effeithlon gyda chronfa ddata a rennir yn lleol (nid rhwydwaith). Yn ei dro, mae MDBX yn gyflymach ac yn fwy dibynadwy na LMDB, tra bod libmdbx yn cadw holl nodweddion allweddol ei hynafiad, megis ACID a di-blocio yn darllen gyda graddio llinellol ar draws creiddiau CPU, a hefyd yn ychwanegu nifer o rai newydd.
Mae disgrifiad o wahaniaethau a gwelliannau libmdbx mewn perthynas â LMDB yn haeddu erthygl ar wahân (y bwriedir ei chyhoeddi ar Habré and Medium). Yma mae'n briodol sôn am y rhai pwysicaf a mwyaf amlwg:
- Yn y bôn, telir mwy o sylw i ansawdd cod, profion a gwiriadau awtomatig.
- Llawer mwy o reolaeth yn ystod gweithrediad, o wirio paramedrau i archwiliad mewnol o strwythurau cronfa ddata.
- Cywasgu awto a rheoli maint cronfa ddata yn awtomatig.
- Fformat cronfa ddata sengl ar gyfer gwasanaethau 32-bit a 64-bit.
- Amcangyfrif maint y sampl yn ôl amrediadau (amcangyfrif ymholiad amrediad).
- Cefnogaeth i allweddi ddwywaith mor fawr â chrempogau a maint tudalen cronfa ddata y gellir ei ddewis gan ddefnyddwyr.
Yr ymgeisydd rhyddhau libmdbx yw canlyniad y penderfyniad (gweler isod) i wahanu'r prosiectau MDBX a MithrilDB ym mis Awst 2019. Ar yr un pryd, penderfynodd libmdbx ddileu'r ddyled dechnegol uchaf (rhesymol) a sefydlogi'r llyfrgell. Mewn gwirionedd, mae 2-3 gwaith yn fwy wedi'i wneud yn y cyfeiriad dynodedig nag a amcangyfrifwyd ac a gynlluniwyd yn wreiddiol:
- Mae cefnogaeth ar gyfer Mac OS a llwyfannau ail haen wedi'i weithredu: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. Gellir ychwanegu cefnogaeth AIX a HP-UX yn ôl yr angen.
- Cafodd y cod ei lanweithio gan ddefnyddio Glanweithydd Ymddygiad Anniffiniedig a Glanweithydd Cyfeiriad, cafodd yr holl rybuddion wrth adeiladu gyda -Wpedantic, pob rhybudd Dadansoddwr Statig Coverity, ac ati eu dileu.
- Diweddariad Disgrifiadau API.
- Cyfuno cod ffynhonnell er mwyn hwyluso'r broses o wreiddio.
- Cefnogaeth CMake.
- Cefnogaeth ar gyfer trafodion nythu.
- Defnyddio bootid i benderfynu a yw'r OS wedi ailgychwyn (stopio cronfa ddata fudr).
- Cyfrif o'r dechrau i'r diwedd o dudalennau wedi'u diweddaru/hen a gwybodaeth trafodion estynedig.
- Opsiwn MDBX_ACCEDE ar gyfer cysylltu â chronfa ddata sydd eisoes ar agor yn y modd cydnaws.
- Defnyddio blocio OFD pan fydd ar gael.
- Copi wrth gefn poeth yn y bibell.
- Algorithm didoli mewnol arbenigol wedi'i optimeiddio (hyd at 2-3 gwaith yn gyflymach na qsort () a hyd at 30% yn gyflymach na std:: sort()).
- Mae'r hyd allwedd uchaf wedi'i gynyddu.
- Rheolaeth awtomatig o ddarllen ymlaen llaw (strategaeth storio ffeiliau cronfa ddata yn y cof).
- Cywasgu auto mwy ymosodol a chyflymach.
- Strategaeth fwy optimaidd ar gyfer uno tudalennau coed B+.
- Rheoli systemau ffeiliau nad ydynt yn lleol (NFS, Samba, ac ati) i atal difrod cronfa ddata os cânt eu defnyddio'n anghywir.
- Mae'r set o brofion wedi'i ehangu.
Bydd datblygiad y fersiwn "nesaf" o libmdbx yn parhau fel prosiect ar wahân MithrilDB, tra bod fector datblygu'r fersiwn "cyfredol" o MDBX wedi'i anelu at rewi'r set nodwedd a'i sefydlogi. Gwnaethpwyd y penderfyniad hwn am dri rheswm:
- Cwbl anghydnaws: Mae MithrilDB yn gofyn am fformat ffeil cronfa ddata wahanol (anghydnaws) ac API gwahanol (anghydnaws) i weithredu'r holl nodweddion a gynlluniwyd.
- Cod ffynhonnell newydd: Mae cod ffynhonnell MithrilDB wedi'i drwyddedu'n annibynnol ar LMDB, a bwriedir cyhoeddi'r prosiect ei hun o dan drwydded wahanol (cymeradwywyd gan NEU OS trwydded Apache 2.0Ac nid Sefydliad OpenLDAP).
- Mae'r gwahaniad yn osgoi dryswch posibl, yn rhoi mwy o sicrwydd, ac yn sicrhau bod gan brosiectau lwybr annibynnol ymlaen.
Mae MithrilDB, fel MDBX, hefyd yn seiliedig ar coeden B+ a bydd hefyd yn cynnwys perfformiad hynod o uchel, tra'n dileu nifer o anfanteision sylfaenol MDBX a LMDB. Yn benodol, bydd y broblem o "ddarlleniadau hir", sy'n amlygu ei hun fel "chwydd" yn y gronfa ddata oherwydd bod prosesu sbwriel yn cael ei rwystro gan drafodion darllen hir, yn cael ei ddileu. Mae nodweddion MithrilDB newydd yn cynnwys:
- cefnogaeth ar gyfer gosod y gronfa ddata ar sawl cyfrwng heterogenaidd: HDD, SSD a chof anweddol.
- strategaethau gorau posibl ar gyfer “gwerthfawr” a “gwerth isel”, ar gyfer data “poeth”, “cynnes” ac “oer”.
- defnyddio coeden Merkle i fonitro cywirdeb cronfa ddata.
- defnydd dewisol o CIY a pherfformiad sylweddol uwch mewn senarios ysgrifennu-ddwys a gwarantau cywirdeb data.
- Diog dal i fyny sefydlogi data ar ddisgiau.
Ffynhonnell: linux.org.ru