Data Streams: Gegenüberstellung existierender Systeme und Architekturen Marius Renn Betreuer: Jürgen Göres
Inhalt Kriterien Existierende Systeme STREAM Aurora PIPES (SPEX) (MAIDS) Vergleich Fazit Einleitung Überblick Verschiedene Details Kriterienerfüllung
Anfragetypen Ergebnisausgabe Einmalig: Liefert ein Ergebnis zu einem Zeitpunkt. Definitionszeitpunkt Vordefiniert: Anfrage vor Datenverarbeitung bekannt. Kontinuierlich: Liefert kontinuierliche Ergebnisse. Ad-hoc: Anfrage wird zur Laufzeit gestellt. Kriterien sind zueinander orthogonal!
Operatoren Zustandsbehaftete Operatoren: Abhilfe durch Zwischenspeicher: 1, 3, 5, 7 1 4 5 3 + 1 2 5 6 4 1 4 5 3 in M 1 5 3 Blockierende Operatoren: Abhilfe durch (mengen-/zeitbasierte) Fenster: Sliding Window: s7 s6 s5 s4 s3 s2 s2 s1 Tumbling Window: s7 s6 s5 s4 s3 s2 s2 s1
Optimierung und Adaptierung Algebraische Optimierungen wie in DBVS weiterhin eingschränkt möglich. Die Anpassung an die Datenlast heisst Adaptierung. Load Shedding: Auslassen von Tupeln um Last zu verringern. QoS: Einhaltung von Dienstgütekriterien
STREAM STanford StREam DatA Manager, entwickelt von der Stanford University, California Unterscheidet zwischen Strömen und Relationen. 3 Klassen von Operationen: Relation-zu-Relation, Relation-zu-Strom, Strom-zu-Relation Anfragesprache CQL (continuous query language) als Erweiterung zum populären SQL.
Ströme und Relationen Strom S Relation R s t green 1 red 1 orange 1 blue 2 red 2 black 3 yellow 5 purple 5 red 6 S s green red orange R(1) s black R(3) s blue red R(2)...
Datenstruktur Wie werden Relationen in Ströme verwandelt, und umgekehrt? Beiden liegt die gleiche Datenstruktur zugrunde: Tupel Zeitstempel Operation data S timestamp T boolean I Ströme besitzen nur positive Elemente, Relationen bestehen aus beiden: Relation zu Strom s 3 t 3 - s 2 t 2 + s 1 t 1 - Istream s 2 t 2 + Relation Strom
Zustandsbehaftete Operatoren Beispiel: Fensteroperator: Strom zu Relation s 3 t 3 + s 2 t 2 + s 1 t 1 + [Rows 40] s 1 t 1 + Strom Relation 40 Tupel Strom zu Relation s 43 t 43 + s 42 t 42 + s 41 t 41 + [Rows 40] s 1 t 1 - Strom Relation Die zu entferndenden Tripel müssen gespeichert werden!
Synopsen Synopsen sind den Operatoren zugeteilte Zwischenspeicher. Selection Hohe Redundanz: Oftmals haben mehrere Synopsen ähnlichen Inhalt. S 3 Join S 4 Lösung in STREAM: Synopsen-Sharing S 1 [100 Rows] [1 Hour] S 2 A B
Synopsen-Sharing Eigentliche Daten liegen in den Stores. Zugriff auf die Daten durch Stubs. Selection Stubs stellen eine Sicht auf den Store dar. Store 1 Stub 3 Join Stub 4 Store 2 Aber: Optimierungen beeinflussen evtl. mehrere Operatoren. Stub 1 [100 Rows] [1 Hour] Stub 2 A B
STREAM GUI Um Einblicke in STREAM zu bekommen, liegt ein kostenfreies Testsystem zum Herunterladen bereit.
Kriterien Kriterien Entwickler Einmalige Anfragen Kontinuierliche Anfragen Vordefinierte Anfragen Ad-hoc-Anfragen Blockierende Operatoren Zustandsbehaftete Operatoren Besonderheiten STREAM Stanford University Ja, auf Relationen Ja, auf Strömen Ja Nein Ja, durch Fenster Ja, durch Synopsen CQL, unterstützung v. Relationen
Aurora Entwickelt von den Universitäten Brown, Brandeis und MIT, alle im Nordosten der USA. Einziges hier vorgestelltes kommerzielles System. Grafische Anfrageerstellung durch ein System von Boxes and Arrows. Reine Stromverarbeitung. Unterstützt die Einhaltung von Dienstgütekriterien.
Anfragegraphen Aufbau eines Anfragegraphs in Aurora: in 1 in 2 Filter Map Filter Union out 1 in 3 Tumble Super Verbindungspunkt out 2 Mehrere unabhängige Teilgraphen möglich! Beachte: Graphen dürfen keine Zyklen enthalten.
Verbindungspunkte Ad-hoc Anfrage an einem Verbindungspunkt: Speicher Verbindungspunkt in 1 out 1 Filter Super out 2 Slide Filter Ad-hoc Anfrage Speicherspezifikation an einem Verbindungspunkt erfolgt durch den Benutzer durch eine Zeitangabe. Anfragen zu Daten aus der Vergangenheit sind möglich.
Optimierungsmöglichkeiten Einfügen v. Projektionen Umordnen der Boxen P X Y X Y Zusammenfassen v. Boxen X Y XY Wie können Teilgraphen zur Laufzeit verändert werden?
Graphoptimierung Verbindungspunkte Filter Map Filter Join Filter Join
Zustandsbehaftete Operatoren Aurora macht keinen Unterschied zwischen zustandslosen und -behafteten Operatoren. Auf jedem Operator folgt eine Queue: Fensterausschnitt Slide X... s7 s6 s5 s4 s3 s2 s1 Tumble Fensterausschnitt Tupel, die älter sind als die Zugriffsfenster können aus der Queue entfernt werden.
Einhaltung der QoS-Kriterien Kann man beobachten, ob die Dienstgütekriterien von Aurora eingehalten werden? Ja, umfangreiches Monitoring System von Aurora: (Aus J. Kern: Aurora Performance Monitoring Tool)
Kriterien Kriterien Entwickler Einmalige Anfragen Kontinuierliche Anfragen Vordefinierte Anfragen Ad-hoc-Anfragen Blockierende Operatoren Zustandsbehaftete Operatoren Besonderheiten Aurora Brown, Brandeis, MIT Nein Ja Ja Ja Ja, durch Fenster Ja, durch Queues QoS-Einhaltung, GUI
PIPES Public Infrastructure for Processing and Senken Exploring Streams Entwickelt von der Universität Marburg Java API Implementiert HMTS, Mittelweg p i p e s!!!!!! Quellen " # "! zwischen GTS und OTS.
Quellen und Senken Source + subscribe(s: Sink) + transfer(o: Object) mysinks * Sink + process(o: Object) void subscribe(sink sink) { mysinks.add(sink); } void transfer(object o) { for(sink sink: mysinks) { sink.process(o); } } PIPES nennt diese Art der direkten Weiterleitung Direkte Interoperabilität (direct interoperability).
Klassenhierarchie Pipe ist sowohl Quelle wie auch <<interface>> Source <<interface>> Sink Senke. Source, Sink und Pipe sind Schnittstellen. Abstract-Klassen bieten generische Implementierungen. AbstractSource <<interface>> Pipe AbstractPipe AbstractSink
Beispiel: Filter Wir wollen eine Filter-Pipe implementieren: public class Filter extends AbstractPipe { protected Predicate mypred; public Filter(Predicate p) { mypred = p; } public void process(object o) { if( mypred.check(o) ) transfer(o); } }
Explizites Scheduling process() process() Filter Map vitueller Operator process() void process(object o) {... transfer(o); } Entkoppelt: Pipe process() Filter BufferPipe Map transfer() BufferPipeScheduler void process(object o) { // Add Object to Queue } BufferPipe
HMTS ThreadScheduler BPS laufen in separaten Threads BPS verwalten ihre zugeordneten BPs. Direkte Interoperabilität weiterhin möglich ThreadScheduler verwaltet Priorität der Threads BPS!!!!!! "!! BPS! # "!! virtueller Operator
Kriterien Kriterien Entwickler Einmalige Anfragen Kontinuierliche Anfragen Vordefinierte Anfragen Ad-hoc-Anfragen Blockierende Operatoren Zustandsbehaftete Operatoren Besonderheiten PIPES Universität Marburg Nein Ja Ja Nein Ja, durch SweepAreas Ja, durch SweepAreas HMTS
SPEX Entwickelt von der Universität München Verarbeitet XML-Datenströme Anfragen werden in XPath gestellt Beinhaltet eine grafische Benutzeroberfläche Konvertierung der XPath Anfrage in einen physischen Anfrageplan erfolgt in 3 Schritten.
SPEX Viewer SPEX bietet eine grafische Benutzeroberfläche namens SPEX Viewer:
Kriterien Kriterien Entwickler Einmalige Anfragen Kontinuierliche Anfragen Vordefinierte Anfragen Ad-hoc-Anfragen SPEX Universität München Nein Ja Ja Nein Blockierende Operatoren - Zustandsbehaftete Operatoren - Besonderheiten XML-Ströme
MAIDS In der Entwicklung an der University of Illinois Soll Data-Mining auf Datenströmen realisieren Besitzt mehrere Module um Daten zu verarbeiten. Data Stream Collector Anfrage-Engine Datenklassifizierer Mustererkennung Cluster-Analyse Visualisierung
Geneigte Fenster Um Daten aus einem möglichst langem Zeitraum zu speichern, verwendet MAIDS geneigte Fenster: DS = Datensatz 1 DS / Monat 1 DS / Tag 1 DS / Stunde 1 DS / Minute Zeit Jetzt Datenstruktur: Minuten 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Viertelstunden 1 2 3 4 Stunden 1 2 3 4 5 6... 19 20 21 22 23 24 Tage 1 2 3 4 5 6... 26 27 28 29 30 31
Vergleich der Systeme Kriterien STREAM Aurora PIPES SPEX Einmalige Anfragen Kontinuierliche Anfragen Vordefinierte Anfragen Ad-hoc-Anfragen Blockierende Operatoren Zustandsbehaftete Operatoren Besonderheiten CQL QoS HMTS XML
Fazit Ansätze unterschiedlich, hohe Diversität Noch gibt es keinen klaren Sieger MAIDS: Die Killer-Applikation von Morgen? Datenströme mit Sicherheit zunehmend wichtig! Forschung ist daher von großer Bedeutung.
Dankeschön! Fragen?