Datenbank und Informationssysteme Inhaltsverzeichnis 1 Programmierung von Datenbankzugriffen 1.1 Architektur des SQL/CLI am Beispiel JDBC . . . . . 1.2 Anfragen und Ergebnismengen in JDBC . . . . . . . . 1.3 Metainformationen und adaptives Programmieren . . . 1.4 Architektur von ADO.NET . . . . . . . . . . . . . . . 1.5 Speicherresidente Datenbankstrukturen mit ADO.NET 1.6 Objekt-Relationales Mapping am Beispiel Hibernate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 4 6 6 6 6 6 2 Transaktionen und Nebenläufigkeitskontrolle 2.1 Eigenschaften und Verwendung von Transaktionen 2.2 Serialisierbarkeit und Nebenläufigkeitskontrolle . . 2.3 Isolationslevel in SQL-Datenbanksystemen . . . . . 2.4 Strategien der Nebenläufigkeitskontrolle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 6 6 6 6 . . . . . 6 6 6 6 6 6 4 Datenbanksicherheit und Autorisierung 4.1 Autorisierung und Zugriffskontrolle . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Techniken zum Recovery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 7 7 5 Datenanalyse zur Entscheidungsfindung 5.1 Data-Warehouses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Data-Mining . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 7 7 3 Verteilte Datenbanken 3.1 Architektur verteilter Datenbanken . . . . . 3.2 Datenspeicherung in verteilten Datenbanken 3.3 Verteilte Anfragen . . . . . . . . . . . . . . 3.4 Änderung verteilter Daten und Replikation 3.5 Verteilte Transaktionen . . . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Rami Swailem FH Gießen-Friedberg 6 Neue Datenbanktechnologien 6.1 XML und Datenbanken . . 6.2 Temporale Datenbanken . . 6.3 Geografische Datenbanken . 6.4 Logik-basierte Datenbanken DB2_Mitschrift.tex,v,1.1,October 19, 2006 at 11:30:11 CET WS 06/07 DB2 Mitschrift . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 7 7 7 7 Seite 2 Rami Swailem FH Gießen-Friedberg DB2 Mitschrift 1 Programmierung von Datenbankzugriffen Situation: *S Backend Frontend Anwendung DB-Server SQL myProg *C Ergebnismengen DBMS Daten *R Beispiel 1.1 Die Grundstruktur des Datenbankzugriffs mit JDBC besteht in sechs Schritten. Listing 1: JDBC-Abfrage 1 import j a v a . s q l . ∗ ; 3 public c l a s s BasicJDBC { 5 7 public s t a t i c void main ( S t r i n g [ ] a r g s ) { Connection con = null ; Statement stmt = null ; R e s u l t S e t r s = null ; 9 try { 11 /∗∗ S c h r i t t 1 : Treiber r e g i s t r i e r e n ∗/ C l a s s . forName ( " sun . j d b c . odbc . JdbcOdbcDriver " ) ; 13 /∗∗ S c h r i t t 2 : Connection zur Datenbank h e r s t e l l e n ∗/ 15 con = DriverManager . g e t C o n n e c t i o n ( " j d b c : odbc : azamon" , " d i s " , " ∗∗∗∗∗ " ) ; 17 DB2Mitschrift.tex,v,1.1,October 19, 2006 at 11:30:11 CET /∗∗ S c h r i t t 3 : Satement erzeugen ∗/ 19 stmt = con . c r e a t e S t a t e m e n t ( ) ; 21 /∗∗ S c h r i t t 4 : Anweisung d i r e k t ausfuehren ∗/ r s = stmt . executeQuery ( " s e l e c t author , t i t l e from Books " ) ; 23 /∗∗ S c h r i t t 5 : Ergebnis verwenden ∗/ 25 27 while ( r s . next ( ) ) { System . out . p r i n t l n ( r s . g e t S t r i n g ( " a u t h o r " ) + " " + rs . getString (" t i t l e ") ); } 29 } catch ( E x c e p t i o n e ) { WS 06/07 Seite 3 Rami Swailem FH Gießen-Friedberg DB2 Mitschrift 31 } finally { try { 33 35 /∗∗ S c h r i t t 6 : Nicht mehr benoetigte Resourcen f r e i g e b e n ∗/ 37 i f ( r s != null ) r s . c l o s e ( ) ; i f ( stmt != null ) stmt . c l o s e ( ) ; i f ( con != null ) con . c l o s e ( ) ; 39 } catch ( E x c e p t i o n e ) { } 41 } 43 } 45 } Rest folgt · · · 1.1 Architektur des SQL/CLI am Beispiel JDBC Zwei grundlegende Techniken des Zugriffs: 1. SLI: Statement Level Interface (embedded/eingebettetes SQL) 2. CLI: Call LevelInterface SLI am Beispiel SQLJ Prinzip: 2 s t r i n g i s b i n = new s t r i n g ( " 3 − 4 5 8 . . . " ) ; . . . #s q l {SELECT author , t i t l e INTO : a u t h o r : t i t l e FROM Books WHERE i s b n =: i s b n } Statisches SQL Erstellen des Zugriffsplan des DBMS zur Compilierzeit. Dynamisches SQL Erstellen des Zugriffsplans des DBMS zur Ausführungszeit. DB2_Mitschrift.tex,v,1.1,October 19, 2006 at 11:30:11 CET CLI: Call Level Interface Beispiel: ODBC , C/C++ JDBC , Java ADO.NET C# sind Implementierungen von SQL/CLI = Teil des SQL-Standards. WS 06/07 Seite 4 Rami Swailem FH Gießen-Friedberg DB2 Mitschrift Java-Anwendung SQL java.sql.* Ergebnismengen DBMS-unabhängig JDBC (Treibermanager) JDBCTreiber Oracle JDBCTreiber mySQL JDBCTreiber DB2 DBMS-spezifisch DBServer DBServer DBServer Oracle mySQL DB2 4 Arten von JDBC-Treibern: Typ 1: JDBC-ODBC-Bridge (sun.jdbc.odbc.JdbcOdbcDriver) Typ 2: Native API-Treiber Typ 3: JDBC-Net-Treiber Typ 4: Nativer Protokoll-Treiber Treibermanager • Registrieren und Laden von Treibern • Herstellen der Verbindung zur DB • Konfiguration der Verbindung • Delegation an JDBC-Treiber 1. Registrieren und Laden von Treibern DB2_Mitschrift.tex,v,1.1,October 19, 2006 at 11:30:11 CET Methode 1: Explizites Laden der Treiberklasse: Class.forName(org.postgres.Driver) Methode 2: properties-Datei: jdbc.drivers=org.postgres.Driver,· · · Methode 3: Systemeigenschaft (Parameter beim Aufruf): java-D jdbc.drivers=· · · MyClass Methode 4: (neu in JDBC 4.0) automatisches Laden bei getConnection 2. Herstellen der Verbindung zur Datenbank Methode 1: DriverManager.getConnection(url,uid,pwd) Rest folgt am WE WS 06/07 Seite 5 Rami Swailem FH Gießen-Friedberg DB2 Mitschrift 1.2 Anfragen und Ergebnismengen in JDBC 1.3 Metainformationen und adaptives Programmieren 1.4 Architektur von ADO.NET 1.5 Speicherresidente Datenbankstrukturen mit ADO.NET 1.6 Objekt-Relationales Mapping am Beispiel Hibernate 2 Transaktionen und Nebenläufigkeitskontrolle 2.1 Eigenschaften und Verwendung von Transaktionen 2.2 Serialisierbarkeit und Nebenläufigkeitskontrolle 2.3 Isolationslevel in SQL-Datenbanksystemen 2.4 Strategien der Nebenläufigkeitskontrolle 3 Verteilte Datenbanken 3.1 Architektur verteilter Datenbanken 3.2 Datenspeicherung in verteilten Datenbanken 3.3 Verteilte Anfragen 3.4 Änderung verteilter Daten und Replikation 3.5 Verteilte Transaktionen 4 Datenbanksicherheit und Autorisierung DB2_Mitschrift.tex,v,1.1,October 19, 2006 at 11:30:11 CET x WS 06/07 Seite 6 Rami Swailem FH Gießen-Friedberg DB2 Mitschrift 4.1 Autorisierung und Zugriffskontrolle 4.2 Techniken zum Recovery 5 Datenanalyse zur Entscheidungsfindung 5.1 Data-Warehouses 5.2 Data-Mining 6 Neue Datenbanktechnologien 6.1 XML und Datenbanken 6.2 Temporale Datenbanken 6.3 Geografische Datenbanken 6.4 Logik-basierte Datenbanken DB2_Mitschrift.tex,v,1.1,October 19, 2006 at 11:30:11 CET WS 06/07 Seite 7