Efektivní vyhledávání funkčních závislostí v databázích.

Hledání funkčních závislostí v datech se uplatňuje v různých oblastech analýzy dat: správě databází, čištění dat, reverzním inženýrství databází a exploraci dat. O samotných závislostech jsme již publikovali. článek Anastasii Birillo a Nikitu Bobrova. Tentokrát Anastasie – absolventka Computer Science Center letošního roku – sdílí pokrok této práce v rámci výzkumného projektu, který obhájila v centru.

Efektivní vyhledávání funkčních závislostí v databázích.

Výběr úkolu

Během studia v CS centru jsem začala podrobně zkoumat databáze, konkrétně hledání funkčních a diferenčních závislostí. Tato téma byla spojena s tématem mé bakalářské práce na univerzitě, takže během práce na bakalářské jsem začala číst články o různých závislostech v databázích. Napsala jsem přehled této oblasti – jedno ze svých prvních. článků v anglickém jazyce a předložila ho na konferenci SEIM-2017. Byla jsem velmi ráda, když jsem zjistila, že byla stále přijata, a rozhodla jsem se téma podrobně prozkoumat. Samotná koncepce není nová – začali ji používat už v 90. letech, ale i dnes nachází uplatnění v mnoha oblastech.

Ve druhém semestru studia v centru jsem zahájila vědecko-výzkumný projekt zaměřený na zlepšení algoritmů pro hledání funkčních závislostí. Pracovala jsem na něm společně s postgraduálním studentem SPbGU Nikitou Bobrovem v JetBrains Research.

Výpočetní složitost hledání funkčních závislostí

Hlavním problémem je výpočetní složitost. Počet možných minimálních a netriviálních závislostí je omezen zeshora hodnotou Efektivní vyhledávání funkčních závislostí v databázích., kde Efektivní vyhledávání funkčních závislostí v databázích. – počet atributů tabulky. Doba běhu algoritmů závisí nejen na počtu atributů, ale i na počtu řádků. V 90. letech mohly algoritmy pro hledání FT na běžném stolním PC zpracovávat datové soubory obsahující až 20 atributů a desítky tisíc řádků po dobu několika hodin. Moderní algoritmy, které běží na vícejádrových procesorech, objevují závislosti pro datové sady složené ze stovek atributů (až 200) a stovek tisíc řádků přibližně za stejnou dobu. Přesto je to nedostačující: takový čas je pro většinu reálných aplikací nepřijatelný. Proto jsme vyvíjeli přístupy k urychlení existujících algoritmů.

Cache mechanismy pro překrývání partií

V první části práce jsme vyvinuli schémata cache pro třídu algoritmů využívajících metodu průniku partičních sad. Partice pro atribut představuje sadu seznamů, kde každý seznam obsahuje čísla řádků se stejnými hodnotami pro daný atribut. Každý takový seznam se nazývá klastr. Mnoho moderních algoritmů využívá partice k určení, zda je závislost zachována či nikoli, a to podle lemma: Závislost Efektivní vyhledávání funkčních závislostí v databázích. je zachována, pokud Efektivní vyhledávání funkčních závislostí v databázích.. Zde Efektivní vyhledávání funkčních závislostí v databázích. je označena partice a používá se pojem velikost partice — počet klastrů v ní. Algoritmy využívající partice, při porušení závislosti, přidávají další atributy do levé části závislosti, po čemž ji přepočítávají provedením operace průniku partičních sad. Tato operace se v článcích nazývá specializace. Všimli jsme si však, že partice pro závislosti, které budou zachovány až po několika kolech specializace, mohou být aktivně znovu využívány, což může výrazně zkrátit čas běhu algoritmů, jelikož operace průniku je nákladná.

Proto jsme navrhli heuristiku založenou na Shannonově entropii a Genieho neurčitosti, stejně jako na naší metrice, kterou jsme nazvali Inverzní Entropie. Ta je nevýznamnou modifikací Shannonovy entropie a roste, jak rostla jedinečnost datové sady. Navrhovaná heuristika vypadá následovně:

Efektivní vyhledávání funkčních závislostí v databázích.

Zde Efektivní vyhledávání funkčních závislostí v databázích. — míra jedinečnosti nedávno vypočítané partice Efektivní vyhledávání funkčních závislostí v databázích., a Efektivní vyhledávání funkčních závislostí v databázích. je mediánová míra jedinečnosti pro jednotlivé atributy. V rámci metrik jedinečnosti byly vyzkoušeny všechny tři metriky, jak bylo popsáno výše. Také lze poznamenat, že heuristika obsahuje dva modifikátory. První určuje, jak blízko je aktuální partition k primárnímu klíči a umožňuje více cachovat ty partitions, které jsou daleko od potenciálního klíče. Druhý modifikátor sleduje obsazenost cache a tím podněcuje k přidání většího počtu partitions do cache, když je k dispozici volné místo. Úspěšné vyřešení této úlohy umožnilo zrychlit algoritmus PYRO o 10-40 % v závislosti na datasetu. Je třeba poznamenat, že algoritmus PYRO je v této oblasti nejúspěšnější.

Na obrázku níže můžete vidět výsledky aplikace navržené heuristiky v porovnání se základním přístupem k cachování založeným na náhodném výběru. Osa X je logaritmická.

Efektivní vyhledávání funkčních závislostí v databázích.

Alternativní způsob ukládání partitions

Poté jsme navrhli alternativní způsob ukládání partitions. Partitions představují sadu clusterů, ve kterých jsou uloženy čísla záznamů s identickými hodnotami podle určitých atributů. Tyto clustery mohou obsahovat dlouhé sekvence čísel záznamů, například pokud jsou data v tabulce uspořádána. Proto jsme navrhli kompresní schéma pro ukládání partitions, a to konkrétně intervalové ukládání hodnot v clusterech partitions:

$$display$$pi(X) = {{underbrace{1, 2, 3, 4, 5}_{První~interval}, underbrace{7, 8}_{Druhý~interval}, 10}}\ downarrow{Kompresní~proces}\ pi(X) = {{underbrace{$, 1, 5}_{První~interval}, underbrace{7, 8}_{Druhý~interval}, 10}}$$display$$

Tato metoda dokázala snížit spotřebu paměti během běhu algoritmu TANE o 1 až 25 %. Algoritmus TANE je klasický algoritmus pro vyhledávání FD, využívá partitions během své činnosti. V rámci praxe byl vybrán právě algoritmus TANE, protože bylo daleko jednodušší implementovat do něj intervalové ukládání než například do PYRO, aby se mohla posoudit funkčnost navrženého přístupu. Výsledky jsou zobrazeny na obrázku níže. Osa X je logaritmická.

Efektivní vyhledávání funkčních závislostí v databázích.

Konference ADBIS-2019

Na základě výzkumu v září 2019 jsem vystoupila se článkem Chytré cachování pro efektivní objevování funkčních závislostí Na konferenci 23. evropské konference o pokrocích v databázích a informačních systémech (ADBIS-2019). Během prezentace práci ocenil Bernhard Thalheim, významná osobnost v oblasti databází. Výsledky výzkumu tvořily základ mé diplomové práce na matematicko-fyzikální fakultě SPbGU, během níž byly oba navržené přístupy (cacheování a komprese) implementovány do obou algoritmů: TANE a PYRO. Přitom výsledky ukázaly, že navržené přístupy jsou univerzální, protože u obou algoritmů při obou přístupech došlo k významnému snížení spotřeby paměti a také k významnému zkrácení doby běhu algoritmů.

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster