Übung: data warehousing und data miningwandelt/dwdm/intro.pdf · •...
TRANSCRIPT
![Page 2: Übung: Data Warehousing und Data Miningwandelt/DWDM/Intro.pdf · • Oracle-eigeneProgrammiersprache mit enger Integration in SQL Sämtliche prozeduralen Konzepte sind verfügbar:](https://reader030.vdocuments.net/reader030/viewer/2022041201/5d4c0ac588c993ff0d8b9da3/html5/thumbnails/2.jpg)
Überblick
• Organisatorisches
• Kurze Einführung
– JDBC
– PL/SQL
• 1. Aufgabenblatt
![Page 3: Übung: Data Warehousing und Data Miningwandelt/DWDM/Intro.pdf · • Oracle-eigeneProgrammiersprache mit enger Integration in SQL Sämtliche prozeduralen Konzepte sind verfügbar:](https://reader030.vdocuments.net/reader030/viewer/2022041201/5d4c0ac588c993ff0d8b9da3/html5/thumbnails/3.jpg)
Ablauf des Semesters
• 7 Pflichttermine (neue Aufgabe/Lösung) – Heute
– 44./45. KW: 03./10.11.2011
– 46./47. KW: 17./24.11.2011
– 49. KW: 08.12.2011
– 01. KW: 05.01.2012
– 04. KW: 26.01.2012
– 07. KW: 16.02.2012 (Siegerehrung)
• Alle anderen Termine sind fakultativ
![Page 4: Übung: Data Warehousing und Data Miningwandelt/DWDM/Intro.pdf · • Oracle-eigeneProgrammiersprache mit enger Integration in SQL Sämtliche prozeduralen Konzepte sind verfügbar:](https://reader030.vdocuments.net/reader030/viewer/2022041201/5d4c0ac588c993ff0d8b9da3/html5/thumbnails/4.jpg)
Ablauf eines Pflichttermins
• Vorstellung der Lösungen durch jede Gruppe (eine Präsentation 5-10 Minuten)
– Im Laufe des Semesters muss jeder Student mindestens einmal vortragen!
– Wer: vorher überlegen!
• Neues Aufgabenblatt plus eventuelle Lösungshinweise
![Page 5: Übung: Data Warehousing und Data Miningwandelt/DWDM/Intro.pdf · • Oracle-eigeneProgrammiersprache mit enger Integration in SQL Sämtliche prozeduralen Konzepte sind verfügbar:](https://reader030.vdocuments.net/reader030/viewer/2022041201/5d4c0ac588c993ff0d8b9da3/html5/thumbnails/5.jpg)
Gruppenbildung
• Eine Gruppe mit 2-3 Personen • Per Mail schicken
– Matrikelnummer und Namen der Studenten – Alle Mailadressen – Ansprechpartner
• Jede Gruppe bekommt einen Account für die Oracle-Instanz auf – delphi.informatik.hu-berlin.de – Passwort bekommt die Gruppe per Mail (testen!) – VPN benutzen
![Page 6: Übung: Data Warehousing und Data Miningwandelt/DWDM/Intro.pdf · • Oracle-eigeneProgrammiersprache mit enger Integration in SQL Sämtliche prozeduralen Konzepte sind verfügbar:](https://reader030.vdocuments.net/reader030/viewer/2022041201/5d4c0ac588c993ff0d8b9da3/html5/thumbnails/6.jpg)
Die Aufgaben / Wettbewerb
• Insgesamt gibt es 6 Aufgaben zu lösen
– 4 der Aufgaben sind als Wettbewerb konzipiert (Aufgaben 2, 4, 5 und 6)
– Es gibt (parallel zu den Scheinpunkten) Punkte für die schnellste und effizienteste Lösung
• Die beste Gruppe bekommt am Ende ein kleines Präsent
![Page 7: Übung: Data Warehousing und Data Miningwandelt/DWDM/Intro.pdf · • Oracle-eigeneProgrammiersprache mit enger Integration in SQL Sämtliche prozeduralen Konzepte sind verfügbar:](https://reader030.vdocuments.net/reader030/viewer/2022041201/5d4c0ac588c993ff0d8b9da3/html5/thumbnails/7.jpg)
Kriterien für die Prüfung
• Alle Aufgaben (durch die Gruppe) bearbeitet
• Für jede Aufgabe mindestens 50% der Punkte
• (Mindestens) eine Lösung vorgetragen
=> Anmeldung zur mündlichen Prüfung
![Page 8: Übung: Data Warehousing und Data Miningwandelt/DWDM/Intro.pdf · • Oracle-eigeneProgrammiersprache mit enger Integration in SQL Sämtliche prozeduralen Konzepte sind verfügbar:](https://reader030.vdocuments.net/reader030/viewer/2022041201/5d4c0ac588c993ff0d8b9da3/html5/thumbnails/8.jpg)
Terminfindung…
• Alternativer Übungstermin
– (Vermutlich) an Stelle von Donnerstag 13 bis 15 Uhr
• Constraints
– Montag - Donnerstag
– 7 bis 13 Uhr
– Raum muss verfügbar sein(!)
![Page 9: Übung: Data Warehousing und Data Miningwandelt/DWDM/Intro.pdf · • Oracle-eigeneProgrammiersprache mit enger Integration in SQL Sämtliche prozeduralen Konzepte sind verfügbar:](https://reader030.vdocuments.net/reader030/viewer/2022041201/5d4c0ac588c993ff0d8b9da3/html5/thumbnails/9.jpg)
Datenbankzugriff
• Alternativen – Alles in Java machen
• JDBC Treiber von Oracle herunterladen • Java programmieren
– Java-basierte GUI verwenden (z.B. Aquafold) • JDBC Treiber von Oracle herunterladen • Anwendung installieren
– Tool benutzen, die den Oracle Client verwenden (z.B. SQL*PLUS, Toad, TORA, …) • Oracle Client herunterladen (Oracle Technology Network)
– Ca. 650 MB
• Installieren • Dann Tool installieren
![Page 10: Übung: Data Warehousing und Data Miningwandelt/DWDM/Intro.pdf · • Oracle-eigeneProgrammiersprache mit enger Integration in SQL Sämtliche prozeduralen Konzepte sind verfügbar:](https://reader030.vdocuments.net/reader030/viewer/2022041201/5d4c0ac588c993ff0d8b9da3/html5/thumbnails/10.jpg)
Verbindungsdaten
• Server: delphi.informatik.hu-berlin.de • Port 1522 • Instanz: orcl10 • Typischer Connect-String
– delphi.informatik.hu-berlin.de:1522: orcl10
• Für lokalen Oracle-Client – Tnsnames.ora abändern – Eintrag:
DWH = (DESCRIPTION = ( ADDRESS = (PROTOCOL = TCP)(HOST = delphi.informatik.hu-berlin.de)(PORT= 1522)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl10) ) )
![Page 11: Übung: Data Warehousing und Data Miningwandelt/DWDM/Intro.pdf · • Oracle-eigeneProgrammiersprache mit enger Integration in SQL Sämtliche prozeduralen Konzepte sind verfügbar:](https://reader030.vdocuments.net/reader030/viewer/2022041201/5d4c0ac588c993ff0d8b9da3/html5/thumbnails/11.jpg)
Zum Entwicklen / Testen
• Lokale Installation von
– Oracle 10g / 11g Express Edition
![Page 12: Übung: Data Warehousing und Data Miningwandelt/DWDM/Intro.pdf · • Oracle-eigeneProgrammiersprache mit enger Integration in SQL Sämtliche prozeduralen Konzepte sind verfügbar:](https://reader030.vdocuments.net/reader030/viewer/2022041201/5d4c0ac588c993ff0d8b9da3/html5/thumbnails/12.jpg)
JDBC - kompakt
![Page 13: Übung: Data Warehousing und Data Miningwandelt/DWDM/Intro.pdf · • Oracle-eigeneProgrammiersprache mit enger Integration in SQL Sämtliche prozeduralen Konzepte sind verfügbar:](https://reader030.vdocuments.net/reader030/viewer/2022041201/5d4c0ac588c993ff0d8b9da3/html5/thumbnails/13.jpg)
JDBC - Idee
![Page 14: Übung: Data Warehousing und Data Miningwandelt/DWDM/Intro.pdf · • Oracle-eigeneProgrammiersprache mit enger Integration in SQL Sämtliche prozeduralen Konzepte sind verfügbar:](https://reader030.vdocuments.net/reader030/viewer/2022041201/5d4c0ac588c993ff0d8b9da3/html5/thumbnails/14.jpg)
JDBC - Konzepte
• DB-spezifischer JDBC-Treiber: DriverManager
– Verbindung zur DB: Interface Connection
– Anfragen formulieren: Statement
– Ergebnisse auswerten: ResultSet
– Metadaten über die DB
![Page 15: Übung: Data Warehousing und Data Miningwandelt/DWDM/Intro.pdf · • Oracle-eigeneProgrammiersprache mit enger Integration in SQL Sämtliche prozeduralen Konzepte sind verfügbar:](https://reader030.vdocuments.net/reader030/viewer/2022041201/5d4c0ac588c993ff0d8b9da3/html5/thumbnails/15.jpg)
JDBC – Verbindung zu Oracle
//classpath um JDBC-Bibliotheken ergänzen
DriverManager.registerDriver(oracle.jdbc.OracleDriver());
server= „delphi.informatik.hu-berlin.de:1522:orcl10“;
Connection con = DriverManager.getConnection(
„jdbc:oracle:thin:@“+server, "gruppename", "kennwort");
![Page 16: Übung: Data Warehousing und Data Miningwandelt/DWDM/Intro.pdf · • Oracle-eigeneProgrammiersprache mit enger Integration in SQL Sämtliche prozeduralen Konzepte sind verfügbar:](https://reader030.vdocuments.net/reader030/viewer/2022041201/5d4c0ac588c993ff0d8b9da3/html5/thumbnails/16.jpg)
JDBC – Statements
• Sind gewöhnliche SQL-Statements, die JDBC an die DB
weiterleitet – erzeugt wird ein Statement über das Interface Connection
– Statement stmt=con.createStatement();
![Page 17: Übung: Data Warehousing und Data Miningwandelt/DWDM/Intro.pdf · • Oracle-eigeneProgrammiersprache mit enger Integration in SQL Sämtliche prozeduralen Konzepte sind verfügbar:](https://reader030.vdocuments.net/reader030/viewer/2022041201/5d4c0ac588c993ff0d8b9da3/html5/thumbnails/17.jpg)
JDBC – Statements – Beispiele
stmt.execute(
"CREATE TABLE coworkers(c_idint, namevarchar(25))"
);
stmt.execute(
"INSERT INTO coworkers VALUES (1, 'Herbert')“
);
stmt.close(); //nicht vergessen!
![Page 18: Übung: Data Warehousing und Data Miningwandelt/DWDM/Intro.pdf · • Oracle-eigeneProgrammiersprache mit enger Integration in SQL Sämtliche prozeduralen Konzepte sind verfügbar:](https://reader030.vdocuments.net/reader030/viewer/2022041201/5d4c0ac588c993ff0d8b9da3/html5/thumbnails/18.jpg)
JDBC – Anfragen
• Ausführung von Statement.executeQuery(); – Erzeugt einObjekt mit Interface ResultSet
ResultSetresult=stmt.executeQuery(
"SELECT c_id, name FROM coworkersORDER BY c_id)“
);
• ResultSet speichert einen internen „aktuellen“ Pointer auf die Ergebnisliste – Buffergöße!
– Ergebnisse werden tupelweise durchlaufen über
result.next();
• Bereits das erste Tupel bedarf des vorherigen Aufrufs von result.next();
• Aufruf liefert true, wenn weitere Tupel vorhanden; sonst false
![Page 19: Übung: Data Warehousing und Data Miningwandelt/DWDM/Intro.pdf · • Oracle-eigeneProgrammiersprache mit enger Integration in SQL Sämtliche prozeduralen Konzepte sind verfügbar:](https://reader030.vdocuments.net/reader030/viewer/2022041201/5d4c0ac588c993ff0d8b9da3/html5/thumbnails/19.jpg)
JDBC – ResultSet
• Über die Methoden – ResultSet.getXXX("<attrib>")
– also getString(), getInt(), …
stmt.executeQuery("SELECTc_id,name..
while(result.next())
{
intc_id= result.getInt("c_id");
String name= result.getString("name");
…
}
• Man muss also den Datentypen der Spalte kennen – Zugriff möglich über Metadaten (über ResultSet erhältlich)
![Page 20: Übung: Data Warehousing und Data Miningwandelt/DWDM/Intro.pdf · • Oracle-eigeneProgrammiersprache mit enger Integration in SQL Sämtliche prozeduralen Konzepte sind verfügbar:](https://reader030.vdocuments.net/reader030/viewer/2022041201/5d4c0ac588c993ff0d8b9da3/html5/thumbnails/20.jpg)
JDBC – PreparedStatements
• Normale SELECT Statements werden in der DB jedes Mal neu geparst, optimiert und kompliert – Bei mehrfacher Ausführung eines Statements mit nur geänderten Parametern ist das ineffektiv
– Besser: Anstelle von Statement …
PreparedStatement pstmt=con.prepareStatement(
"INSERT INTO coworkers (c_id, name) VALUES (?, ?)“);
{LOOP}
// preparetuples:
pstmt.setInt(1, anInt);
string as 2nd attribute:
pstmt.setString(2, aString);
// executepreparedstatement
pstmt.execute();
{POOL}
pstmt.close();
![Page 21: Übung: Data Warehousing und Data Miningwandelt/DWDM/Intro.pdf · • Oracle-eigeneProgrammiersprache mit enger Integration in SQL Sämtliche prozeduralen Konzepte sind verfügbar:](https://reader030.vdocuments.net/reader030/viewer/2022041201/5d4c0ac588c993ff0d8b9da3/html5/thumbnails/21.jpg)
JDBC –Exceptions
• JDBC Methoden können SQLExceptionwerfen
– Abfangen!
• Beispiele
– "Geschlossene Anweisung”
• Wo? Statement.execute()
• Was? Es wird auf ein Instanz von Statement zugegriffen, die zuvor mit Statement.close() geschlossen wurde
– "ORA-00001: Verstoß gegen Eindeutigkeit"
• Wo? Statement.execute("INSERT..");
• Was? Einfügen bereits vorhandener Werte in eine Spalte (unique)
![Page 22: Übung: Data Warehousing und Data Miningwandelt/DWDM/Intro.pdf · • Oracle-eigeneProgrammiersprache mit enger Integration in SQL Sämtliche prozeduralen Konzepte sind verfügbar:](https://reader030.vdocuments.net/reader030/viewer/2022041201/5d4c0ac588c993ff0d8b9da3/html5/thumbnails/22.jpg)
JDBC - Quellen
• http://www.jdbc-tutorial.com/
• http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-112010-090769.html
![Page 23: Übung: Data Warehousing und Data Miningwandelt/DWDM/Intro.pdf · • Oracle-eigeneProgrammiersprache mit enger Integration in SQL Sämtliche prozeduralen Konzepte sind verfügbar:](https://reader030.vdocuments.net/reader030/viewer/2022041201/5d4c0ac588c993ff0d8b9da3/html5/thumbnails/23.jpg)
PL/SQL - kompakt
• Oracle-eigeneProgrammiersprache mit enger Integration in SQL
• Sämtliche prozeduralen Konzepte sind verfügbar: Funktionen/ Prozeduren, Abfragen/bedingte Ausführung, Schleifen, etc.
• Wird verwendet für SQL Funktionen, Trigger, Stored-Procedures, etc.
• Code wird in der Datenbank, uUwährend der Ausführung einer SQL-Anfrage ausgeführt – Keine Benutzerschnittstellen
– Keine Ausgabe auf Bildschirm etc.
– Logging ist gar nicht so einfach (Transaktionen)
• Alternative: Java in der Datenbank – Oder SQLJ
![Page 24: Übung: Data Warehousing und Data Miningwandelt/DWDM/Intro.pdf · • Oracle-eigeneProgrammiersprache mit enger Integration in SQL Sämtliche prozeduralen Konzepte sind verfügbar:](https://reader030.vdocuments.net/reader030/viewer/2022041201/5d4c0ac588c993ff0d8b9da3/html5/thumbnails/24.jpg)
PL/SQL - Programme
DECLARE
.. /* Variablen-&Typdeklarationen */
BEGIN
.. /* Programmcode, Funktionen .. */
EXCEPTION
.. /* Exception-Handling*/
END;
![Page 25: Übung: Data Warehousing und Data Miningwandelt/DWDM/Intro.pdf · • Oracle-eigeneProgrammiersprache mit enger Integration in SQL Sämtliche prozeduralen Konzepte sind verfügbar:](https://reader030.vdocuments.net/reader030/viewer/2022041201/5d4c0ac588c993ff0d8b9da3/html5/thumbnails/25.jpg)
PL/SQL - Beispiel
DECLARE
cntnumber;
BEGIN
SELECT count(*) INTO cntFROM USER_TABLES;
cnt:= cnt*10;
INSERT INTO mytabelleVALUES (cnt,‘constant‘);
END;
![Page 26: Übung: Data Warehousing und Data Miningwandelt/DWDM/Intro.pdf · • Oracle-eigeneProgrammiersprache mit enger Integration in SQL Sämtliche prozeduralen Konzepte sind verfügbar:](https://reader030.vdocuments.net/reader030/viewer/2022041201/5d4c0ac588c993ff0d8b9da3/html5/thumbnails/26.jpg)
PL/SQL - Variablen
• Alle von Oracle unterstützen Typen + NUMBER, BOOLEAN
• Ermittlung zur Compilezeitmöglich
DECLARE
name VARCHAR(20);
gruppe NUMBER;
…
![Page 27: Übung: Data Warehousing und Data Miningwandelt/DWDM/Intro.pdf · • Oracle-eigeneProgrammiersprache mit enger Integration in SQL Sämtliche prozeduralen Konzepte sind verfügbar:](https://reader030.vdocuments.net/reader030/viewer/2022041201/5d4c0ac588c993ff0d8b9da3/html5/thumbnails/27.jpg)
PL/SQL - Sonstiges
• Kontrollflüsse
– Bedingungen, Schleifen, Ausnahmen, ….
• Kompilieren von Programmen – CREATE OR REPLACE PROCEDURE myproc IS …
– EXEC myproc;
![Page 28: Übung: Data Warehousing und Data Miningwandelt/DWDM/Intro.pdf · • Oracle-eigeneProgrammiersprache mit enger Integration in SQL Sämtliche prozeduralen Konzepte sind verfügbar:](https://reader030.vdocuments.net/reader030/viewer/2022041201/5d4c0ac588c993ff0d8b9da3/html5/thumbnails/28.jpg)
PL/SQL – EXPLAIN PLAN
EXPLAIN PLAN (FOR)
SELECT * FROM user_tables;
• Parst und optimiert die Query, ohne sie auszuführen
• Speichert die Abfolge sämtlicher gewählter Operationen in einer Tabelle ab – Referenzierte Tabellen
– Verwendete Zugriffsmethoden
– Join-Methode
– Geschätzte Kosten
– …
• Pläne können durch externe Tools angezeigt werden
![Page 29: Übung: Data Warehousing und Data Miningwandelt/DWDM/Intro.pdf · • Oracle-eigeneProgrammiersprache mit enger Integration in SQL Sämtliche prozeduralen Konzepte sind verfügbar:](https://reader030.vdocuments.net/reader030/viewer/2022041201/5d4c0ac588c993ff0d8b9da3/html5/thumbnails/29.jpg)
Zusammenfassung
• Bis nächsten Montag:
– Feste Übungstermine
– Übungsgruppenfestlegung (per Mail)
• Dienstag:
– Zusenden der Zugangsdaten
![Page 30: Übung: Data Warehousing und Data Miningwandelt/DWDM/Intro.pdf · • Oracle-eigeneProgrammiersprache mit enger Integration in SQL Sämtliche prozeduralen Konzepte sind verfügbar:](https://reader030.vdocuments.net/reader030/viewer/2022041201/5d4c0ac588c993ff0d8b9da3/html5/thumbnails/30.jpg)
Fragen, Anregungen?