Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Datenbanken im Web 1.

Ähnliche Präsentationen


Präsentation zum Thema: "Datenbanken im Web 1."—  Präsentation transkript:

1 Datenbanken im Web 1

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

3 Historie des WWW Grundlage Internet WWW HTML
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

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>

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

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

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

8 Beispiel: Schema einer B2B Anwendung

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

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

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)

12 3- und 4-Schichtenarchitekturen

13 Anbindungstechnologien
Clientseitige vs. Serverseitige Anbindung einer Datenbank

14 Serverseitige Anbindung: Externe Programme

15 Entwicklung von WebDB-Anwendungen mit Oracle
Basis: PL/SQL Packages zur Erzeugung von HTML (z.B. HTP) Genutzt von Web-Werkzeugen wie z.B. Oracle Application Express (APEX) Weiterleiten der Anfrage vom Browser an den Modul mod_plsql Verbindung zur Datenbank, Ausführung der gespeicherten Prozedur Erzeugung einer HTML-Seite durch Prozedur Zurücksenden des HTML- Dokuments an mod_plsql Zurücksenden der HTML-Seite als HTTP-Response zum anfragenden Client

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

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> ", "width": "800" }

18 Verarbeitung einer PHP-Seite

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>

Bitte Namen eingeben:
", "width": "800" }

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

21 JDBC Klassen und Interfaces
java.sql.DriverManager (class, class methods) java.sql.Driver (interface, drivers only) 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)

22 JDBC Beispiel SELECT // Create a connection and connect
Connection conn; Statement stmt; ResultSet rs; int partID; float price; conn = DriverManager.getConnection("jdbc:odbc:Sales", "myname", "mypassword"); // Create a statement and execute a SELECT statement stmt = conn.createStatement(); rs = stmt.executeQuery ("SELECT PartID, Price FROM Parts");

23 JDBC Beispiel SELECT (Forts.)
// Fetch and print each row while (rs.next()) { partID = rs.getInt(1); price = rs.getFloat(2); System.out.println("Part Number: " + partID + " Price: " + price); } // Close the result set rs.close(); // Close the statement and connection stmt.close(); conn.close();

24 JDBC Beispiel UPDATE // Create a connection and connect
Connection conn; Statement stmt; int rowCount; conn = DriverManager.getConnection("jdbc:odbc:Sales", "myname", "mypassword"); conn.setAutoCommit(false); // Create a statement and execute an UPDATE statement stmt = conn.createStatement(); rowCount = stmt.executeUpdate ("UPDATE Parts SET Price = 10.0 WHERE PartID = 123");

25 Warum reichen SQL-Datenbanken nicht aus?
Tabelle aus relationaler DB mit scheinbar gleichartiger Struktur der Datensätze (Beispiel Adressverwaltung) Schmitz Hannes Köln Steinstr. 11 Meier Hans München Goldmann S. Schleicher Helga Kramer Nils Essen Aststr. 12 Rust Sonja 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

26 Warum reichen SQL-Datenbanken nicht aus?
Datensätze mit unterschiedlicher Satzstruktur Schmitz Hannes Köln Steinstr. 11 Meier Hans München Goldmann S. Schleicher Helga Kramer Nils Essen Aststr. 12 Rust Sonja

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)

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

29 CouchDB als Beispiel einer NoSQL-DB
Historie Autor Damien Katz 2005 Weiterentwicklung bei IBM 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: Key/Value { Nachname: Meier, Vornamen: [Tobias, Eugen], Alter: 32, Telefon: {Handy:   , privat:   } } Array Liste

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


Herunterladen ppt "Datenbanken im Web 1."

Ähnliche Präsentationen


Google-Anzeigen