Truvate dependenzii funziunali in i dati hè utilizatu in parechji spazii di l'analisi di dati: gestione di basa di dati, pulizia di dati, ingegneria inversa di basa di dati è esplorazione di dati. Avemu digià publicatu nantu à e dipendenze stessi Anastasia Birillo è Nikita Bobrov. Sta volta, Anastasia, un graduatu di u Centru di Scienze Informatica quist'annu, sparte u sviluppu di stu travagliu cum'è parte di u travagliu di ricerca chì hà difesu in u centru.

Scelta di u travagliu
Mentre studiava in u centru CS, aghju cuminciatu à studià e basa di dati in prufundità, vale à dì, a ricerca di dependenzii funziunali è diffarenti. Stu tema era in relazione cù u tema di i mo corsi à l'università, cusì mentre travagliava nantu à i corsi, aghju cuminciatu à leghje articuli nantu à e diverse dipendenze in basa di dati. Aghju scrittu una recensione di questa zona - unu di i mo primi in inglese è sottumessu à a cunferenza SEIM-2017. Eru assai cuntentu quandu aghju scupertu ch'ella hè stata accettata dopu tuttu, è decisu di approfondisce u tema. U cuncettu stessu ùn hè micca novu - hà cuminciatu à esse usatu in l'anni 90, ma ancu avà hè adupratu in parechje spazii.
Durante u mo secondu semestru à u centru, aghju cuminciatu un prughjettu di ricerca per migliurà l'algoritmi per truvà dipendenze funziunali. Hà travagliatu nantu à questu inseme cù u studiente graduatu di l'Università Statale di San Pietroburgo Nikita Bobrov in JetBrains Research.
A cumplessità computazionale di a ricerca di dipendenze funziunali
U prublema principali hè a cumplessità computazionale. U numaru di pussibili dipendenze minimu è micca trivial hè limitatu sopra da u valore
induve
- numeru di attributi di tavulinu. U tempu di funziunamentu di l'algoritmi dipende micca solu di u numeru di attributi, ma ancu di u numeru di fila. In l'anni 90, l'algoritmi di ricerca di a legge federale nantu à un PC di desktop regulare puderanu processà setti di dati chì cuntenenu finu à 20 attributi è decine di millaie di file in parechje ore. L'algoritmi muderni chì funzionanu nantu à i processori multi-core rilevanu dependenzii per i setti di dati custituiti da centinaie di attributi (finu à 200) è centinaie di millaie di fila in circa u stessu tempu. Tuttavia, questu ùn hè micca abbastanza: un tali tempu hè inacceptable per a maiò parte di l'applicazioni di u mondu reale. Dunque, avemu sviluppatu approcci per accelerà l'algoritmi esistenti.
Schemi di caching per intersezioni di partizioni
In a prima parte di u travagliu, avemu sviluppatu schemi di caching per una classa di algoritmi chì utilizanu u metudu di intersezzione di partizioni. Una partizione per un attributu hè un inseme di listi, induve ogni lista cuntene numeri di linea cù i stessi valori per un attributu datu. Ogni lista hè chjamata cluster. Parechji algoritmi muderni utilizanu partizioni per stabilisce se una dependenza hè tenuta o micca, vale à dì, aderiscenu à u lema: Dependency.
tenutu si
. Quì
una partizione hè designata è u cuncettu di a dimensione di partizione hè utilizatu - u numeru di clusters in questu. L'algoritmi chì utilizanu partizioni, quandu a dependenza hè violata, aghjunghjenu attributi supplementari à u latu manca di a dependenza, è poi recalculate, eseguendu l'operazione di intersezzione di partizioni. Questa operazione hè chjamata specializazione in l'articuli. Ma avemu nutatu chì e partizioni per i dependenzii chì solu esse ritenuti dopu uni pochi round di specializazione ponu esse attivamente reutilizati, chì ponu riduce significativamente u tempu di esecuzione di l'algoritmi, postu chì l'operazione di intersezzione hè caru.
Dunque, avemu prupostu un heuristicu basatu annantu à Shannon Entropia è Ginny Uncertainty, è ancu a nostra metrica, chì avemu chjamatu Entropia inversa. Hè una ligera mudificazione di Shannon Entropy è aumenta cum'è l'unicità di u settore di dati aumenta. L'euristica pruposta hè a siguenti:

hè
- u gradu di unicità di a partizione recentemente calculata
e
hè a mediana di i gradi di unicità per attributi individuali. Tutte e trè metriche descritte sopra sò state testate cum'è metrica di unicità. Pudete ancu nutà chì ci sò dui modificatori in l'euristica. U primu indica quantu hè vicinu à a partizione attuale à a chjave primaria è permette di cache in una misura più grande quelli partizioni chì sò luntanu da a chjave potenziale. U secondu modificatore vi permette di monitorà l'occupazione di u cache è cusì incuraghjenu à aghjunghje più partizioni à a cache se u spaziu liberu hè dispunibule. A suluzione successu di stu prublema ci hà permessu di accelerà l'algoritmu PYRO da 10-40%, secondu u dataset. Hè nutate chì l'algoritmu PYRO hè u più successu in questa zona.
In a figura sottu, pudete vede i risultati di l'applicazioni di l'euristica pruposta paragunata à un approcciu basu di caching coin-flip. L'assi X hè logaritmicu.

Un modu alternativu per almacenà partizioni
Dopu avemu prupostu un modu alternativu per almacenà partizioni. E partizioni sò un inseme di clusters, ognuna di i quali guarda numeri di tuple cù valori identici per certi attributi. Questi raggruppamenti ponu cuntene longu sequenze di numeri tuple, per esempiu, se i dati in una tavula sò urdinati. Dunque, avemu prupostu un schema di compressione per almacenà partizioni, vale à dì l'intervallu di almacenamiento di valori in clusters di partizioni:
$$display$$pi(X) = {{underbrace{1, 2, 3, 4, 5}_{Primu intervallu}, underbrace{7, 8}_{Second interval}, 10}}\ downarrow{ Compressione} \ pi(X) = {{underbrace{$, 1, 5}_{First~interval}, underbrace{7, 8}_{Second~interval}, 10}}$$display$$
Stu metudu hà sappiutu riduce u cunsumu di memoria durante l'operazione di l'algoritmu TANE da 1 à 25%. L'algoritmu TANE hè un algoritmu classicu per a ricerca di liggi federali chì usa partizioni durante u so travagliu. Comu parte di a pratica, l'algoritmu TANE hè statu sceltu, postu chì era assai più faciule per implementà l'almacenamiento di intervalli in questu, per esempiu, in PYRO per evaluà se l'approcciu prupostu funziona. I risultati ottenuti sò presentati in a figura sottu. L'assi X hè logaritmicu.

Cunferenza ADBIS-2019
Basatu nantu à i risultati di a ricerca, in settembre 2019 aghju publicatu un articulu à a 23a Cunferenza Europea di Avanzate in Database è Sistemi d'Informazione (ADBIS-2019). Durante a presentazione, u travagliu hè statu nutatu da Bernhard Thalheim, una persona significativa in u campu di basa di dati. I risultati di a ricerca formanu a basa di a mo dissertazione à u maestru in matematica è meccanica in l'Università Statale di San Petruburgu, durante a quale i dui approcci pruposti (caching è compressione) sò stati implementati in i dui algoritmi: TANE è PYRO. Inoltre, i risultati anu dimustratu chì l'avvicinamenti pruposti sò universali, postu chì nantu à i dui algoritmi, cù i dui approcci, hè stata osservata una riduzione significativa di u cunsumu di memoria, è ancu una riduzione significativa di u tempu di operazione di l'algoritmi.
Source: www.habr.com
