Hauptseminar Data Grid am Lehrstuhl für verteilte Informationssyteme (Universität Passau) Referent: Andreas Scherbauer Datum: 31. Mai 2006 OGSA-DAI OGSA-DQP
Überblick OGSA-DAI Definition Designziele Komponenten im Detail Komponenten in Interaktion (Beispiel) OGSA-DQP Überblick Anfragebehandlung (Beispiel)
DAI Data Access & Integration Was ist DAI? Was soll DAI leisten? Wie ist der Zusammenhang mit grid? Zitat von der OGSA-DAI Homepage: The aim of the OGSA-DAI project is to develop middleware to assist with access and integration of data from separate sources via the grid.
DAI Data Access & Integration Designziele um Entwickler zu unterstützen: Einfache APIs Datenzugriff durch konventionelle Methoden Extension points zum Erweitern (zb DQP) Gemeinsame Abstraktionsebene für verschieden Datenresourcen: Versteckt XML und SOAP Anfragen Transparent gegenüber verschiedenen Versionen von WSI und WSRF
Benutzen eines DataService Client Client sendet Request an DataService Request Activity Activity Activity DataService Request besteht aus 1..n Activity Elementen
Benutzen eines DataService Client DataService bearbeitet Anfrage und antwortet Response Result Result Result DataService Response besteht aus 1..n Result Elementen; für jedes Activity Element ein Result
ServiceFetcher getinstance() GenericServiceFetcher getdataservice(url, resourceid) Client perform(request) DataService
Request und Activity Ein Request besteht aus 1..n Activity Elementen Activities können nebenläufig oder sequenziell sein Activity beschreibt auszuführende Aktion, wie: Datenquelle benutzen (Queries) Umwandlung von Daten (Transformation) Auslieferung/Rückgabe von Ergebnissen Daten fließen zwischen Activities SQLQuery java.sql.resultset WebRowSet XML Daten DeliverToURL
Activity im Detail Eine Activity (Javaklasse) für jede Aktivität, die ein DataService unterstützt Activities sind unabhängig von der serverseitigen Umsetzung (WSI, WSRF) Einfach zu Parametrisieren SQLQuery q1 = new SQLQuery( SELECT * FROM GeneTable WHERE id<10000 ); SQLQuery q2 = new SQLQuery( SELECT * FROM GeneTable WHERE id>? AND id<? ); q2.setparameter(1, 10 ); q2.setparameter(2, 20 );
Activities parallel/sequenziell Sequence verarbeitet nacheinander Flow verarbeitet nebenläufig Komplexere Steuerung mit Verschachtelung von RequestComponent abgeleitet RequestComponent als Unterelemente Sequence Flow SQLUpdate SQLQuery SQLQuery SQLQuery
Sessions Jedem Request ist eine Session zugeordnet Session erlaubt Datentransfer zwischen einzelnen Requests Session Attribute Request Activity Request Activity Zeit Session gezielt wählen mittels SessionRequirements und JoinExistingSession
Daten-ein/-ausgabe (Delivery) DeliverToGFTP DeliverFromGFTP GridFTP DeliverToURL DeliverFromURL WWW server DataService DeliverToSMTP SMTP server DeliverToURL DeliverFromURL FTP server DeliverToFile DeliverFromFile Filesystem DeliverToDT DeliverFromDT DataService
Beispiel Datenintegration (1) Client select, DeliverToDT select, DeliverToDT DataService DS1 MySQL DeliverFromDT, BulkLoad, Merge DataService DS2 DB2 deliver deliver DataService DS3 Oracle
Beispiel Datenintegration (2) 1. Alle drei DataService Objekte holen: ServiceFetcher fetcher = GenericServiceFetcher.getInstance(); DataService ds1 = fetcher.getdataservice( http://www.genes.org/ds1, MySQLResource ); DataService ds2 = fetcher.getdataservice( http://www.moregenes.org/ds2, DB2Resource ); DataService ds3 = fetcher.getdataservice( http://www.evenmoregenes.org/ds3, OracleResource );
Beispiel Datenintegration (3) 2. Anfragen erstellen und senden: SQLQuery query1 = new SQLQuery( SELECT * FROM GeneTable WHERE id<10000 ); WebRowSet rowset1 = new WebRowSet(query1.getOutput()); DTOutputStream output1 = new DTOutputStream(rowset1.getOutput); ActivityRequest request1 = new ActivityRequest(); request1.addactivity(query1); request1.addactivity(rowset1); request1.addactivity(output1); ds1.perform(request1); Für DS2 sind die Schritte fast analog
Beispiel Datenintegration (4) Client select, DeliverToDT DataService DS1 MySQL select, DeliverToDT DataService DS2 DB2
Beispiel Datenintegration (5) 3. DS3 empfängt und verarbeitet Ergebnisse: DeliverFromDT deliver1 = new DeliverFromDT(); SQLBulkLoad load1 = new SQLBulkLoad( deliver1.getoutput(), table1 ); DeliverFromDT deliver2 = new DeliverFromDT(); SQLBulkLoad load2 = new SQLBulkLoad( deliver2.getoutput(), table2 ); //connect the data inputs and outputs deliver1.setdatatransportinput(output1.getdatatransport()); deliver2.setdatatransportinput(output2.getdatatransport()); ActivityRequest request3 = new ActivityRequest(); request3.addactivity(deliver1); request3.addactivity(load1); request3.addactivity(deliver2); request3.addactivity(load2); ds3.perform(request3);
Beispiel Datenintegration (6) Client DataService DS1 MySQL DeliverFromDT, BulkLoad DataService DS2 DB2 deliver deliver DataService DS3 Oracle
Beispiel Datenintegration (7) 4. DS3 verbindet die Ergebnisse: SQLQuery merge = new SQLQuery( SELECT * FROM table1, table2 WHERE... ); WebRowSet rowset = new WebRowSet(merge.getOutput()); ActivityRequest request3 = new ActivityRequest(); request3.addactivity(merge); request3.addactivity(rowset); ds3.perform(request3);
Beispiel Datenintegration (8) Client DataService DS1 MySQL Merge DataService DS2 DB2 DataService DS3 Oracle
Soviel zu OGSA-DAI OGSA-DAI Client Toolkit vereinfacht die Entwicklung von Clients die auf OGSA-DAI DataService Dienste zugreifen Bietet eine gemeinsame Abstraktion für die benutzten Dienste WSI und WSRF Versteckt XML und die Interaktion mit den einzelnen Diensten Bietet etwas Schutz vor Änderungen in der Implementierung in den zugrundeliegenden Diensten
Distributed Query Processing OGSA-DQP ist ein service-basierter verteilter Anfrageprozessor Bietet seine Fähigkeiten wiederum als Service an Verarbeitet Anfragen auf verteilten Resourcen (OGSA-DAI DataSource, WebService) Durch Erweiterung von DAI realisiert
DQP als Zwischenschicht Anfrage Ergebnis OGSA DQP OGSA DAI OGSA DAI DBMS DBMS Middleware Ansatz wie bei OGSA-DAI DQP kann als Vermittlerschicht über DAI Datenresourcen betrachtet werden Kann selbst als Grid Service benutzt werden
DQP die Hauptkomponenten Grid Distributed Query Service (GDQS): Coordinator kompiliert, optimiert, partitioniert und plant Anfragen basiert in Teilen auf Polar Query Evaluation Service (QES) Evaluator führt geplante Partitionen von Anfragen aus
DQP im Detail DQP reduce DQP join (A1,B1) DQP scan (A) DAI DBMS DQP join (A2,B2) DQP scan (B) DAI DBMS DQP Anfragen können über verschiedene Knoten verteilt ausgeführt werden Operatoren (wie join) können parallel ausgeführt werden DQP kompiliert, optimiert und plant die Anfrage für die Ausführung auf den verfügbaren Knoten
DQP Anfragebehandlung Anfrage (Query) Optimierung für einzelnen Knoten Parser Logische Optimierung Physikalische Optimierung Optimierung für mehrere Knoten Partitionierer Scheduler Evaluators Anfrageergebnisse (Query Results)
DQP Beispiel (1) Gegeben sind zwei DBMS und ein Analysedienst: goterm Gen Ontologie DBMS (realisiert als DAI DataService) protein Proteinsequenz DBMS (realisiert als DAI DataService) Blast Bewertet Sequenzausrichtungen (realisiert als WebService) Einzelne Anfrage referenziert mehrere Orte Anfragen in OQL (Object Query Language): SELECT p.proteinid, Blast(p.sequence) FROM protein p, goterm t WHERE t.termid= GO:0005942 AND p.proteinid = t.proteinid
DQP Beispiel (2) Logische Optimierung reduce op_call (Blast) SELECT p.proteinid, Blast(p.sequence) FROM protein p, goterm t WHERE t.termid= GO:0005942 AND p.proteinid = t.proteinid join (proteinid) Der Plan wird als logische Algebra ausgedrückt reduce reduce Konstruiert werden mehrere Pläne mit gleichem Ergebnis scan (protein) scan termid=go:0005942 (goterm)
DQP Beispiel (3) Physikalische Optimierung reduce op_call (Blast) SELECT p.proteinid, Blast(p.sequence) FROM protein p, goterm t WHERE t.termid= GO:0005942 AND p.proteinid = t.proteinid reduce table_scan (protein) hash_join (proteinid) reduce table_scan termid=go:0005942 (goterm) Der Plan wird als physikalische Algebra ausgedrückt Der auszuführende Plan wird durch Kostenvergleich aus mehreren äquivalenten Plänen ausgewählt
DQP Beispiel (4) Partitionierung der Anfrage exchange reduce reduce op_call (Blast) exchange hash_join (proteinid) exchange reduce SELECT p.proteinid, Blast(p.sequence) FROM protein p, goterm t WHERE t.termid= GO:0005942 AND p.proteinid = t.proteinid Der Plan wird als parallele Algebra ausgedrückt An Datenübergabepunkten werden exchange Operatoren eingefügt table_scan (protein) table_scan termid=go:0005942 (goterm)
DQP Beispiel (5) Planen der Ausführung exchange reduce op_call (Blast) exchange hash_join (proteinid) exchange SELECT p.proteinid, Blast(p.sequence) FROM protein p, goterm t WHERE t.termid= GO:0005942 AND p.proteinid = t.proteinid Operatoren an Grid-Knoten zuweisen zur Auswertung reduce reduce table_scan (protein) table_scan termid=go:0005942 (goterm)
OGSA-DQP ein Fazit DQP ist ein service-basierter Anfrageprozessor, der: als Service realisiert ist unter Verwendung von vorhandenen Services implementiert ist DQP zeigt wie die OGSA-DAI Extensibility Points benutzt werden: Activity wird hinzugefügt implementiert neue DataResourceAccessors Vorteile Nebenläufigkeit wird durch OGSA-DAI realisiert DQP kann vielfältige Transfermöglichkeiten von DAI nutzen DQP wird durch DAI abgeschirmt von der verwendeten Plattform (WSI, WSRF)
Quellen http://www.ogsadai.org.uk/ http://www.ogsadai.org.uk/documentation/ ogsadai-wsi-2.2/doc/api-docs/index.html http://www.neresc.ac.uk/projects/ogsa-dqp/ http://www.mygrid.org.uk/ http://www.cs.man.ac.uk/~gounaris/ ahm2003-ogsa-dqp.pdf
Ende Danke für die Aufmerksamkeit - Ende -