250 likes | 380 Views
Lehrgebiet Datenverwaltungssysteme S eminar Datenbanken und Informationssysteme im Sommersemester 2005. Data Streams. Thema : Operatoren auf Data Streams. Ou Yi o_yi@informatik.uni-kl.de Technische Universität Kaiserslautern. Überblick. Einleitung Probleme der Strom-Verarbeitung
E N D
Lehrgebiet Datenverwaltungssysteme Seminar Datenbanken und Informationssystemeim Sommersemester 2005 Data Streams Thema: Operatoren auf Data Streams Ou Yi o_yi@informatik.uni-kl.de Technische Universität Kaiserslautern
Überblick • Einleitung • Probleme der Strom-Verarbeitung • Semantik der Operatoren • STREAM • Aurora • Join-Operatoren • Zusammenfassung Operatoren auf Data Streams
Einleitung • Merkmale des Datenstrommodells • kontinuierlich, potenziell hohe Ankunftsrate • potenziell unendlich lang • Reihenfolge kann verfälscht sein • Grundkonzepte • gleitendes Fenster (endliche Teilmenge) • Zeitstempel (implizit & explizit) • Klassifikation der Anfragen • kontinuierliche Anfragen vs. einmalige Anfragen • vordefinierte Anfragen vs. "ad hoc"-Anfragen • DSMS: rechtzeitige Auswertung der kontinuierlichen Anfragen (eventuell auch Funktionalität von DBMS) Operatoren auf Data Streams
Probleme der Strom-Verarbeitung • Exakte Antwort unmöglich • >> Approximierung • Blockierung • blockierende Operatoren (z. B. Aggregat-Operator) • nicht-blockierende Operatoren (z. B. Filter) • >> nicht-blockierende Verfahren + Fenstertechnik • verfälschte Reihenfolge (expliziter Zeitstempel) • >> Pufferung und Sortierung • Kombination mit Relationen • unterschiedliches Datenmodell und Verarbeitungsmodell Operatoren auf Data Streams
Strom-zu-Relation Relation-zu-Relation Ströme Relationen Relation-zu-Strom Semantik der Operatoren in STREAM • Ziel: kontinuierlichen Anfragen auf Datenströmen und Relationen • Def.: Strom S • eine möglicherweise unendliche Multimenge von Elementen <s, t> • Datenanteil s: feste Attributmenge • Zeitstempel t: Zeitdomäne T, diskret und geordnet • Def.: Relation R • eine Abbildung von einer Zeitdomäne auf eine endliche, aber unbegrenzte Multimenge von Tupeln • zu jedem Zeitpunkt t T bestimmt R eine Multimenge R(t) Operatoren auf Data Streams
STREAM - Operatorklassen • Implementierte Operatoren • Strom-zu-Relation-Opertoren • seq-window (zeitbasiert, tupelbasiert und partitioniert) • Relation-zu-Strom-Operatoren • i-stream, d-stream, r-stream • Relation-zu-Relation-Operatoren • select, project, joins, union, intersect, aggregate etc. • abgeleitet vom Relationenmodell, ähnliche Semantik • System-Operatoren • für die Semantik einer Anfrage irrelevant • isolieren Anfrage-Operatoren von Aspekten der unteren System-Ebenen Operatoren auf Data Streams
[max(t-Z, 0), t]: [0, 0] [0, 1] [0, 2] [1, 3] [2, 4] Ausgabe-Relation: R(t) R(0) R(1) R(2) R(3) R(4) ... <a> <a> <a> <c> <c> <b> <b> <b> <c> <d> <c> <c> <d> <e> <e> <c> <f> <d> STREAM – Strom-zu-Relation-Operatoren • Zeitbasiertes Fenster • Eingabe: Strom S, Parameter: Zeitintervall Z, Ausgabe: Relation R • Extremfall Z = 0, Fenster = [t, t] • Beispiel: • Eingabe-Strom-Schema: <Datenanteil, Zeitstempel> • Eingabe-Strom:<a, 0>, <b, 0>, <c, 1>, <c, 2>, <d, 2>, <e, 3>, <f, 4>, <f, 5>... • Parameter: Z = 2 Operatoren auf Data Streams
R(0) R(1) R(2) R(3) R(4) ... <a> <a> or <b> <c> <c> or <d> <e> <b> <c> <d> <e> <f> STREAM – Strom-zu-Relation-Operatoren (2) • Tupelbasiertes Fenster • Eingabe: Strom S, Parameter: Integer N, Ausgabe: Relation R • R(t): die jüngsten N Tupel • Beispiel: • Eingabe-Strom-Schema: <Datenanteil, Zeitstempel> • Eingabe-Strom: <a, 0>, <b, 0>, <c, 1>, <c, 2>, <d, 2>, <e, 3>, <f, 4>, <f, 5>... • Parameter: N = 2 • Partitioniertes Fenster (tupelbasiert) • zusätzlich eine Attributmenge (ähnlich zum GroupBy im RM) • R(t): Vereinigung der tupelbasierten Fenster über allen Subströmen Operatoren auf Data Streams
R(0) R(1) R(2) ... <a> <c> <c> <b> <d> STREAM – Relation-zu-Strom-Operatoren • Rstream (relation stream) • Eingabe R, Ausgabe S • <s, t> S immer dann, wenn s R(t) • Beispiel: • Eingabe-Relation R(t): • Ausgabe-Strom: <a, 0>, <b, 0>, <c, 1>, <c, 2>, <d, 2> ... • Istream (insert stream) • Dstream (delete stream) Operatoren auf Data Streams
Strom-zu-Relation Relation-zu-Relation Ströme Relationen Relation-zu-Strom STREAM – Relation-zu-Relation-Operatoren • Keine Strom-zu-Strom-Operatoren • Vorteil: Wiederverwendung der formalen Grundlagen und Implementierungstechniken des Relationenmodells Operatoren auf Data Streams
Semantik der Operatoren - Aurora • Strom-zu-Strom-System, Relationen nicht explizit unterstützt • Anfrage-Algebra • Stream Query Algebra • Sieben primitive Operatoren • Reihenfolgeirrelevant • Filter, Map und Union • ähnlich zu Selektion, Projektion und Mengenvereinigung im RM • Reihenfolgesensitiv • BSort, Aggregate, Join und Resample • Ausführung mit begrenztem Speicherplatz und in begrenztem Zeitraum nur möglich, wenn eine Ordnung auf einem Attribut vorliegt (Beispiel: Join kann auf Sortierung basieren) Operatoren auf Data Streams
Aurora - Reihenfolgespezifikation • Reihenfolgespezifikation O = Order (On A, Slack n, GroupBy B1, ..., Bm) • A: welches Attribut ist geordnet • n (optional): die Anzahl der jüngeren Tupel, die vor einem verspäteten Tupel ankommen dürfen • B1, ..., Bm (optional): Partitionierung • Beispiel • Eingabe-Strom-Schema: (A, B) • Eingabe-Strom: ..., (1, x), (2, x),(2, y), (2, y),(5, x), (4, x), (5, y),(3, x), (6, x), ... • O = Order ( on A, Slack 1, GroupBy B ) • in zwei Subströme (B = x und B = y) partitioniert • erlaubt: (4, x), verworfen: (3, x) Operatoren auf Data Streams
Aurora - BSort • BSort • Puffer-basierte approximierte Sortierung • BSort (Assuming O) (S), mit O = Order (On A, Slack n, GroupBy B1, ..., Bm) • O spezifiziert die Qualität der Ausgabe • äquivalent zu n-Durchläufe-Bubblesort • Puffer von n+1 Tupeln: immer das "kleinste" Tupel ausgeben • je größer der Puffer, desto genauer die Sortierung, aber größere Verzögerung Operatoren auf Data Streams
Aurora – BSort (2) • BSort (Forts.) • Beispiel: n = 2 Operatoren auf Data Streams
Aurora - Aggregate • Aggregate • Aggregate ( F, Assuming O, Size s, Advance i ) ( S ) • O spezifiziert eine Ordnung für S • Order (On A, Slack n, GroupBy B1, ..., Bm) • F: Aggregat-Fkt in SQL-Stil oder UDF, auf Fenster • Ausgabe-Tupel: ( A = a, B1 = u1, ..., Bm = um ) + + ( F ( W ) ) • W: Fenster spezifiziert durch s und i • s: Fenstergröße bzgl. A, Eingabe-Tupel t mit t.A [a, a+s-1] • i: Größe der Fensterbewegung • Beispiel Operatoren auf Data Streams
Eingabe-Strom Fenster Ausgabe-Strom 1. (IBM, 1:00, 20) 1. (MSF, 1:00, 20) MSF: 2-2:59 Tupel: 11,... MSF: 1-1:59 Tupel: 1, 6 2. (INT, 1:00, 14) 2. (INT, 1:00, 16) 3. (MSF, 1:00, 22) 3. (IBM, 1:00, 24) 4. (IBM, 1:15, 20) ... 5. (IBM, 1:30, 23) INT: 2-2:59 Tupel: 10,... INT: 1-1:59 Tupel: 2, 7 6. (MSF, 1:30, 24) 7. (INT, 1:30, 12) 8. (IBM, 1:45, 13) 9. (IBM, 2:00, 17) IBM: 2-2:59 Tupel: 9,... IBM: 1-1:59 Tupel: 3, 4, 5, 8 10.(INT, 2:00, 16) 11.(MSF, 2:00, 22) ... Aurora – Aggregate (2) • Beispiel (Forts.) • Eingabe-Strom-Schema:(StockId, Time, Price) • berechne die stündlichen durchschnittlichen Preise für jede Aktie • Aggregate(Avg(Price), Assuming O, Size 1 hour, Advance 1 hour)(S), mit O = Order(On Time, GroupBy StockId) Operatoren auf Data Streams
Join-Operatoren • ressourcenaufwändig, potenziell alle Tupel der Eingabe zu durchlaufen, unmöglich für Strom-Verarbeitung • klassische Algorithmen • Nested-Loop-Join, Hash-Join, Sort-Merge-Join • hash-basierte Joins • auf Gleichheitsprädikat eingeschränkt • Symmetrischer Hash-Join (SHJ) • nach dem Prinzip des "Pipelining" • Hauptspeicher-Algorithmus, für große Datenmengen nicht geeignet • XJoin (Erweiterung von SHJ) • nicht mehr auf den Hauptspeicher eingeschränkt • behandelt unstabile Eingabe Operatoren auf Data Streams
Join-Operatoren (2) • sortierbasierte Joins • nicht auf Gleichheitsprädikat eingeschränkt • Sort-Merge-Join (SMJ) • ganze Eingabe in der Sortierphase einlesen (blockierend) • Progressive Merge Join (PMJ) • nicht-blockierende Variante von SMJ • kann schon in der Sortierphase Ergebnis-Tupel erzeugen • mit Fenstertechnik kann auf Strom adaptiert werden (TPMJ) Operatoren auf Data Streams
Join-Operatoren (3) • Join in Aurora • simuliert Band-Join der Relationenalgebra • Join (P, Size s, Left Assuming O1, Right Assuming O2) (S1, S2) • P: Join-Prädikat • O1 bzgl. A für S1, O2 bzgl. B für S2 • t S1 und u S2 werden verbunden, falls |t.A – u.B| s P(t, u) • Beispiel: • Aktienpreisinfos aus zwei Märkten, X und Y, mit Schema (StockId, Time, Price) • finde Aktien-Paare, deren Preise innerhalb 10 Min in zwei Märkten gleich sind Operatoren auf Data Streams
X Y Ausgabe-Strom von Join 01. (IBM, 2:00, 3) 01. (SMS, 1:55, 3) 01. (IBM, 2:00, 3, SMS, 1:55, 3) 02. (MSF, 2:00, 1) 02. (SAP, 1:55, 4) 02. (IBM, 2:00, 3, SMS, 2:05, 3) 03. (INT, 2:00, 1) 03. (BMW, 1:55, 5) 03. (IBM, 2:05, 4, SAP, 1:55, 4) 04. (IBM, 2:05, 4) 04. (DML, 1:55, 6) 04. (IBM, 2:05, 4, SAP, 2:05, 4) 05. (MSF, 2:05, 2) 05. (SMS, 2:05, 3) 05. (IBM, 2:05, 4, SMS, 2:15, 4) 06. (INT, 2:05, 1) 06. (SAP, 2:05, 4) 06. (IBM, 2:05, 4, SAP, 2:15, 4) 07. (IBM, 2:10, 4) 07. (BMW, 2:05, 5) 07. (IBM, 2:10, 4, SAP, 2:05, 4) 08. (MSF, 2:10, 3) 08. (DML, 2:05, 6) 08. (IBM, 2:10, 4, SMS, 2:15, 4) 09. (INT, 2:10, 1) 09. (SMS, 2:15, 4) 09. (IBM, 2:10, 4, SAP, 2:15, 4) 10. (IBM, 2:15, 2) 10. (SAP, 2:15, 4) 10. (MSF, 2:10, 3, SMS, 2:05, 3) 11. (MSF, 2:15, 4) 11. (BMW, 2:15, 5) 11. (MSF, 2:15, 4, SAP, 2:05, 4) 12. (INT, 2:15, 1) 12. (DML, 2:15, 6) 12. (MSF, 2:15, 4, SMS, 2:15, 4) ... ... 13. (MSF, 2:15, 4, SAP, 2:15, 4) ... Join-Operatoren (4) • Beispiel (Forts.): • Join (P, Size 10 Min, Assuming Left O, Assuming Right O) (X, Y) wobei P(x, y) <=> x.Price = y.Price und O = Order(On Time) Operatoren auf Data Streams
STREAM vs. Aurora • Ähnlichkeit • Stromorientiert, unterstützen die Auswertung kont. Anfragen auf DS • Modellierung eines Stroms: • feste Attributmenge und min. ein geordnetes Attribut • explizite Zeitstempel (für Semantik eines Operators) • Fenstertechnik • Unterschied • Unterstützung von Relationen • Behandlung des Reihenfolgeproblems • Fenster auf jedem geordneten Attribut (Aurora) • STREAM: <s, t> • Aurora: (a1, ..., am) Operatoren auf Data Streams
Zusammenfassung • Operatoren in DBMS sind im DSMS vorhanden und werden dort erweitert oder simuliert • bei unendlicher Eingabe: Approximierung und Fenstertechnik • Zeitstempel für Strom-Verarbeitung erforderlich • Bestimmung des Fensters • notiert die Reihenfolge, für blockierende Operatoren wichtig • keine standardisierte "Strom-Algebra" • verschiedene Mengen von Operatoren • verschiedene Datentypen Operatoren auf Data Streams
Zusatz • Zusammenspiel der Operatoren im STREAM • Beispiel: • Aktienpreisinfos als Daten-Elemente <s, t> • s gehört zu S(StockId, Price), t gehört zur Zeitdomäne T • finde solche Aktien, deren Preis höher als 50 ist • CQL-Anfrage: Select Rstream(*) From S [Now] Where Price > 50 • Strom-zu-Relation: zeitbasiertes Fenster mit Z = 0, [t,t] • Relation-zu-Relation: Filter nach der Bedingung Price > 50 • Relation-zu-Strom: Rstream Operatoren auf Data Streams
Filter (Price k) Aggregate (CNT, Assuming O, Size 1, Advance 1) O = Order ( On Time, Slack n) (Time,CNT) Filter (CNT m) Zusatz • Zusammenspiel der Operatoren im Aurora • Daten fließen durch einen azyklischen gerichteten Graph von Operatoren • Beispiel • generiere eine Nachricht, wenn die Preise von mehr als m Aktien gleichzeitig über eine Grenze k gehen. • Eingabe-Strom: (StockId, Time, Preis) Operatoren auf Data Streams