Ar ôl pum mlynedd o ddatblygiad, mae'r ail ymgeisydd rhyddhau libmdbx 1.0 wedi'i gyhoeddi

Ar gael ar gyfer profi'r ail ymgeisydd ar gyfer datganiadau llyfrgell libmdbx gyda gweithredu cronfa ddata gwerth allweddol cryno wedi'i sefydlu, perfformiad uchel. Mae'r fersiwn gyfredol (0.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. cod libmdbx dosbarthu gan trwyddedig o dan Drwydded Gyhoeddus OpenLDAP.

Mae'r llyfrgell MDBX yn fforch wedi'i ddiwygio'n sylweddol o LMDB — DBMS trafodol wedi'i fewnosod o'r dosbarth “gwerth allweddol” yn seiliedig ar coeden B+ без logio rhagweithiol, sy'n caniatáu i brosesau aml-edau weithio'n gystadleuol ac yn effeithlon gyda chronfa ddata a rennir yn lleol (nid rhwydwaith). Yn ei dro, mae MDBX yn gyflymach ac yn fwy dibynadwy na LMDB, ac ar yr un pryd yn cadw holl nodweddion allweddol ei hynafiad, megis ACID a darlleniadau di-rwystro gyda graddio llinellol ar draws creiddiau CPU.

Y gwahaniaethau pwysicaf rhwng MDBX a LMDB:

  • 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 cyfeintiau sampl yn ôl ystodau (amcangyfrif ymholiad amrediad).
  • Cefnogaeth i allweddi ddwywaith mor fawr â chrempogau a maint tudalen cronfa ddata y gellir ei ddewis gan ddefnyddwyr.

Mae'r ymgeisydd rhyddhau libmdbx yn ganlyniad i benderfyniad a wnaed ym mis Awst 2019 i wahanu'r prosiectau MDBX a MithrilDB. 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 i'r cyfeiriad dynodedig nag a amcangyfrifwyd ac a gynlluniwyd yn wreiddiol:

  • Mae cefnogaeth i lwyfannau macOS ac ail haen wedi'i rhoi ar waith: 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 (cyfuno) cod ffynhonnell er hwylustod.
  • 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.0, ddim Trwydded Gyhoeddus OpenLDAP).
  • Mae'r gwahaniad yn osgoi dryswch posibl, yn cyflwyno mwy o sicrwydd ac yn sicrhau llwybr annibynnol ar gyfer prosiectau.

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 i osod y gronfa ddata ar sawl cyfrwng heterogenaidd: HDD, SSD a chof anweddol.
  • Y strategaethau gorau posibl ar gyfer data “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 llawer gwell mewn senarios ysgrifennu-ddwys gyda gwarantau cywirdeb data.
  • Dal i fyny diog yn rhoi data i ddisgiau.

Ffynhonnell: opennet.ru

Ychwanegu sylw