{"id":86335,"date":"2020-06-24T07:42:54","date_gmt":"2020-06-24T05:42:54","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/effektivnyj-poisk-funkczionalnyh-zavisimostej-v-bazah-dannyh"},"modified":"2020-06-24T07:42:54","modified_gmt":"2020-06-24T05:42:54","slug":"effektivnyj-poisk-funkczionalnyh-zavisimostej-v-bazah-dannyh","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/effektivnyj-poisk-funkczionalnyh-zavisimostej-v-bazah-dannyh","title":{"rendered":"Efekt\u00edvne vyh\u013ead\u00e1vanie funk\u010dn\u00fdch z\u00e1vislost\u00ed v datab\u00e1zach","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>H\u013eadanie funk\u010dn\u00fdch z\u00e1vislost\u00ed v d\u00e1tach sa pou\u017e\u00edva v r\u00f4znych oblastiach anal\u00fdzy d\u00e1t: spr\u00e1va datab\u00e1z, \u010distenie d\u00e1t, reverzn\u00e9 in\u017einierstvo datab\u00e1z a explora\u010dn\u00e1 anal\u00fdza. O samotn\u00fdch z\u00e1vislostiach sme u\u017e publikovali. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/JetBrains-education\/blog\/473882\/\">\u010dl\u00e1nok<\/a><\/noindex> Anast\u00e1zie Birillo a Nikity Bobrova. Tentoraz sa Anast\u00e1zia \u2014 absolventka Computer Science Center tohto roku \u2014 del\u00ed o pokrok tejto pr\u00e1ce v r\u00e1mci NIR, ktor\u00fa obh\u00e1jila v centre. <\/p>\n<p><img decoding=\"async\" alt=\"Efekt\u00edvne vyh\u013ead\u00e1vanie funk\u010dn\u00fdch z\u00e1vislost\u00ed v datab\u00e1zach\" src=\"\/wp-content\/uploads\/2020\/06\/5c88e821622e91c2058b0c11b6718bc9.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>V\u00fdber \u00falohy <\/h3>\n<p>\nPo\u010das \u0161t\u00fadia v CS centre som za\u010dala h\u013abkovo \u0161tudova\u0165 datab\u00e1zy, konkr\u00e9tne h\u013eadanie funk\u010dn\u00fdch a rozdielov\u00fdch z\u00e1vislost\u00ed. T\u00e1to t\u00e9ma bola spojen\u00e1 s t\u00e9mou mojej bakal\u00e1rskej pr\u00e1ce na univerzite, tak\u017ee po\u010das pr\u00e1ce na bakal\u00e1rke som za\u010dala \u010d\u00edta\u0165 \u010dl\u00e1nky o r\u00f4znych z\u00e1vislostiach v datab\u00e1zach. Nap\u00edsala som preh\u013ead tejto oblasti \u2014 jednu z mojich prv\u00fdch. <noindex><a rel=\"nofollow\" href=\"https:\/\/seim-conf.org\/media\/materials\/2017\/proceedings\/SEIM-2017_Full_Papers.pdf#page=44\">\u010dl\u00e1nkov<\/a><\/noindex> v angli\u010dtine a predlo\u017eila ju na konferenciu SEIM-2017. Bola som ve\u013emi rada, ke\u010f som sa dozvedela, \u017ee bola prijat\u00e1, a rozhodla som sa h\u013ab\u0161ie venova\u0165 t\u00e9me. Samotn\u00e1 koncepcia nie je nov\u00e1 \u2014 za\u010dali ju aplikova\u0165 u\u017e v 90-tych rokoch, no aj dnes nach\u00e1dza uplatnenie v mnoh\u00fdch oblastiach. <\/p>\n<p>V druhom semestri \u0161t\u00fadia v centre som za\u010dala v\u00fdskumn\u00fd projekt na zlep\u0161enie algoritmov h\u013eadania funk\u010dn\u00fdch z\u00e1vislost\u00ed. Pracovala som na \u0148om spolu s postgradu\u00e1lnym \u0161tudentom SPbGU Nikitom Bobrovom v JetBrains Research. <\/p>\n<h3>V\u00fdpo\u010dtov\u00e1 n\u00e1ro\u010dnos\u0165 h\u013eadania funk\u010dn\u00fdch z\u00e1vislost\u00ed<\/h3>\n<p>\nHlavn\u00fd probl\u00e9m \u2014 v\u00fdpo\u010dtov\u00e1 n\u00e1ro\u010dnos\u0165. Po\u010det mo\u017en\u00fdch minim\u00e1lnych a netrivi\u00e1lnych z\u00e1vislost\u00ed je obmedzen\u00fd hornou hodnotou <img decoding=\"async\" alt=\"Efekt\u00edvne vyh\u013ead\u00e1vanie funk\u010dn\u00fdch z\u00e1vislost\u00ed v datab\u00e1zach\" src=\"\/wp-content\/uploads\/2020\/06\/bdd1d2928000d8128ba21920e9b4c765.jpg\" style=\"display:block;margin: 0 auto;\" \/>, kde <img decoding=\"async\" alt=\"Efekt\u00edvne vyh\u013ead\u00e1vanie funk\u010dn\u00fdch z\u00e1vislost\u00ed v datab\u00e1zach\" src=\"\/wp-content\/uploads\/2020\/06\/6211a4051b8b98e32312948027b4a5f3.jpg\" style=\"display:block;margin: 0 auto;\" \/> \u2014 po\u010dtom atrib\u00fatov tabu\u013eky. \u010casov\u00e1 n\u00e1ro\u010dnos\u0165 algoritmov z\u00e1vis\u00ed nielen od po\u010dtu atrib\u00fatov, ale aj od po\u010dtu riadkov. V 90-tych rokoch mohli algoritmy na h\u013eadanie FZ na be\u017enom stolnom po\u010d\u00edta\u010di spracov\u00e1va\u0165 d\u00e1tov\u00e9 sady obsahuj\u00face a\u017e 20 atrib\u00fatov a desiatky tis\u00edc riadkov po\u010das nieko\u013ek\u00fdch hod\u00edn. Modern\u00e9 algoritmy, ktor\u00e9 pracuj\u00fa na viacjadrov\u00fdch procesoroch, odha\u013euj\u00fa z\u00e1vislosti pre d\u00e1tov\u00e9 sady pozost\u00e1vaj\u00face zo stoviek atrib\u00fatov (a\u017e 200) a stoviek tis\u00edc riadkov, pribli\u017ene v rovnakom \u010dase. Napriek tomu je to st\u00e1le nedostato\u010dn\u00e9: tak\u00fdto \u010das je neprijate\u013en\u00fd pre v\u00e4\u010d\u0161inu re\u00e1lnych aplik\u00e1ci\u00ed. Preto sme vyv\u00edjali pr\u00edstupy na ur\u00fdchlenie existuj\u00facich algoritmov. <\/p>\n<h3>Sch\u00e9my ke\u0161ovania pre priese\u010dn\u00e9 partitiony<\/h3>\n<p>\nV prvej \u010dasti pr\u00e1ce sme vyvinuli sch\u00e9my cachingu pre triedu algoritmov, ktor\u00e9 pou\u017e\u00edvaj\u00fa met\u00f3du priese\u010dn\u00edka part\u00edci\u00ed. Part\u00edcia pre atrib\u00fat predstavuje s\u00fabor zoznamov, kde ka\u017ed\u00fd zoznam obsahuje \u010d\u00edsla riadkov so rovnak\u00fdmi hodnotami pre dan\u00fd atrib\u00fat. Ka\u017ed\u00fd tak\u00fd zoznam sa naz\u00fdva klaster. Mnoh\u00e9 modern\u00e9 algoritmy pou\u017e\u00edvaj\u00fa part\u00edcie na ur\u010denie, \u010di je z\u00e1vislos\u0165 udr\u017eiavan\u00e1 alebo nie, pri\u010dom sa riadia lemou: Z\u00e1vislos\u0165 <img decoding=\"async\" alt=\"Efekt\u00edvne vyh\u013ead\u00e1vanie funk\u010dn\u00fdch z\u00e1vislost\u00ed v datab\u00e1zach\" src=\"\/wp-content\/uploads\/2020\/06\/fa2667dcc78cded2d42bbf0a415d4de6.jpg\" style=\"display:block;margin: 0 auto;\" \/> je udr\u017eiavan\u00e1, ak <img decoding=\"async\" alt=\"Efekt\u00edvne vyh\u013ead\u00e1vanie funk\u010dn\u00fdch z\u00e1vislost\u00ed v datab\u00e1zach\" src=\"\/wp-content\/uploads\/2020\/06\/b314fd0e7dbd225098198e48d5b28d38.jpg\" style=\"display:block;margin: 0 auto;\" \/>. Tu <img decoding=\"async\" alt=\"Efekt\u00edvne vyh\u013ead\u00e1vanie funk\u010dn\u00fdch z\u00e1vislost\u00ed v datab\u00e1zach\" src=\"\/wp-content\/uploads\/2020\/06\/ef197235c0b8f15673c5179423349e21.jpg\" style=\"display:block;margin: 0 auto;\" \/> je ur\u010den\u00e1 part\u00edcia a pou\u017e\u00edva sa pojem ve\u013ekos\u0165 part\u00edcie \u2013 po\u010det klastrov v nej. Algoritmy, ktor\u00e9 pou\u017e\u00edvaj\u00fa part\u00edcie, pri poru\u0161en\u00ed z\u00e1vislosti prid\u00e1vaj\u00fa dodato\u010dn\u00e9 atrib\u00faty do \u013eavej \u010dasti z\u00e1vislosti, po \u010dom ju znova prepo\u010d\u00edtaj\u00fa, vykon\u00e1vaj\u00fac oper\u00e1ciu priese\u010dn\u00edka part\u00edci\u00ed. Tak\u00e1to oper\u00e1cia sa v \u010dl\u00e1nkoch naz\u00fdva \u0161pecializ\u00e1cia. Av\u0161ak v\u0161imli sme si, \u017ee part\u00edcie pre z\u00e1vislosti, ktor\u00e9 bud\u00fa udr\u017eiavan\u00e9 a\u017e po nieko\u013ek\u00fdch kol\u00e1ch \u0161pecializ\u00e1cie, m\u00f4\u017eu by\u0165 akt\u00edvne znovu pou\u017e\u00edvan\u00e9, \u010do m\u00f4\u017ee v\u00fdznamne skr\u00e1ti\u0165 \u010das pr\u00e1ce algoritmov, ke\u010f\u017ee oper\u00e1cia priese\u010dn\u00edka je n\u00e1ro\u010dn\u00e1. <\/p>\n<p>Preto sme navrhli heuristiku zalo\u017een\u00fa na Shannonovej entropii a Giniho neistote, ako aj na\u0161ej metrike, ktor\u00fa sme nazvali Opa\u010dn\u00e1 entropia. Je to mal\u00e1 modifik\u00e1cia Shannonovej entropie a rastie s t\u00fdm, ako rastie jedine\u010dnos\u0165 s\u00faboru \u00fadajov. Navrhnut\u00e1 heuristika vyzer\u00e1 nasledovne:<\/p>\n<p><img decoding=\"async\" alt=\"Efekt\u00edvne vyh\u013ead\u00e1vanie funk\u010dn\u00fdch z\u00e1vislost\u00ed v datab\u00e1zach\" src=\"\/wp-content\/uploads\/2020\/06\/4d9750c9f41679ae013ee7118928566b.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Tu <img decoding=\"async\" alt=\"Efekt\u00edvne vyh\u013ead\u00e1vanie funk\u010dn\u00fdch z\u00e1vislost\u00ed v datab\u00e1zach\" src=\"\/wp-content\/uploads\/2020\/06\/f3e620ccc932916349b338f613723542.jpg\" style=\"display:block;margin: 0 auto;\" \/> \u2014 miera jedine\u010dnosti ned\u00e1vno vypo\u010d\u00edtanej part\u00edcie <img decoding=\"async\" alt=\"Efekt\u00edvne vyh\u013ead\u00e1vanie funk\u010dn\u00fdch z\u00e1vislost\u00ed v datab\u00e1zach\" src=\"\/wp-content\/uploads\/2020\/06\/4a43e7b49fc30d8a928fb365567c724a.jpg\" style=\"display:block;margin: 0 auto;\" \/>, a <img decoding=\"async\" alt=\"Efekt\u00edvne vyh\u013ead\u00e1vanie funk\u010dn\u00fdch z\u00e1vislost\u00ed v datab\u00e1zach\" src=\"\/wp-content\/uploads\/2020\/06\/c21371f6b9ec89f5d93917e3c3c7df07.jpg\" style=\"display:block;margin: 0 auto;\" \/> je medi\u00e1nom stup\u0148a jedine\u010dnosti pre jednotliv\u00e9 atrib\u00faty. Ako metrika jedine\u010dnosti boli vysk\u00fa\u0161an\u00e9 v\u0161etky tri metriky op\u00edsan\u00e9 vy\u0161\u0161ie. Taktie\u017e je mo\u017en\u00e9 poznamena\u0165, \u017ee v heuristike s\u00fa pr\u00edtomn\u00e9 dva modifik\u00e1tory. Prv\u00fd nazna\u010duje, ako bl\u00edzko je aktu\u00e1lna partition k prim\u00e1rnemu k\u013e\u00fa\u010du a umo\u017e\u0148uje v\u00e4\u010d\u0161iu mieru cachovania t\u00fdch partition, ktor\u00e9 s\u00fa \u010faleko od potenci\u00e1lneho k\u013e\u00fa\u010da. Druh\u00fd modifik\u00e1tor umo\u017e\u0148uje sledovanie obsadenosti cache a tak stimuluje prid\u00e1vanie v\u00e4\u010d\u0161ieho mno\u017estva partition do cache pri vo\u013enom mieste. \u00daspe\u0161n\u00e9 vyrie\u0161enie tejto \u00falohy umo\u017enilo zr\u00fdchli\u0165 algoritmus PYRO o 10-40% v z\u00e1vislosti od datasetu. Je potrebn\u00e9 poznamena\u0165, \u017ee algoritmus PYRO je naj\u00faspe\u0161nej\u0161\u00ed v tejto oblasti. <\/p>\n<p>Na obr\u00e1zku ni\u017e\u0161ie m\u00f4\u017eete vidie\u0165 v\u00fdsledky aplik\u00e1cie navrhnutej heuristiky v porovnan\u00ed so z\u00e1kladn\u00fdm pr\u00edstupom k cachovaniu zalo\u017eenom na h\u00e1dzan\u00ed mince. Os X je logaritmick\u00e1.<\/p>\n<p><img decoding=\"async\" alt=\"Efekt\u00edvne vyh\u013ead\u00e1vanie funk\u010dn\u00fdch z\u00e1vislost\u00ed v datab\u00e1zach\" src=\"\/wp-content\/uploads\/2020\/06\/3d6fe6a57237b27e76e6833965dc9c93.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Alternat\u00edvny sp\u00f4sob ukladania partition<\/h3>\n<p>\nN\u00e1sledne sme navrhli alternat\u00edvny sp\u00f4sob ukladania partition. Partition predstavuje s\u00fabor klastrov, v ktor\u00fdch s\u00fa ulo\u017een\u00e9 \u010d\u00edsla n-t\u00edc so synchronizovan\u00fdmi hodnotami pod\u013ea ur\u010dit\u00fdch atrib\u00fatov. Tieto klastry m\u00f4\u017eu obsahova\u0165 dlh\u00e9 sekvencie \u010d\u00edsiel n-t\u00edc, napr\u00edklad ak s\u00fa \u00fadaje v tabu\u013eke usporiadan\u00e9. Preto sme navrhli sch\u00e9mu kompresie pre ukladanie partition, a to konkr\u00e9tne intervalov\u00e9 ukladanie hodn\u00f4t v klastri partition:<\/p>\n<p>$$display$$pi(X) = {{underbrace{1, 2, 3, 4, 5}_{Prv\u00fd~interval}, underbrace{7, 8}_{Druh\u00fd~interval}, 10}}\\ downarrow{Kompresia}\\ pi(X) = {{underbrace{$, 1, 5}_{Prv\u00fd~interval}, underbrace{7, 8}_{Druh\u00fd~interval}, 10}}$$display$$<\/p>\n<p>T\u00e1to met\u00f3da dok\u00e1zala zn\u00ed\u017ei\u0165 spotrebu pam\u00e4te po\u010das \u010dinnosti algoritmu TANE o 1 a\u017e 25%. Algoritmus TANE je klasick\u00fd algoritmus na vyh\u013ead\u00e1vanie FD, po\u010das jeho pr\u00e1ce vyu\u017e\u00edva partition. V r\u00e1mci praxe bol vybran\u00fd pr\u00e1ve algoritmus TANE, preto\u017ee implementova\u0165 do neho intervalov\u00e9 ukladanie bolo podstatne jednoduch\u0161ie ako napr\u00edklad do PYRO, aby sa zhodnotilo, \u010di navrhovan\u00fd pr\u00edstup funguje. Z\u00edskan\u00e9 v\u00fdsledky s\u00fa prezentovan\u00e9 na obr\u00e1zku ni\u017e\u0161ie. Os X je logaritmick\u00e1.<\/p>\n<p><img decoding=\"async\" alt=\"Efekt\u00edvne vyh\u013ead\u00e1vanie funk\u010dn\u00fdch z\u00e1vislost\u00ed v datab\u00e1zach\" src=\"\/wp-content\/uploads\/2020\/06\/609a547d3d19b6e2c54ed70481ff6cdb.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Konferencia ADBIS-2019<\/h3>\n<p>\nNa z\u00e1klade v\u00fdskumu v septembri 2019 som vyst\u00fapila s \u010dl\u00e1nkom <noindex><a rel=\"nofollow\" href=\"https:\/\/link.springer.com\/chapter\/10.1007\/978-3-030-30278-8_7\">Smart Caching for Efficient Functional Dependency Discovery<\/a><\/noindex> Na konferencii 23. eur\u00f3pskej konferencie o pokroku v datab\u00e1zach a informa\u010dn\u00fdch syst\u00e9moch (ADBIS-2019) po\u010das prezent\u00e1cie vyzdvihol pr\u00e1cu Bernhard Thalheim, v\u00fdznamn\u00fd \u010dlovek v oblasti datab\u00e1z. V\u00fdsledky v\u00fdskumu tvorili z\u00e1klad mojej diplomovej pr\u00e1ce na mat-fyzike na SPbGU, po\u010das ktorej boli obe navrhovan\u00e9 pr\u00edstupy (cacheovanie a kompresia) implementovan\u00e9 do oboch algoritmov: TANE a PYRO. V\u00fdsledky uk\u00e1zali, \u017ee navrhovan\u00e9 pr\u00edstupy s\u00fa univerz\u00e1lne, preto\u017ee pri oboch algoritmoch a oboch pr\u00edstupoch do\u0161lo k v\u00fdrazn\u00e9mu zn\u00ed\u017eeniu spotrebovanej pam\u00e4te, ako aj k v\u00fdznamn\u00e9mu skr\u00e1teniu \u010dasu spracovania algoritmov.<br \/>\n<br \/>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/JetBrains-education\/blog\/507716\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u043e\u0438\u0441\u043a \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u0445 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445: \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0431\u0430\u0437\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u043e\u0447\u0438\u0441\u0442\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445, \u0440\u0435\u0432\u0451\u0440\u0441-\u0438\u043d\u0436\u0438\u043d\u0438\u0440\u0438\u043d\u0433 \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u044d\u043a\u0441\u043f\u043b\u043e\u0440\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445. \u041f\u0440\u043e \u0441\u0430\u043c\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043c\u044b \u0443\u0436\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043b\u0438 \u0441\u0442\u0430\u0442\u044c\u044e \u0410\u043d\u0430\u0441\u0442\u0430\u0441\u0438\u0438 \u0411\u0438\u0440\u0438\u043b\u043b\u043e \u0438 \u041d\u0438\u043a\u0438\u0442\u044b \u0411\u043e\u0431\u0440\u043e\u0432\u0430. \u0412 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u0410\u043d\u0430\u0441\u0442\u0430\u0441\u0438\u044f \u2014 \u0432\u044b\u043f\u0443\u0441\u043a\u043d\u0438\u0446\u0430 Computer Science Center \u044d\u0442\u043e\u0433\u043e \u0433\u043e\u0434\u0430 \u2014 \u0434\u0435\u043b\u0438\u0442\u0441\u044f \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435\u043c \u044d\u0442\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u041d\u0418\u0420, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043e\u043d\u0430 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":86336,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-86335","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u043e\u0438\u0441\u043a \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u0445 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445: \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0431\u0430\u0437\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u043e\u0447\u0438\u0441\u0442\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445, \u0440\u0435\u0432\u0451\u0440\u0441-\u0438\u043d\u0436\u0438\u043d\u0438\u0440\u0438\u043d\u0433 \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u044d\u043a\u0441\u043f\u043b\u043e\u0440\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/effektivnyj-poisk-funkczionalnyh-zavisimostej-v-bazah-dannyh\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sk_SK\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u042d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0432 \u0431\u0430\u0437\u0430\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u043e\u0438\u0441\u043a \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u0445 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445: \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0431\u0430\u0437\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u043e\u0447\u0438\u0441\u0442\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445, \u0440\u0435\u0432\u0451\u0440\u0441-\u0438\u043d\u0436\u0438\u043d\u0438\u0440\u0438\u043d\u0433 \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u044d\u043a\u0441\u043f\u043b\u043e\u0440\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/effektivnyj-poisk-funkczionalnyh-zavisimostej-v-bazah-dannyh\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-06-24T05:42:54+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-06-24T05:42:54+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Efekt\u00edvne h\u013eadanie funk\u010dn\u00fdch z\u00e1vislost\u00ed v datab\u00e1zach | ProHoster","description":"H\u013eadanie funk\u010dn\u00fdch z\u00e1vislost\u00ed v \u00fadajoch sa uplat\u0148uje v r\u00f4znych oblastiach anal\u00fdzy \u00fadajov: spr\u00e1va datab\u00e1z, \u010distenie \u00fadajov, reverzn\u00e9 in\u017einierstvo datab\u00e1z a prieskum \u00fadajov.","canonical_url":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/effektivnyj-poisk-funkczionalnyh-zavisimostej-v-bazah-dannyh","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sk_SK","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u042d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0432 \u0431\u0430\u0437\u0430\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 | ProHoster","og:description":"\u041f\u043e\u0438\u0441\u043a \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u0445 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445: \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0431\u0430\u0437\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u043e\u0447\u0438\u0441\u0442\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445, \u0440\u0435\u0432\u0451\u0440\u0441-\u0438\u043d\u0436\u0438\u043d\u0438\u0440\u0438\u043d\u0433 \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u044d\u043a\u0441\u043f\u043b\u043e\u0440\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445.","og:url":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/effektivnyj-poisk-funkczionalnyh-zavisimostej-v-bazah-dannyh","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-06-24T05:42:54+00:00","article:modified_time":"2020-06-24T05:42:54+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"86335","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 14:17:33","updated":"2022-09-27 17:20:14","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/86335","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/comments?post=86335"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/86335\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media\/86336"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media?parent=86335"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/categories?post=86335"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/tags?post=86335"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}