Prof. Dr.-Ing. Stefan Deßloch AG Heterogene Informationssysteme Geb. 36, Raum 329 Tel. 0631/205 3275 [email protected] Kapitel 7 Wrapper-basierte Datenintegration Inhalt: Einführung: Wrapper Garlic SQL/MED (Management of External Data) Überblick: OLE (Microsoft) Zusammenfassung Middleware for Heterogenous and Distributed Information Systems - WS04/05 Einführung: Wrapper kapselt die in einer Datenquelle gespeicherten Daten und ‘vermittelt’ zwischen der Datenquelle und der Middleware entscheidend hinsichtlich der Bewältigung der Heterogenität zwischen den Datenquellen: Wrapper-Architektur Wrapper-Interfaces (zu bewältigende) Heterogenität, jede Datenquelle hat ihr eigenes Datenmodell und Schema, wobei letzteres sich mit der Zeit ändern kann ihr eigenes API und spezielle Anfragemöglichkeiten Anfragesprache (Spektrum: einfache Scans, Sortierung, einfache Prädikate, komplexe Prädikate, Aggregation, binäre Joins, n-Wege-Joins; evtl. sogar ‘eigentümlich’: spezielle Prädikate nur auf bestimmten Daten erlaubt) Klassen-/Funktionsbibliothek spezifische Programmierschnittstelle © Prof.Dr.-Ing. Stefan Deßloch 2 Middleware for Heterogenous and Distributed Information Systems WS04/05 1 Garlic “The wrapper architecture of Garlic ... addresses the challenge of diversity by standardizing how information in data sources is described and accessed, while ... Client Client Client taking an approach to query planning in which the wrapper Garlic and the middleware Metadynamically determine Query data the wrapper’s role in Processor answering a query” M. T. Roth, P. Schwarz: “Don’t Scrap It, Wrap It! A Wrapper Architecture for Legacy Data Sources”, VLDB’97 © Prof.Dr.-Ing. Stefan Deßloch Wrapper Wrapper Relational DB Object DB 3 ... Wrapper Wrapper Image Archive Complex Objects Middleware for Heterogenous and Distributed Information Systems WS04/05 Wrapper-Architektur Ziele Geringe Start-up-Kosten für die Erstellung eines Wrappers Möglichkeit der Evolution des Wrappers Flexible Architektur; Möglichkeit des ‘Einhängens’ weiterer Datenquellen (werden in Garlic auch Repositories genannt) und zugehöriger Wrapper Wrapper sollte der Garlic-Anfrageverarbeitung exakt die Anfragemöglichkeiten verfügbar machen, die die zugehörige Datenquelle unterstützt © Prof.Dr.-Ing. Stefan Deßloch 4 Middleware for Heterogenous and Distributed Information Systems WS04/05 2 Garlic Wrapper-Services Modellierung von Daten als Objekte Methodenaufruf Hotel Query Planning Query-Ausführung Wrapper Plan class = 5 Object Request Wrapper get_class() Iterator::advance() Data Source Wrapper Plan name © Prof.Dr.-Ing. Stefan Deßloch class daily_rate location city 5 Middleware for Heterogenous and Distributed Information Systems WS04/05 Modellierung von Daten als Objekte Registrierung Wrapper liefert Garlic Beschreibung der Datenquelle in GDL (Garlic Data Language, Variante von ODMG-ODL) ‘globales Schema’ auf der Garlic-Ebene Garlic-Objekt: Schnittstelle mind. eine Implementierung (evtl. mehrere, höchstens eine pro Datenquelle) Identität: OID besteht aus IID (implementation identifier) key (identifiziert die Ausprägung innerhalb der Datenquelle) Root-Objekte (üblicherweise Kollektionen) dienen dem Einstieg und können auch über einen externen Namen angesprochen werden © Prof.Dr.-Ing. Stefan Deßloch 6 Middleware for Heterogenous and Distributed Information Systems WS04/05 3 Beispiel: Schema einer Reiseagentur Relational Repository Schema: Web Repository Schema: interface Country { attribute string name; attribute string airlines_served; attribute boolean visa_required; attribute Image scene} interface Hotel { attribute readonly string name; attribute readonly short class; attribute readonly double daily_rate; attribute readonly string location; attribute readonly string city} interface City { attribute string name; attribute long population; attribute boolean airport; attribute Country country; attribute Image scene} Image Server Repository Schema: © Prof.Dr.-Ing. Stefan Deßloch interface Image { attribute string file_name; double matches (in string file_name); void display (in string device_name)} 7 Middleware for Heterogenous and Distributed Information Systems WS04/05 Methodenaufruf Methodenaufrufe können durch die Garlic-Ausführungsmaschine bzw. durch eine Garlic-Applikation, die eine Referenz auf ein entsprechendes RepositoryObjekt erhalten hat, veranlasst werden Methoden implizit definierte Get/Set-Methoden (accessor methods) explizit definierte Methoden © Prof.Dr.-Ing. Stefan Deßloch 8 Middleware for Heterogenous and Distributed Information Systems WS04/05 4 Arten des Methodenaufrufs stub dispatch natürlicher Mechanismus für Repositories, deren Schnittstelle als Klassenbibliothek gegeben ist Beispiel: display (siehe oben) Wrapper stellt Routine zur Verfügung, die aus dem key-Feld der OID den Dateinamen des angesprochenen Bildes und aus den von Garlic übergebenen Parametern den Gerätenamen extrahiert; zur Wiedergabe wird dann die zugehörige Funktion der Klassenbibliothek aufgerufen; generischer Dispatch Wrapper bietet nur genau einen Methodeneinsprungpunkt schema-unabhängig Beispiel: relationaler Wrapper (siehe oben) nur accessor methods; jeder Aufruf wird in Anfrage umgesetzt; Methodenname → Attributname, IID → Relationenname, Werte → Zuweisung (Set); © Prof.Dr.-Ing. Stefan Deßloch 9 Middleware for Heterogenous and Distributed Information Systems WS04/05 Query Planning Grundlegende Idee Wrapper nehmen an der Erstellung des Query-Plans teil Allgemeiner Ablauf: Garlic-Optimierer identifiziert das größtmögliche, ein Repository betreffende QueryFragment und schickt es zum zugehörigen Wrapper Wrapper liefert einen oder mehrere Pläne zurück, die einen Teil der durch das Query-Fragment angesprochenen Arbeit bzw. die gesamte Arbeit ausführen können Garlic-Optimierer erstellt und beurteilt die möglichen Pläne zur Abarbeitung der gesamten Query; dabei versucht er, für die Teile, die ein Wrapper nicht übernehmen konnte, alternative Operatoren zu finden © Prof.Dr.-Ing. Stefan Deßloch 10 Middleware for Heterogenous and Distributed Information Systems WS04/05 5 Query Planning (Forts.) Wrapper stellt zu diesem Zweck folgende Methoden bereit, die durch work requests von Garlic angesprochen werden können: plan_access(): generiert single-collection access plans plan_join(): generiert multi-way join plans (Joins können in Anwenderanfragen vorkommen oder von Garlic zur Auflösung von Pfadausdrücken erzeugt werden) plan_bind(): generiert speziellen Plan, der als inner stream eines bind joins benutzt werden kann Ergebnis eines work requests: Menge von plans jeder plan beinhaltet eine Liste von Eigenschaften, die beschreiben, welche Teile des work requests durch den plan implementiert werden und zu welchen Kosten © Prof.Dr.-Ing. Stefan Deßloch Middleware for Heterogenous and Distributed Information Systems WS04/05 11 Single Collection Access Plan select H.name, H.city, H.daily_rate from Hotels H where H.class = 5 and H.location = ‘beach’ Garlic Optimizer Web Wrapper Access Plan for Hotels Work Request Project: H.OID, H.name, H.city, H.daily_rate, H.class, H.location Preds: Properties H.class = 5, H.location = ‘beach’ Project: H.OID, H.name, H.city, H.daily_rate, H.class, H.location Preds: H.class = 5 Cost: <access cost> Plan details (private) Web Wrapper Middleware for Heterogenous and © Prof.Dr.-Ing. Stefan Deßloch 12 Distributed Information Systems Hotel Guide Repository WS04/05 6 Join Plan select I.name from Countries C, Cities I where C.name = ‘Greece’ and I.population < 500 and I.country = C.OID Garlic Optimizer Work Request Input Plans Relational Wrapper Access Plan for Countries Relational Wrapper Join Plan for Countries and Cities Properties Project: C.OID, C.name Preds: C.name = ‘Greece’ Cost: <Countries access cost> Properties Project: C.OID, C.name, I.OID, I.name, I.population, I.country Preds: C.name = ‘Greece’ I.population < 500 I.country = C.OID Cost: <join cost> Plan details (private Relational Wrapper Access Plan for Cities Plan details (private) Properties Project: I.OID, I.name, I.population, I.country Preds: I.population < 500 Cost: <Cities access cost> Plan details (private) Relational Wrapper Join pred: I.country = C.OID Middleware for Heterogenous and © Prof.Dr.-Ing. Stefan Deßloch Bind Plan Relational DatabaseInformation Repository Distributed Systems - 13 WS04/05 select H.name, H.daily_rate from Hotels H, Countries C, Cities I where H.class = 5 and H.location = ‘beach’ and C.name = ‘Greece’ and I.population < 500 and H.city = I.name and I.country = C.OID Garlic Optimizer Work Request Relational Wrapper Bind Plan for Countries, Cities, and Hotels Input Plan Relational Wrapper Join Plan for Countries and Cities Properties Project: C.OID, C.name, I.OID, I.name, I.population, I.country Preds: C.name = ‘Greece’ I.population < 500 I.country = C.OID Cost: <join cost> Plan details (private) Properties Project: C.OID, C.name, I.OID, I.name, I.population, I.country Preds: C.name = ‘Greece’ I.population < 500 I.country = C.OID I.name = $BIND_1 Cost: <bind cost> Plan details (private) Bind pred: I.name = $BIND_1 Relational Wrapper Middleware for Heterogenous and © Prof.Dr.-Ing. Stefan Deßloch 14 Relational Database Repository Distributed Information Systems WS04/05 7 Synthese der Wrapper Plans Übersetzung muss unterstützt werden durch entsprechende Wrapper-Methoden Ausführung wird ebenfalls durch Wrapper unterstützt (Iterator-Methoden) PROJECT H.name, H.daily_rate BIND JOIN H.city > $BIND_1 FILTER H.location = ‘beach’ Relational Wrapper Bind Plan for Countries, Cities, and Hotels Web Wrapper Access Plan for Hotels Properties Project: H.OID, H.name, H.city, H.daily_rate, H.class, H.location Preds: H.class = 5 Cost: <access cost> Properties Project: C.OID, C.name, I.OID, I.name, I.population, I.country Preds: C.name = ‘Greece’ I.population < 500 I.country = C.OID I.name = $BIND_1 Cost: <bind cost> Plan details (private) Plan details (private) © Prof.Dr.-Ing. Stefan Deßloch 15 Middleware for Heterogenous and Distributed Information Systems WS04/05 Wrapper Packaging Wrapper-Programmierer stellt folgende Wrapper-Komponenten in einem Wrapper-Package zur Verfügung: Interface Files Environment Files Libraries (dynamisch ladbar) GDL-Definitionen Kodierung Repository-spezifischer Information Schema-Registrierung Methodenaufruf Anfrageschnittstellen © Prof.Dr.-Ing. Stefan Deßloch 16 Middleware for Heterogenous and Distributed Information Systems WS04/05 8 SQL/MED Part 9 von SQL:1999: Management of External Data zwei wesentliche Teile in SQL:2003 weiterentwickelt Datalinks Foreign Data Wrapper / Foreign Data Server Middleware for Heterogenous and Distributed Information Systems WS04/05 17 © Prof.Dr.-Ing. Stefan Deßloch Foreign Data Wrapper/Server Konzept basiert auf Garlic-Idee Modell SQL Client © Prof.Dr.-Ing. Stefan Deßloch SQL Server M E D 18 FDWa Foreign Server a FTa1 FDWb Foreign Server b FTb1 Foreign Server c FTc1 Middleware for Heterogenous and Distributed Information Systems WS04/05 9 Foreign-Data-Server verwaltet außerhalb der eigentlichen SQL-Umgebung liegende Daten SQL-Server und SQL-Client nutzen Foreign-Server-Descriptors (Katalogelemente), um mit dem Foreign-Server kommunizieren zu können Katalog (implementierungsspezifisch): Foreign-Table SQL-Schemata Foreign-Server-Deskriptors Foreign-Table-Descriptors Foreign-Wrapper-Descriptors tatsächlich im Foreign-Server (relational) liegende Tabelle oder durch WrapperFunktionalität dynamisch zu erzeugende Tabelle (Interaktions-)Modi Decomposition Analyse der SQL-Anfrage durch SQL-Server und Kommunikation mit dem Foreign-DataWrapper über InitRequest Pass-Through (siehe Beschreibung TransmitRequest) © Prof.Dr.-Ing. Stefan Deßloch Middleware for Heterogenous and Distributed Information Systems WS04/05 19 Foreign-Data-Wrapper-Interface Handle-Routinen Initialisierungsroutinen AllocDescriptor AllocWrapperEnv ConnectServer GetOps: Abfragen von Möglichkeiten des Foreign-DataWrappers/Servers, einer (Spalte einer) Foreign-Table InitRequest: Initiierung der Vorbereitung einer Anfrage © Prof.Dr.-Ing. Stefan Deßloch Zugriffsroutinen 20 Open Iterate: Übertragung von Tupeln ReOpen Close GetStatistics TransmitRequest: „Durchreichen“ einer Anfrage in der Sprache des Foreign-Data-Servers (PassThrough-Modus) Middleware for Heterogenous and Distributed Information Systems WS04/05 10 Sicherheit, Updates und Transaktionen User Mapping Definiert Abbildung einer User-ID des SQL-Servers auf ein entsprechendes Konzept des Foreign Server Beispiel: CREATE USER MAPPING FOR dessloch SERVER myforeignserver OPTIONS (user_id 'SD', user_pw 'secret') Updates, Transaktionen auf Externen Daten in SQL/MED nicht unterstützt als produktspezifische Erweiterungen in eingeschränkter Form verfügbar zukünftige Entwicklung üblicherweise Änderungen auf nicht-relationalen Datenquellen nicht möglich Änderungsoperationen auf relationalen Datenquellen verteilte TA sinnvoll, nur 1PC (read-only) für foreign data source pass-through transparent Middleware for Heterogenous and Distributed Information Systems WS04/05 21 © Prof.Dr.-Ing. Stefan Deßloch Microsoft OLE-DB Überblick Application OLE Service- Query Processor Provider DataProvider DB OLE OLE DB Spreadsheet DB ISAM OLE DB File System J.A. Blakeley: “Universal Data Access with OLE DB”, Proc. IEEE Compcon’97, San Jose, IEEE Computer Society Press, Feb. 1997 © Prof.Dr.-Ing. Stefan Deßloch 22 Middleware for Heterogenous and Distributed Information Systems WS04/05 11 Eigenschaften ein Data-Provider (einfacher Wrapper) kapselt den Zugriff auf Datenquelle und bietet als Abstraktion einen rowset als Strom von Datenwerten mit einem Iterator Daten, die mehrere Data-Provider in Tabellenform verfügbar machen, können durch einen Service-Provider zu einer heterogenen Sicht verknüpft werden (Union, Join, Agg. etc.); zum Erstellen eines Service-Providers bietet OLE DB spezielle Protokolle; die Middleware-Komponente ist hier wenig generisch neuere Versionen sollen komplexere Abstraktionen als flache Tabellen, z. B. objektorientierte und semistrukturierte Daten erlauben Unterschiede zu Garlic Garlic-Anfragefragmente sind in Object-SQL formuliert Garlic-Wrapper kann dynamisch seine Beiträge ermitteln Middleware for Heterogenous and Distributed Information Systems WS04/05 23 © Prof.Dr.-Ing. Stefan Deßloch Managing External Data: Datalinks Applications SQL API requests File API requests Datalinker Employee Table Ted Peter Abby John 1950 1961 1956 1948 Datalinks © Prof.Dr.-Ing. Stefan Deßloch 24 Middleware for Heterogenous and Distributed Information Systems WS04/05 12 DataLinks in SQL/MED Konzept ein Datalink ist eine Ausprägung des DATALINK-Datentyps ein Datalink referenziert eine Datei (URL), die nicht Teil der SQL-Umgebung ist, sondern durch einen externen File-Manager verwaltet wird Datalink Type Descriptor, Link-Control-Options: link control integrity control option read permission option write permission option recovery option unlink option (NO, FILE) (ALL, SELECTIVE, NONE) (FS, DB) (FS, ADMIN, BLOCKED) (NO, YES) (RESTORE, DELETE, NONE) Datalinker implementierungsabhängig Menge der Mechanismen, die für durch Datalinks repräsentierte Dateien Integritätskontrolle, Recovery und Zugriffskontrolle durchführen © Prof.Dr.-Ing. Stefan Deßloch 25 Middleware for Heterogenous and Distributed Information Systems WS04/05 Funktionen und Operationen Neue SQL-Funktionen für Datalinks Konstruktor: DLVALUE, ... (Komponenten von) URLs: DLURLCOMPLETE, SQL Operationen (Beispiele) Einfügen (“Link”) INSERT INTO Movies (Title, Minutes, Movie) VALUES (‘My Life’, 126, DLVALUE(‘http://my.server.de/movies/mylife.avi’)) Selektieren (inkl. URL access token) SELECT Title, DLURLCOMPLETE(Movie) FROM Movies WHERE Title LIKE ‘%Life%’ © Prof.Dr.-Ing. Stefan Deßloch 26 Middleware for Heterogenous and Distributed Information Systems WS04/05 13 Funktionen und Operationen (Forts.) SQL Operationen (Beispiele) “Unlink/Replace” UPDATE Movies SET Movie = DLVALUE(‘http://my.newserver.de/mylife.avi’) WHERE Title = ‘My Life’ RESTORE oder DELETE für “.../movies/mylife.avi” “Update-in-place” SELECT Title, DLURLCOMPLETEWRITE(Movie) INTO :t, :url ... Öffnen über URL, Modifizieren ... UPDATE Movies SET Movie = DLNEWCOPY(:url, 1) WHERE Title = :t © Prof.Dr.-Ing. Stefan Deßloch 27 Middleware for Heterogenous and Distributed Information Systems WS04/05 Link-Control-Options NO LINK CONTROL FILE LINK CONTROL referenzierte Dateien können nur über SQL gelöscht oder umbenannt werden INTEGRITY SELECTIVE existierende Datei muss referenziert werden Art der Kontrolle durch die weiteren Optionen bestimmt INTEGRITY ALL URL-Format des Datalinks keine weitere Kontrolle referenzierte Dateien können mittels File-Manager-Operationen gelöscht oder umbenannt werden, solange kein Datalinker vorhanden ist INTEGRITY NONE referenzierte Dateien können ausschließlich mittels File-Manager-Operationen gelöscht oder umbenannt werden nicht verträglich mit FILE LINK CONTROL © Prof.Dr.-Ing. Stefan Deßloch 28 Middleware for Heterogenous and Distributed Information Systems WS04/05 14 Link-Control-Options (Forts.) READ PERMISSION FS READ PERMISSION DB WRITE PERMISSION FS WRITE PERMISSION BLOCKED Leserecht für referenzierte Dateien wird durch den File-Manager bestimmt Leserecht für referenzierte Dateien wird über SQL bestimmt Schreibrecht für referenzierte Dateien wird durch den File-Manager bestimmt kein Schreibzugriff auf referenzierte Dateien, es sei denn, es existiert implementierungsabhängiger Mechanismus WRITE PERMISSION ADMIN [NOT] REQUIRING TOKEN FOR UPDATE Schreibrecht für referenzierte Dateien durch SQL bestimmt © Prof.Dr.-Ing. Stefan Deßloch 29 Middleware for Heterogenous and Distributed Information Systems WS04/05 Link-Control-Options (Forts.) RECOVERY YES mit SQL-Server koordinierte Recovery (Datalinker-Mechanismus) RECOVERY NO ON UNLINK RESTORE keine Recovery auf referenzierten Dateien vor der Herstellung des Links bestehende Rechte (Ownership, Permissions) werden durch den File-Manager bei Auflösung des Links (Unlink) wiederhergestellt ON UNLINK DELETE ON UNLINK NONE Löschung bei Unlink keine Auswirkungen auf die Rechte bei Unlink © Prof.Dr.-Ing. Stefan Deßloch 30 Middleware for Heterogenous and Distributed Information Systems WS04/05 15 Gültige Kombinationen Integrity Read permission Write permission Recovery Unlink ALL FS FS NO NONE ALL FS BLOCKED NO RESTORE ALL FS BLOCKED YES RESTORE ALL DB BLOCKED NO RESTORE ALL DB BLOCKED NO DELETE ALL DB BLOCKED YES RESTORE ALL DB BLOCKED YES DELETE ALL DB ADMIN NO RESTORE ALL DB ADMIN NO DELETE ALL DB ADMIN YES RESTORE ALL DB ADMIN YES DELETE SELECTIVE FS FS NO NONE Middleware for Heterogenous and Distributed Information Systems WS04/05 31 © Prof.Dr.-Ing. Stefan Deßloch Art der Anbindung über Foreign-Data-Wrapper allg. Möglichkeiten der Anbindung externer Daten 1 2 SQL 3 API Wrapper ext. Server ORDBMS ext. Objekt Einordnung von Foreign-Data-Wrapper/Server externe Objekte = Foreign-Tables/Values Manipulation der Daten: 1, 2 Wrapper implementiert vom SQL-Server erwartete Routinen zur Delegation von Anfrage(teile)n an externen Server © Prof.Dr.-Ing. Stefan Deßloch 32 Middleware for Heterogenous and Distributed Information Systems WS04/05 16 Art der Anbindung mittels Datalinks allg. Möglichkeiten der Anbindung externer Daten Einordnung von Datalinks: 1 externes Objekt = referenzierte Datei 1: Manipulation von URLs (Datalink-Werte), ‚Beschaffung‘ von Berechtigungen (Token) 3: „überladene“ BSZugriffe 2 SQL 3 API ext. Server Rechte- und Integritätskontrolle durch ORDBVS „Einklinken“ von Recoveryund Backup-Mechanismen implementierungsabhängig und durch Standard nicht geregelt © Prof.Dr.-Ing. Stefan Deßloch ORDBMS 33 ext. Objekt Middleware for Heterogenous and Distributed Information Systems WS04/05 Zusammenfassung Wrapper als Mediator zwischen Datenquelle und Middleware Beispiel: Garlic (IBM) nahezu jede Art von Datenquelle integrierbar globale Anfrageoptimierung SQL/MED Part 9 des SQL:1999-Standards folgt der Garlic-Idee Foreign-Data-Wrapper/Server Vorteile Bewältigung der Heterogenität (bzgl. DM, API) Verteilungstransparenz Middleware (Garlic) und Wrapper entscheiden dynamisch, welche Teile der Anfrageverarbeitung durch Wrapper übernommen werden kann, wie diese ausgeführt werden (Planalternativen) spezifische Möglichkeiten der Datenquellen können genutzt werden globales Schema, Anfrage kann mehrere, verteilte Datenquellen überspannen Einschränkungen Überwindung von struktureller und semantischer Heterogenität noch notwendig Änderungsoperationen auf externen Datenquellen nicht standardisiert © Prof.Dr.-Ing. Stefan Deßloch 34 Middleware for Heterogenous and Distributed Information Systems WS04/05 17