Michael Klein, 19. Oktober 2001 Freitag, 19. Oktober 2001 Eine Pipelining-Algebra für die effiziente Anfragebearbeitung im KDD-Prozess Diplomarbeit von Michael Klein Betreuer: Dipl.-Inform. Matthias Gimbel Michael Klein, 19. Oktober 2001 Einleitung Eine Pipelining-Algebra für die effiziente Anfragebearbeitung im KDD-Prozess interaktive Benutzung des Systems trotz • großer Rohdatenbestände • spontaner Anfragen • komplexer Operationen • wenig Vorwissen über Daten Knowledge Discovery in Databases Wissensentdeckung in Datenbanken • Finden von neuen und nützlichen Mustern in Daten • mehrstufiger Prozess • iterativer Prozess Rohdaten Vorverarbeitung Data Mining Nachbearbeitung Wissen Michael Klein, 19. Oktober 2001 Probleme und Lösungsansätze Ansatz zum Erreichen der Forderung: Parallelität Standardvorgehensweise: Datenparallelität Probleme 1. 2. Abhängigkeit von der Datenverteilung Fehlende Ressourcenkontrolle Lösungsansätze Pipelining Datenqualität Deshalb: Kontrollparallelität / Pipelining 3. 4. 5. 6. Operatoren unterschiedlich komplex Feingranulare Aufspaltung schwierig Lose Kopplung zwischen DBMS und Analysesystem Keine Interaktivität Algebra Optimierer Pipelining-Algebra (1) Michael Klein, 19. Oktober 2001 Ziele und Beispieloperatoren Ziele • Zerlegung von Anfragen in Form eines Operatorbaums in möglichst feingranulare Pipeline • Ausgeglichene Lastsituation Überlegung • Verwendung unterschiedlicher Implementierungsvarianten für die Operatoren • Untersuchung auf Zerlegbarkeit Beispieloperatoren GROUP Berechnet f auf Gruppen mit gleichem Wert unter [A1...An] JOIN Verbindet zwei Datenströme anhand [A1...An] und [B1...Bn] SAMPLE NORMALIZE Wählt eine zufällige Stichprobe der Größe g aus Passt die Werte von Attribut Ai in das Interval [a,b] ein Pipelining-Algebra (2) Michael Klein, 19. Oktober 2001 Zerlegung der Operatorimplementierungen collectBlockGroup sortMergeJoin 1. [collect] Sammle Tupel mit gleichem Wert in [A1...An] in einer Hashtabelle und gebe diese hintereinander aus 1a. [sort] Sortiere erste Relation nach [A1...An] 1b. [sort] Sortiere zweite Relation nach [B1...Bn] 2. [block] Wende auf jeden wertzusammenhängenden Block f an 2. [merge] Verbinde die beiden Relationen reißverschlussartig countPickSample countMinmaxNormalize 1. [count] Bestimme die Anzahl M der Tupel im Fluss 1. [count] Bestimme min(Ai) und max(Ai) 2. [pick] Leite jedes k-te Tupel durch (k = M/g). 2. [minmax] Passe das Attribut Ai tupelweise proportional zu [min(Ai),max(Ai)] in das neue Intervall [a,b] ein Pipelining-Algebra (3) Michael Klein, 19. Oktober 2001 Ergebnisse • Aufspaltung der Implementierungen möglich 1. Datenaufbereitungsschritt 2. Kontinuierlicher und ressourcenschonender Verarbeitungsschritt • Begrenzte Zahl von Aufbereitungsstufen Nur Wertzusammenhang, Sortierung, Bekanntheit von Anzahl, Minima, Maxima • Noch keine Kostengleichheit Aufbereitungsschritt zeitaufwändig und oft ressourcenintensiv Ziel: effizienter Datenbereitstellungsmechanismus mit angebbarer Aufbereitungsstufe • Interaktivität durch Vermeidung der Aufbereitung Verzicht auf blockierende Aufbereitung durch genaue Buchführung und geschicktes gemeinsames Ausnutzen Datenqualität (1) Michael Klein, 19. Oktober 2001 Definitionen Datenqualität = Zustand der Aufbereitung eines Datenstroms. A = [A1,...,An] bezeichnet eine Folge von Attributen Sortierung Ein Datenstrom D hat die Datenqualität S+(A) gdw. die Tupel lexikographisch aufsteigend nach A sortiert sind. Wertzusammenhang Ein Datenstrom D hat die Datenqualität W(A) gdw. die bzgl. A gleichen Tupel im Fluss aufeinander folgen. Wertverschiedenheit Ein Datenstrom D hat die Datenqualität D(A) gdw. sich keine zwei Tupel bzgl. A gleichen. Wertkenntnis Ein Datenstrom D hat die Datenqualität anz / min(A) / max(A) gdw. die Anzahl / das Minimum bzgl. A / das Maximum bzgl. A mit Ankunft des ersten Tupels bekannt ist. Michael Klein, 19. Oktober 2001 Datenqualität (2) Datenqualitätsanforderungen und –transformationen Für jede Implementierungsvariante erforderlich: • Mindestdatenqualität der Eingangsdatenströme • Datenqualitätstransformation blockierender Ausgang verzögernder Ausgang Notation: Mindestdatenqualität implementierungsName Ausgangsdatenqualität Beispiel: GROUP hashGroup(A, f) W(A) D(A) blockGroup(A, f) noopGroup(A, f) D(A) S(*) anz D(A) anz Datenqualität (3) Michael Klein, 19. Oktober 2001 Bereitstellung der Datenqualität gesucht: Zugriffsmethode, • die Bereichs- und Wertanfragen unterstützt • die Daten effizient in Strom gewünschter Qualität anbietet nicht geeignet: physische Clusterung hier: Index auf Basis raumfüllender Kurven • Funktion: mehrdimensionaler Raum lineare Folge von Adressen • Lokalitätseigenschaft Hilbertkurve Michael Klein, 19. Oktober 2001 entstehende Datenqualität: Pseudosortierung: PSk(A) k = max. Anzahl der Wertkombinationen pro Block Datenqualität (4) Verwendung raumfüllender Kurven 12 1 9 2 4 13 10 6 3 3 14 5 4 11 3 7 8 4 5 1 2 1 2 Datenqualitätsanforderungen Abschwächung der Anforderungen Lesen der Kurvenabschnitte von Platte, die im Anfragequader liegen Durch Zerlegung des Anfragequaders in schmale Streifen, die nacheinander gelesen werden Verbreiterung der Streifen, so dass die Sortierung nur blockweise gegeben ist, nicht jedoch innerhalb eines Blocks. effizient ineffizient Effizienz einstellbar Bereichsanfragen Pseudodatenqualität (1) Michael Klein, 19. Oktober 2001 Verwendung • Direkte Verwendung von Pseudodatenqualitäten nicht möglich • Bereitstellung spezieller Implementierungen zu deren Aufbereitung PS(A) PW(A) k-Sort(A) k-Collect(A) S(A) W(A) Pseudodatenqualität (2) Michael Klein, 19. Oktober 2001 Beispiel SELECT Vorname, Nachname, AVG(Note) AS Schnitt FROM Klausurergebnis GROUP BY Vorname, Nachname ORDER BY Nachname, Schnitt index PS([N,V]) PW([N,V]) k-Collect([N,V]) PS([N,V]) W([N,V]) W([V,N]) blockGroup([V,N], AVG) S([N,V]) S([N]) D([V,N]) blockSort([N,S]) k-Sort([N,V]) S([N,S]) D([V,N]) PS([N,V]) D([V,N]) out Fazit Michael Klein, 19. Oktober 2001 Was wurde erreicht? • Hoher Paralellisierungsgrad durch vielstufige Pipeline • Ausgeglichene Einzelschritte innerhalb der Pipeline durch Anpassung der Blöckgröße k • Interaktive Abarbeitung aufgrund nicht-blockierender Implementierungen ( geringe Startzeit) • Kontrollierbarer Ressourcenverbrauch über Blockgröße k • Beliebig große Datenmengen aufgrund ressourcenschonender Implementierungen möglich • Effiziente Bearbeitung auch von komplexen Anfragen durch genaue Buchführung und Mehrfachverwendung von Datenqualitäten möglich • Unabhängigkeit von statischer Datenverteilung: Ad-hoc-Anfragen mit beliebigen Attributkombinationen durch Index basierend auf raumfüllenden Kurven möglich. Aber: riesiger Optimierungsspielraum Michael Klein, 19. Oktober 2001 Interaktivitätsgerechter Optimierer Grundziel: Interaktivität Also: Ausführung der Anfrage mit möglichst geringer Start- und Gesamtzeit Grundsätzliches Vorgehen in zwei unabhängigen Schritten: 1. Theoretische Optimierung Ziel: Finden des Ausführungsplans P, der theoretisch die beste Start- und Gesamtzeit bietet 2. Praktische Optimierung P Ziel: Optimale Verteilung der Einzelschritte von P auf real vorhandene Recheneinheiten Michael Klein, 19. Oktober 2001 Erweiterung: Datenparallelität Ziel: Datenparallele Ausführung ganzer Pipelineabschnitte zur Erhöhung des Parallelitätsgrads Vorgehen: Einführung von zwei Spezialoperatoren zum Aufsplitten und Vereinen von Datenströmen Splitqualität: VEREINT(A) Tupel, die bezüglich A gleich sind, Mindest-DQ: W(A) laufen durch den selben Teilfluss. Mindest-SQ: VEREINT(A) index PW(A) hashPW(A) index Split PW(A) W(A) k-Collect blockGroup A [A1] A [A1] A [A1] k-Collect D(A) blockGroup D(A) tupelMerge D(A) out Michael Klein, 19. Oktober 2001 Messergebnisse (1) Start- und Gesamtzeit in Abhängigkeit von k Grundlage: TPC-H-Test für entscheidungsunterstützende Systeme Drei Relationen: CUSTOMER (140 MB), ORDERS (600 MB), LINEITEM (1,4 GB) SELECT * FROM ORDERS O, LINEITEM L WHERE O.OK = L.OK ORDERS PS([O.OK]) LINEITEM PS([L.OK]) k-Sort k-Sort Zeit in s S([O.OK]) S([L.OK]) mergeJoin • Mit k wächst Startzeit 700 • Startzeit viel geringer als Gesamtzeit 600 500 Gesamtzeit 400 • Wichtig für Gesamtzeit: ausgeglichene Pipeline 300 200 100 Startzeit 101 102 103 104 105 106 Blockgröße k Michael Klein, 19. Oktober 2001 Messergebnisse (2) Komplexe Anfragen: Vergleich mit Standardimplementierungen Dritte Anfrage aus TPC-H: SELECT L.OK, SUM(L.PRICE), O.ORDERDATE, O.PRIORITY FROM CUSTOMER C, ORDERS O, LINEITEM L WHERE O.MKTSEGMENT = 'BUILDING' AND O.ORDERDATE < 1995-03-15 AND L.SHIPDATE > 1995-03-15 AND C.CK = O.CK AND L.OK = O.OK AND O.OK > x GROUP BY L.OK, O.ORDERDATE, O.PRIORITY ORDERS OD<95-03-15 LINEITEM PS([O.OK]) PS([L.OK]) k-Sort k-Sort S([O.OK]) S([L.OK]) mergeJoin S([O.OK]) S([L.OK]) block Sort S([O.OK]) S([L.OK]) SD>95-03-15 CUSTOMER MS='BUILDING' oneHash Join S([L.OK,O.OD,O.SP]) block Group Michael Klein, 19. Oktober 2001 Messergebnisse (3) Komplexe Anfragen: Vergleich mit Standardimplementierungen Zeit in s • Startzeit bei Ausführungsplan mit DQ immer niedriger 360 • Gesamtzeit bei Ausführungsplan mit DQ kleiner für x unter 2 Mio. 300 • Größere Relationen nur mit DQ 240 180 120 60 0 1 Startzeit mit DQ 2 3 4 Gesamtzeit mit DQ 5 5.5 5.9 x in Mio Startzeit = Gesamtzeit ohne DQ Michael Klein, 19. Oktober 2001 Zusammenfassung & Ausblick Pipelining-Ansatz wenig Vorwissen über Datenverteilung Effiziente Anfragebearbeitung im KDD-Prozess Datenqualität komplexe Einzeloperatoren Algebra hoher Parallelisierungsgrad, lange Pipelines wünschenswert lose Kopplung zwischen DBMS und Analysesystem raumfüllende Kurven Ad-hoc-Anfragen, keine ausgezeichneten Attribute sehr große Datenmengen, Skalierbarkeit komplexe Anfragen Interaktivitätsgerechte Optimierung riesiger Optimierungsspielraum Interaktivität nötig geringe Startzeit Pseudodatenqualität unausgeglichene Pipelines beschränkte Ressourcen Erweiterungen geringe Gesamtzeit wünschenswert aufwändige Lernverfahren