DataService - Universität Passau

Werbung
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 -
Herunterladen