Post on 06-Apr-2016
Prof. Dr. T. Kudraß 1
Datenbanken im Web
Prof. Dr. T. Kudraß 2
Überblick: Datenbanken im Web
•Historische Entwicklung des Web•Anwendungen für Datenbanken im Web•Architekturen von Web-Datenbanksystemen•Technologien
– Oracle: Oracle Web Application Server, PL/SQL, APEX– PHP– Java / JDBC
•Aktueller Trend: Datenbanken im Web 2.0– Motivation: Grenzen relationaler Systeme – Überblick NoSQL– Beispiel: CouchDB
Prof. Dr. T. Kudraß 3
Historie des WWW
•Grundlage Internet– Entwickelt Ende der 60er Jahre vom US-Militär (ARPA-Net)– Technische Basis: TCP/IP-Protokoll
•WWW– 1990 Projekt World Wide Web am CERN Genf entwickelt (Berners-
Lee) zur Verbesserung der internen Informationsdarstellung– Idee: Verknüpfung von HTML-Dokumenten und Integration
bisheriger Internet-Dienste über einheitliche Adressen (URL, Uniform Recource Locator) unter einer gemeinsamen Oberfläche, dem Web Browser
•HTML – Hypertext Markup Language– Text ist mit Sprachkommandos versehen, eingeschlossen in Start
Tag und End Tag
Prof. Dr. T. Kudraß 4
HTML Beispiel
<HTML><BODY>Fiction:<UL><LI>Author: Milan Kundera</LI? <LI>Title: Identity</LI> <LI>Published: 1998</LI></UL>Science:<UL><LI>Author: Richard Feynman</LI> <LI>Title: The Character of Physical Law</LI> <LI>Hardcover</LI></UL></BODY></HTML>
Prof. Dr. T. Kudraß 5
Bereitstellung von Daten durch das Web
•Nicht nur statische Informationen darstellen!•Nutzung des Common Gateway Interface (CGI)
– Aufruf von Programmen auf einem Web-Server mittels HTTP, die dynamisch HTML-Seiten generieren und an den Web-Browser zurückliefern
•Einführung von Java (1995; SUN Microsystems)– Implementierung von Java Applets: können von einem Web-Server geladen
und im Browser ausgeführt werden (plattformunabhängiger Bytecode)– Einbindung von Java Applets in HTML-Seiten– Grundlage vieler web-basierter Anwendungen
•Einführung von XML als Erweiterung von HTML– Flexible Publikation von Inhalten– Datenaustausch
•NoSQL-Datenbanken als Grundlage vieler Applikationen in Social Networks (Facebook, Twitter & Co.)
Prof. Dr. T. Kudraß 6
Typen von Web-DB-Anwendungen•Gästebücher / Foren / Blogs•Nachschlagewerke
– Wörterbücher (dict.leo.org)– Telefonbücher– Lexika– Wikipedia / DBpedia
•Online-Tracking– Verfolgung von Paketen oder anderen Versandstücken (UPS, DHL)
•Suchmaschinen– Indexierung der Seiteninhalte für Suche
•Soziale Netzwerke– Beispiele: XING, Facebook, Twitter– Benutzer sind konsumieren und produzieren Informationen
Prof. Dr. T. Kudraß 7
Typen von Web-DB-Anwendungen (Forts.)•Online-News
– Nachrichtenseiten (evtl. kostenpflichtig)– Börseninformationen
•Online-Banking– Anbindung der Backend-Systeme ans Internet– Hohe Sicherheitsanforderungen
•Bestellkataloge/B2C– Amazon & Co.– Elektronischer Warenkorb (Session-ID)
•E-Commerce Anwendungen (B2B)– Geschäftsprozesse zwischen Firmen übers Internet– Aufbau von elektronischen Wertschöpfungsketten– Beispiele: elektronische Marktplätze, elektronische Angebotsverwaltung mit
standardisierten Formularen
Prof. Dr. T. Kudraß 8
Beispiel: Schema einer B2B Anwendung
Prof. Dr. T. Kudraß 9
Charakteristika von Web-DB-Anwendungen•Art des Zugriffs
– Zugriffe zum Lesen oder Schreiben oder gemischt•Änderungshäufigkeit / Aktualität der Daten
– Pufferung sinnvoll bei geringer Änderungshäufigkeit (z.B. bei Nachschlagewerken, aber nicht bei Börsenkursen)
•Zahl der gleichzeitigen Zugriffe– Möglicher Engpaß an Ressourcen– Hoher Durchsatz und kurze Antwortzeiten auch bei hoher
Last•Arten der Datentypen
– Alphanumerische Daten in HTML unterstützt– Andere Techniken für geometrische Daten
•Datensensitivität– Schutzmaßnahmen bei der Datenübertragung
(Verschlüsselung)– Beispiele: Kreditkarten-Nr., PIN beim Online-Banking
Prof. Dr. T. Kudraß 10
Charakteristika von Web-DB-Anwendungen (Forts.)
•Sicherheitsbedarf– Abschirmung des Backend-Systems von der Außenwelt
(z.B. bei Bank-Anwendungen)•Benutzerauthentisierung
– Anwendungen oft nur für ausgewählte Benutzer zugänglich (z.B. Nachrichtenarchiv, Geschäftsanwendungen)
•Benutzeridentifikation– Für die Personalisierung von Angeboten, aber weniger
strenge Sicherheitsanforderungen•Anzahl der Arbeitsschritte / Länge einer “Sitzung“
– Mehrschrittige Vorgänge benötigen Anwendungskontext (z.B. Füllen eines Warenkorbs) -> Realisierung eines Zustands im zustandslosen Web durch das Backend-System
•“Verweildauer“– Aufenthaltsdauer eines Benutzers auf einer Web-Seite
Prof. Dr. T. Kudraß 11
3-Schichten-Architektur•Aufteilung einer WebDB-Anwendung in verschiedene Schichten
•Präsentationsschicht– Visualisierung der Dokumente auf Anwenderseite– Keine Anwendungslogik zur Erstellung der Seiten (thin
client)– Client = Rechner mit Browser einschl. PlugIns
•Anwendungslogikschicht (Middleware)– Weiterleitung von Anfragen des Client an den
entsprechenden Dienst, Datenbankanfragen, Erstellung dynamischer Seiten und Zurücksendung an den Client
– Weitere Aufgaben: Verwaltung von Transaktionen Lastverteilung der Anfragen Sicherheitsaufgaben
•Datenhaltungsschicht– Speicherung der Daten + Datenzugriff– Typischerweise Datenbanksystem (auch Dateien
möglich)
Prof. Dr. T. Kudraß 12
3- und 4-Schichtenarchitekturen
Prof. Dr. T. Kudraß 13
Anbindungstechnologien
Clientseitige vs. Serverseitige Anbindung einer Datenbank
Prof. Dr. T. Kudraß 14
Serverseitige Anbindung: Externe Programme
Prof. Dr. T. Kudraß 15
Entwicklung von WebDB-Anwendungen mit Oracle
1. Weiterleiten der Anfrage vom Browser an den Modul mod_plsql
2. Verbindung zur Datenbank, Ausführung der gespeicherten Prozedur
3. Erzeugung einer HTML-Seite durch Prozedur
4. Zurücksenden des HTML-Dokuments an mod_plsql
5. Zurücksenden der HTML-Seiteals HTTP-Response zumanfragenden Client
• Basis: PL/SQL Packages zur Erzeugung von HTML (z.B. HTP)• Genutzt von Web-Werkzeugen wie z.B. Oracle Application
Express (APEX)
Prof. Dr. T. Kudraß 16
Entwicklung von WebDB-Anwendungen mit Oracle APEX
• Bestandteil der Oracle-Software• Völlig unabhängig vom Betriebssystem• Geeignet für Rapid Prototyping• Entwicklung, Administration und Nutzung der Anwendungen mittels Browser
Prof. Dr. T. Kudraß 17
PHP• PHP = Personal Homepage Tools (war ursprünglich eine
Sammlung von Tools und Makros)• entwickelt von Rasmus Lerdorf 1994, Open Source
Produkt•serverseitige, in HTML eingebettete Script-Sprache
(Ausführung auf dem Webserver)• plattformunabhängig• unterstützt umfangreiche Menge von Oracle-Funktionen
(erfordert Installation im Web-Server)• PHP-Seite als Script-Datei
– Extension .php – Verarbeitung durch PHP-Prozessor
• Einbettung von Skripteinschüben in spezielle Tags– <? echo “Hello world!“ ?>– <?php echo “Hello world!“; ?>– <script language=“php“>
echo “Hello world!“;</script>
Prof. Dr. T. Kudraß 18
Verarbeitung einer PHP-Seite
Prof. Dr. T. Kudraß 19
PHP Beispiel
<HTML><HEAD><TITLE>Testseite mit PHP</TITLE></HEAD><BODY><H1>Testseite mit PHP</H1><?php// Lesen des per HTTP-Post übertragenen Parameters aus Array$p_name = $_POST['p_name'];
if ($p_name) {// Namen ausgeben, wenn eingegeben.
print("Hallo $p_name.<p>");// Zugriff auf Umgebungsvariable
print("Client-IP-Adresse: ".$_SERVER['REMOTE_ADDR']);
}</script><FORM method="POST">Bitte Namen eingeben: <INPUT type="text" name="p_name" size="30"></FORM></BODY></HTML>
Prof. Dr. T. Kudraß 20
Java Database Connectivity (JDBC)•Motivation:
– Zugriff auf SQL-Datenbanken mit Java benötigt– Nachteil selbstgestrickter Java-Zugriffsmethoden
aufwendig fehlerbehaftet nicht einfach portierbar
– Überwindung des Mismatch zwischen Java (objektorientiert, ohne Pointer) SQL (mengenorientiert)
•Basiert auf Java: kann Objekte verwenden, um DB-Objekte und ihre Operationen direkt und natürlich darzustellen
– Beispiel: Objekt Connection mit einer Methode close()•Beziehung zu ODBC
– Wurde in Anlehnung an ODBC (Open Database Connectivity) entwickelt und mit einer ähnlichen Klassenbibliothek ausgestattet
Prof. Dr. T. Kudraß 21
JDBC Klassen und Interfaces
java.sql.DriverManager(class, class methods)
java.sql.Connection(interface)
java.sql.Connection(interface)
java.sql.Statement(interface)
java.sql.Statement(interface)
java.sql.Statement(interface)
java.sql.Resultset(interface)
java.sql.Resultset(interface)
java.sql.Driver(interface, drivers only)
Prof. Dr. T. Kudraß 22
JDBC Beispiel SELECT
// Create a connection and connectConnection conn;Statement stmt;ResultSet rs;int partID;float price;
conn = DriverManager.getConnection("jdbc:odbc:Sales", "myname", "mypassword");
// Create a statement and execute a SELECT statementstmt = conn.createStatement();rs = stmt.executeQuery ("SELECT PartID, Price FROM Parts");
Prof. Dr. T. Kudraß 23
JDBC Beispiel SELECT (Forts.)
// Fetch and print each rowwhile (rs.next()){ partID = rs.getInt(1); price = rs.getFloat(2); System.out.println("Part Number: " + partID + " Price: " + price);} // Close the result setrs.close();
// Close the statement and connectionstmt.close();conn.close();
Prof. Dr. T. Kudraß 24
JDBC Beispiel UPDATE
// Create a connection and connectConnection conn;Statement stmt;int rowCount;
conn = DriverManager.getConnection("jdbc:odbc:Sales", "myname", "mypassword");
conn.setAutoCommit(false);
// Create a statement and execute an UPDATE statementstmt = conn.createStatement();rowCount = stmt.executeUpdate ("UPDATE Parts SET Price = 10.0 WHERE PartID = 123");
Prof. Dr. T. Kudraß 25
Warum reichen SQL-Datenbanken nicht aus?Tabelle aus relationaler DB mit scheinbar gleichartiger Struktur der Datensätze (Beispiel Adressverwaltung)
•starre Satzstruktur zu wenig flexibel für unterschiedliche und beliebige Einträge zur Verwaltung von Kontakten
•viele, oft nicht benötigte, Attribute große Spaltenanzahl viele Nullwerte
•Beispiel: Geburtsdaten zumeist nur für Freunde abspeichern
Schmitz Hannes Köln Steinstr. 11 0221489090
Meier Hans München
Goldmann S. 0172123456
Schleicher Helga 16.09.1948
Kramer Nils Essen Aststr. 12 21.11.1988
Rust Sonja 034196385 0163654321
Prof. Dr. T. Kudraß 26
Warum reichen SQL-Datenbanken nicht aus?Datensätze mit unterschiedlicher Satzstruktur
Schmitz Hannes Köln Steinstr. 11 0221489090
Meier Hans MünchenGoldmann S. 017212345
6
Schleicher Helga 16.09.1948
Kramer Nils Essen Aststr. 12 21.11.1988Rust Sonja 03419638
50163654321
Prof. Dr. T. Kudraß 27
NoSQL• NoSQL = Not only SQL• Datenmodelle bilden Erweiterung zu Datenbanken mit
relationalem Datenmodell (not only)– Kombination mit SQL-Datenbanken, z.B. NoSQL zur
Datenarchivierung• nicht-relationale Datenmodelle
– Dokumentenorientiert– Key Value Stores– Graphenorientiert– Spaltenorientierte Datenbanken– andere Datenmodelle: objektorientiert, XML
• Schemafreiheit– zusätzliche Informationen in Datensätze enfügen– vermeidet das Problem der Schema-Evolution
• verteilte Speicherung • Nähe zum Web (Schnittstellen für Skriptsprachen)
Prof. Dr. T. Kudraß 28
Konsistenz in relationalen und NoSQL-DBS• Logischer Datenbankentwurf in relationalen DBS
– Normalisierung– Integritätssicherung: referentielle Integrität, semantische
Integrität– Transaktionskonzept: ACID-Paradigma
• Konsistenz bei NoSQL– Abschwächung in verteilten Datenbanken– Herstellung der Konsistenz nur zu verschiedenen
Zeitpunkten, also „letztendlich“ (eventual consistency)• Anwendungen im Web akzeptieren schwächere
Konsistenz– E-Commerce– Beispiel: Aktualisierung eines Produktkatalogs in verteilter
Datenbank – nicht als ACID-Transaktion notwendig
Prof. Dr. T. Kudraß 29
CouchDB als Beispiel einer NoSQL-DB•Historie
– Autor Damien Katz 2005– Weiterentwicklung bei IBM 2008-09– seit 2008 Apache-Projekt unter Apach 2.0 Lizenz
•Datenmodell – Speicherung der Daten in Dokumenten (vgl. Datensatz in RDB)– Reine Textinformationen oder Bilder, Video-/Audio-Dateien
• JSON– Inhalt eines Dokuments entspricht JSON-Objekt– JSON einfache Beschreibungssprache aus JavaScript-Welt– Beispiel:
{ Nachname: Meier, Vornamen: [Tobias, Eugen], Alter: 32, Telefon: {Handy: 017798765 , privat: 034154321 }}
Key/Value
ArrayListe
Prof. Dr. T. Kudraß 30
Eigenschaften von CouchDB• CouchDB API
– Zugriff über das RESTful JSON API: GET, PUT, DELETE, POST Requests des HTTP-Protokolls zur Erteilung von Verarbeitungsanweisungen
– Zugriff über Kommandozeilen-Tool cURL oder Futon-Browser als GUI
• JavaScript– Programmierung von Views unter Verwendung der MapReduce-
Technologie– Map- und Reduce-Funktionen in JavaScript als Design-
Dokumente im JSON-Format gespeichert– Bibliotheken und Clients für viele andere Sprachen (z.B. PHP,
Python) analog zu RDBMS• Erlang
– funktionale Programmiersprache zur Verarbeitung nebenläufiger und verteilter Prozesse
– genutzt zur Entwicklung von CouchDB• Datenreplikation und Multiversion Concurrency ControL