Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Fuzzy SQL Emanuel Buzek, 2.12.2014.

Podobné prezentace


Prezentace na téma: "Fuzzy SQL Emanuel Buzek, 2.12.2014."— Transkript prezentace:

1 Fuzzy SQL Emanuel Buzek,

2 Motivace Příklad: Zákazník si v eshopu s notebooky vybírá produkt…
Přeje si: Levný Kamarád mu doporučil výrobce, třeba Acer Velký HDD Aspoň 4GB RAM

3 Motivace

4 Problém Zákazník většinou neví přesně, co hledá
Přesné (striktní) podmínky člověku nepřipadají intuitivní

5 Motivace Jedná se o dotaz typu “Levné notebooky od Aceru co mají aspoň 4GB RAM a velký disk” Co znamená “levný” Třeba méně než Kč… Co znamená “velký” Třeba více než 400GB

6 Motivace Jak funguje BACKEND? Co třeba… SELECT * FROM produkty WHERE
cena < AND hdd > 400 AND ram > 4 AND vyrobce LIKE ‘ACER’

7 Motivace Produkt RAM HDD Výrobce Cena A 8 GB 450 GB Asus 12000 B 4 GB
Acer 13500 C 500 GB 14099

8 Motivace Produkt RAM HDD Výrobce Cena A 8 GB 450 GB Asus 12 000 B 4 GB
Acer 13 500 C 500 GB 14 099 Náš SQL dotaz samozřejmě nevrátí produkty A a C…

9 Motivace Klasické striktkní booleovské (crisp) podmínky jsou často neintuitivní pro koncové uživatele Uživatel musí příliš rozšiřovat požadavky Např. zvýšit cenu na ,- nebo nefiltrovat podle výrobce… Pro klasické DBMS platí záznam do množiny buď náleží nebo nenáleží podmínka je buď splněna, nebo ne

10 Cíl Chceme systém, který bude nad daty hledat více lidsky/intuitivně
Systém by měl pracovat jazykové termíny jako levný, dobrý, spolehlivý… Systém by měl umět porovnávat pomocí Mnohem větší než >> Mnohem menší než << Systém by měl být obecný a brát v potaz existující technologie (relační DBMS a SQL)

11 Cíl Přáli bychom si provádět dotazy typu SELECT * FROM produkty WHERE
cena JE levný hdd JE velký ram > 4 AND vyrobce POKUD MOŽNO ‘ACER%’

12 Další aplikace… eshopy Hledání podobných dokumentů
Moderní webové aplikace – More Like This… Facebook – více podobných příspěvků… A samozřejmě Pandora, Grooveshark… Fulltext search (musí být trochu “fuzzy” – překlepy…)

13 Možné přístupy Nearest Neighbour Search (k-NN)
Z metrik jednotlivých atribut se vytvoří k-rozměrný prostor Hledá se nejbližších n vektorů v tomto prostoru Metody: Space Partitioning, LSH Nevýhody: Space partitioning přestává být efektivní ve vyšších dimenzích… Operátor ~= (approximately equal to) Starý koncept (Chang, 80. léta) Nedostatečně obecné Např. Atribut “hubený” záleží na hmotnosti a velikosti… Těžko kombinovatelné do složitějších aritmetických výrazů

14 Fuzzy SQL

15 Řešení: Fuzzy SQL Idea: Rozšířit klasické DB (SQL) o fuzzy logiku
Implementace Fuzzy SQL jsou většinou nádstavbou / rozšířením stávajících DBMS Výhody: Data už v nich stejně jsou SQL je známé odladěné vyspělé

16 Základ: fuzzy logika a množiny

17 Fuzzy logika Místo {0, 1} máme hodnoty v intervalu [0, 1] Přínos:
NOT(A) = 1 – A A AND B = min(A, B) A OR B = max(A, B) Přínos: můžeme definovat další spojité funkce Jedná se o “organičtější” přístup – využití v UI

18 Fuzzy množiny Příslušnost prvku do množiny je odstupňovaná
Fuzzy množina: (U, m) U je množina Funkce náležení m: U  [0, 1] Pro každé hodnota m(x) je “stupeň příslušnosti”

19 Fuzzy x normální množiny
Klasická teorie množin je pouze zjednodušenou formou, kde stupeň příslušnosti má hodnoty {0, 1}

20 Fuzzy množiny x plně náleží do (U, m) když m(x) = 1
x nenáleží do (U, m) když m(x) = 0

21 Fuzzy množiny

22 Fuzzy relační algebra a SQL

23 Fuzzy Querying Koncept z roku 1986 (P. Bosc) Úprava SQL serveru
Fuzzy podmínka: Booleovské výrazy Transformace Alterace Interakce

24 Transformace Atributy Vysoký: Hubený: Porovnávání “mnohem vyšší než”:

25 Aleterace Aplikuje se na fuzzy množinu a změní ji
Very, very much, few, more, less… very: not:

26 Interakce Vyjadřuje spojitost dvou fuzzy množin AND OR

27 Příklad FUZZY podmínky
very tall and age around 40

28 Jaké použít funkce…? Jaké použít funkce? Dobrá otázka 

29 SELECT SELECT n <atributy> FROM … WHERE fuzzy- podmínka
Vybere n nejvíce vyhovujících SELECT t <atributy> FROM… WHERE fuzzy- podmínka Vybere záznamy splňující práh t

30 SELECT – jak to funguje SELECT se pak přeloží na
SELECT <atributy><fuzzy-sub-podmínka> FROM … WHERE <crisp-sub-podmínka> Pokud fuzzy podmínka nejde rozdělit, tak se vlastně ani WHERE-clause nemusí generovat Funkce stupně příslušnosti se tedy vyhodnocuje na kartézském součinu všech relací, což je náročné  PROBLÉM

31 fSQL Nádstavba nad existujícím SQL serverem
Výhody: Spolehlivost Výkon Známá platforma Pracovalo na tom více autorů: Medina: FIRST Fuzzy Interface for Relational Systems Napsáno v PL/SQL nad Oraclem

32 fSQL – architektura Obecná architektura FSQL serveru podle Medina

33 fSQL – jazyk Fuzzy atributy: mají definovány štítky (labels), uloženy v FMB, prefixovány znakem $ Lineární doména: štítky mají asociovanou distribuci Např $drahý Non-lineární doména: štítky mají pouze definovaný vztah mezi sebou (skalár) Např $vlasy = [černé, blond, kaštanové]

34 fSQL – jazyk Fuzzy operátory na porovnávání
Možnost (vrátí více záznamů, podmínka nemusí být splněna) Nutnost komparátor význam FEQ nebo F= FDIF nebo F!= Fuzzy equal to… Fuzzy different to… FGT nebo F > FGEQ nebo F>= Fuzzy greater than… Fuzzy greater than or equal to… FLT nebo F< FLEQ nebo F<= Fuzzy less than.. Fuzzy less than or equal to… FMG nebo F>> FLT nebo F<< Fuzzy much greater than… Fuzzy much less then… FINCL Fuzzy included in…

35 fSQL – jazyk Funkce CDEG: Práh / threshold
“compatibility degree” – vrátí stupeň náležení pro daný fuzzy atribut Práh / threshold <condition> THOLD t Podmínka musí být splněna alespoň stupněm t

36 fSQL – jazyk Fuzzy konstanty Fuzzy kvantifikátory
Fuzzy trapezoid $[a, b, c, d] Fuzzy číslo #n $label Fuzzy interval $[n,m] UNKNOWN, UNDEFINED Fuzzy kvantifikátory Relativní, absolutní Umožňují výrazy typu “všechny”, “některé”, “skoro všechny”…

37 fSQL – jazyk Příklad: SELECT * FROM Person
WHERE hair FEQ $blond THOLD 0.5 AND height F>> $tall THOLD $high

38 fSQL – jazyk μAυB(x)=max(μA(x), μB(x)) μA B(x)=min(μA(x), μB(x))
Množinové relace: union μAυB(x)=max(μA(x), μB(x)) intesect μA B(x)=min(μA(x), μB(x)) except μA-B(x)= μA B(x)=min(μA(x),(1-μB(x)))

39 fSQL – jazyk Vyhodnocení dotazu:
Výsledná relace obsahuje údaj “stupně náležení” Jak se vypořádat s duplikáty? Narozdíl od duplikátů v crisp DB, záznamy mohou mít jiný stupeň náležení Možnosti: vrátit více řádků s duplikáty (SELECT) vrátit největší stupeň náležení (SELECT UNIQUE) vrátit nejmenší stupeň náležení (SELECT UNIMIN) vrátit průměr stupně náležení (SELECT UNIAVG)

40 fSQL – implemetace Nástroj FSQL_TO_SQL nad Oracle 8i
Implementace v C++, GUI DDL (create/update table): Rozdělí se na dvě části: Aktualizace FMB (vytvoření / úprava atributů) Aktualizace klasické databáze Rozšíření CREATE LABEL CREATE NEARNESS DML (select/update/insert/delete) Přeloží se do SQL a spustí se

41 GEFRED model Generalized model Fuzzy heart Relational DB
Medina et al., 1994 Obecná abstrakce Fuzzy atributy: Fuzzy množiny jako Fuzzy hodnoty Crisp Crsip & Fuzzy s distribucí (lichoběžníkovou) Diskrétní množiny s definovanou blízkostí Diskrétní množiny bez blízkosti Fuzzy stupně jako Fuzzy hodnoty Doména [0,1] Významově v podstatě “stupeň náležení”

42 Efektivní vyhodnocování Fuzzy JOINů
Jak funguje operace JOIN?

43 JOIN operace Metody spojení: Hash join Merge join (slévání)
Menší tabulka se rozdělí pomocí hashovací funkce Pro každý záznam z větší tabulky se hledá odpovídající záznam z menší tabulky Merge join (slévání) Obě tabulky se setřídí podle atributu, na kterém mergujeme Záznamy se postupně prochází (vzestupně nebo sestupně…) jako při merge-sort

44 JOIN operace Která metoda je lepší?
Pro klasické (non-fuzzy DB) je většinou výhodnější Hash join Ale co Fuzzy DB? Co vlastně znamená JOINovat podle fuzzy atributu…?

45 Fuzzy Join Spojení R d(R.X=S.X) S Dvě relace: R, S Společný atribut X
Záznam se ve výsledku objeví pokud d(R.X=S.X)>0

46 Fuzzy Join Příklad: join na atribut X - „věk“
r.X = $around(35) („kolem 35“) Dejme tomu interval [30,40] s.X = $young („mladý“) Interval [20,35] Narozdíl od „normálních“ joinů, výsledek může obsahovat záznam, kde X není shodné Předpoklad: fuzzy predikát lze spočítat v konstatním čase...

47 Fuzzy Join Hash join? Jak tedy joinovat?
Nelze použít (aspoň ne přímo), protože dvě různé hodnoty budou mít různý hash, ale záznamy se stejně budou spojovat Z tohoto důvodu je u fuzzy DB složitější i indexování (o tom jindy :) Jak tedy joinovat?

48 Modifikovaný merge join
Definice parciálního uspořádání: pro fuzzy term v: b(v): začátek intervalu e(v): konec intervalu pro crisp hodnotu: v = b(v) = e(v) Pořadí: v1 < v2 jestliže b(v1) < b(v2) nebo (b(v1)=b(v2) a (e(v1)<e(v2)) v1  v2 jestliže v1 < v2 nebo v1  v2 Příklad: [2,5] < [3,4] [3,4] < [3,5]

49 Modifikovaný merge join
Definice: Pro záznam r z množiny R, sml(r) je nejmenší neprázdná hodnota v, která je v S.X lrg(r) je největší neprázdná hodnota v, která je v S.X Range: Rng(r) = {s : s in S and sml(r)  s.X  lrg(r)}  Pokud s není v Rng(r), pak s se nemůže spojit (joinovat) s r

50 Modifikovaný merge join
Záznamy z R jsou načítány do paměti podle definovaného částečného uspořádání Pro záznam r z R, všechny potenciálně vhodné záznamy jsou v Rng(r) Načítáme postupně stránky záznamů z S (podle uspořádání) Pokud stránka z S obsahuje pouze záznamy předcházející r, je zbytečná Pokud stránka z S obsahuje záznamy v Rng(r), provede se JOIN Pokud stránka z S obsahuje záznam za intervalem Rng(r), pokračujeme pro další záznam z r...

51 Modifikovaný merge join
Paměťová náročnost Stránky z R a S se načítají pouze jednou, pokud se do paměti vejde 1 + max(P(Rng(r))) stránek P(Rng(r)) je velikost ve stránkách pro Rng(r) I/O náročnost SORT(R) + SORT(S) + P(R) + P(S)

52 FSQL – ano, nebo ne? V praxi relativně málo časté Konfiguračně náročné
Setkali jste se? Konfiguračně náročné Administrátor musí nakonfigurovat atributy a jejich distribuční funkce (FMB) Jak by vypadala například distribuční funkce pro $drahý? Jak tuto funkci vytvořit obecně - automaticky? Problém s výkonem a škálováním… SQL je příliš schopné! JOINy, agregace, vnořené SELECTy…

53 FSQL – ano, nebo ne? Uživatelské rozhraní
Jak zvolíme prahové hodnoty t? Uživatel by si je mohl vybrat sám  Můžeme si být jisti, že uživatel chce hledat “fuzzy”? Co když vlastně chce třeba všechny výrobky kromě Aceru, ale on stejně ve výsledcích jeden najde…

54 Současnost a budoucnost
Podporují současné DBMS fuzzy dotazování? Částečně, určitě ne kompletní FSQL MySQL fulltext search Alternativa: Fuzzy NoSQL :D Lucene/Solr/ElasticSearch… FuzzyQuery v ElasticSearch Levenshtein distance na stringy, intervaly na čísla a datumy moreLikeThis query na nalezení podobných dokumentů

55 Zdroje P. Bosc, M. Galibourg, G. Hamon: Fuzzy querying with SQL: Extensions and implementation aspects F. Hao, H. Dougman, P. Zielinsky: A Fast Search Algorithm for a Large Fuzzy Database Q. Yang, C. Lie, J. Wu: Efficient Processing of Nested Fuzzy SQL Queries


Stáhnout ppt "Fuzzy SQL Emanuel Buzek, 2.12.2014."

Podobné prezentace


Reklamy Google