Fuzzy SQL Emanuel Buzek, 2.12.2014.

Slides:



Advertisements
Podobné prezentace
KIV/ZIS Cvičení 6 SQL - SELECT.
Advertisements

MS ACCESS - DOTAZY DATABÁZOVÉ SYSTÉMY.
CXPath Dotazování nad heterogenními XML zdroji s pomocí konceptuálního schéma Jan Vávra, 21. dubna 2004
Přednáška č. 1 Úvod, Historie zpracování dat, Základní pojmy
Aplikační a programové vybavení
 Informací se data a vztahy mezi nimi stávají vhodnou interpretací pro uživatele, která odhaluje uspořádání, vztahy, tendence a trendy  Existuje celá.
DB1 – 9. cvičení Optimalizace dotazu Konkurenční přístup a deadlock Indexace Transakce.
Databázové systémy SQL Výběr dat.
Fakulta elektrotechniky a informatiky
Další dotazy SQL Structured Query Language. Některé SQL příkazy mohou mít v sobě obsaženy další kompletní příkazy SELECT. Využijeme je tam, kde potřebujeme.
SQL Structured Query Language
Informatika pro ekonomy II přednáška 11
Architektury a techniky DS Tvorba efektivních příkazů I Přednáška č. 3 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
SQL Lukáš Masopust Historie  Předchůdcem databází byly papírové kartotéky  děrný štítek  1959 konference  1960 – vytvořen jazyk COBOL.
SQL Lukáš Masopust Historie  Předchůdcem databází byly papírové kartotéky  děrný štítek  1959 konference  1960 – vytvořen jazyk COBOL.
Temporální Databáze Jaroslav Dražan. Čím se budeme zabývat Proč je čas v DB důležitý Práce s časem pomocí klasického SQL Reprezentace časové domény Spojování.
Medians and Order Statistics Nechť A je množina obsahující n různých prvků: Definice: Statistika i-tého řádu je i-tý nejmenší prvek, tj., minimum = statistika.
1IT Relační datový model
Tvorba webových aplikací
Databáze Jiří Kalousek.
Databázové systémy II Přednáška č. 8 – Pohledy (Views)
Školení správců II. Petr Pinkas RNDr. Vít Ochozka.
Fakulta elektrotechniky a informatiky
Architektura databází Ing. Dagmar Vítková. Centrální architektura V této architektuře jsou data i SŘBD v centrálním počítači. Tato architektura je typická.
REKS - Regionální knihovnický systém Školení pro dobrovolné knihovníky 4. března 2008.
Optimalizace SQL dotazů
Databázové systémy Architektury DBS.
Radomir Tarabič, Egor Ivkin
Informatika pro ekonomy II přednáška 10
Databázové systémy Přednáška č. 6.
SQL – základní pojmy Ing. Roman Danel, Ph.D.
Relační propojování tabulek. Úvod Tato prezentace má sloužit běžným uživatelům, jak začátníkům, tak i zkušeným uživatelům. Když budete postupovat podle.
IGrid index Roman Krejčík. Obsah Motivace Prokletí dimenze Míry podobnosti IGrid, IGrid+ Experimentální porovnání.
Architektury a techniky DS Cvičení č. 9 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Obchodní akademie, Náchod, Denisovo nábřeží 673 Projekt CZ.1.07/1.5.00/ EU peníze pro Obchodní akademii Náchod Číslo – název šablony klíčové aktivityIII/2.
RankSQL Query Algebra and Optimization for Relational Top-k Queries Václav Nádraský Jan Kašpar.
Databázové systémy Tomáš Skopal
Fuzzy SQL Jaroslav Tykal, Jiří Dokulil. Proč Fuzzy Přesné vs. „nepřesné“ hodnoty Kdo má nejvyšší plat Kdo má vysoký plat Výhody přesnosti Jednoznačná.
Informatika II PAA DOTAZOVACÍ JAZYKY
Aplikační a programové vybavení
Databázové systémy Informatika pro ekonomy, př. 18.
Databáze velké množství dat pevně dané struktury
Databázové systémy SQL Výběr dat.
Úvod do logiky (presentace 2) Naivní teorie množin, relace a funkce
 Agregační funkce  Agregační funkce jsou to funkce, které nějakým způsobem zpracují více hodnot a jako výsledek vrátí hodnotu jednu COUNT()  Funkce.
Vnitřní (operační paměť)
XML data na disku jako databáze Kamil Toman
DOK. FUZZY MNOŽINY ETC. Klasické množiny Klasická množina – Výběr prvků z nějakého univerza Podle nějakého pravidla – Každý prvek obsahuje nejvýše jednou.
REŠERŠNÍ STRATEGIE Mgr. Anna Vitásková.
Administrace Oracle Paralelní zpracování.
Vícerozměrný přístup pro indexování XML dat
Lišta nástrojů Standard otevření, uložení a další manipulace se soubory (tj. projekty) načítání dat (mapových vrstev) „žluté plus“ změna měřítka odkaz.
Metrické indexování vektorových modelů v oblasti Information Retrieval
Databázové systémy Úvod, Základní pojmy. Úvod S rozvojem lidského poznání roste prudce množství informací. Jsou kladeny vysoké požadavky na ukládání,
Perzistence XML dat Kamil Toman
Filtrování záznamů Filtr podle výběru Filtr podle formuláře Rozšířený filtr Symboly, výrazy Dotazy.
Využití sestavy Zobrazení a typy Části sestavy Vytvoření sestavy Ovládací prvky.
● Databaze je soubor dat,slouží pro popis reálného světa(např.evidence čkolní knihovny..) ● Relační databaze je databáze založená na relačním modelu.
Univerzitní informační systém VIII., Karlov 2009 Fulltextové vyhledávání v UIS Miroslav Prachař.
Dobývání znalostí z databází fulltext
SQL – příkaz SELECT Ing. Roman Danel, Ph.D.
Fulltextové vyhledávání
Informatika pro ekonomy přednáška 8
Databázové systémy a SQL
Optimalizace SQL dotazů
Přednáška 7 SQL – JOIN.
Přednáška 9 Triggery.
Analýza velkých dat strukturovaně či nestrukturovaně?
Paměť.
Databázové systémy a SQL
Transkript prezentace:

Fuzzy SQL Emanuel Buzek, 2.12.2014

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

Motivace

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

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ž 14 000Kč… Co znamená “velký” Třeba více než 400GB

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

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

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…

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 20 000,- 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

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)

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%’

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…)

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ů

Fuzzy SQL

Ř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é

Základ: fuzzy logika a množiny

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

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”

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

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

Fuzzy množiny

Fuzzy relační algebra a SQL

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

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

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

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

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

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

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

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

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

fSQL – architektura Obecná architektura FSQL serveru podle Medina

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é]

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…

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

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”…

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

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)))

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)

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

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í”

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

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

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…?

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

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

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?

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]

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

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

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)

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…

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…

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ů

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