8. Datenbanken im Internet Begriffe Uniform Resource Locator

Werbung
8. Datenbanken im Internet
Begriffe und Techniken
Anwendungsszenarien
Kopplungstechniken
Zustandsrealisierung
Applikationsserver
VL Datenmanagement – 8–1
Begriffe
Hypertext-Dokumente (HTML) mit Verweisen (Links)
auf andere Objekte (Dokumente, Multimedia-Objekte)
Von Web-Servern bereitgestellt
Links: durch URL spezifiziert
Web-Datei: einzelne Datei (mit einem HTTP-Request)
Web-Seite: Menge von Web-Dateien (eine
Nutzeraktion)
Web-Site: Menge von Web-Seiten (ein Server)
VL Datenmanagement – 8–2
Uniform Resource Locator
Adresse einer Ressource im Web
Format: <schema>:<schema spezifikation>
<schema> Protokoll (http, news, mailto, telnet)
Für HTTP
Vollständig:
http://<host >.<domain>:<port >/<path>/<filename>
Relativ: <path>/<filename>
Verweis in Dokument:
. . . <path>/<filename>#<anchor >
Funktionsaufruf:
. . . <path>/<procname>?<params>
VL Datenmanagement – 8–3
HTTP
Einfaches Protokoll zum Datenaustausch auf Basis
von TCP/IP
Zustandsloses Protokoll: jede Anforderung ist
unabhängig von allen anderen
Methoden/Kommandos:
GET: Holen einer Web-Seite
HEAD: Holen der Header-Informationen
POST: Senden von Daten (Bytestrom) zum Server
VL Datenmanagement – 8–4
HTTP: Beispiel
Anforderung an www.mitp.de:
GET /index.html HTTP/1.0
Antwort:
HTTP/1.1 200 OK
Server: Microsoft-IIS/4.0
Date: Fri, 02 Feb 2001 07:51:09 GMT
Content-Type: text/html
Accept-Ranges: bytes
Last-Modified: Thu, 01 Feb 2001 15:33:35 GMT
ETag: "4034757648cc01:441e"
Content-Length: 31516
<html>
<head>
...
VL Datenmanagement – 8–5
MIME
Multipurpose Internet Mail Extensions
Spezifikation von Inhaltstypen von Emails,
Web-Dokumenten
Form <typ>/<subtyp>
Wird als Antwort auf ein HTTP-GET vor dem
Dokument geliefert (Content-Type)
Typen: text, image, audio, video, application
Bsp.:
text/html, image/gif, application/postscript
VL Datenmanagement – 8–6
HTML
Hypertext Markup Language (Tim Berners-Lee,
CERN 1990)
Auszeichnungssprache des Web
erfordert Browser zur Präsentationn
strukturelle Bestandteile eines Dokumentes
(Absätze, Überschriften, Listen usw.)
Hypertext-Sprache: Verweise auf andere
Dokumente, die vom Benutzer verfolgt werden
können
Weitere Elemente
Interaktive Elemente (Formulare)
Multimedia-Inhalte
VL Datenmanagement – 8–7
Interaktion mit HTML
Formular:
Gruppe von Eingabemöglichkeiten
Zurücksenden von Informationen an Web-Server
erfordert
interaktive Elemente (Textfelder, Schalter, ...)
serverseitigen Mechanismus zur Verarbeitung
Kommunikation zwischen Browser und Server
(HTTP)
Schnittstelle zwischen Server und
Verarbeitungsmechanismus (CGI)
VL Datenmanagement – 8–8
HTML: Formulare
<form method=POST
action="http://www.air-fun.de/cgi-bin/lookup">
Produkt: <input type="text"
name="prodname"><br>
Preis: <input type="text"
name="prodpreis"><br>
<input type="submit">
<input type="reset">
</form>
VL Datenmanagement – 8–9
Anwendungsszenarien
Web-Dienst als Informationssystem: Sammlung von
statischen Web-Seiten
Web-Dienst als Verteilungsmechanismus für
Anwendungsfunktionen: Java-Applets
Web-Dienst mit Schnittstelle zum Datenbanksystem:
Generierung von Web-Seiten aus DB-Inhalten
Web-Seiten im Datenbanksystem: LOBs bzw. eigene
Datentypen für Speicherung von Seiten im DBS
Komplette Web-Strukturen im Datenbanksystemen:
Speicherung von Web-Strukturen (inkl. Links)
VL Datenmanagement – 8–10
Web-Dienst mit Schnittstelle zum DBS
WWW-Browser
Internet / HTTP
WWW-Server
HTML
HTML
HTML
CGI
CGI
select-from-where
select-from-where
DBMS
VL Datenmanagement – 8–11
Web-Seiten im DBS
WWW-Browser
Internet / HTTP
WWW-Server
DBMS
HTML
HTML
VL Datenmanagement – 8–12
Komplette Web-Strukturen im DBS
WWW-Browser
Internet / HTTP
WWW-Server
ODBMS
+
VL Datenmanagement – 8–13
Aufgaben und Anforderungen
Aufruf „externer“ Programme mit
Datenbankoperationen
Parameterübergabe Client → Server →
DB-Programm
dynamische Generierung von Web-Dokumenten mit
Ergebnissen von DB-Operationen
Realisierung von Zuständen (Sitzungen,
Transaktionen)
VL Datenmanagement – 8–14
Common Gateway Interface (CGI)
CGI: ursprüngliche Schnittstelle zwischen Web-Server
und Programm zur Anbindung externer Quellen
Gateway:
Umformung einer Informationsquelle in ein
Web-Dokument
Programm/Skript zur Bearbeitung einer
Dokumentenanforderung, das
• HTML-Text, eine URL oder andere Daten liefert
• in beliebiger Sprache implementiert ist
VL Datenmanagement – 8–15
CGI: Prinzip
(1) Anfrage
Web-Browser
Web-Server
(5) HTML
(4) HTML
(2) CGI
(3)
CGI-Programm
VL Datenmanagement – 8–16
Parameterübergabe
Übergabe von Parametern an CGI-Programme durch
Browser
z.B. Inhalte von Formularelementen
Methoden
GET: durch Anhängen an URL
• für wenige Parameter geeignet
(Längenbegrenzung)
• kann direkt mit URL angegeben werden
• Parameter für Nutzer sichtbar
POST: über Standardeingabe des
CGI-Programms
• für Nutzer nicht sichtbar
• Parameter nicht Teil der URL
VL Datenmanagement – 8–17
GET-Methode
Parameteraufbau
Trennung von URL durch ?
Trennzeichen &
Ersetzung von Leerzeichen durch + Umlaute
durch Escape-Notation %hexwert
Beispiel:
Parameter:
feld1: "Eins"
feld2: "Zwei Drei"
URL:
http://host/cgi-prog?feld1=Eins&feld2=Zwei+Drei
VL Datenmanagement – 8–18
POST-Methode
Parameteraufbau wie bei GET-Methode
Übergabe als Standardeingabe
unbegrenzte Länge
geeignet für große Datenmengen
Beispiel (Eingabedatei):
feld1=Eins&feld2=Zwei+Drei
VL Datenmanagement – 8–19
Kommunikation
CGI-Programm → Web-Server
Erzeugung eines HTML-Dokumentes und Senden zur
Standardausgabe
HTML-Dokument muß Content Type enthalten
Aufbau:
Content-Type: text/html
Leerzeile !!!!
<html> ... </html>
Umlenkung durch Senden einer neuen URL
Location: URL
Leerzeile !!!!
VL Datenmanagement – 8–20
Kommunikation /2
Web-Server → CGI-Programm
Umgebungsvariablen, die vor Ausführung des
Programms vom Server initialisiert werden
Variable
Bedeutung + Beispiel
REQUEST_METHOD
REQUEST_HOST
REMOTE_USER
QUERY_STRING
CONTENT_LENGTH
CONTENT_TYPE
Request-Methode: GET
Host des Browsers: 141.44.45.32
Benutzername (nur bei Authentisierung)
Anfrageparameter: p1=12&p2=abc
Länge der Anfrageparameter: 20
Format
der
Anfrageparameter:
application/x-www-form-urlencoded
VL Datenmanagement – 8–21
CGI: Beispiel
Bourne-Shell-Programm
#!/bin/sh
echo "Content-Type: text/html"
echo ""
echo "<html><body>Zugriff um = "
date
echo " von: "
echo $REMOTE_HOST
echo " mit Parametern: "
echo $QUERY_STRING
echo "</body></html>"
VL Datenmanagement – 8–22
Weiterentwicklungen
Probleme des CGI
Performance: jeder Aufruf = Start eines neuen
Prozesses
Aufbau einer neuen DB-Verbindung
Programm läuft unter UID des Web-Servers
FastCGI
„persistente“ Prozesse
Interprozeßkommunikation zwischen Server und
FastCGI-Prozeß
Server-Erweiterungen
Erweiterung als Programmbibliothek, die zum
Server dynamisch gebunden wird (NSAPI, ISAPI)
VL Datenmanagement – 8–23
Java Servlets
Servlet = Java-Objekt, das im Kontext eines
Web-Servers abläuft
Alternative zu CGI
verarbeitet Dokumentanforderungen
liefert Dokumente als Ergebnis
Unterstützung von
Cookies
Session-Management
Ablauf
direkt im Server (Java-WebServer)
in separatem Prozeß (Servlet-Engines)
VL Datenmanagement – 8–24
Java Servlets: Schnittstelle
interface javax.servlet.Servlet
void init (ServletConfig config)
Initialisierung des Servlets (z.B. Öffnen benötigter
Dateien, Öffnen einer Datenbank-Verbindung, . . . )
void destroy ()
Aufräumarbeiten (z.B. DB-Verbindung schließen,
Daten speichern)
void service (ServletRequest req,
ServletResponse res)
Bearbeitung der Anfrage (Parameterabfrage,
Ergebnisgenerierung)
VL Datenmanagement – 8–25
Beispiel-Servlet
public class HelloServlet
extends javax.servlet.GenericServlet {
// Bearbeitung der Anforderung
public void service (ServletRequest req,
ServletResponse res)
throws ServletException, IOException {
// MIME-Typ des Antwortdokuments
res.setContentType ("text/html");
// Ausgabestrom
ServletOutputStream out =
res.getOutputStream ();
out.println ("Hello World !");
}
}
VL Datenmanagement – 8–26
Einbettung
Einbettung von Kommandos (z.B.
Datenbankoperationen) in HTML-Dokument
Skriptsprachen wie Perl, Visual Basic, PHP, ...
Kennzeichnung durch spezielle Tags (z.B. <%
. . . %>)
Verarbeitung
Parsen des Dokumentes vor Auslieferung
Intepretieren der Kommandos in Tags
Ersetzen durch Ergebnis der Ausführung
VL Datenmanagement – 8–27
Einbettung: Prinzip
<html>
<body>
<?
query_db ()
?>
</body>
</html>
SkriptInterpreter
<html>
<body>
<table>
<tr> ... </tr>
</table>
</body>
</html>
VL Datenmanagement – 8–28
Einbettung mit PHP
PHP: Skriptsprache für server-seitige Einbettung in
HTML
Features
C-ähnliche Syntax, objektorientierte Konzepte
einfache Verarbeitung von Dokumentanforderung
dynamische Generierung von HTML-Dokumenten
Schnittstellen zu vielen Systemfunktionen und
DBMS
Prinzip
<html><body>
<?php echo "Hello World !" ?>
</body></html>
VL Datenmanagement – 8–29
Einbettung mit PHP
Einbindung externer Dateien (z.B. HTML-Vorlagen)
require ’dateiname’ Einfügen des Inhaltes
include ’dateiname’ Einfügen und Auswerten
Verarbeitung von Formularen
Auswertung der Umgebungsvariablen durch
PHP-Interpreter
Zugriff auf Werte der Felder: Variablen mit
Elementnamen
Beispiel:
HTML: <input type="text" name="var" >
PHP: $var
VL Datenmanagement – 8–30
PHP-Beispiel: Formular
<form method=POST action="/path/query.php3">
<input type="text" name="autor">
<input type="submit">
</form>
VL Datenmanagement – 8–31
PHP-Beispiel: PHP-Skript
<html><body>
<table border=1>
<tr><th>Autor</th><th>Titel</th><th>Preis</th></tr>
<?php if (isset($author)) {
$query = "SELECT autor, titel, preis FROM " .
"buch WHERE autor like=’%$author%’";
mysql_connect ($host, $user, $passwd);
mysql_select_db ("my_db");
$result = mysql_query ($query);
while ($row = mysql_fetch_row ($result)) {
echo "<tr><td>$row[0]</td><td>$row[1]</td>";
echo "<td>$row[2]</td></tr>";
}
}?>
</table></body></html>
VL Datenmanagement – 8–32
Java Server Pages
Java-Quelltext in HTML
Integration von Java-Komponenten (Beans) Prinzip
basierend auf Servlets
Compilieren des eingebetteten Codes: →
Generierung eines Servlet
bei wiederholter Anforderung: → Nutzung des
compilierten Servlets
Vorteil: Performance
VL Datenmanagement – 8–33
Java Server Pages
Zugriff auf
vollständigen Java-Sprachumfang
implizite Objekte (Requests, Sessions)
Server-Page
Übersetzungseinheit: HTML + Scriptlets
(eingebetteter Java-Code) + eingebundene
Dateien (über include-Direktive)
Markierung in HTML-Seite <% ...%>
VL Datenmanagement – 8–34
JSP: Syntax
Include-Direktiven
<%@ include file="relativeURL" %>
Deklarationen (Variablen, Methoden)
<%! String printMessage (String s) {
return "ERROR: " + s; } %>
<%! int var = 0; %>
Expressions (Ausdrücke): Einfügen von Werten
<%= output %>
<%= Math.sqrt (2) %>
VL Datenmanagement – 8–35
Makroprogrammierung
HTML-Schablone
<html>
<body>
<table>
<tr> ... </tr>
</table>
</body>
</html>
<html>
<body>
<% Makro %>
</body>
</html>
Makro
SELECT *
FROM tabelle
MakroProzessor
VL Datenmanagement – 8–36
Internet Database Connector (IDC)
Einfache Erweiterung für MS Internet Information
Server auf Basis von ODBC
stark eingeschränkte Skriptsprache
kaum Anwendungslogik implementierbar
wenig Kontrolle über Ausgabe
einfach anwendbar
Prinzip
idc-Datei mit DB-Operationen
htx-Datei mit HTML-Templates
VL Datenmanagement – 8–37
IDC: Aufbau der idc-Datei
beinhaltet
ODBC-Datenquelle (Datasource)
Verweis auf HTML-Template (Template)
Anfragen (SQLStatement)
SQLStatement mit Anfrageparametern (Wert
eines Formularelementes)
SQLStatement:
+ SELECT autor, titel, preis
+ FROM buch
+ WHERE autor=<%autor%>;
VL Datenmanagement – 8–38
IDC: Aufbau der htx-Datei
Vorlage für HTML-Seiten mit Anfrageergebnissen
bestehend aus
Kopf-, Fußbereich (unabhängig vom Ergebnis)
Detailbereich (in Abhängigkeit vom Ergebnis:
Wiederholung für jedes Ergebnistupel)
• Kennzeichnung des Detailbereiches
<%begindetail%> <%enddetail%>
• Kennzeichnung der Ergebnisdaten
<%attribut%>
VL Datenmanagement – 8–39
IDC: Aufbau der htx-Datei
Beispiel:
<table border=1>
<tr><th>Autor</th><th>Titel</th>
<th>Preis</th></tr>
<%begindetail%>
<tr><td><%autor%></td>
<td><%titel%></td>
<td><%preis%></td>
</tr>
<%enddetail%>
</table>
VL Datenmanagement – 8–40
IDC: Kontrollstrukturen
Unterstützung bedingter Ausführung durch
if...else...endif
spezielle Tags:
<%if bedingung %> HTML
[ <%else%> HTML ] <%endif%>
Bedingungen mit
Operatoren EQ, LT, GT, CONTAINS
Variablen: Ergebnisdaten, Servervariablen,
spezielle Variablen (CurrentRecord, MaxRecords)
VL Datenmanagement – 8–41
IDC: Aufruf
Aufruf der IDC-Skripte wie CGI-Programme als URL
im ACTION-Attribut eines Formulars
<form method=post action="/shop/query.idc">
...
<input type="text" name="autor">
<input type="submit>
</form>
VL Datenmanagement – 8–42
Vergleich und Bewertung
Programmierschnittstellen
Vorteile
Performance
Codegröße
Optimierbarkeit für konkrete Anforderungen
Nachteile
unflexibel (u.U. Neuübersetzung bei Änderungen)
Aufwand:
• neues Programm für jedes Problem
• Generierung von HTML
Performance bei CGI
VL Datenmanagement – 8–43
Vergleich und Bewertung
Einbettung
Vorteile
Lesbarkeit durch Plazierung von
SQL-Anweisungen an die spätere Position der
Daten
Erstellung und Wartung mit HTML-Wekzeugen
möglich
eine gemeinsame Datei
Nachteile
bei größeren Projekten unübersichtlich durch
Mischung von HTML und SQL
Performanceprobleme durch Parsen und
Interpretieren von eingebetteten Anweisungen
VL Datenmanagement – 8–44
Vergleich und Bewertung
Makroprogrammierung
Vorteile
Bearbeitung von HTML-Dateien mit
HTML-Werkzeugen möglich
übersichtliche Spezifikation aller SQL-Anfragen
Wiederverwendbarkeit von Anfragen und
HTML-Templates
schnelleres Parsen durch kleinere Dateien
Nachteile
schlechte Überschaubarkeit durch Verteilung auf
mehrere Dateien
mehrere Dateizugriffe notwendig
VL Datenmanagement – 8–45
Realisierung von Zuständen
Problem: Zustandslosigkeit von HTTP
im Normalfall: Anforderung =
1. Aufbau der DB-Verbindung
2. Ausführung der Anfrage
3. Abbruch der Verbindung
keine Sitzung mit mehreren Verarbeitungsschritten
möglich (Transaktionskonzept)
potentiell paralleler Zugriff vieler Nutzer
VL Datenmanagement – 8–46
Realisierung von Zuständen
Aufgabe: server-seitige „Speicherung“ des Kontextes
(Zustandes) des Clients → Session-ID
Verfahren:
URL-Kodierung
Formularvariable
Cookies
HTTP-Authentisierung
notwendig: Timeout-Mechanismen für Sitzungsende
und Freigabe belegter Ressourcen
VL Datenmanagement – 8–47
URL-Kodierung
Übergabe der Session-ID als Teil der URL
explizite Kodierung als Parameter (GET-Request)
Beispiel:
http://bookshop.com/buy?session=42
server-seitige Behandlung wie Formularvariable
Kodierung in Pfad
Beispiel: http://bookshop.com/42/daten.html
bei relativer Adressierung kein weiterer Aufwand zur
Generierung
Vorteil: Browser-unabhängig
Problem: Initialisierung
VL Datenmanagement – 8–48
Formularvariable
Speichern der Session-ID in einem (versteckten)
Formularelement
<input type="hidden" name="session"
value="42">
Übergabe des Wertes mit HTTP-Request
Sitzungsmanagement
Auslesen des Feldwertes
Erzeugen eines neuen Feldes mit aktuellem Wert
für Folgeseiten
Vorteil: Browser-unabhängig
Probleme: Im HTML-Quelltext sichtbar, dynamische
Generierung der Folgeseiten notwendig
VL Datenmanagement – 8–49
Herunterladen