Teil I - Webarchiv ETHZ / Webarchive ETH

Werbung
Teil I:
Existierende Infrastruktur heterogener und
verteilter Informationssysteme
1.
2.
3.
4.
5.
6.
Infrastruktur durch erweiterte Datenbankfunktionalität (“TP-Lite”)
Middleware-Infrastruktur durch TP-Monitore (“TP-Heavy”)
Standards zur verteilten Objektverwaltung: CORBA, DCOM
Object Transaction-Monitore
Enterprise JavaBeans
Message-Oriented Middleware
Objektverwaltung höherer Ordnung (OHO) – SS 2001
Kapitel 1.1: Vorlesung TP-Lite – 1
Kap. 1: Infrastruktur durch erweiterte
Datenbankfunktionalität (“TP-Lite”)
1.1 Traditionelle, zweistufige Architektur (“Two-tier”)
G Klassifikation von Datenbankservern
G Architekturvarianten: Aufgabenteilung
Client
zwischen Client und Server
•
•
Fat Clients
– Embedded SQL (statisch und dynamisch)
– SQL Call-Level-Interfaces
Fat Server
– Stored Procedures, Trigger, UDTs
Objektverwaltung höherer Ordnung (OHO) – SS 2001
…
Client
DBMS
DB
DB-Server
Kapitel 1.1: Vorlesung TP-Lite – 2
Klassifikation von Datenbank-Servern
DB-Server
Monolithisch
Multiple Server
ein DBS-Prozess
mehrere DBS-Prozesse
Symmetrisch
Asymmetrisch
pro Anwendungsprozess ein
DBS-Prozess
dynamische
Zuordnung von
Anwendungsprozesse zu
DBS-Prozessen
Objektverwaltung höherer Ordnung (OHO) – SS 2001
Kapitel 1.1: Vorlesung TP-Lite – 3
Monolithischer Server
G
G
G
Genau ein Server-Prozess für viele Clients
•
•
Server verwendet mehrere Threads (Reentrant Code)
Führt eigene Ressourcenverwaltung durch
Einfache Kommunikation im Server durch Shared Memory
•
Synchronisierter Zugriff auf Systempuffer und zentrale Systemtabellen
Monolithische Architektur z.B. bei Sybase oder MS SQL Server zu finden
AP
AP
Client … Client
1
i
CL
CL
AP
Client
n
…
DBMS
Server
CL
Betriebssystem 1
Betriebssystem m
Netzwerk
Objektverwaltung höherer Ordnung (OHO) – SS 2001
Kapitel 1.1: Vorlesung TP-Lite – 4
Multiple Server: Symmetrische Konfiguration
G
G
G
DBMS ist ein Verbund von verschiedenen Prozessen
Jedem Client ist genau ein Server Prozess zugeordnet
• Statische Zuordnung, feste Anzahl n Server vorgeneriert
➜ Maximaler Parallelitätsgrad ist n
Zu finden bei Oracle im Dedicated Server-Mode, bei Informix und DB2
AP
Client
1
CL
AP
… Client
i
CL
AP
Client
n
…
DBMS … DBMS … DBMS
Server
Server
Server
n
i
1
CL
Betriebssystem 1
Betriebssystem m
Netzwerk
Objektverwaltung höherer Ordnung (OHO) – SS 2001
Kapitel 1.1: Vorlesung TP-Lite – 5
Multiple Server: Asymmetrische Konfiguration
G
G
Ein Client wird mit Hilfe des Dispatchers mit einem freien Server-Prozess
verbunden
• Feste Anzahl Server ist vorgeneriert
• Der Parallelitätsgrad kann jedoch höher sein
(da mehrere Clients sich einen Server-Prozess teilen können)
Zu finden bei Oracle im Multi-Threaded-Server-Mode
CL
AP
… Client
i
CL
AP
Client
n
CL
Betriebssystem 1
Dispatcher
AP
Client
1
DBMS … DBMS
Server
Server
1
k
Betriebssystem m
Netzwerk
Objektverwaltung höherer Ordnung (OHO) – SS 2001
Kapitel 1.1: Vorlesung TP-Lite – 6
Two-Tier-Architektur
G
G
Client und Server sind völlig getrennt
Kommunikation zwischen Client und Server
•
G
Via Netzwerk oder IPC mit gemeinsamen Protokoll
(z.B. JDBC, Oracle Net8)
(Klare) Aufgabenteilung zwischen Client und Server
•
•
•
Präsentation
Datenverwaltung
Anwendungsfunktionalität
➜ Client
➜ Server
➜ ???
Server
Client
DB
Server
DB Client
Library
Betriebssystem
DB Server
Library
Betriebssystem
Client
Netzwerk, IPC
Objektverwaltung höherer Ordnung (OHO) – SS 2001
Kapitel 1.1: Vorlesung TP-Lite – 7
Two-Tier-Architektur: Realisierung
G
G
G
Aufgabenteilung: Anwendungsfunktionalität
im Client oder Server?
• Fat Client / Thin Server
• Thin Client / Fat Server
Was soll der Client machen?
• Präsentation
• Anwendungsfunktionalität (ESQL/CLI)
Was sind die Aufgaben des Servers?
• Datenverwaltung
• Anwendungsfunktionalität (Stored Procedures, Trigger, etc.)
Data
Presentation
Access
Functionality
Client
Objektverwaltung höherer Ordnung (OHO) – SS 2001
Data
Management
Server
Kapitel 1.1: Vorlesung TP-Lite – 8
Anwendungsentwicklung —
Fat Client / Thin Server
Embedded SQL
Anwendung
Call-Level SQL
Anwendung
SQL
Client
CLI Calls
Präcompiler
CLI-API (Application
Program Interface)
PräcompilerRuntime Library
Call Level Interface
Runtime Library
DBMS-Treiber
SQL-FAP (Format and Protocols),
herstellerdefiniert, z.B. Net8 von Oracle
DBMS
DB
Objektverwaltung höherer Ordnung (OHO) – SS 2001
Server
Kapitel 1.1: Vorlesung TP-Lite – 9
Embedded SQL (ESQL)
G
G
Nach ISO SQL-92 definierte Einbettung von SQL in Programmiersprachen
•
•
G
Bei Wechsel der Datenbank müssen ESQL-Programme nur neu kompiliert
und gelinkt werden
Statisches ESQL
•
•
G
z.B. Java (SQLJ), C, C++, Fortran, Pascal, Cobol, PL/1, Ada
Präcompiler ersetzt die SQL-Aufrufe in Calls der jeweiligen Runtime
Library des verwendeten Datenbank-Servers
Alle SQL-Statements müssen bereits zur Compile-Zeit vollständig bekannt
sein
Daher müssen auch alle verwendeten Datenbankobjekte zur Compile-Zeit
vorhanden sein
Dynamisches ESQL
•
•
SQL-Statements werden erst zur Laufzeit erzeugt (dynamisches Generieren
von Strings, die SQL-Anweisungen beinhalten)
Die verwendeten Datenbankobjekte müssen daher zur Compile-Zeit noch
nicht existieren
Objektverwaltung höherer Ordnung (OHO) – SS 2001
Kapitel 1.1: Vorlesung TP-Lite – 10
Embedded SQL – statisch
ESQL/CQuellProgramm
(SQL-Anweisungen
bekannt)
ESQL/C
Präcompiler
C-QuellProgramm
mit SQL
Anweisungen
und ESQL/C
Aufrufen
G
Beispiel:
credit (int accountno) {
EXEC SQL BEGIN DECLARE SECTION;
NUMBER
acc_no;
NUMBER
bal;
EXEC SQL END DECLARE SECTION; G
acc_no := accountno;
EXEC SQL SELECT a.balance
INTO :bal
FROM account a
WHERE a.account_number =
G
:acc_no;
}
CPräprozessor
Compiler
und Linker
Ausführbares
Programm
Zur Compilezeit führt der Präcompiler u.a.
folgende Prüfungen durch (mit Hilfe von
Informationen aus dem Datenbank-Katalog):
•
•
Existenz von Tabellen und Attributen
Syntaxprüfung, Typenprüfung
Zusätzliche Ersetzungen:
•
•
Die datenbankspezifischen Datentypen (Host
Variables) werden durch Datentypen der
jeweiligen Programmierumgebung ersetzt
Beispiel (ESQL/C): VARCHAR2(10) wird zu
struct { unsigned short len;
unsigned char arr[10]; }
Ansatz ist recht unflexibel (da alle SQLStatements zur Compile-Zeit bekannt sein
müssen), jedoch: wenige Laufzeitfehler!
Objektverwaltung höherer Ordnung (OHO) – SS 2001
Kapitel 1.1: Vorlesung TP-Lite – 11
Embedded SQL – dynamisch
ESQL/CQuellProgramm
(SQL-Anweisungen noch
nicht bekannt)
ESQL/C
Präcompiler
C-QuellProgramm
mit SQL
Anweisungen
und ESQL/C
Aufrufen
Beispiel:
credit( int amount, int accountno,
char *table) {
char dyn_stmt[120];
sprintf(dyn_stmt,
"UPDATE %s SET balance = balance +
:a WHERE account_number = :ano“,
table);
EXEC SQL PREPARE sql_stmt FROM
:dyn_stmt;
EXEC SQL EXECUTE sql_stmt USING
:amount, :accountno;
G
CPräprozessor
Compiler
und Linker
Ausführbares
Programm
Das SQL Statement ist erst
zur Laufzeit bekannt
•
•
•
Der Precompiler kann
weniger Überprüfungen
durchführen
Mehr Flexibilität
Aber auch mehr
Laufzeitfehler möglich!
}
Objektverwaltung höherer Ordnung (OHO) – SS 2001
Kapitel 1.1: Vorlesung TP-Lite – 12
SQL Call-Level Interface (CLI)
G
Standardisierte Schnittstelle zur Kommunikation mit Datenbanken ohne
Präcompiler
•
G
SQL/CLI: Standard seit 1996
•
•
G
G
CLI-API erlaubt das Erstellen und Ausführen von SQL-Anweisungen zur
Laufzeit
Ursprung in Aktivitäten der SQL Access Group (SAG) mit dem Ziel, einen
vereinheitlichten Zugriff auf Datenbanken bereitzustellen
Ist auch Bestandteil von SQL3
SQL/CLI beinhaltet
•
•
•
•
•
DB-Verbindungsaufnahme und Beendigung
Vorbereitung und Ausführen von SQL-Anweisungen (“prepare” und “execute”)
Binden von Parametern an SQL-Anweisungen (“bind”)
Entgegennahme von Resultaten
Festlegung von Datentypen (über spezielle Codes für jeden Datentyp)
CLI-Call wird durch den proprietären DBMS-Treiber umgesetzt in
herstellerspezifischen DB-Zugriff
•
Mit geeignetem Treiber kann prinzipiell jede Datenquelle angesprochen werden
Objektverwaltung höherer Ordnung (OHO) – SS 2001
Kapitel 1.1: Vorlesung TP-Lite – 13
CLI-Dialekte
G
Neben standardisiertem SQL/CLI haben sich noch weitere
Dialekte herausgebildet (war das ursprüngliche Ziel der SAG nicht
die Definition einer einheitlichen Schnittstelle?)
•
•
G
ODBC (Open Database Connectivity): Microsofts CLI-Variante
– Beinhaltet die meisten (nicht alle) API-Calls des CLI-Standards
– Zusätzlich: spezielle Calls zur Unterstützung von MicrosoftProgrammen (Access, Excel, etc.)
Proprietäre CLIs der DB-Hersteller (“Native API”)
– z.B. Oracle Call Interface (OCI)
In der Regel werden mehrere CLI-Dialekte parallel unterstützt
ODBC-API
SQL/CLI-API
Native API
Call Level InterfaceRuntime Library
DBMS-Treiber
Objektverwaltung höherer Ordnung (OHO) – SS 2001
Kapitel 1.1: Vorlesung TP-Lite – 14
Call Level Interface: SQL99 CLI
#include "sqlcli.h"
extern SQLHDBC hdbc;
extern SQLHENV henv;
/* Verbindung steht schon */
/* Umgebung */
void credit ( SQLHSTMT hstmt,
int amount, int accountno , char *table) {
/* hstmt wird von aussen gegeben, damit Transaktionskontrolle ausserhalb
dieser Prozedur. "credit" ist Baustein */
char update[120];
SQLINTEGER NameParamLength1;
SQLINTEGER NameParamLength2;
sprintf(update, "UPDATE %s SET balance = balance + ? WHERE account_number
= ? ", table);
SQLPrepare(hstmt, update, SQL_NTS);
SQLBindParameter(hstmt, 1, SQL_PARAM_MODE_IN, SQLCHAR, SQL_CHAR,
NAME_LENGTH, 0 &amount, NAME_LENGTH, &NameParamLength1);
SQLBindParameter(hstmt, 2, SQL_PARAM_MODE_IN, SQLCHAR, SQL_CHAR,
NAME_LENGTH, 0 &accountno, NAME_LENGTH, &NameParamLength2);
SQLExecute(hstmt);
}
Objektverwaltung höherer Ordnung (OHO) – SS 2001
Kapitel 1.1: Vorlesung TP-Lite – 15
Call Level Interface: Oracle-Dialekt (OCI)
#include “oci.h”
extern static OCIEnv *envhp;
void credit (OCIStmt *stmthp,
int amount, int accountno , char *table) {
char update[120];
static OCIBind *bnd1p = (OCIBind *) 0;
sprintf(update, “UPDATE %s SET balance = balance + :a
WHERE account_number = :ano “, table);
OCIStmtPrepare(stmthp, errhp, update, (ub4) strlen((char *update), (ub4)
OCI_NTV_SYNTAX, (ub4) OCI_DEFAULT));
OCIBindByName(stmthp, &bnd1p, errhp, (char *) ":A", -1,
(dvoid *) &amount, (sword) sizeof(accountid), SQLT_INT,
(dvoid *)0, (ub2 *)0, (ub2 *)0, (ub4)0, (ub4 *)0,OCI_DEFAULT);
OCIBindByName(stmthp, &bnd1p, errhp, (char *) ":ANO", -1, (dvoid *)
&accountno, (sword) sizeof(accountid), SQLT_INT, (dvoid *) 0,
(ub2 *) 0, (ub2 *) 0, (ub4) 0, (ub4 *) 0, OCI_DEFAULT);
OCIStmtExecute(svchp, stmthp, errhp, (ub4) 1, (ub4) 0, (CONST OCISnapshot
*) NULL, (OCISnapshot *) NULL, OCI_DEFAULT);
}
Objektverwaltung höherer Ordnung (OHO) – SS 2001
Kapitel 1.1: Vorlesung TP-Lite – 16
Object CLI
G
G
Weiterentwicklung von CLI zu Objektschnittstellen
(SQL/CLI kennt nur prozedurale APIs)
•
•
JDBC (Java Database Connection)
ActiveX Data Objects (ADO)
Java-Anwendung
Unterstützung von JDBC
•
•
Entweder “direkt” durch Native-API
Oder Umweg über JDBC-ODBC-Bridge
JDBC-API
JDBC-Treiber-Manager
JDBC-ODBCBridge
SQL/CLI-API
JDBC-Native
Treiber
ODBC-API
Native API
Call Level InterfaceRuntime Library
DBMS-Treiber
Objektverwaltung höherer Ordnung (OHO) – SS 2001
Kapitel 1.1: Vorlesung TP-Lite – 17
Zusammenfassung der Fat Client-Konzepte
G
G
G
G
Jeder Anwender programmiert seine Anwendungen selbst
(alle entwickeln ähnliche Bausteine)
Alternative: Anwender benutzen vorgegebene Funktions-Bausteine
Bausteine ändern sich (Systemwechsel oder Firmenpolitik)
Folge: alle Anwender müssen ihre Programmierung ändern bzw.
Module aus gemeinsamer Bibliothek holen.
Alternative hierzu:
•
•
Funktions-Bausteine in der Datenbank ablegen
Alle Clients können dann darauf zugreifen
➜ Anwendungsentwicklung innerhalb der Datenbank, z.B. durch
Stored Procedures („TP-Lite“)
•
•
Anwendungen in der DB ausführen …
… und auch dort ablegen
Objektverwaltung höherer Ordnung (OHO) – SS 2001
Kapitel 1.1: Vorlesung TP-Lite – 18
Anwendungsentwicklung —
Thin Client / Fat Server
Client
ProzedurAufruf
SQLFAP
Rückgabewerte
DBMS
Stored
Procedure
Trigger
UDT
Objektverwaltung höherer Ordnung (OHO) – SS 2001
Server
Kapitel 1.1: Vorlesung TP-Lite – 19
Fat Server
Anwendungslogik innerhalb der Datenbank
G Stored Procedures (TP-Lite)
•
•
•
G
G
Verwendung einer 4GL (forth generation language)
– Turing-vollständiges SQL
Speicherung und Ausführung in DB
Standard unter SQL3 als “SQL/PSM” (= Persistent Stored Module)
– Kommerzielle DBMS verwenden jedoch proprietäre Dialekte, z.B.
Ø PL/SQL in Oracle (siehe Workshop & praktische Übung)
Ø TransactSQL in Sybase und MS SQL Server
Trigger (ereignisgesteuerte Funktionen/Prozeduren)
Benutzerdefinierte Datentypen (User Defined Types, UDTs)
• Bestandteil von SQL-99
Objektverwaltung höherer Ordnung (OHO) – SS 2001
Kapitel 1.1: Vorlesung TP-Lite – 20
Stored Procedures
“Stored Procedure”
Internal
Procedure
External
Function
Procedure
Function
CREATE PROCEDURE credit (amount NUMBER, accountno INTEGER) IS
BEGIN
UPDATE account SET balance = balance + amount
WHERE account_number = accountno;
Oracle PL/SQL
END debit;
CREATE LIBRARY C_utils AS '/DLLs/utils.so'; Einbindung von C-Funktionen
in Oracle
CREATE FUNCTION debit (amount NUMBER, accountno INT) RETURN INT
AS LANGUAGE C LIBRARY C_utils NAME „debit_func";
Objektverwaltung höherer Ordnung (OHO) – SS 2001
Kapitel 1.1: Vorlesung TP-Lite – 21
Trigger
G
Spezifizieren wann (Event) und unter welchen Bedingungen
(Condition) eine Stored Procedure aufgerufen wird (Action)
• CREATE
TRIGGER my_trigger
AFTER UPDATE ON employees
WHEN (new.salary > 100000)
BEGIN
UPDATE admin SET number_of_managers =
number_of_managers + 1
WHERE dept = new.dept;
END
G
Event
Condition
Action
(Stored
Procedure)
Werden automatisch vom Datenbanksystem aktiviert („gefeuert“)
nach dem Einfügen, Ändern bzw. Löschen von Tupeln
•
•
Ausführung der Stored Procedure kann wiederum neue Trigger
starten („Trigger-Feuerwerk“) …
… die dann alle innerhalb einer Transaktion ausgeführt werden
Objektverwaltung höherer Ordnung (OHO) – SS 2001
Kapitel 1.1: Vorlesung TP-Lite – 22
Benutzerdefinierte Datentypen
G Benutzerdefinierte Typen besitzen Verhalten, das
durch Methoden implementiert werden kann
•
•
Methodenimplementierung in DB-eigner 4GL
Teil der Typdefinition
CREATE METHOD interest()
RETURNS
INTEGER
FOR AccountType
BEGIN
DECLARE
old_balance INTEGER;
old_balance = SELF.balance;
SET SELF.balance = old_balance * 1.03;
RETURN SELF.balance;
END;
Objektverwaltung höherer Ordnung (OHO) – SS 2001
Kapitel 1.1: Vorlesung TP-Lite – 23
Zusammenfassung: Fat Server vs. Fat Client
G
Fat Client-Architekturen
•
Traditioneller Ansatz in der zweistufigen Client/Server-Welt
+ Ausnutzen der Datenunabhängigkeit, die vom DB-Server
bereitgestellt wird
+ Standardisierte Schnittstellen
+ Gute Unterstützung eigener, individueller Anwendungen
+ Anwendungen lassen sich recht schnell entwickeln (z.B. mit Hilfe
grafischer Entwicklungswerkzeuge)
– Problem der Wartung, Software-Verteilung, etc. (Upgrades von
Anwendungen, die von vielen Clients verwendet werden, sind recht
aufwändig)
G
Fat Server-Architekturen
+ Einfachere Wartbarkeit
+ Weniger Netzwerkbelastung (durch stärkeren Abstraktionsgrad der
bereitgestellten Prozeduren)
– Schlechte Unterstützung für individuelle, personalisierte Anwendungen
Objektverwaltung höherer Ordnung (OHO) – SS 2001
Kapitel 1.1: Vorlesung TP-Lite – 24
Herunterladen