Übung: data warehousing und data miningwandelt/dwdm/intro.pdf · •...
TRANSCRIPT
Überblick
• Organisatorisches
• Kurze Einführung
– JDBC
– PL/SQL
• 1. Aufgabenblatt
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
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
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
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
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
Terminfindung…
• Alternativer Übungstermin
– (Vermutlich) an Stelle von Donnerstag 13 bis 15 Uhr
• Constraints
– Montag - Donnerstag
– 7 bis 13 Uhr
– Raum muss verfügbar sein(!)
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
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) ) )
Zum Entwicklen / Testen
• Lokale Installation von
– Oracle 10g / 11g Express Edition
JDBC - kompakt
JDBC - Idee
JDBC - Konzepte
• DB-spezifischer JDBC-Treiber: DriverManager
– Verbindung zur DB: Interface Connection
– Anfragen formulieren: Statement
– Ergebnisse auswerten: ResultSet
– Metadaten über die DB
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");
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();
JDBC – Statements – Beispiele
stmt.execute(
"CREATE TABLE coworkers(c_idint, namevarchar(25))"
);
stmt.execute(
"INSERT INTO coworkers VALUES (1, 'Herbert')“
);
stmt.close(); //nicht vergessen!
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
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)
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();
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)
JDBC - Quellen
• http://www.jdbc-tutorial.com/
• http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-112010-090769.html
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
PL/SQL - Programme
DECLARE
.. /* Variablen-&Typdeklarationen */
BEGIN
.. /* Programmcode, Funktionen .. */
EXCEPTION
.. /* Exception-Handling*/
END;
PL/SQL - Beispiel
DECLARE
cntnumber;
BEGIN
SELECT count(*) INTO cntFROM USER_TABLES;
cnt:= cnt*10;
INSERT INTO mytabelleVALUES (cnt,‘constant‘);
END;
PL/SQL - Variablen
• Alle von Oracle unterstützen Typen + NUMBER, BOOLEAN
• Ermittlung zur Compilezeitmöglich
DECLARE
name VARCHAR(20);
gruppe NUMBER;
…
PL/SQL - Sonstiges
• Kontrollflüsse
– Bedingungen, Schleifen, Ausnahmen, ….
• Kompilieren von Programmen – CREATE OR REPLACE PROCEDURE myproc IS …
– EXEC myproc;
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
Zusammenfassung
• Bis nächsten Montag:
– Feste Übungstermine
– Übungsgruppenfestlegung (per Mail)
• Dienstag:
– Zusenden der Zugangsdaten
Fragen, Anregungen?