Truvate in modu efficiente dipendenze funziunali in basa di dati

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 articulu 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.

Truvate in modu efficiente dipendenze funziunali in basa di dati

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 articuli 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 Truvate in modu efficiente dipendenze funziunali in basa di datiinduve Truvate in modu efficiente dipendenze funziunali in basa di dati - 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. Truvate in modu efficiente dipendenze funziunali in basa di dati tenutu si Truvate in modu efficiente dipendenze funziunali in basa di dati. Quì Truvate in modu efficiente dipendenze funziunali in basa di dati 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:

Truvate in modu efficiente dipendenze funziunali in basa di dati

Truvate in modu efficiente dipendenze funziunali in basa di dati - u gradu di unicità di a partizione recentemente calculata Truvate in modu efficiente dipendenze funziunali in basa di datie Truvate in modu efficiente dipendenze funziunali in basa di dati 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.

Truvate in modu efficiente dipendenze funziunali in basa di dati

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.

Truvate in modu efficiente dipendenze funziunali in basa di dati

Cunferenza ADBIS-2019

Basatu nantu à i risultati di a ricerca, in settembre 2019 aghju publicatu un articulu Caching intelligente per una scuperta di dipendenza funzionale efficiente à 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

Add a comment