Informationsintegration Top-N Anfragen 13.12.2005 Felix Naumann Überblick Anfragen nach den ERSTEN Ergebnissen (First-N) “Es reicht!“ in SQL [CK97] Syntax und Semantik Optimierung Anfragen nach den BESTEN Ergebnissen (Top-N) Motivation Fagin‘s Algorithm 13.12.2005 Felix Naumann, VL Informationsintegration, WS 05/06 2 Motivation für First-N 1. Anfragen Semantik: Korrektheit Vollständigkeit D.h. alle Ergebnisse erwünscht DBMS Data Warehouses So korrekt wie möglich Nur die besten Ergebnisse D.h. Ein oder wenige passende Ergebnisse Bsp: Dokumente Anwendungen: Semantik: Semantik 2. Browsen 3. Suchen Bsp.: Aggregation Anwendungen: Digital Library Systeme Content Management Systeme Google So korrekt wie möglich So vollständig wie gewünscht D.h. einige, bespielhafte Ergebnisse Bsp: Life Sciences Anwendungen GUI 13.12.2005 Felix Naumann, VL Informationsintegration, WS 05/06 3 Informationsintegration und Browsen Warum sind First-N Techniken für die Informationsintegration interessant? Für Nutzer Art der Daten unbekannt Umfang der Daten unbekannt Browsen Nutzen/Qualität der Daten sowieso zweifelhaft Anfragen nur fuzzy formuliert Verfeinerung der Anfrage in weiteren Schritten Query refinement Für System Datenbeschaffung oft langsam und teuer Deshalb: Großes Optimierungspotential 13.12.2005 Lokale Optimierung Globale Optimierung: Netzwerkkosten Felix Naumann, VL Informationsintegration, WS 05/06 4 Anfragebearbeitung in DBMS SQL Anfrage formulieren System nimmt SQL Anfrage entgegen 1. 2. 1. 2. Parsen Optimieren System führt Anfrage aus 3. 1. 2. Tupel-pipeline aufbauen Ergebnistupel in temporäre Tabelle schreiben Rückgabe eines Cursors auf erstes Ergebnistupel Sukzessives next() auf Cursor durch Anwendung 4. 5. 1. 2. GUI (z.B. AquaDataStudio) Programm (z.B. mittels JDBC) 13.12.2005 Felix Naumann, VL Informationsintegration, WS 05/06 5 Anfragebearbeitung in DBMS Problem DBMS berechnet vollständiges Ergebnis Anwendung holt eventuell nur wenige Tupel z.B. ein Fenster voll z.B. Top-N Ergebnisse entsprechend einer Sortierung Anwendung spart Aufwand, DBMS jedoch nicht! 13.12.2005 Felix Naumann, VL Informationsintegration, WS 05/06 6 Überblick Anfragen nach den ERSTEN Ergebnissen (First-N) “Es reicht!“ in SQL [CK97] Syntax und Semantik Optimierung Anfragen nach den BESTEN Ergebnissen (Top-N) Motivation Fagin‘s Algorithm 13.12.2005 Felix Naumann, VL Informationsintegration, WS 05/06 7 SQL Projektion Relationen Selektion und JoinBedingungen SELECT ... FROM ... WHERE ... GROUP BY ... HAVING ... ORDER BY ... Gruppierung 13.12.2005 Sortierung Selektion nach Gruppierung Felix Naumann, VL Informationsintegration, WS 05/06 8 Teures SQL – Beispiel SELECT h.name, h.adresse, h.tel FROM hotels h, flughäfen f WHERE f.name = ‚TXL‘ ORDER BY distance(h.ort, f.ort) 20.000 1.000 1 Ergebnis: 20.000 Hotels mit aufsteigender Entfernung zu TXL Zudem: 20.000x distance() ausführen Beispiele nach [CK97] 13.12.2005 Felix Naumann, VL Informationsintegration, WS 05/06 9 STOP AFTER – Syntax Projektion Relationen Selektion und JoinBedingungen SELECT ... FROM ... WHERE ... GROUP BY ... HAVING ... ORDER BY ... STOP AFTER ... Gruppierung Neu: Beschränkung der Ergebniskardinalität 13.12.2005 Sortierung Selektion nach Gruppierung STOP AFTER nach [CK97] Wichtig: Nicht SQL Standard! Felix Naumann, VL Informationsintegration, WS 05/06 10 STOP AFTER – Semantik Semantik: 1. 2. Keine Sortierung Genaue Ergebnismenge nicht spezifiziert Sortierung Führe sämtliches Standard-SQL in der Anfrage aus. Beschränke Ergebnis auf erste Tupel. Genaue Ergebnismenge spezifiziert, außer bei Duplikaten in Sortierungsattributen: Genaue Ergebnismenge nicht spezifiziert Weniger als N Tupel im Ergebnis: Kein Einfluss durch STOP AFTER 13.12.2005 Felix Naumann, VL Informationsintegration, WS 05/06 11 STOP AFTER – Beispiel SELECT h.name, h.adresse, h.tel FROM hotels h, flughäfen f WHERE f.name = ‚TXL‘ ORDER BY distance(h.ort, f.ort) STOP AFTER 5 Ergebnis: 5 Hotels mit aufsteigender Entfernung zu TXL Einsparungen bei distance()? 13.12.2005 Felix Naumann, VL Informationsintegration, WS 05/06 12 STOP AFTER – Beispiel SELECT p.name, v.umsatz FROM Produkte p, Verkäufe V WHERE p.typ = ‚software‘ AND p.id = v.prod_id ORDER BY v.umsatz DESC STOP AFTER ( SELECT count(*)/10 FROM Produkte p WHERE p.typ = ‚software‘) Liste Name und Umsatz der 10% umsatzstärksten Softwareprodukte. 13.12.2005 Felix Naumann, VL Informationsintegration, WS 05/06 13 STOP AFTER – Updates UPDATE Spieler SET Gehalt = 0.5 * Gehalt WHERE id IN ( SELECT s.id FROM Spieler s ORDER BY s.tore STOP AFTER 3 ) Hertha BSC: - Kürze die Gehälter der 3 schlechtesten Spieler um 50%. 13.12.2005 Felix Naumann, VL Informationsintegration, WS 05/06 14 STOP AFTER – Implementierung Implementierung in der Anwendung Implementierung in DBMS als äußere Schicht Keine Veränderung des DBMS Optimierungspotential nicht ausgeschöpft Einsparungen bei Datenübertragung Optimierungspotential nicht voll ausgeschöpft Implementierung im DBMS Kern Volles Optimierungspotential Schwieriger 13.12.2005 Felix Naumann, VL Informationsintegration, WS 05/06 15 Rückblick: Anfrageoptimierung Umwandlung von SQL in interne Repräsentation Interne Operatoren Scan, Sort, Select, Project,... Interpretation als Baum Transformationsschritte im Baum Wahl des Schrittes gemäß Kostenmodell 13.12.2005 Felix Naumann, VL Informationsintegration, WS 05/06 16 Rückblick: Anfragebearbeitung SELECT m.name FROM mitarbeiter m, abteilung a WHERE m.abt_id = a.id AND a.name = ‚Verkauf‘ ORDER BY m.gehalt In Worten? m.name(sortm.gehalt(m.abt_id = a.id, a.name = ‚Verkauf‘ (m x a))) 13.12.2005 Felix Naumann, VL Informationsintegration, WS 05/06 17 Rückblick: Anfragebearbeitung m.name(sortm.gehalt(m.abt_id = a.id, a.name = ‚Verkauf‘ (m x a))) [20] [20] (m.name) [20] (m.name) [20] Sort(m.gehalt) Sort(m.gehalt) Einsparung [20] [990] a.Name = ‚Verkauf‘ m.abt_id = a.id [100.000] [1.000] Mitarbeiter m 13.12.2005 [20] X a.Name = ‚Verkauf‘ [990] [100] Abteilung a ⋈m.abt_id = a.id [1.000] Mitarbeiter m Felix Naumann, VL Informationsintegration, WS 05/06 [100] Abteilung a 18 Rückblick: Anfragebearbeitung [20] [20] (m.name) [20] [20] Sort(m.gehalt) Sort(m.gehalt) ? [20] (m.name) [20] a.Name = ‚Verkauf‘ ⋈m.abt_id = a.id Einsparung [990] ⋈m.abt_id = a.id [1.000] Mitarbeiter m 13.12.2005 a.Name = ‚Verkauf‘ [100] Abteilung a [1.000] Mitarbeiter m Felix Naumann, VL Informationsintegration, WS 05/06 [5] [100] Abteilung a 19 Neuer Operator Logischer Operator Stop(N, Sortierungsrichtung, Sortierungsausdruck) N: maximale Ergebnisgroesse Sortierungsrichtung: asc, desc, none Sortierungsausdruck: meist wie ORDER BY Physikalische Operatoren Implementierungsvarianten des logischen Operators 1. Scan-Stop Jetzt! 2. Sort-Stop 13.12.2005 Felix Naumann, VL Informationsintegration, WS 05/06 20 Scan-Stop Falls Sortierungsrichtung = ‚none‘ Schließt Input-Strom nach N Tupeln Kostenmodell p = Plan unterhalb (im Baum) Stop Operator s = Plan inkl. Stop Operator Cost(1) = Kosten für erstes Tupel (Latenz, latency) Costp(ALL) = Kosten für alle Tupel von p N 1 Cost s ( N ) Cost p (1) (Cost p ( ALL) Cost p (1)) ALL Pipelines werden bevorzugt! Warum? 13.12.2005 Felix Naumann, VL Informationsintegration, WS 05/06 21 Sort-Stop Falls Sortierungsrichtung = ‚asc/desc‘ Falls schon entsprechend sortiert: Schließt InputStrom nach N Tupeln Kosten wie Scan-Stop Sonst sortieren: Kosten eines Vergleichs Erste N Tupel in priority-heap (Haufen) Nächste Tupel gegen Heap testen Cost s ( N ) Cost p ( ALL) ( ALL N ) C i log( N ) Input-Strom komplett erzeugen 13.12.2005 Test gegen Heap-Grenzen i Einfügungen in Heap N i ALL Felix Naumann, VL Informationsintegration, WS 05/06 22 Überblick Anfragen nach den ERSTEN Ergebnissen (First-N) “Es reicht!“ in SQL [CK97] Syntax und Semantik Optimierung Anfragen nach den BESTEN Ergebnissen (Top-N) Motivation Fagin‘s Algorithm 13.12.2005 Felix Naumann, VL Informationsintegration, WS 05/06 23 Optimierung mit Stop-Operator Platzierung des Stop Operators im Anfrageplan Fundamentales Problem: Frühe Platzierung vorteilhaft aber risikoreich Vorteil: Kleine Zwischenergebnisse geringe Kosten Risiko: Endergebnis nicht groß genug Erneute Ausführung Zwei Strategien „Konservativ“ und „aggressiv“ 13.12.2005 Felix Naumann, VL Informationsintegration, WS 05/06 24 Optimierung mit Stop-Operator Konservative Strategie Kostenminimal: Platziere Stop so früh wie möglich in Plan. Korrekt: Platziere Stop nie so, dass Tupel entfernt werden, die später eventuell gebraucht werden. D.h.: Wende Stop nur auf Input-Ströme an, deren Input-Tupel jeweils mindestens ein Output-Tupel erzeugen. Operatoren, die Tupel filtern, müssen also früher ausgeführt werden. 13.12.2005 Felix Naumann, VL Informationsintegration, WS 05/06 25 Optimierung mit Stop-Operator SELECT * FROM mitarbeiter m, abteilung a WHERE m.abt_id = a.id ORDER BY m.gehalt DESC STOP AFTER 10 Stop(10) sortStop m.abt_id NOT NULL Unter welchen m.abt_id ist Fremdschlüssel Bedingungen? Stop(10) ⋈m.abt_id = a.id Mitarbeiter m 13.12.2005 ⋈m.abt_id = a.id sortStop Abteilung a Mitarbeiter m Felix Naumann, VL Informationsintegration, WS 05/06 Abteilung a 26 Optimierung mit Stop-Operator SELECT * FROM mitarbeiter m, abteilung a WHERE m.abt_id = a.id AND a.name = ‚Verkauf‘ ORDER BY m.gehalt DESC STOP AFTER 10 Stop(10) ⋈m.abt_id = a.id sortStop Nein! Erlaubt? ⋈m.abt_id = a.id Stop(10) sortStop a.Name = ‚Verkauf‘ Mitarbeiter m 13.12.2005 Abteilung a a.Name = ‚Verkauf‘ Mitarbeiter m Felix Naumann, VL Informationsintegration, WS 05/06 Abteilung a 27 Optimierung mit Stop-Operator Aggressive Strategie Platziere Stop so früh wie möglich in Plan. Wähle (hoffentlich) hinreichend großes N: N stop ALLsubplan ALL N Füge „Reserve“ hinzu (z.B. 20%). Platziere weiteres, endgültiges Stop(N) später im Plan. Platziere geeignete „Restart“ Operatoren. 13.12.2005 Felix Naumann, VL Informationsintegration, WS 05/06 28 Optimierung mit Stop-Operator SELECT * FROM mitarbeiter m, Stop(10) abteilung a, reisen r WHERE m.abt_id = a.id AND r.konto = m.reisekonto ⋈m.abt_id = a.id ORDER BY m.gehalt DESC Restart Abteilung a STOP AFTER 10 ⋈m.rkonto = r.konto Stop(20) sortStop Reise r Mitarbeiter m 13.12.2005 Felix Naumann, VL Informationsintegration, WS 05/06 29 Implementierungen von First N SQL: MySQL: SELECT TOP N ... FROM ... Oracle: FETCH FIRST N ROWS ONLY OPTIMIZE FOR N ROWS MS SQL Server SELECT ...FROM ... LIMIT 10 DB2: select name, salary from employee A where 50 > (select count(*) from employee B where B.salary > A.salary) ...WHERE rownum < N OPTIMIZER_MODE = FIRST_ROWS_N Optimierung jeweils unklar! Weitere Optimierung („Bremsweg verkleinern“) z.B. in [CK98] 13.12.2005 Felix Naumann, VL Informationsintegration, WS 05/06 30 Überblick Anfragen nach den ERSTEN Ergebnissen (First-N) “Es reicht!“ in SQL [CK97] Syntax und Semantik Optimierung Anfragen nach den BESTEN Ergebnissen (Top-N) Motivation Fagin‘s Algorithm 13.12.2005 Felix Naumann, VL Informationsintegration, WS 05/06 31 Anfragen nach den Top-N Ergebnissen – Motivation First-N beschränkt Ergebnismenge aber nicht (unbedingt) Eigenschaften des Ergebnisses Ausnahme: Sortierung auf einem Attribut Top-N beschränkt Ergebnismenge und Eigenschaften Sortierung nach einem (beliebigen) Maß Maße sind oft fuzzy. Maße haben oft mehrere Attribute als Input. 13.12.2005 Felix Naumann, VL Informationsintegration, WS 05/06 32 Anfragen nach den Top-N Ergebnissen – Beispiele Suchmaschinen Information Retrieval Maß: Relevanz In DBMS Maß: Vorkommen des Suchworts & „authority“ 4-Zimmer Wohnungen, unter $30,000 Bisher nicht unterstützt In Multimedia DBMS Bilder mit roten und runden Objekten 13.12.2005 Felix Naumann, VL Informationsintegration, WS 05/06 33 Top-N in Multimedia DBMS Farb-Ähnlichkeit Z.B. Anfrage: Farbe = ‚rot‘ Berechnung der „Röte“ oft komplex (viele Farbdimensionen, viele Pixel) MMDBMS liefert top-N roteste (röteste?) Objekte Multidimensionale Indices Form-Ähnlichkeit Z.B. Anfrage: Form = ‚rund‘ Berechnung der „Rundheit“ oft komplex MMDBMS liefert top-N rundeste Objekte Entspricht First-N Semantik (Maß auf einem Attribut) Aber wie kombinieren? 13.12.2005 Felix Naumann, VL Informationsintegration, WS 05/06 34 Top-N in Multimedia DBMS Beatles „Red Album“ Anfrage: Farbe = ‚rot‘ Name = ‚Beatles‘ Fuzzy Prädikat Antwort ist sortierte Liste Non-Fuzzy Prädikat Antwort ist (unsortierte) Menge Was als Antwort: Menge? Sortierte Liste? 13.12.2005 Felix Naumann, VL Informationsintegration, WS 05/06 35 Top-N in Multimedia DBMS Anfrage: Farbe = ‚rot‘ Name = ‚Beatles‘ Antwort: Menge? Sortierte Liste? Anfrage: Farbe = ‚rot‘ Form = ‚rund‘ Antwort: Menge? Sortierte Liste? Idee [Fa96]: Antwort ist „benotete Menge“ („graded set“) 13.12.2005 Felix Naumann, VL Informationsintegration, WS 05/06 36 Top-N – benotete Mengen Benotete Menge: Anfrage: Name = ‚Beatles‘ Menge aus Paaren (x,g) x ist ein Objekt g [0,1] ist eine Note (grade) Antwort: benotete Menge mit g {0,1} Anfrage: Farbe = ‚rot‘ Antwort: benotete Menge mit g [0,1] 13.12.2005 Felix Naumann, VL Informationsintegration, WS 05/06 37 Top-N – benotete Mengen Anfrage: Problem: Name = ‚Beatles‘ Farbe = ‚rot‘ Name = ‚Beatles‘ Farbe = ‚rot‘ Maß: Benotung der Objekte in Antwort Sei gA(x) die Note von Objekt x unter Anfrage A. Erwünschte Eigenschaften Falls g {0,1} sollte Standard-Logik gelten. Bewahrung der logischen Äquivalenz gAA(x) = gA(x) gA(B C)(x) = g(AB) (A C)(x) Monotonie: gA(x) gA(y), gB(x) gB(y) gAB(x) gA B(y) 13.12.2005 Felix Naumann, VL Informationsintegration, WS 05/06 38 Top-N – benotete Mengen Vorschlag Konjunktionsregel [Za65]: gAB(x) = min{gA(x), gB(x)} Disjunktionsregel [Za65]: gAB(x) = max{gA(x), gB(x)} 13.12.2005 Felix Naumann, VL Informationsintegration, WS 05/06 39 Top-N – benotete Mengen gAB(x) = min{gA(x), gB(x)}, gAB(x) = max{gA(x), gB(x)} Standardlogik (g {0,1}) 0 1 = min{0,1} = 0 0 1 = max{0,1} = 1 Äquivalenz gAA(x)= min{gA(x), gA(x)} = gA(x) gA(B C)(x) = min{gA(x), max{gB(x), gC(x)}} = max{min{gA(x), gB(x)}, min{gA(x), gC(x)}} = g(AB) (A C)(x) Monotonie gA(x) gA(y), gB(x) gB(y) gAB(x) gA B(y) gA(x) gA(y), gB(x) gB(y) min{gA(x), gB(x)} min{gA(y), gB(y)} 13.12.2005 Felix Naumann, VL Informationsintegration, WS 05/06 40 Andere Maße? AVG gAB(x) = avg{gA(x), gB(x)}, gAB(x) = max{gA(x), gB(x)} 0 1 = avg{0,1} = 0.5 0 1 = max{0,1} = 1 gAA(x)= avg{gA(x), gA(x)} = gA(x) gA(B C)(x) = avg{gA(x), max{gB(x), gC(x)}} = max{avg{gA(x), gB(x)}, avg{gA(x), gC(x)}} = g(AB) (A C)(x) gA(x) gA(y), gB(x) gB(y) avg{gA(x), gB(x)} avg{gA(y), gB(y)} D.h. Standardlogik bleibt nicht erhalten. Name = ‚Beatles‘ Farbe = ‚rot‘ Album (Santana, Supernatural) hat score > 0 Fast jedes andere Album hat auch score > 0 13.12.2005 Felix Naumann, VL Informationsintegration, WS 05/06 41 Top-N – Fagin‘s Algorithmus Gegeben: Konjunktive Anfrage mit teilweise fuzzy Prädikaten. Gesucht: Benotete Menge mit mindesten Top-N Objekten Zugriffsmodell auf MMDBMS Kostenmodell: Sorted access: Cursor auf sortierte Liste Random access: Note eines bestimmten Objekts Jedes angefragte Objekt kostet 1. Optimierung: Minimiere Kosten 13.12.2005 Felix Naumann, VL Informationsintegration, WS 05/06 42 Top-N – Beispiel Anfrage: Name = ‚Beatles‘ Farbe = ‚rot‘ G = min{1,gFarbe = ‚rot‘(x)} ⋈s.id = p.id random access Name = ‚Beatles‘ DBMS Schallplatten 13.12.2005 Kosten? MMDBMS Plattencover Felix Naumann, VL Informationsintegration, WS 05/06 43 Top-N – Naiver Algorithmus Anfrage: Form = ‚rund‘ Farbe = ‚rot‘ Sorted access auf alle Objekte (mit Note für Form = ‚rund‘) Sorted access auf alle Objekte (mit Note für Farbe = ‚rot‘) Join über alle Objekte x Jeweils Berechnung der minimalen Note 1. 2. 3. 4. 5. min{grund(x),grot(x)} Sortierung für Top-N Kosten 2n (2x sorted access) 13.12.2005 Felix Naumann, VL Informationsintegration, WS 05/06 44 Top-N – Beispiel Anfrage: Form = ‚rund‘ Farbe = ‚rot‘ G = min{gForm = ‚rund‘(x),gFarbe = ‚rot‘(x)} sorted access MMDBMS_1 Plattencover (Formen) 13.12.2005 ⋈s.id = p.id sorted access/random access MMDBMS_2 Plattencover (Farben) Felix Naumann, VL Informationsintegration, WS 05/06 45 Überblick Anfragen nach den ERSTEN Ergebnissen (First-N) “Es reicht!“ in SQL [CK97] Syntax und Semantik Optimierung Anfragen nach den BESTEN Ergebnissen (Top-N) Motivation Fagin‘s Algorithm 13.12.2005 Felix Naumann, VL Informationsintegration, WS 05/06 46 Top-N – Fagins Algorithmus Allgemeineres Problem: Anfrage statt A B nun A1 A2 ... Am Für jedes Prädikat eine Quelle. bzw. Zugriffsmöglichkeit durch sorted und random access Phase 1: Sorted access Phase 2: Random access Phase 3: Berechnung und Sortierung 13.12.2005 Felix Naumann, VL Informationsintegration, WS 05/06 47 Top-N – Fagins Algorithmus A1 A2 ... Am Phase 1: Sorted access Für jedes i: Schicke Ai an Quelle i Schreite sukzessive voran, bis Join über alle Teilergebnisse die Größe N hat. ⋈id MMDBMS_1 13.12.2005 MMDBMS_2 ... MMDBMS_m Felix Naumann, VL Informationsintegration, WS 05/06 48 Top-N – Fagins Algorithmus Objekte aus MMDBMS_2 mit gA2(x) Objekte aus MMDBMS_1 mit gA1(x) N N Objekte aus allen MMDBMS mit allen gAi(x) also auch mit Gesamt-Note MMDBMS_1 13.12.2005 MMDBMS_2 ... Objekte aus MMDBMS_2 und MMDBMS_ m mit gA1(x) und gAm(x) MMDBMS_m Felix Naumann, VL Informationsintegration, WS 05/06 49 Top-N – Fagins Algorithmus Der Clou: Unter allen gesehenen Objekten befinden sich auch die Top-N Objekte. Beweis später. Wichtig: Dies sind nicht unbedingt die Top-N Objekte! N MMDBMS_1 13.12.2005 MMDBMS_2 ... MMDBMS_m Felix Naumann, VL Informationsintegration, WS 05/06 50 Top-N – Fagins Algorithmus Phase 2: Random access Hole alle unbekannten gAi(x) ein. Ergebnis: Nun kennen wir alle Noten aller gesehenen Objekte. N MMDBMS_1 13.12.2005 MMDBMS_2 ... MMDBMS_m Felix Naumann, VL Informationsintegration, WS 05/06 51 Top-N – Fagins Algorithmus Phase 3: Berechnung und Sortierung Berechne für jedes Objekt gA1 A2 ... Am(x) = min{gA1(x), gA2(x),..., gAm(x)} Sortiere alle Objekte nach gA1 A2 ... Am(x) Selektierte die höchsten N Objekte. Ausgabe dieser Top-N Objekte. 13.12.2005 Felix Naumann, VL Informationsintegration, WS 05/06 52 Fagins Algorithmus – Beispiel Anfrage: Form = ‚rund‘ Farbe = ‚rot‘ Stil = ‚Modern‘ N=2 MMDBMS_1 MMDBMS_2 MMDBMS_3 ID Farbe Rotheit modern 1 3 rot 1 2 rock 0.7 2 orange 0.5 0.15 4 barock 0.2 1 gelb 0.3 dreieck 0.1 1 keltisch 0.1 4 blau 0.01 strich 0 5 uralt 5 grün 0 ID Form Rundheit ID Stil 1 oval 0.8 3 2 achteck 0.6 3 viereck 4 5 13.12.2005 Modernität 0.01 Felix Naumann, VL Informationsintegration, WS 05/06 53 Fagins Algorithmus – Beispiel 4:(??; 0.2; ??) 4 3:(0.15; 1; 1) 3 2 1 2:(0.6; 0.7; 0.5) 1:(0.8; ??; 0.3) ID Form Rundheit ID Stil Modernität ID Farbe Rotheit 1 oval 0.8 3 modern 1 3 rot 1 2 achteck 0.6 2 rock 0.7 2 orange 0.5 3 viereck 0.15 4 barock 0.3 1 gelb 0.3 4 dreieck 0.1 1 keltisch 0.2 4 blau 0.01 5 13.12.2005 strich 0 5 grün 0 Felix Naumann, VL Informationsintegration, 5 uralt 0.01 WS 05/06 54 Top-N – Fagins Algorithmus Korrektheit: Fagins Algorithmus findet die Top-N Objekte gemäß gA(x). Beweis: Idee: Wir zeigen für jedes ungesehene Objekt y, dass es nicht unter den Top-N sein kann: Notation x: gesehene Objekte y: ungesehene Objekte Für jedes x der Joinmenge nach Phase 1 und jedes Prädikat Ai gilt: gAi(y) gAi(x). Wichtig: Wir können Wegen Monotonie von min{} gilt: dies nicht für andere gA1 A2 ... Am(y) gA1 A2 ... Am(x). gesehene Objekte Es gibt mindesten N solcher Objekte x zeigen. (Abbruch-Kriterium Phase 1). Schlussfolgerung: Es gibt kein y, das besser ist als die besten N x. 13.12.2005 Felix Naumann, VL Informationsintegration, WS 05/06 55 Top-N – Fagins Algorithmus Aufwand: O(n(m-1)/mN1/m) (Beweis: siehe [Fa96]) n = DB-Größe; m = Anzahl der DBs Beispiel: 10000 Objekte, 3 Prädikate, Top 10 10.0002/3 x 101/3 = 1.000 Gilt falls Ai unabhängig. Gilt mit beliebig hoher Wahrscheinlichkeit. D.h.: Für jedes ε>0 c, so dass die Wahrscheinlichkeit dass der Aufwand höher ist als angegeben < ε ist. Zum Vergleich: Naiver Algorithmus in O(nm) Im Beispiel: 10.000 x 3 = 30.000 13.12.2005 Felix Naumann, VL Informationsintegration, WS 05/06 56 Fagins Algorithmus in der Praxis Probleme aus [WHTB99] Monotonie Vorgabe einer festen Menge (monotoner) Maße oder Nutzerimplementation erlauben? WHERE Klausel oder ORDER BY Klausel Charakter des Algorithmus Join über mehrere Quellen Objektidentifikation Kostenmodell schwierig 13.12.2005 Felix Naumann, VL Informationsintegration, WS 05/06 57 Top-N Anfragen – Herausforderungen Beliebige Maße Je nach Nutzer bzw. Anwendung Effiziente Ausführung in bestehenden DBMS Unter Ausnutzung vorhandener Datenstrukturen und Metadaten Korrektheit und Vollständigkeit Idee: Wandele Top-N Anfragen in herkömmliche Anfragen um [CG99]. 13.12.2005 Felix Naumann, VL Informationsintegration, WS 05/06 58 Rückblick First-N Syntax und Semantik Optimierung Top-N Motivation Fagins Algorithmus 13.12.2005 Felix Naumann, VL Informationsintegration, WS 05/06 59 Informationsintegration 13.12.2005 Felix Naumann, VL Informationsintegration, WS 05/06 60 Literatur First-N Top-N [CK97] Michael J. Carey, Donald Kossmann: On Saying "Enough Already!" in SQL. SIGMOD Conference 1997: 219-230 [CK98] Michael J. Carey, Donald Kossmann: Reducing the Braking Distance of an SQL Query Engine. VLDB 1998: 158-169 [Fa98] Ronald Fagin: Fuzzy Queries in Multimedia Database Systems. PODS 1998: 110 Weitere [CG99] Surajit Chaudhuri, Luis Gravano: Evaluating Top-k Selection Queries. VLDB 1999: 397-410 [DR99] Donko Donjerkovic, Raghu Ramakrishnan: Probabilistic Optimization of Top N Queries. VLDB 1999: 411-422 [Za65] Lotfi A. Zadeh: Fuzzy Sets. Information and Control 8(3): 338-353 (1965) [DP84] D, Dubois and H. Prade, Criteria Aggregation and Ranking of Alternatives in the Framework of Fuzzy Set Theory, in Fuzzy Sets and Decision Analysis, TIMS Studies in Management Sciences 20 (1984), pp. 209-240. [WHTB99] Edward L. Wimmers, Laura M. Haas, Mary Tork Roth, Christoph Braendli: Using Fagin's Algorithm for Merging Ranked Results in Multimedia Middleware. CoopIS 1999: 267-278 13.12.2005 Felix Naumann, VL Informationsintegration, WS 05/06 61