30
Prof. Dr. T. Kudraß 1 Datenbanken im Web

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

Embed Size (px)

Citation preview

Page 1: 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

Prof. Dr. T. Kudraß 1

Datenbanken im Web

Page 2: 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

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

Page 3: 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

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

Page 4: 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

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>

Page 5: 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

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.)

Page 6: 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

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

Page 7: 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

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

Page 8: 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

Prof. Dr. T. Kudraß 8

Beispiel: Schema einer B2B Anwendung

Page 9: 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

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

Page 10: 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

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

Page 11: 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

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)

Page 12: 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

Prof. Dr. T. Kudraß 12

3- und 4-Schichtenarchitekturen

Page 13: 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

Prof. Dr. T. Kudraß 13

Anbindungstechnologien

Clientseitige vs. Serverseitige Anbindung einer Datenbank

Page 14: 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

Prof. Dr. T. Kudraß 14

Serverseitige Anbindung: Externe Programme

Page 15: 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

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)

Page 16: 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

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

Page 17: 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

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>

Page 18: 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

Prof. Dr. T. Kudraß 18

Verarbeitung einer PHP-Seite

Page 19: 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

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>

Page 20: 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

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

Page 21: 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

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)

Page 22: 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

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");

Page 23: 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

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();

Page 24: 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

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");

Page 25: 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

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

Page 26: 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

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

Page 27: 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

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)

Page 28: 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

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

Page 29: 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

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

Page 30: 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

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