30
Übung: Data Warehousing und Data Mining 20. Oktober 2011 Sebastian Wandelt [email protected]

Übung: Data Warehousing und Data Miningwandelt/DWDM/Intro.pdf · • Oracle-eigeneProgrammiersprache mit enger Integration in SQL Sämtliche prozeduralen Konzepte sind verfügbar:

Embed Size (px)

Citation preview

Page 1: Übung: Data Warehousing und Data Miningwandelt/DWDM/Intro.pdf · • Oracle-eigeneProgrammiersprache mit enger Integration in SQL Sämtliche prozeduralen Konzepte sind verfügbar:

Übung:

Data Warehousing und Data Mining

20. Oktober 2011

Sebastian Wandelt

[email protected]

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:

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

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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 23: Übung: Data Warehousing und Data Miningwandelt/DWDM/Intro.pdf · • Oracle-eigeneProgrammiersprache mit enger Integration in SQL Sämtliche prozeduralen Konzepte sind verfügbar:

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:

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:

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:

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:

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:

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:

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:

Fragen, Anregungen?