490 likes | 652 Views
RankSQL. Václav Nádraský Jan Kašpar. Query Algebra and Optimization for Relation al Top-k Queries. Obsah. Motivace Úvod Ranking query model Rank-relational algebra Execution model Optimalizace plánů Experimenty. Motivace. Co je RankSQL?
E N D
RankSQL Václav Nádraský Jan Kašpar Query Algebra and Optimization for Relational Top-k Queries
Obsah • Motivace • Úvod • Ranking query model • Rank-relational algebra • Execution model • Optimalizace plánů • Experimenty
Motivace • Co je RankSQL? • Framework pro efektivní vyhodnocování top-k dotazů • Přináší rank-aware relační algebru a nové metody pro optimalizaci top-k dotazů
Úvod • Využití top-k dotazů • Podobnost v multimediálních DB • Prohledávání webových DB • Middlewares • Dobývání znalostí (Data Mining) • spousty dalších...
Úvod • Charakterisika top-k dotazů • Uživatele nezajímá celkové pořadí – chce vědet jen prvních (k) záznamů • Ohodnocovací funkce (použitá k řazení) často uživatelsky definovatelná (drahá na výpočet) • Vstupní data bývají často velmi rozsáhlá (spojení je drahé)
Úvod • Dnešní podpora velmi omezená • Mimo jádro dotazovacích strojů • RankSQL přináší možnost implementace jako first-class construct • Přímo v jádře plánovače a optimalizátoru
Příklad SELECT TOP k * FROM Hotel h, Restaurant r, Museum m WHERE c1 AND c2 AND c3 ORDER BY p1 + p2 + p3 c1: r.Cusine = Italská c2: h.Price + r.Price < 100 c3: r.Area = m.Area p1: Cheap(h.Price) p2: Close(h.Addr, r.Addr) p3: Related(m.Collection, „dinosaur“)
Úvod • Dnešní DB • Načíst záznamy ze všech vstupů • Vytvořit spojení • Vypočítat predikáty p1, p2, p3 pro každý výsledek spojení • Seřadit podle p1+p2+p3 • Vrátit prvních k z výsledku uživateli • Dnešní DBS optimalizují • Mimo jádro – hůře optimalizovatelné
Úvod • Součásti RankSQL • Nová vlastnost relační algebry ranking jako first-class contruct • Nový pipeline and incremental execution model • Rank-aware optimalizace
Kanonická forma dotazu • Q = * k F(p1,...,pn) B(c1,...,cm) (R1 x ... x Rh) • Dvě operace • Filtrování – booleovská funkce B(selekce) • Řazení – monotónní ohodnocovací fce F
Klasický relační model • Optimalizace řazení pomocí rozdělení a prokládání není možná • Operátor řazení monolitický • Vyhodnocován jako celek • Schema materialize-then-sort • Nevhodné pro optimalizace • Cílem je • Splitting • Vyhodnocovat predikáty postupně • Interleaving • Prokládat s jinými operátory
Rozšíření relační algebry • Řazení jako first-class contruct • Nutno rozšířit relační algebru • Rank-relation algebra • Nová relace s řazením (rank-relation) • Nová vlastnost ranking • Vedle booleovského membership • Rozšířeny booleovské operátory o podporu ranking • Nový operátor rank
Rozšíření relační algebry • Relace s řazením • Vznikne seřazením obyčejné relace nějakou ohodnocovací funkcí F(p1,...,pn) • Zpočátku pořadí dáno pořadím na disku • Průběžne aplikovány operátory rank • Nutné definovat částečné pořadí (parial-ranking) pomocí tzv. upper-bound (maximální možné) skóre • Jako hodnota zatím nespočítaného predikátu se bere aplikací určená maximální hodnota
Algebraické zákony • Sada pravidel pro převádění kanonické formy dotazu do jiné ekvivalentní formy • Je na nich postavena optimalizace • Nutno dodefinovat pro nový rank operátor
Execution model • Plán pro vyhodnocování dotazů • Většinou implementovány jako strom operátorů – tzv. iterátorů • Všechny iterátory implementuje společné rozhraní • Metody Open, GetNext, Close • Rekuzovní průběh dotazu • Rekurzivní volání metody GetNext od kořene stromu až k listům • Dovoluje proudové (pipeline) a inkrementální zpracování • Jeden záznam výsledku odpovídá jednomu průchodu stromem • Např. iterátor selekce může po provedení své operace (zjištění pravdivosti podmínky) ihned vrátit záznam na výstup – narozdíl od operátoru sort, který vždy, než něco vrátí, musí počkat na kompletní výsledek z podřízeného iterátoru
Execution model klasické relační algebry • Pipelining může být narušen blokujícím operátorem • Například operátor sort pracující na principu materialize-then-sort • Blokující operátory chceme nahradit za neblokující • Časovou náročnost chceme mít proporcionálník k parametru k
Incremental Execution Model • Odlišnosti rank-relation modelu od klasického • Každý iterátor inkrementálně vrací záznamy v pořadí daném relací • Vykonávání se zastaví po k nalezených výsledcích
Execution model • Kardinalita mezivýsledků a počet operacích závisí na kontextu • Tj. umístění operátoru ve stromě vůči ostatním • Prostor pro optimalizace • Např. pomocí odhadování kardinality
Execution model • Implementace fyzického operátoru „µ“ • Pomáhá při načítání dat z indexů • Dopad na celý optimalizátor • Spojení tabulek • HRJN – hash rank-join • NRJN – nested-loop rank-join
Execution model – „µ“ • Práce na fyzické vrstvě indexů • B+stromy (rank-scan) • Rozhodování na úrovni indexů databáze • Existuje-li seřazený index nad predikátem, je použit • Jinak se čte index sekvenčně a je aplikačně seřazen
Optimalizátor dotazů • Optimalizátor dotazů s hodnocením • S rozšířením algebry je potřeba rozšířit optimalizátor(problém materialize-then-sort) • Model náročnosti dotazů - hledání optimálního
Plány dotazu • Velké množství plánů - náročné hledání • Dělení (splitting) • Prokládání (interleaving) • Problém nalezení efektivního plánu spuštění • Shora dolu, zdola nahoru
Optimalizátor dotazů • Transformace a implementace • Nové transformační pravidla pro RankSQL • Transformace • Převod mezi ekvivalentními algebraickými výrazy • Implementace • Převod logických operátorů na fyzickou reprezentaci stromu plánu
2-dimensionální vyčíslení • Základem jsou 2 logické hodnoty • Členství (R) a rádící hodnota (P) • Vyčíslení logického výrazu a volba optimálního spojení tabulek • Pro jeden výraz může být více plánů • Optimalizátor vybere optimální
2-dimensionální vyčíslení • Může být rozšířeno o další dimenze • Selekce, sloučení, ... • Nesmí ovlivnit optimalizaci plánů bez hodnotícího operátoru
Náročnost plánů • Odhady se provádějí na vzorku dat • Z malého vzorku se vypočítá odhadovaná náročnost celého plánu • Procentuální vyjádření vzroku – s% • Card(P) = u / (s%) u – počet záznamů na výstupu
Náročnost plánů - graficky Na vzorek dat se aplikuje SQL dotaz Tabulka o N záznamech s% k’ Na základě procentuálního vyjádření vzorku dat systém vypočte odhadovaný výsledek k s% – vybraný vzorek dat tabulky - procentuálně k’ – odhadnutý výsledek na vzorku k – odhadovaný počet řádků dotazu
Ohodnocení plánu • Ohodnocení plánu závisí na jeho kardinalitě a náročnosti plan’ je rozšířený původní plán o operator hodnocení
Náročnost plánů • Závisí na odhadu kardinality • Kardinalita není propagována skrze strom plánu • Náročnější odhady
Experimenty - plány • Různé plány pro jeden SQL dotaz • SELECT *FROM A, B, CWHERE A.jc1=B.jc1 AND B.jc2=C.jc2 AND A.b AND B.bORDER BY f1(A.p1)+f2(A.p2)+ f3(B.p1)+f4(B.p2)+f5(C.p1)LIMIT k
Odhad kardinality • Pro různé plány vznikají různé odhady kardinality výsledku
Testování výkonu • Experimenty jsou závislé na mnoha faktorech k – počet výsledných řádků (1 - 1000) s – počet řádků v tabulce (10 – 100 tis.) j – join selectivity (0.001 – 0.00001 … resp. 1000 – 100000 řádků) c – náročnost hodnotícího predikátu (0 - 1000)
Testování výkonu • Závislost výkonu na počtu řádků výsledku Zde je videt, že počet řádků výsledku nemá přílišný vliv na výkon. Naopak je vidět výkon jednotlivých plánů dotazu.
Testování výkonu • Závislost výkonu na velikosti vstupní tabulky Pokud roste počet rádků vstupní tabulky, čas vykonání dotazu se zvětšuje exponenciálně.
Závěr • Zavedení rank-relační algebry • Hodnotící funkce • Model rozdělení a prokládání • Operátor hodnocení „µ“ • Optimalizece plánů dotazu • Odhad náročnosti plánů • Výkon implementace
Zdroje C. Li, K. C.-C. Chang, I. F. Ilyas, and S. Song. Ranksql: Query algebra and optimization for relational top-k Queries.In SIGMOD, 2005, http://eagle.cs.uiuc.edu/pubs/2005/ranksql-sigmod05-lcis-mar05.pdf