Datenbank und Informationssysteme Inhaltsverzeichnis 1 Programmierung von Datenbankzugriffen 3 1.1 Architektur des SQL/CLI am Beispiel JDBC................... 4 1.2 Anfragen und Ergebnismengen in JDBC...................... 6 1.3 Metainformationen und adaptives Programmieren................. 6 1.4 Architektur von ADO.NET............................. 6 1.5 Speicherresidente Datenbankstrukturen mit ADO.NET.............. 6 1.6 Objekt-Relationales Mapping am Beispiel Hibernate............... 6 2 Transaktionen und Nebenläufigkeitskontrolle 6 2.1 Eigenschaften und Verwendung von Transaktionen................ 6 2.2 Serialisierbarkeit und Nebenläufigkeitskontrolle.................. 6 2.3 Isolationslevel in SQL-Datenbanksystemen..................... 6 2.4 Strategien der Nebenläufigkeitskontrolle...................... 6 3 Verteilte Datenbanken 6 3.1 Architektur verteilter Datenbanken......................... 6 3.2 Datenspeicherung in verteilten Datenbanken.................... 6 3.3 Verteilte Anfragen.................................. 6 3.4 Änderung verteilter Daten und Replikation.................... 6 3.5 Verteilte Transaktionen............................... 6 4 Datenbanksicherheit und Autorisierung 6 4.1 Autorisierung und Zugriffskontrolle......................... 7 4.2 Techniken zum Recovery............................... 7 5 Datenanalyse zur Entscheidungsfindung 7 5.1 Data-Warehouses................................... 7 5.2 Data-Mining...................................... 7 1
6 Neue Datenbanktechnologien 7 6.1 XML und Datenbanken............................... 7 6.2 Temporale Datenbanken............................... 7 6.3 Geografische Datenbanken.............................. 7 6.4 Logik-basierte Datenbanken............................. 7 _.tex,v,1.1,october 19, 2006 at 11:30:11 CET Seite 2
1 Programmierung von Datenbankzugriffen Situation: Frontend Anwendung *S SQL DB-Server Backend *C myprog Ergebnismengen DBMS Daten *R Beispiel 1.1 Die Grundstruktur des Datenbankzugriffs mit JDBC besteht in sechs Schritten. 1 import java. s q l. ; Listing 1: JDBC-Abfrage.tex,v,1.1,October 19, 2006 at 11:30:11 CET 3 public class BasicJDBC { 5 public s t a t i c void main ( S t r i n g [ ] a r g s ){ Connection con = null ; 7 Statement stmt = null ; R e s ultset r s = null ; 9 try{ 11 / Schritt 1: Treiber r e g i s t r i e r e n / Class. forname ( " sun. jdbc. odbc. JdbcOdbcDriver " ) ; 13 / Schritt 2: Connection zur Datenbank herstellen / 15 con = DriverManager. getconnection ( " jdbc : odbc : azamon", " d i s ", " " ) ; 17 / Schritt 3: Satement erzeugen / 19 stmt = con. createstatement ( ) ; 21 / Schritt 4: Anweisung direkt ausfuehren / r s = stmt. executequery ( " s e l e c t author, t i t l e from Books" ) ; 23 / Schritt 5: Ergebnis verwenden / 25 while ( r s. next ( ) ){ System. out. p r i n t l n ( r s. g e t S t r i n g ( " author " ) + " " 27 + r s. g e t S t r i n g ( " t i t l e " ) ) ; 29 catch ( Exception e ) { Seite 3
31 33 f i n a l l y { try{ 35 / Schritt 6: Nicht mehr benoetigte Resourcen freigeben / i f ( r s!= null ) r s. c l o s e ( ) ; 37 i f ( stmt!= null ) stmt. c l o s e ( ) ; i f ( con!= null ) con. c l o s e ( ) ; 39 catch ( Exception 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: s t r i n g i s b i n = new s t r i n g ( " 3 458... " ) ;... 2 #s q l {SELECT author, t i t l e INTO: author : t i t l e FROM Books WHERE i s b n =: i s b n _.tex,v,1.1,october 19, 2006 at 11:30:11 CET Statisches SQL Erstellen des Zugriffsplan des DBMS zur Compilierzeit. Dynamisches SQL Erstellen des Zugriffsplans des DBMS zur Ausführungszeit. CLI: Call Level Interface Beispiel: ODBC, JDBC, ADO.NET C/C++ Java C# sind Implementierungen von SQL/CLI = Teil des SQL-Standards. Seite 4
Java-Anwendung SQL DBMS-unabhängig java.sql.* JDBC (Treibermanager) JDBC- Treiber Oracle JDBC- Treiber mysql JDBC- Treiber DBMS-spezifisch Ergebnismengen DB- Server Oracle DB- Server mysql DB- Server 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 _.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 Rest folgt am WE Methode 1: DriverManager.getConnection(url,uid,pwd) Seite 5
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 _.tex,v,1.1,october 19, 2006 at 11:30:11 CET 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 x Seite 6
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 _.tex,v,1.1,october 19, 2006 at 11:30:11 CET Seite 7