{"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\/cs\/blog\/administrirovanie\/effektivnyj-poisk-funkczionalnyh-zavisimostej-v-bazah-dannyh","title":{"rendered":"Efektivn\u00ed vyhled\u00e1v\u00e1n\u00ed funk\u010dn\u00edch z\u00e1vislost\u00ed v datab\u00e1z\u00edch.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Hled\u00e1n\u00ed funk\u010dn\u00edch z\u00e1vislost\u00ed v datech se uplat\u0148uje v r\u016fzn\u00fdch oblastech anal\u00fdzy dat: spr\u00e1v\u011b datab\u00e1z\u00ed, \u010di\u0161t\u011bn\u00ed dat, reverzn\u00edm in\u017een\u00fdrstv\u00ed datab\u00e1z\u00ed a exploraci dat. O samotn\u00fdch z\u00e1vislostech jsme ji\u017e publikovali. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/JetBrains-education\/blog\/473882\/\">\u010dl\u00e1nek<\/a><\/noindex> Anastasii Birillo a Nikitu Bobrova. Tentokr\u00e1t Anastasie \u2013 absolventka Computer Science Center leto\u0161n\u00edho roku \u2013 sd\u00edl\u00ed pokrok t\u00e9to pr\u00e1ce v r\u00e1mci v\u00fdzkumn\u00e9ho projektu, kter\u00fd obh\u00e1jila v centru. <\/p>\n<p><img decoding=\"async\" alt=\"Efektivn\u00ed vyhled\u00e1v\u00e1n\u00ed funk\u010dn\u00edch z\u00e1vislost\u00ed v datab\u00e1z\u00edch.\" 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\u00fdb\u011br \u00fakolu <\/h3>\n<p>\nB\u011bhem studia v CS centru jsem za\u010dala podrobn\u011b zkoumat datab\u00e1ze, konkr\u00e9tn\u011b hled\u00e1n\u00ed funk\u010dn\u00edch a diferen\u010dn\u00edch z\u00e1vislost\u00ed. Tato t\u00e9ma byla spojena s t\u00e9matem m\u00e9 bakal\u00e1\u0159sk\u00e9 pr\u00e1ce na univerzit\u011b, tak\u017ee b\u011bhem pr\u00e1ce na bakal\u00e1\u0159sk\u00e9 jsem za\u010dala \u010d\u00edst \u010dl\u00e1nky o r\u016fzn\u00fdch z\u00e1vislostech v datab\u00e1z\u00edch. Napsala jsem p\u0159ehled t\u00e9to oblasti \u2013 jedno ze sv\u00fdch prvn\u00edch. <noindex><a rel=\"nofollow\" href=\"https:\/\/seim-conf.org\/media\/materials\/2017\/proceedings\/SEIM-2017_Full_Papers.pdf#page=44\">\u010dl\u00e1nk\u016f<\/a><\/noindex> v anglick\u00e9m jazyce a p\u0159edlo\u017eila ho na konferenci SEIM-2017. Byla jsem velmi r\u00e1da, kdy\u017e jsem zjistila, \u017ee byla st\u00e1le p\u0159ijata, a rozhodla jsem se t\u00e9ma podrobn\u011b prozkoumat. Samotn\u00e1 koncepce nen\u00ed nov\u00e1 \u2013 za\u010dali ji pou\u017e\u00edvat u\u017e v 90. letech, ale i dnes nach\u00e1z\u00ed uplatn\u011bn\u00ed v mnoha oblastech. <\/p>\n<p>Ve druh\u00e9m semestru studia v centru jsem zah\u00e1jila v\u011bdecko-v\u00fdzkumn\u00fd projekt zam\u011b\u0159en\u00fd na zlep\u0161en\u00ed algoritm\u016f pro hled\u00e1n\u00ed funk\u010dn\u00edch z\u00e1vislost\u00ed. Pracovala jsem na n\u011bm spole\u010dn\u011b s postgradu\u00e1ln\u00edm studentem SPbGU Nikitou Bobrovem v JetBrains Research. <\/p>\n<h3>V\u00fdpo\u010detn\u00ed slo\u017eitost hled\u00e1n\u00ed funk\u010dn\u00edch z\u00e1vislost\u00ed<\/h3>\n<p>\nHlavn\u00edm probl\u00e9mem je v\u00fdpo\u010detn\u00ed slo\u017eitost. Po\u010det mo\u017en\u00fdch minim\u00e1ln\u00edch a netrivi\u00e1ln\u00edch z\u00e1vislost\u00ed je omezen zeshora hodnotou <img decoding=\"async\" alt=\"Efektivn\u00ed vyhled\u00e1v\u00e1n\u00ed funk\u010dn\u00edch z\u00e1vislost\u00ed v datab\u00e1z\u00edch.\" src=\"\/wp-content\/uploads\/2020\/06\/bdd1d2928000d8128ba21920e9b4c765.jpg\" style=\"display:block;margin: 0 auto;\" \/>, kde <img decoding=\"async\" alt=\"Efektivn\u00ed vyhled\u00e1v\u00e1n\u00ed funk\u010dn\u00edch z\u00e1vislost\u00ed v datab\u00e1z\u00edch.\" src=\"\/wp-content\/uploads\/2020\/06\/6211a4051b8b98e32312948027b4a5f3.jpg\" style=\"display:block;margin: 0 auto;\" \/> \u2013 po\u010det atribut\u016f tabulky. Doba b\u011bhu algoritm\u016f z\u00e1vis\u00ed nejen na po\u010dtu atribut\u016f, ale i na po\u010dtu \u0159\u00e1dk\u016f. V 90. letech mohly algoritmy pro hled\u00e1n\u00ed FT na b\u011b\u017en\u00e9m stoln\u00edm PC zpracov\u00e1vat datov\u00e9 soubory obsahuj\u00edc\u00ed a\u017e 20 atribut\u016f a des\u00edtky tis\u00edc \u0159\u00e1dk\u016f po dobu n\u011bkolika hodin. Modern\u00ed algoritmy, kter\u00e9 b\u011b\u017e\u00ed na v\u00edcej\u00e1drov\u00fdch procesorech, objevuj\u00ed z\u00e1vislosti pro datov\u00e9 sady slo\u017een\u00e9 ze stovek atribut\u016f (a\u017e 200) a stovek tis\u00edc \u0159\u00e1dk\u016f p\u0159ibli\u017en\u011b za stejnou dobu. P\u0159esto je to nedosta\u010duj\u00edc\u00ed: takov\u00fd \u010das je pro v\u011bt\u0161inu re\u00e1ln\u00fdch aplikac\u00ed nep\u0159ijateln\u00fd. Proto jsme vyv\u00edjeli p\u0159\u00edstupy k urychlen\u00ed existuj\u00edc\u00edch algoritm\u016f. <\/p>\n<h3>Cache mechanismy pro p\u0159ekr\u00fdv\u00e1n\u00ed parti\u00ed<\/h3>\n<p>\nV prvn\u00ed \u010d\u00e1sti pr\u00e1ce jsme vyvinuli sch\u00e9mata cache pro t\u0159\u00eddu algoritm\u016f vyu\u017e\u00edvaj\u00edc\u00edch metodu pr\u016fniku parti\u010dn\u00edch sad. Partice pro atribut p\u0159edstavuje sadu seznam\u016f, kde ka\u017ed\u00fd seznam obsahuje \u010d\u00edsla \u0159\u00e1dk\u016f se stejn\u00fdmi hodnotami pro dan\u00fd atribut. Ka\u017ed\u00fd takov\u00fd seznam se naz\u00fdv\u00e1 klastr. Mnoho modern\u00edch algoritm\u016f vyu\u017e\u00edv\u00e1 partice k ur\u010den\u00ed, zda je z\u00e1vislost zachov\u00e1na \u010di nikoli, a to podle lemma: Z\u00e1vislost <img decoding=\"async\" alt=\"Efektivn\u00ed vyhled\u00e1v\u00e1n\u00ed funk\u010dn\u00edch z\u00e1vislost\u00ed v datab\u00e1z\u00edch.\" src=\"\/wp-content\/uploads\/2020\/06\/fa2667dcc78cded2d42bbf0a415d4de6.jpg\" style=\"display:block;margin: 0 auto;\" \/> je zachov\u00e1na, pokud <img decoding=\"async\" alt=\"Efektivn\u00ed vyhled\u00e1v\u00e1n\u00ed funk\u010dn\u00edch z\u00e1vislost\u00ed v datab\u00e1z\u00edch.\" src=\"\/wp-content\/uploads\/2020\/06\/b314fd0e7dbd225098198e48d5b28d38.jpg\" style=\"display:block;margin: 0 auto;\" \/>. Zde <img decoding=\"async\" alt=\"Efektivn\u00ed vyhled\u00e1v\u00e1n\u00ed funk\u010dn\u00edch z\u00e1vislost\u00ed v datab\u00e1z\u00edch.\" src=\"\/wp-content\/uploads\/2020\/06\/ef197235c0b8f15673c5179423349e21.jpg\" style=\"display:block;margin: 0 auto;\" \/> je ozna\u010dena partice a pou\u017e\u00edv\u00e1 se pojem velikost partice \u2014 po\u010det klastr\u016f v n\u00ed. Algoritmy vyu\u017e\u00edvaj\u00edc\u00ed partice, p\u0159i poru\u0161en\u00ed z\u00e1vislosti, p\u0159id\u00e1vaj\u00ed dal\u0161\u00ed atributy do lev\u00e9 \u010d\u00e1sti z\u00e1vislosti, po \u010dem\u017e ji p\u0159epo\u010d\u00edt\u00e1vaj\u00ed proveden\u00edm operace pr\u016fniku parti\u010dn\u00edch sad. Tato operace se v \u010dl\u00e1nc\u00edch naz\u00fdv\u00e1 specializace. V\u0161imli jsme si v\u0161ak, \u017ee partice pro z\u00e1vislosti, kter\u00e9 budou zachov\u00e1ny a\u017e po n\u011bkolika kolech specializace, mohou b\u00fdt aktivn\u011b znovu vyu\u017e\u00edv\u00e1ny, co\u017e m\u016f\u017ee v\u00fdrazn\u011b zkr\u00e1tit \u010das b\u011bhu algoritm\u016f, jeliko\u017e operace pr\u016fniku je n\u00e1kladn\u00e1. <\/p>\n<p>Proto jsme navrhli heuristiku zalo\u017eenou na Shannonov\u011b entropii a Genieho neur\u010ditosti, stejn\u011b jako na na\u0161\u00ed metrice, kterou jsme nazvali Inverzn\u00ed Entropie. Ta je nev\u00fdznamnou modifikac\u00ed Shannonovy entropie a roste, jak rostla jedine\u010dnost datov\u00e9 sady. Navrhovan\u00e1 heuristika vypad\u00e1 n\u00e1sledovn\u011b:<\/p>\n<p><img decoding=\"async\" alt=\"Efektivn\u00ed vyhled\u00e1v\u00e1n\u00ed funk\u010dn\u00edch z\u00e1vislost\u00ed v datab\u00e1z\u00edch.\" src=\"\/wp-content\/uploads\/2020\/06\/4d9750c9f41679ae013ee7118928566b.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Zde <img decoding=\"async\" alt=\"Efektivn\u00ed vyhled\u00e1v\u00e1n\u00ed funk\u010dn\u00edch z\u00e1vislost\u00ed v datab\u00e1z\u00edch.\" src=\"\/wp-content\/uploads\/2020\/06\/f3e620ccc932916349b338f613723542.jpg\" style=\"display:block;margin: 0 auto;\" \/> \u2014 m\u00edra jedine\u010dnosti ned\u00e1vno vypo\u010d\u00edtan\u00e9 partice <img decoding=\"async\" alt=\"Efektivn\u00ed vyhled\u00e1v\u00e1n\u00ed funk\u010dn\u00edch z\u00e1vislost\u00ed v datab\u00e1z\u00edch.\" src=\"\/wp-content\/uploads\/2020\/06\/4a43e7b49fc30d8a928fb365567c724a.jpg\" style=\"display:block;margin: 0 auto;\" \/>, a <img decoding=\"async\" alt=\"Efektivn\u00ed vyhled\u00e1v\u00e1n\u00ed funk\u010dn\u00edch z\u00e1vislost\u00ed v datab\u00e1z\u00edch.\" src=\"\/wp-content\/uploads\/2020\/06\/c21371f6b9ec89f5d93917e3c3c7df07.jpg\" style=\"display:block;margin: 0 auto;\" \/> je medi\u00e1nov\u00e1 m\u00edra jedine\u010dnosti pro jednotliv\u00e9 atributy. V r\u00e1mci metrik jedine\u010dnosti byly vyzkou\u0161eny v\u0161echny t\u0159i metriky, jak bylo pops\u00e1no v\u00fd\u0161e. Tak\u00e9 lze poznamenat, \u017ee heuristika obsahuje dva modifik\u00e1tory. Prvn\u00ed ur\u010duje, jak bl\u00edzko je aktu\u00e1ln\u00ed partition k prim\u00e1rn\u00edmu kl\u00ed\u010di a umo\u017e\u0148uje v\u00edce cachovat ty partitions, kter\u00e9 jsou daleko od potenci\u00e1ln\u00edho kl\u00ed\u010de. Druh\u00fd modifik\u00e1tor sleduje obsazenost cache a t\u00edm podn\u011bcuje k p\u0159id\u00e1n\u00ed v\u011bt\u0161\u00edho po\u010dtu partitions do cache, kdy\u017e je k dispozici voln\u00e9 m\u00edsto. \u00dasp\u011b\u0161n\u00e9 vy\u0159e\u0161en\u00ed t\u00e9to \u00falohy umo\u017enilo zrychlit algoritmus PYRO o 10-40 % v z\u00e1vislosti na datasetu. Je t\u0159eba poznamenat, \u017ee algoritmus PYRO je v t\u00e9to oblasti nej\u00fasp\u011b\u0161n\u011bj\u0161\u00ed. <\/p>\n<p>Na obr\u00e1zku n\u00ed\u017ee m\u016f\u017eete vid\u011bt v\u00fdsledky aplikace navr\u017een\u00e9 heuristiky v porovn\u00e1n\u00ed se z\u00e1kladn\u00edm p\u0159\u00edstupem k cachov\u00e1n\u00ed zalo\u017een\u00fdm na n\u00e1hodn\u00e9m v\u00fdb\u011bru. Osa X je logaritmick\u00e1.<\/p>\n<p><img decoding=\"async\" alt=\"Efektivn\u00ed vyhled\u00e1v\u00e1n\u00ed funk\u010dn\u00edch z\u00e1vislost\u00ed v datab\u00e1z\u00edch.\" src=\"\/wp-content\/uploads\/2020\/06\/3d6fe6a57237b27e76e6833965dc9c93.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Alternativn\u00ed zp\u016fsob ukl\u00e1d\u00e1n\u00ed partitions<\/h3>\n<p>\nPot\u00e9 jsme navrhli alternativn\u00ed zp\u016fsob ukl\u00e1d\u00e1n\u00ed partitions. Partitions p\u0159edstavuj\u00ed sadu cluster\u016f, ve kter\u00fdch jsou ulo\u017eeny \u010d\u00edsla z\u00e1znam\u016f s identick\u00fdmi hodnotami podle ur\u010dit\u00fdch atribut\u016f. Tyto clustery mohou obsahovat dlouh\u00e9 sekvence \u010d\u00edsel z\u00e1znam\u016f, nap\u0159\u00edklad pokud jsou data v tabulce uspo\u0159\u00e1d\u00e1na. Proto jsme navrhli kompresn\u00ed sch\u00e9ma pro ukl\u00e1d\u00e1n\u00ed partitions, a to konkr\u00e9tn\u011b intervalov\u00e9 ukl\u00e1d\u00e1n\u00ed hodnot v clusterech partitions:<\/p>\n<p>$$display$$pi(X) = {{underbrace{1, 2, 3, 4, 5}_{Prvn\u00ed~interval}, underbrace{7, 8}_{Druh\u00fd~interval}, 10}}\\ downarrow{Kompresn\u00ed~proces}\\ pi(X) = {{underbrace{$, 1, 5}_{Prvn\u00ed~interval}, underbrace{7, 8}_{Druh\u00fd~interval}, 10}}$$display$$<\/p>\n<p>Tato metoda dok\u00e1zala sn\u00ed\u017eit spot\u0159ebu pam\u011bti b\u011bhem b\u011bhu algoritmu TANE o 1 a\u017e 25 %. Algoritmus TANE je klasick\u00fd algoritmus pro vyhled\u00e1v\u00e1n\u00ed FD, vyu\u017e\u00edv\u00e1 partitions b\u011bhem sv\u00e9 \u010dinnosti. V r\u00e1mci praxe byl vybr\u00e1n pr\u00e1v\u011b algoritmus TANE, proto\u017ee bylo daleko jednodu\u0161\u0161\u00ed implementovat do n\u011bj intervalov\u00e9 ukl\u00e1d\u00e1n\u00ed ne\u017e nap\u0159\u00edklad do PYRO, aby se mohla posoudit funk\u010dnost navr\u017een\u00e9ho p\u0159\u00edstupu. V\u00fdsledky jsou zobrazeny na obr\u00e1zku n\u00ed\u017ee. Osa X je logaritmick\u00e1.<\/p>\n<p><img decoding=\"async\" alt=\"Efektivn\u00ed vyhled\u00e1v\u00e1n\u00ed funk\u010dn\u00edch z\u00e1vislost\u00ed v datab\u00e1z\u00edch.\" src=\"\/wp-content\/uploads\/2020\/06\/609a547d3d19b6e2c54ed70481ff6cdb.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Konference ADBIS-2019<\/h3>\n<p>\nNa z\u00e1klad\u011b v\u00fdzkumu v z\u00e1\u0159\u00ed 2019 jsem vystoupila se \u010dl\u00e1nkem <noindex><a rel=\"nofollow\" href=\"https:\/\/link.springer.com\/chapter\/10.1007\/978-3-030-30278-8_7\">Chytr\u00e9 cachov\u00e1n\u00ed pro efektivn\u00ed objevov\u00e1n\u00ed funk\u010dn\u00edch z\u00e1vislost\u00ed<\/a><\/noindex> Na konferenci 23. evropsk\u00e9 konference o pokroc\u00edch v datab\u00e1z\u00edch a informa\u010dn\u00edch syst\u00e9mech (ADBIS-2019). B\u011bhem prezentace pr\u00e1ci ocenil Bernhard Thalheim, v\u00fdznamn\u00e1 osobnost v oblasti datab\u00e1z\u00ed. V\u00fdsledky v\u00fdzkumu tvo\u0159ily z\u00e1klad m\u00e9 diplomov\u00e9 pr\u00e1ce na matematicko-fyzik\u00e1ln\u00ed fakult\u011b SPbGU, b\u011bhem n\u00ed\u017e byly oba navr\u017een\u00e9 p\u0159\u00edstupy (cacheov\u00e1n\u00ed a komprese) implementov\u00e1ny do obou algoritm\u016f: TANE a PYRO. P\u0159itom v\u00fdsledky uk\u00e1zaly, \u017ee navr\u017een\u00e9 p\u0159\u00edstupy jsou univerz\u00e1ln\u00ed, proto\u017ee u obou algoritm\u016f p\u0159i obou p\u0159\u00edstupech do\u0161lo k v\u00fdznamn\u00e9mu sn\u00ed\u017een\u00ed spot\u0159eby pam\u011bti a tak\u00e9 k v\u00fdznamn\u00e9mu zkr\u00e1cen\u00ed doby b\u011bhu algoritm\u016f.<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.3 - 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\/cs\/blog\/administrirovanie\/effektivnyj-poisk-funkczionalnyh-zavisimostej-v-bazah-dannyh\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\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\/cs\/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\udd47Efektivn\u00ed hled\u00e1n\u00ed funk\u010dn\u00edch z\u00e1vislost\u00ed v datab\u00e1z\u00edch | ProHoster","description":"Hled\u00e1n\u00ed funk\u010dn\u00edch z\u00e1vislost\u00ed v datech se pou\u017e\u00edv\u00e1 v r\u016fzn\u00fdch oblastech anal\u00fdzy dat: spr\u00e1va datab\u00e1z\u00ed, \u010di\u0161t\u011bn\u00ed dat, reverzn\u00ed in\u017een\u00fdrstv\u00ed datab\u00e1z\u00ed a explorace dat.","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/effektivnyj-poisk-funkczionalnyh-zavisimostej-v-bazah-dannyh","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","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\/cs\/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\/cs\/wp-json\/wp\/v2\/posts\/86335","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=86335"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/86335\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media\/86336"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=86335"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=86335"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=86335"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}