Dod o hyd i ddibyniaethau swyddogaethol yn effeithlon mewn cronfeydd data

Defnyddir dod o hyd i ddibyniaethau swyddogaethol mewn data mewn amrywiol feysydd dadansoddi data: rheoli cronfa ddata, glanhau data, peirianneg wrthdroi cronfeydd data ac archwilio data. Yr ydym eisoes wedi cyhoeddi am y dibyniaethau eu hunain erthygl Anastasia Birillo a Nikita Bobrov. Y tro hwn, mae Anastasia, un o raddedigion y Ganolfan Gyfrifiadureg eleni, yn rhannu datblygiad y gwaith hwn fel rhan o'r gwaith ymchwil a amddiffynnodd yn y ganolfan.

Dod o hyd i ddibyniaethau swyddogaethol yn effeithlon mewn cronfeydd data

Dewis tasg

Wrth astudio yn y ganolfan CS, dechreuais astudio cronfeydd data yn fanwl, sef chwilio am ddibyniaethau swyddogaethol a gwahaniaethol. Roedd y pwnc hwn yn ymwneud â phwnc fy ngwaith cwrs yn y brifysgol, felly wrth weithio ar y gwaith cwrs, dechreuais ddarllen erthyglau am wahanol ddibyniaethau mewn cronfeydd data. Ysgrifennais adolygiad o'r maes hwn - un o fy rhai cyntaf erthyglau yn Saesneg a'i gyflwyno i gynhadledd SEIM-2017. Roeddwn yn hapus iawn pan glywais ei bod wedi'i derbyn wedi'r cyfan, a phenderfynais ymchwilio'n ddyfnach i'r pwnc. Nid yw'r cysyniad ei hun yn newydd - dechreuwyd ei ddefnyddio yn ôl yn y 90au, ond hyd yn oed nawr fe'i defnyddir mewn llawer o feysydd.

Yn ystod fy ail semester yn y ganolfan, dechreuais brosiect ymchwil i wella algorithmau ar gyfer dod o hyd i ddibyniaethau swyddogaethol. Bu'n gweithio arno ar y cyd â myfyriwr graddedig o Brifysgol Talaith St. Petersburg Nikita Bobrov yn JetBrains Research.

Cymhlethdod cyfrifiadol chwilio am ddibyniaethau swyddogaethol

Y brif broblem yw cymhlethdod cyfrifiannol. Mae nifer y dibyniaethau lleiaf posibl a dibwys wedi'i gyfyngu uwchlaw'r gwerth Dod o hyd i ddibyniaethau swyddogaethol yn effeithlon mewn cronfeydd datalle Dod o hyd i ddibyniaethau swyddogaethol yn effeithlon mewn cronfeydd data — nifer priodoleddau tabl. Mae amser gweithredu'r algorithmau yn dibynnu nid yn unig ar nifer y priodoleddau, ond hefyd ar nifer y rhesi. Yn y 90au, gallai algorithmau chwilio cyfraith ffederal ar gyfrifiadur pen desg arferol brosesu setiau data sy'n cynnwys hyd at 20 o nodweddion a degau o filoedd o resi mewn hyd at sawl awr. Mae algorithmau modern sy'n rhedeg ar broseswyr aml-graidd yn canfod dibyniaethau ar gyfer setiau data sy'n cynnwys cannoedd o briodoleddau (hyd at 200) a channoedd o filoedd o resi mewn tua'r un amser. Fodd bynnag, nid yw hyn yn ddigon: mae amser o'r fath yn annerbyniol ar gyfer y rhan fwyaf o gymwysiadau byd go iawn. Felly, rydym wedi datblygu dulliau i gyflymu algorithmau presennol.

Cynlluniau caching ar gyfer croestoriadau rhaniad

Yn rhan gyntaf y gwaith, fe wnaethom ddatblygu cynlluniau caching ar gyfer dosbarth o algorithmau sy'n defnyddio'r dull croestoriad rhaniad. Set o restrau yw rhaniad ar gyfer priodoledd, lle mae pob rhestr yn cynnwys rhifau llinell gyda'r un gwerthoedd ar gyfer priodoledd penodol. Gelwir pob rhestr o'r fath yn glwstwr. Mae llawer o algorithmau modern yn defnyddio rhaniadau i benderfynu a yw dibyniaeth yn cael ei chynnal ai peidio, sef, maent yn cadw at y lema: Dibyniaeth Dod o hyd i ddibyniaethau swyddogaethol yn effeithlon mewn cronfeydd data a gynhelir os Dod o hyd i ddibyniaethau swyddogaethol yn effeithlon mewn cronfeydd data. Yma Dod o hyd i ddibyniaethau swyddogaethol yn effeithlon mewn cronfeydd data dynodir rhaniad a defnyddir y cysyniad o faint rhaniad - nifer y clystyrau sydd ynddo. Algorithmau sy'n defnyddio rhaniadau, pan fydd y ddibyniaeth yn cael ei dorri, yn ychwanegu priodoleddau ychwanegol i ochr chwith y ddibyniaeth, ac yna ei ailgyfrifo, gan berfformio gweithrediad croestoriad rhaniadau. Gelwir y llawdriniaeth hon yn arbenigo yn yr erthyglau. Ond fe wnaethom sylwi y gellir ailddefnyddio rhaniadau ar gyfer dibyniaethau a fyddai ond yn cael eu cadw ar ôl ychydig o gylchoedd o arbenigedd, a all leihau amser rhedeg yr algorithmau yn sylweddol, gan fod y gweithrediad croestoriad yn ddrud.

Felly, cynigiom hewristig yn seiliedig ar Shannon Entropi ac Ansicrwydd Ginny, yn ogystal â'n metrig, y gwnaethom ei alw'n Entropi Gwrthdro. Mae'n addasiad bychan o Shannon Entropi ac yn cynyddu wrth i unigrywiaeth y set ddata gynyddu. Mae'r hewristig arfaethedig fel a ganlyn:

Dod o hyd i ddibyniaethau swyddogaethol yn effeithlon mewn cronfeydd data

Yma Dod o hyd i ddibyniaethau swyddogaethol yn effeithlon mewn cronfeydd data — graddau unigrywiaeth y rhaniad a gyfrifwyd yn ddiweddar Dod o hyd i ddibyniaethau swyddogaethol yn effeithlon mewn cronfeydd dataAc Dod o hyd i ddibyniaethau swyddogaethol yn effeithlon mewn cronfeydd data yw canolrif y graddau o unigrywiaeth ar gyfer priodoleddau unigol. Profwyd y tri metrig a ddisgrifir uchod fel metrig unigrywiaeth. Gallwch hefyd sylwi bod dau addasydd yn yr hewristig. Mae'r cyntaf yn nodi pa mor agos yw'r rhaniad presennol i'r allwedd gynradd ac yn caniatáu ichi storio'r rhaniadau hynny sy'n bell o'r allwedd bosibl i raddau mwy. Mae'r ail addasydd yn eich galluogi i fonitro deiliadaeth storfa ac felly'n eich annog i ychwanegu mwy o raniadau i'r storfa os oes lle am ddim ar gael. Roedd datrysiad llwyddiannus y broblem hon yn ein galluogi i gyflymu algorithm PYRO 10-40%, yn dibynnu ar y set ddata. Mae'n werth nodi mai'r algorithm PYRO yw'r mwyaf llwyddiannus yn y maes hwn.

Yn y ffigur isod gallwch weld canlyniadau cymhwyso'r hewristig arfaethedig o'i gymharu â dull caching darn arian-fflip sylfaenol. Mae'r echelin X yn logarithmig.

Dod o hyd i ddibyniaethau swyddogaethol yn effeithlon mewn cronfeydd data

Ffordd amgen o storio rhaniadau

Yna fe wnaethom gynnig ffordd amgen o storio rhaniadau. Mae rhaniadau yn set o glystyrau, ac mae pob un ohonynt yn storio niferoedd tuples gyda gwerthoedd union yr un fath ar gyfer nodweddion penodol. Gall y clystyrau hyn gynnwys dilyniannau hir o rifau tuple, er enghraifft, os yw'r data mewn tabl wedi'i drefnu. Felly, cynigiwyd cynllun cywasgu ar gyfer storio rhaniadau, sef storio gwerthoedd mewn clystyrau o raniadau yn ysbeidiol:

$$display$$pi(X) = {{ underbrace{1, 2, 3, 4, 5}_{Cyfwng cyntaf}, underbrace{7, 8}_{Ail egwyl}, 10}}\ downarrow{ Cywasgu} \ pi(X) = {{ underbrace{$, 1, 5}_{First~interval}, underbrace{7, 8}_{Second~interval}, 10}}$$display$$

Roedd y dull hwn yn gallu lleihau'r defnydd o gof yn ystod gweithrediad yr algorithm TONE o 1 i 25%. Mae algorithm TONE yn algorithm clasurol ar gyfer chwilio am gyfreithiau ffederal; mae'n defnyddio rhaniadau yn ystod ei waith. Fel rhan o'r arfer, dewiswyd yr algorithm TANE, gan ei bod yn llawer haws gweithredu storfa egwyl ynddo nag, er enghraifft, yn PYRO er mwyn gwerthuso a yw'r dull arfaethedig yn gweithio. Cyflwynir y canlyniadau a gafwyd yn y ffigur isod. Mae'r echelin X yn logarithmig.

Dod o hyd i ddibyniaethau swyddogaethol yn effeithlon mewn cronfeydd data

Cynhadledd ADBIS-2019

Yn seiliedig ar ganlyniadau'r ymchwil, ym mis Medi 2019 cyhoeddais erthygl Caching Smart ar gyfer Darganfod Dibyniaeth Swyddogaethol Effeithlon yn y 23ain Gynhadledd Ewropeaidd ar Ddatblygiadau mewn Cronfeydd Data a Systemau Gwybodaeth (ADBIS-2019). Yn ystod y cyflwyniad, nodwyd y gwaith gan Bernhard Thalheim, person arwyddocaol ym maes cronfeydd data. Roedd canlyniadau'r ymchwil yn sail i'm traethawd hir yn y radd meistr mewn mathemateg a mecaneg ym Mhrifysgol Talaith St Petersburg, pan weithredwyd y ddau ddull arfaethedig (celcio a chywasgu) yn y ddau algorithm: TANE a PYRO. Ar ben hynny, dangosodd y canlyniadau fod y dulliau arfaethedig yn gyffredinol, oherwydd ar y ddau algorithm, gyda'r ddau ddull, gwelwyd gostyngiad sylweddol yn y defnydd o gof, yn ogystal â gostyngiad sylweddol yn amser gweithredu'r algorithmau.

Ffynhonnell: hab.com

Ychwanegu sylw