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 XML Daten DeliverToURL WebRowSet 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 SQLUpdate SQLQuery Flow SQLQuery SQLQuery Sessions Jedem Request ist eine Session zugeordnet ● Session erlaubt Datentransfer zwischen einzelnen Requests ● Session Attribute Request Request Activity Activity Zeit ● Session gezielt wählen mittels SessionRequirements und JoinExistingSession Daten-ein/-ausgabe (Delivery) DeliverToGFTP DeliverFromGFTP DeliverToURL DeliverFromURL DataService DeliverToSMTP DeliverToURL DeliverFromURL DeliverToFile DeliverFromFile DeliverToDT DeliverFromDT GridFTP WWW server SMTP server FTP server Filesystem DataService Beispiel Datenintegration (1) Client select, DeliverToDT select, DeliverToDT DataService DS1 MySQL DataService DS2 DB2 DeliverFromDT, BulkLoad, Merge deliver DataService DS3 deliver 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 DataService DS2 DB2 select, DeliverToDT 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 DataService DS2 DB2 DeliverFromDT, BulkLoad deliver DataService DS3 deliver 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 DataService DS2 DB2 Merge 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) DQP join (A2,B2) ● DQP scan (B) DAI DAI DBMS 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) join (proteinId) reduce scan (protein) 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 logische Algebra ausgedrückt Konstruiert werden mehrere Pläne mit gleichem Ergebnis scan termId=GO:0005942 (goTerm) DQP Beispiel (3) Physikalische Optimierung reduce SELECT p.proteinId, Blast(p.sequence) FROM protein p, goTerm t WHERE t.termId=“GO:0005942“ AND p.proteinId = t.proteinId op_call (Blast) hash_join (proteinId) ● ● reduce table_scan (protein) reduce Der Plan wird als physikalische Algebra ausgedrückt Der auszuführende Plan wird durch Kostenvergleich aus mehreren äquivalenten Plänen ausgewählt table_scan termId=GO:0005942 (goTerm) DQP Beispiel (4) Partitionierung der Anfrage reduce op_call (Blast) exchange SELECT p.proteinId, Blast(p.sequence) FROM protein p, goTerm t WHERE t.termId=“GO:0005942“ AND p.proteinId = t.proteinId hash_join (proteinId) exchange reduce table_scan (protein) exchange reduce table_scan termId=GO:0005942 (goTerm) ● ● Der Plan wird als parallele Algebra ausgedrückt An Datenübergabepunkten werden „exchange“ Operatoren eingefügt DQP Beispiel (5) Planen der Ausführung reduce op_call (Blast) exchange SELECT p.proteinId, Blast(p.sequence) FROM protein p, goTerm t WHERE t.termId=“GO:0005942“ AND p.proteinId = t.proteinId hash_join (proteinId) exchange reduce table_scan (protein) exchange reduce table_scan termId=GO:0005942 (goTerm) ● Operatoren an Grid-Knoten zuweisen zur Auswertung 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 -