Ail ymgeisydd rhyddhau libmdbx v1.0 ar ôl pum mlynedd o ddatblygiad.

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

Ychwanegu sylw