Java Programmierung mit DB2 auf z/os

Größe: px
Ab Seite anzeigen:

Download "Java Programmierung mit DB2 auf z/os"

Transkript

1 Java Programmierung mit DB2 auf z/os Christian Daser, Technischer Vertrieb DB2 für z/os IBM Corporation Warum setzen Kunden DB2 z/os ein? Hochverfügbarkeit 7 x 24 Ausfälle vermeiden vs. Schnelle Recovery Hohe Performance und Skalierbarkeit Skalierbar Wachstum Single und multi-system Große Anzahl von Daten Große Anzahl von Usern Unterschiedliche Arten von Workload OLTP und Batch Webworkload mit Spitzen ERP/CRM Lösungen (SAP...) BI & Warehousing ODS und gemischte Workload... Datenbanktechnologie kostenbasierter Optimizer, Query-Rewrite Parallelverabeitung Web-enablement, XML Hoch-automatisierte Umgebung Utilities und Tooling z/os Systemmanagement Nachvollziehbarkeit Monitoring Auditing Support für Open Standards SQL/ANSI, ODBC, JDBC/SQLJ XPATH 2 1

2 DB2 z/os 27 Jahre Erfahrung 14th Release DB2 9 for z/os DB2 10 for z/os kommt Lizenzen Typischer DB2 for z/os Kunde Team of 2-10 DASD 200TB Mio Online Transactions per day 20 DB2 Systems Availability: 99,9% Response Time < 1s: 99,9% CPU Utilization > 90% Threads per day: 3.5 Mio SQLs per day: Mio 3 Agendaübersicht Java Zugriffsmöglichkeiten Anwendungsentwicklung mit JDBC und SQLJ Persistenzframeworks DB2 und Application Server Systemadministration 4 2

3 JDBC Treiber Ein Treiber für die Datenbankfamilie der IBM IBM Data Server Driver for JDBC and SQLJ Auch bekannt als Java Common Client (JCC) oder Universal Driver Unterstützt JDBC und SQLJ 3.0 und 4.0 Type 2 und Type 4 Treiber Type4 URL: jdbc:db2://server:port/database Type2 URL: jdbc:db2:database Sehr gute Integration in WebSphere 5 Typische Architekturen App Server Java app Batch Type 2 CICS MQ Cobol PL/1 DB2 J S P C D D F DB2 Connect DB2 Connect Gateway DRDA Type 4 Type 42 API Type 24 Java Application -ADO.NET -ADO -ODBC -OLE DB App -ROR Server -PERL -JDBC -SQLJ Java -DB2 CLI Application http Browser Browser Java Application Type 4 App Server Java Batch WS consumer Webservice SOAP WS consumer 6 3

4 Vor und Nachteile Type 2 vs. Type 4 Type 2 Höherer Durchsatz Crossmemory Interfaces zwischen Anwendung und DB2 Kein DDF / DRDA / IP overhead z/os Security, Vorteile im Bereich Authentifizierung Nur lauffähig wenn die Java Anwendung / AppServer in der selben LPAR Type 4 Kann überall eingesetzt werden wo die entsprechende JVM exisitiert Einfaches Deployment Durchsatz und Security (technischer User) schlechter als Type 2 Individuelle Abweichungen sind möglich, je nach Kundenumgebung 7 DB2 for z/os Systemarchitektur und -prozesse im Detail IRLM Locking CICS IMS TSO USS Batch SNA TCP/ IP DB2 Catalog & Directory, Sortfiles User Databases Relational Data System Data Manager Buffer Manager DBM1 MYDB1 TS1 IXS1 X.TB1 X.TB2 X.IX1 X.IX2 X.IX3 PTS1 IXS2 Y.IXP Y.TB1 Y.IX1 MYDB2 TS2 LOBTS1 Z.TB1 AUXTB IXS3 Z.IX1 MSTR Command Processor Log Manager Recovery Manager BSDS Active Logs Off load Archive Logs DIST (DDF) DRDA Application Requestor & Server Distributed Thread Pooling WLM AS WLM Managed Stored Procedure Address Spaces 8 4

5 Überprüfen der Konfiguration Umgebungsvariablen für optimale Voraussetzungen (user profile) export CLASSPATH=/usr/lpp/db2/db2910_jdbc/classes/db2jcc_license_cisuz.jar:/usr/lpp/db2/db2910_jdbc/classes/db2jcc.jar:$CLASSPATH export CLPHOME=/usr/lpp/db2/db2910_base export CLASSPATH=$CLASSPATH:$CLPHOME/lib/clp.jar export CLPPROPERTIESFILE=$CLPHOME/samples/clp.properties export STEPLIB=SYS1.DSN.V910.SDSNEXIT:SYS1.DSN.V910.SDSNLOAD:SYS1.DSN.V910.SDSNLOD2:SYS1.SCEERUN:$STEPLIB export PATH=/usr/lpp/db2/db2910_jdbc/bin:$PATH export PATH=/usr/lpp/java/J1.5/bin/:$PATH export LIBPATH=/usr/lpp/db2/db2910_jdbc/lib:$LIBPATH export CLASSPATH=/usr/lpp/db2/db2910_jdbc/classes/sqlj.zip:$CLASSPATH export CLASSPATH=/usr/lpp/db2/db2910_jdbc/classes/db2jcc_jav ax.jar:$classpath alias db2="java com.ibm.db2.clp.db2" JDBC Version und Konfiguration java com.ibm.db2.jcc.db2jcc -version IBM DB2 JDBC Universal Driver Architecture java com.ibm.db2.jcc.db2jcc -configuration [jcc] Driver: IBM DB2 JDBC Universal Driver Architecture [jcc] Compatible JRE versions: { 1.4, 1.5 } [jcc] Target server licensing restrictions: { z/os: enabled; SQLDS: enabled; iseries: enabled; DB2 for Unix/Windows: enabled; Cloudscape: enabled; Informix: enabled } [jcc] Default fetch size: 64 [jcc] Default isolation: Batch Workload JZOS Aufruf von Java Anwendungen als z/os Batch Job ********************************* Top of Data ***************************** //JZOS JOB,'DASER',MSGCLASS=K,CLASS=A, // NOTIFY=&SYSUID,MSGLEVEL=(1,1),REGION=0M //PROCLIB JCLLIB ORDER=SYS1.PROCLIB //********************************************************************* //JAVA EXEC PROC=JVMPRC50, // JAVACLS='TestJDBC', //STDENV DD *. /u/daser/.profile export JAVA_HOME=/usr/lpp/java/J1.5 LIBPATH=/lib:/usr/lib:"${JAVA_HOME}"/bin:/usr/lpp/db2/db2910_jdbc/lib LIBPATH="$LIBPATH":"${JAVA_HOME}"/bin/classic export LIBPATH="$LIBPATH": APP_HOME=/u/daser/myjava CLASSPATH=$APP_HOME:"${CLASSPATH}" export CLASSPATH="$CLASSPATH": IJO="-Xms16m -Xmx128m" export IBM_JAVA_OPTIONS="$IJO " // 10 5

6 JDBC properties clientaccountinginformation clientprogramname clientuser clientworkstation Specifies accounting information for the current client for the connection. This information is for client accounting purposes. This value can change during a connection. currentpackageset Specifies the collection ID to search for DB2 packages for the DB2 Universal JDBC Driver. The data type of this property is String. The default is NULLID for Universal Driver type 4 connectivity. cursorsensitivity Specifies whether the java.sql.resultset.type_scroll_sensitive value maps to the SENSITIVE DYNAMIC attribute, the SENSITIVE STATIC attribute, or the ASENSITIVE attribute for the underlying DB2 cursor. accountinginterval deferprepares, keepdynamic maxrowsetsize (T2) or userowsetcursor (T4) for MultiRowFetch tracefile, tracelevel SysplexWorkloadBalancing, ConnectionConcentration Link: 11 Connection concentrator genutzt aus JDBC enableconnectionconcentrator maxtransportobjects mintransportobjects maxtransportobjectidletime maxtransportobjectwaittime 12 6

7 DB2 Client Workload Balancing und Failover db2set db2connect_in_app_process=no DCS entry = SYSPLEX on 6th pos. dbm config MAX_CONNECTIONS (in) > MAX_COORDAGENTS (out) DB2 CONNECT Concentrator V7+ WLM liefert Serverliste DVIPA + Sysplex Distributor Web User JDBC Connection Concentration & WLB JDBC seamless & cascade failover JCC T4 V8 FP10/13 JCC DataSource properties enablesysplexwlb=yes, enableconnectionconcentrator maxtransportobjects... Client definiert alternative Adresse JCC T4 V9.5 FP1 clientreroutealternateservername clientreroutealternateportnumber enableseamlessfailov er enableclientaffinitieslist cascaded failov er DB2 Data Sharing Group Alias Location names Redbook SG : DB2 9 for z/os: Distributed Functions 13 Verschlüsselung auf dem Draht DRDA Verschlüsselung Sicherheitsrelevante Daten, ICSF & Crypto Express 2 card sind Voraussetzung JCC properties securitymechanism ENCRYPTED_PASSWORD_SECURITY ENCRYPTED_USER_ONLY_SECURITY ENCRYPTED_USER_AND_PASSWORD_SECURITY ENCRYPTED_USER_AND_DATA_SECURITY ENCRYPTED_USER_PASSWORD_AND_DATA_SECURITY Def ault: CLEAR_TEXT_PASSWORD_SECURITY encryptionalgorithm = 1 (56-bit DES) 2 (256-bit AES (USERID / PASSWORD)) SSL Verschlüsselung über IBM Data Server Driver for JDBC/SQLJ T4 V9 FP2 z/os CS R7+ nutzt AT-TLS (Application Transparent Transport Layer Security) Bind of secure port; certificate / key management TLS V1.0, SSL V2 + V3 protocol support CPACF f ür Datentransf er (DES, T-DES, AES,...), Optional Crypto Express2 Card f ür handshake (RSA) via ICSF JSSE - Java Secure Socket Extension Def iniert T-DES, AES... Verschlüsselungsalgorythmus Jav a KEYTOOL zum Handling der Keys JCC driver property sslconnection = true Port Angabe = secure port 14 7

8 Codepage Conversion Wenn Daten über unterschiedlichen Codepages transportiert werden, muss konvertiert werden Typische Codepages DB2 z/os: EBCDIC, ASCII, UNICODE Java: UNICODE COBOL, PL1: EBCDIC, UNICODE? Java App (Unicode) DB2 insert String =... COBOL (CCSID 237) 15 Stored Procedures Wiederkehrende gekapselte Codestücke Enthalten gewissen Anwendungslogik Vermeidet Netzwerk und Protokoll trips Genutzt für Performanceverbesserung und Anwendungsvereinfachung select... select... select... calculate... update... update... DB2 MYPROC select... select... select... calculate... update... update... Call MYPROC 16 8

9 Types of Stored Procedures Assembler Cobol, PL1 SQL, C Java (JDBC / SQLJ) Native storedproc.txt 17 DB2 for z/os Systemarchitektur und -prozesse im Detail IRLM Locking CICS IMS TSO USS Batch SNA TCP/ IP DB2 Catalog & Directory, Sortfiles User Databases Relational Data System Data Manager Buffer Manager DBM1 MYDB1 TS1 IXS1 X.TB1 X.TB2 X.IX1 X.IX2 X.IX3 PTS1 IXS2 Y.IXP Y.TB1 Y.IX1 MYDB2 TS2 LOBTS1 Z.TB1 AUXTB IXS3 Z.IX1 MSTR Command Processor Log Manager Recovery Manager BSDS Active Logs Off load Archive Logs DIST (DDF) DRDA Application Requestor & Server Distributed Thread Pooling WLM AS WLM Managed Stored Procedure Address Spaces 18 9

10 Deployment von Stored Procedures Erzeugen des Programmcodes Kompilierung in Bytecode Ablegen des Codes (jar oder class) im DB2 Katalog oder USS Erzeugen der DB2 DDL Refresh WLM application environment CREATE PROCEDURE STPJAVA ( ) RESULT SETS 1 EXTERNAL NAME 'DASER.DS_1234:com.daser.jspc.STPJAVA.STPJAVA' LANGUAGE Java PARAMETER STYLE JAVA NOT DETERMINISTIC COLLID NULLID WLM ENVIRONMENT WLMD931J 19 Agendaübersicht Java Zugriffsmöglichkeiten Anwendungsentwicklung mit JDBC und SQLJ Persistenzframeworks DB2 und Application Server Systemadministration 20 10

11 Auftreten des Object-relational Impedance Mismatch im Java Umfeld Java Objekt Datenbanktabelle EMPNO FIRSTNME CHRISTINE MICHAEL LASTNAME HAAS THOMPSON SQL Unverträglichkeit zwischen Programm und Datenbank? Impedance Mismatch Java arbeitet aktiv auf ganzheitlichen Datenstrukturen in Form von Objekten. Im Gegensatz dazu wird bei prozeduralen Ansätzen wird meist nur mit passiven, unvollständigen Datenstrukturen in Form von einzelnen Variablen gearbeitet. 21 Verdeutlichung der Unterschiede zu prozeduralen Ansätzen am Beispiel Objektorientiert Prozedural (z.b. COBOL, C, REXX, PL/I...) SELECT LASTNAME FROM DSN8910.EMP SELECT * FROM DSN8910.EMP char nachname[15]; Mitarbeiter m1; Impedance Mismatch nachname = "Maier"; m1.setnachname("maier"); char nachname[15]; Mitarbeiter m1; UPDATE DSN8910.EMP SET

12 Ursachen des Object-relational Impedance Mismatch im Java Umfeld Objektorientiertes Modell Relationale Algebra Objekteigenschaften: 1. Identität 2. Zustand EMPNO FIRSTNME CHRISTINE MICHAEL LASTNAME HAAS THOMPSON 3. Verhalten SQL Impedance Mismatch Objektorientierte Konzepte wie Kapselung, Vererbung, Polymorphie, Assoziationen und Kompositionen sowie Collections RI-Beziehungen (Foreign Keys & CASCADE), Joins, Trigger, Views, User-defined Functions & Stored Procedures Existierendes Datenmodell in Benutzung durch andere (nicht objektorientierte) Anwendungen 23 Wie dem Impedance Mismatch in der Praxis begegnet werden kann Java Objekt Datenbanktabelle EMPNO FIRSTNME CHRISTINE MICHAEL LASTNAME HAAS THOMPSON SQL Lösung in der Anwendung: Manuelle Verarbeitung von relationalen Daten mittels SQL in JDBC oder SQLJ Lösung in der Mitte: Verknüpfung beider Welten mit Hilfe von Persistenzframeworks Lösung in der Datenbank: Objektorientierte DBMS Impedance Mismatch Häufig anzutreffende und etablierte Vorgehensweise Gewinnt zunehmend an Bedeutung Hat sich in der Praxis nicht wirklich durchgesetzt 24 12

13 Eclipse IDE als Standardwerkzeug für Java Anwendungsentwicklung Open Source Tool, dessen Quellcode 2001 von IBM freigegeben wurde Integrated Development Environment (IDE) auf Frameworkbasis mit zahlreichen Plugins zur Funktionalitätserweiterung. Funktionalitäten sind geglieder in Perspektiven und Views. Herunterladen von "Eclipse is a kind of universal tool platform - an open extensible IDE for anything and nothing in particular." 25 Optim Development Studio bietet zusätzliche Vorteile speziell für DB2 Eclipse-basiertes Datenbankanwendungsentwicklungstool der IBM (aktuell Eclipse 3.4.2) Vereinfacht die Entwicklung von Java Anwendungen gegen Datenbanken Ermöglicht darüber hinaus effizienten Zugriff und grundlegende Verwaltungsfeatures für div. Datenbanksysteme. Unterstützt neben DB2 for z/os auch DB2 for LUW, DB2 for iseries, Informix Dynamic Server, Derby sowie neuerdings auch z.t. Oracle. Existiert in einer kostenlosen Basic Version und einer kostenpflichtigen Variante

14 Das Look and Feel von Data Studio unterscheidet sich nicht von Eclipse SQL Queries erstellen Mit XML Files arbeiten Databank- Objekte browsen Daten browsen Aktuell basierend auf Eclipse und dem Data Tools Platform (DTP) Framework 27 Optim Development Studio bietet zahlreiche Datenbankfunktionalitäten Data Source Expl. SQL Editor SQL Builder Visual Explain Stored Procedures User Def. Functions Data Web Services Basic Java Editor SQLJ development SQLJ deployment purequery Tools Impact Analyse Value distribution purexml Support Config. Repository And much more... JPA Tooling 28 14

15 Mit purequery Funktionalitäten für SQL Unterstützung im Java Editor Wie im SQL Editor bietet Optim Development Studio im regulären Java Editor Content Assist, Syntax Validation und Automatische Formatierung für SQL Statements. SQL Statements können bereits vor der Kompilierung und vor dem Deployment der zugrunde liegenden Java Anwendungen getestet werden. Die purequery Outline ermöglicht eine graphische Verlinkung von SQL Statements zum Java Source Code, Databankobjekten oder DB2 Packages. DDL, Java Code oder XML Mappings können automatisch generiert werden basierend auf SQL Statements, Datenbankobjekten oder Java Objekten. purequery Tools 29 Was ist JDBC Java Database Connectivity (JDBC) ist eine standardisierte Programmierschnittstelle (API) von Java für den Zugriff auf relationale Datenbanken. Die API Definition wird weiterentwickelt im Java Community Process (beteiligt sind u.a. IBM, Sun/BEA Systems/Oracle, SAP, MySQL, Sybase ). Aktuelle Versionen sind die JDBC 3.0 API (enthalten ab JSE 1.42) sowie JDBC 4.0 API (enthalten ab JSE 6.0). Java Anwendungen, die mit JDBC auf DB2 for z/os zugreifen, verwenden i.d.r. dynamisches SQL

16 Für JDBC Anwendungen relevante Java Packages und Klassen JDBC Basis: java.sql Enthält die Kernbestandteile der JDBC API. import java.sql.*; Optionale JDBC Erweiterungen: javax.sql Erweitert die JDBC API v.a. für serverbasierte Java Anwendungen. javax.naming Enthält Klassen des Java Naming & Directory Interface (JNDI). com.ibm.db2.jcc Enthält IBM-spezifische Erweiterungen des JDBC Standards. Grundlegende JDBC Klassen: Connection DB2Connection Statement DB2Statement ResultSet DB2ResultSet 31 Die JDBC Klasse Connection erstellt und verwaltet Connection Objekte Connection Statement ResultSet Per Default steht der Auto-commit Parameter einer Verbindung auf true. Bildet die Verbindung zwischen Java Anwendung und relationaler Datenbank. Wird entweder über den Driver Manager oder eine Data Source instanziiert. Erlaubt das direkte (set ) oder indirekte (Connection URL) Setzen von JDBC Properties wie z.b. Traces, Isolation Levels, Auto Commit. Ermöglicht das Erstellen und Ausführen von SQL Statements sowie die Verwaltung von Transaktionen (commit/rollback). getconnection( jdbc:db2:// :tmccdb91", ZUSER29", mypw); 32 16

17 Die JDBC Klasse ResultSet dient dem Ergebnishandling in Java Connection Statement ResultSet ResultSets offen halten, bedeutet ggf. auch halten von DB2 Locks & Threads. Nimmt das Ergebnisset einer SQL Query auf und nutzt den zugehörigen Cursor im DB2 zum Durchlaufen der einzelnen Datensätze des Ergebnisses. Datenabfrage erfolgt auf Row-Ebene und über entsprechende methoden, z.b. resultset.next() oder bei scrollable cursors first(), last(), previous() Die Ergebnisse einer Query werden von der Datenbank in einem sog. Cursor bereitgestellt. In JDBC wird dieser Cursor in Form des ResultSets abgebildet. resultset = stmt.executequery("select LASTNAME FROM DSN8910.EMP"); resultset.next()) resultset.getstring("lastname") 33 Einfaches JDBC Code Beispiel... String urlstring = "jdbc:db2:// :38446/tmccdb91"; String stmtstring = "SELECT LASTNAME FROM DSN8910.EMP WHERE EMPNO < '000110'"; Connection con = null; Statement stmt = null; //Deklaration der JDBC Variablen ResultSet rs = null; try { Class.forName("com.ibm.db2.jcc.DB2Driver"); //Verbindungsaufbau con = DriverManager.getConnection(urlString, "ZUSER29", args[0]); stmt = con.createstatement(); //Erzeugen eines Statement Objekts rs = stmt.executequery(stmtstring); //Ausführen des SQL Statements while (rs.next()) { //Verarbeiten des Ergebnisses System.out.println(rs.getString("LASTNAME")); } 34 17

18 ... und was dabei in DB2 passiert String urlstring = "jdbc:db2:// :38446/tmccdb91"; String stmtstring = "SELECT LASTNAME FROM DSN8910.EMP WHERE EMPNO < '000110'"; Connection con = null; Statement stmt = null; //Deklaration der JDBC Variablen ResultSet rs = null; try { //Aufbau einer logischen Verbindung zum JDBC Treiber Class.forName("com.ibm.db2.jcc.DB2Driver"); //Dieser baut eine physische //Verbindungsaufbau zu DB2 auf con = DriverManager.getConnection(urlString, "ZUSER29", args[0]); //Threadzuordnung durch DB2 bei Transaktionsbeginn //Ggf. Inaktivierung des Threads bei Nichtbenutzung stmt = con.createstatement(); //Erzeugen eines Statement Objekts //Prüfen des Statements und Ermittlung des Zugriffspfads rs = stmt.executequery(stmtstring); //Ausführen des SQL Statements //Definition des Ergebnissets und des zugehörigen Cursors while (rs.next()) { //Verarbeiten des Ergebnisses //Positionieren des Cursors und Abrufen der Daten einer Row System.out.println(rs.getString("LASTNAME")); } 35 Multi-row Fetch kommt zum Einsatz beim resultset.next() Call Durch Verwendung des Multi-row Fetch Netzwerktraffic und Datenbankcalls durch den JCC Driver vermeiden. Wird i.d.r. automatisch und transparent für die Anwendung verwendet. Nachprüfbar über Abfrage der Properties oder JDBC Trace Files

19 Nachteile der Verwendung des einfachen Statement Objekts Der Dynamic Statement Cache von DB2 hält die Zugriffspfade von dynamischen SQL Statements vor und zwar exakt in der ausgeführten Form. Beim vorherigen Beispiel wird der Zugriffsfad für SELECT LASTNAME FROM DSN8910.EMP WHERE EMPNO < '000110' im Dynamic Statement Cache abgelegt. Verwendet man nun allerdings ein Statement der Form SELECT LASTNAME FROM DSN8910.EMP WHERE EMPNO < '000210' muss der gesamte Zugriffspfad neu berechnet werden. Eventuell vorhandene Statement Caches von Anwendungsservern greifen i.d.r. nicht bei Verwendung des einfachen Statement Objekts. Ein simples Statement kann bei der Ausführung alles oder nichts sein Vorteile von PreparedStatement gegenüber Statement Das Verwenden von Prepared Statements kann Abhilfe schaffen, indem das Statement von DB2 nur mit Platzhaltern (Parameter-Markern) vorbereitet wird. Das Statement selbst und der ermittelte Zugriffspfad sind dabei zunächst generisch und werden auch so im Dynamic Statement Cache abgelegt. SELECT LASTNAME FROM DSN8910.EMP WHERE EMPNO <? Die jeweiligen Parameterwerte werden erst kurz vor der eigentlichen Ausführung eingesetzt. Im DB2 erfolgt lediglich noch eine eventuelle Reoptimierung (bei REOPT ONCE, ALWAYS oder AUTO). Dies steigert die Wiederwendbarkeit der Informationen im Cache erheblich und erlaubt zudem die Nutzung von zusätzlichen Statement Caches auf Anwendungsserverebene. ÄHNLICH dem Vorgehen mit Hostvariablen bei COBOL, etc... Zudem verbessertes Sicherheitskonzept, da Verhinderung von SQL Injection

20 Beispiel mit PreparedStatement und Parameter-Marker String urlstring = "jdbc:db2:// :38446/tmccdb91"; String stmtstring = "SELECT LASTNAME FROM DSN8910.EMP WHERE EMPNO <?"; Connection con = null; PreparedStatement pstmt = null; //Deklaration der JDBC Variablen ResultSet rs = null; try { Class.forName("com.ibm.db2.jcc.DB2Driver"); //Verbindungsaufbau con = DriverManager.getConnection(urlString, "ZUSER29", args[0]); pstmt = con.preparestatement(stmtstring); //Prepare des SQL Statements pstmt.setstring(1, "000110"); //Setzen des Parameterwertes rs = pstmt.executequery(); //Ausführen des SQL Statements while (rs.next()) { //Verarbeiten des Ergebnisses System.out.println(rs.getString("LASTNAME")); } 39 Mapping der Java und JDBC Datentypen zu den Typen in SQL und DB2 Der DB2 z/os Optimizer kann bessere Zugriffspfade ermitteln, je besser die Auswahl von JDBC/Java Datentypen im Vergleich zu den DB2 Typen passt

21 Zuordnung & Setzen der entsprechenden DB2 for z/os Isolation Levels Datenintegrität JDBC Isolation Level TRANSACTION_READ_UNCOMMITTED TRANSACTION_READ_COMMITTED TRANSACTION_REPEATABLE_READ DB2 for z/os Isolation Level Uncommitted read (UR) Cursor stability (CS) Read stability (RS) Nebenläufigkeit TRANSACTION_SERIALIZABLE Repeatable read (RR) JDBC Isolation Levels können gesetzt werden über: Connection.setTransactionIsolation(level); oder "jdbc:db2:// :38446/tmccdb91:defaultisolationlevel=...;" 41 Verbindungsaufbau über DataSource und Verwendung von javax.sql Bietet die Möglichkeit die Connection Definition auszulagern (z.b. an eine Application Server Data Source) mit folgenden Vorteilen: Keine manuelle Definition in sämtlichen Anwendungen notwendig Hohe Flexibilität beim Deployment Zentrale Festlegung von Connection Properties Vermeiden von zu vielen Einzelverbindungen durch Connection Pooling Höhere Transparenz und Portabilität Javax.sql Funktionalitäten: Bietet das DataSource Interface als Alternative zum DriverManager als Schnittstelle zur Erstellung und Verwaltung von Datenbankverbindungen. Zusätzliche Möglichkeiten wie Connection Pooling, Distributed Transactions, Rowsets... DataSource ConnectionPoolDataSource XADataSource DB2DataSource DB2BaseDataSource/DB2BaseDataSource DB2ConnectionPoolDataSource DB2XADataSource 42 21

22 Java SE 6 enthält JDBC 4.0 und damit einige interessante Neuerungen Verbessertes SQL Exception Handling Iteration über Chained Exceptions Transient vs. Non-Transient Unterstützung nativ in der Datenbank abgelegter XML Daten JDBC 4.0 ResultSet.getSQLXML("XMLCOLUMN"); PreparedStatement.setSQLXML(1, xmlobject); Automatisches Laden der JDBC Treiber Klassen Class.forName("com.ibm.db2.jcc.DB2Driver"); IBM Data Server Driver Implementierung des JDBC 4.0 Standards: db2jcc.jar db2jcc_license_cisuz.jar db2jcc4.jar db2jcc4_license_cisuz.jar 43 IBM Erweiterungen des JDBC Standards mit Zusatzfunktionalitäten DB2SystemMonitor zum grundlegenden Messen von Zeitaufwänden. Erweiterte Client Informationen für JDBC applications: Bisher über setdb2client AccountingInformation...ApplicationInformation...User...Workstation Mit JDBC 4.0 über Connection.setclientinformation Prüfen, ob eine offene Verbindung noch gültig ist: Bisher über isdb2alive Mit JDBC 4.0 über Connection.isValid db2jcc4.jar db2jcc4_license_cisuz.jar DB2Connection DB2Statement DB2ResultSet 44 22

23 Warum dann überhaupt statisches SQL und in SQLJ programmieren? Kapazitätsplanung Ressourcenverbrauch Zugriffspfadstabilität Statisches SQL Database object tracking Authorisierung Leistungsfähigkeit Ganzheitliche Problemfeststellung 45 Dynamisches SQL vs. Statisches SQL Dynamic SQL Check authorization for JDBC packages/plans for temporary use Static SQL Check authorization for packages/plans Parse SQL statements Check authorization for tables/views Calculate access paths Extract access paths from SYSCAT.PACKAGES and.statements Store access paths temporary in JDBC packages/plans Execute SQL statements Execute SQL statements Operationen durchgeführt zur Laufzeit der Anwendung. Verbesserungen möglich über DB2 Dynamic Statement Cache SQL wird vor der Laufzeit in ein Package gebunden. Zur Laufzeit wird lediglich das Package ausgeführt 46 23

24 SQLJ als statische Alternative zum dynamischen Vorgehen über JDBC SQLJ bietet Unterstützung für Embedded/Statisches SQL für Java Anwendungen. SQLJ wurde ursprünglich entwickelt von IBM, Oracle und Tandem um das dynamische JDBC SQL Modell mit einem statischen Modell zu erweitern. SQLJ kann mit JDBC interagieren und daher auch gemeinsam in einer Anwendung und selbst in einer Unit of Work verwendet werden. Die SQLJ Laufzeitumgebung besteht aus einer SQLJ Runtime Library, die nativ in Java implementiert wurde. Zum eigentlichen Zugriff auf die Datenbank nutzt auch SQLJ den IBM Data Server Driver. Bevor SQLJ Anwendung lauffähig sind, sind einige Vorarbeiten notwendig (Translation, Customization und Bind). #sql [ctx] cursor1 = {SELECT EMP_ACT.EMPNO FROM EMP_ACT}; db2jcc.jar db2jcc_license_cisuz.jar sqlj.zip 47 SQLJ Syntax und Language Konzepte Eine SQLJ Connection Clause definiert eine Verbindung zu einem DB2 Subsystem. Eine SQLJ Iterator Declaration Clause definiert eine Positioned Iterator Klasse oder eine Named Iterator Klasse. Eine SQLJ Assignment Clause weisst das Ergebnis einer SQL Operation einer Java Variable zu. Parameter für embedded SQL Statements werden in Form von Host Variables übergeben. #sql { SELECT * FROM EMPLOYEE WHERE EMPID=:id }; #sql { INSERT INTO EMPLOYEE VALUES (:id, :lastname, :firstname) }; #sql { SELECT COUNT(*) INTO :OUT number FROM EMPLOYEE }; 48 24

25 SQLJ Translation & Customization um Programme lauffähig zu machen SQLJ erfordert eine Prekompilierung (Translation). Während dieser Phase werden Syntax- und Konsistenz-Checks durchgeführt und ein natives Java Source File generiert. Dieses File enthält nur Standard Java Aufrufe. Sämtliche embedded SQL Statements und SQLJ Fragmente wurden in Aufrufe der SQLJ Runtime Library umgewandelt. Zudem wird ein sog. SQLJ Serialized Profile erstellt, das Informationen zu den statischen SQL Statements enthält. Durch Customization werden umgebungsspezifische Laufzeitinformationen zu diesen Profiles hinzugefügt. Die so angepassten Profiles werden schließlich in DB2 gebunden. 49 Optim Development Studio unterstützt bei der Entwicklung von SQLJ Wizard zum Erstellen von SQLJ PRogrammen mit Hilfe von Templates. Ein spezieller SQLJ Editor hilft Java Entwicklern mittels SQLJ Syntax Highlighting und SQLJ Assist Wizards beispielsweise beim Hinzufügen von Verbindungen und Iterator Definitionen oder SQLJ Assignment Clauses. Der enthaltene SQLJ debugger ermöglicht ein unkompliziertes Debugging von SQLJ vergleich dem Vorgehen bei normalen Java Projekten. Vorhandene Java/SQLJ Projekte können nachträglich um SQLJ Support erweitert werden. Wiederverwendung von Statements aus dem SQL Editor oder SQL Builder. SQLJ Entwicklung 50 25

26 Agendaübersicht Java Zugriffsmöglichkeiten Anwendungsentwicklung mit JDBC und SQLJ Persistenzframeworks DB2 und Application Server Systemadministration 51 Die Möglichkeiten zum Datenzugriff aus Java sind breit gefächert POJO mit Inline SQL (JDBC, SQLJ) Spektrum Unmanaged Objects Managed Objects Vorteile: - Einfachheit - Volle Kontrolle über SQL - Gute Performance (SQLJ) - Gutes Monitoring (SQLJ) Nachteile: - Keine Bindung zum Objektmodell - Mehr Aufwand für Programmierer DB2 Vorteile: - Weniger Aufwand für Entwickler - Zugriff über OO Business Objekte Nachteile: - Komplexität - Weniger Kontroll über SQL - Performance kann leiden - Schwierigkeiten beim Monitoring und der Problemfeststellung 52 26

27 JPA als standardisierte Persistenzlösung für die Java Community Java Persistence API ist... das neue Standard Persistenz API für Java und ein objektrelationales Mapping Framework, basierend auf aktuellen Anforderungen & Erfahrungen. der Nachfolger der EJB 2 Entity Beans (CMP) und Teil der aktuellen EJB 3.0 Spezifikation des Java EE 5 Standards. ermöglicht eine enorme Vereinfachung der Datenpersistierung. nutzbar sowohl innerhalb von Java EE als auch Java SE Umgebungen. oder Java EE 5 Annotationen XML Mapping Dateien 53 Überblick über die grundlegende JPA Architektur und deren Bestandteile Zur Implementierung einer JPA Persistenzlösung benötigt: } Entity Klasse Java Klasse, als Java Objekt Pendant zu den Datenbankdaten Persistence.xml Datei Enthält Persistence Units mit Metadaten zur Beschreibung der Beziehungen zwischen Entities und Datenbankobjekten Enthält zudem Konfigurationsparameter für Persistenzframework Java Klasse, die Entities zum Datenzugriff nutzt public static void main(string[] args) { EntityManagerFactory entitymanagerfactory = Persistence.createEntityManagerFactory("testjpa"); EntityManager em = entitymanagerfactory.createentitymanager(); EntityTransaction usertransaction = em.gettransaction(); usertransaction.begin(); em.update(customer); usertransaction.commit(); Java Anwendung JPA DB2 for z/os 54 27

28 Beachtenswerte Punkte bei gängigen Java Persistenzlösungen Einstellen des korrekten Datenbank-Dialekts Gleichheit / Identität im Persistence Context Eager Loading vs. Lazy Loading public class Mitarbeiter private int persnum private String nachname... Dirty Checking Transparent Transaction-level Write-behind Konzept DSN8910.EMP EMPID EMPLASTNAME 1 Jones... Welcher Isolation Level wird verwendet? Ist dieser notwendig? Vererbungsstrategien 55 Übersicht Java Persistenz Frameworks JPA (Java Persistence API - Sun): Standard für Java, bietet Interfaces an, die von den anderen Frameworks implementiert werden können Arbeitet direkt mit JDBC Treibern, standardkonform TopLink (Oracle): Entspricht den JPA Konventionen Verwendet JDBC, bietet aber auch DBMS bezogene Funktionen, wie zb: Native SQL, Sequencing und Custom Date/Timestamp Formate EclipseLink (Eclipse Foundation): Als Referenzimplementierung von JPA von Sun bestimmt Hat seinen Ursprung in Oracle TopLink und wird auch in zukünftigen Releases von Oracle TopLink enthalten sein OpenJPA (Apache Software Foundation): Open Source Implementierung des JPA Standards Wird als Standard Persistenz Framework von IBM WebSphere mitgeliefert und verwendet 56 28

29 Übersicht Java Persistenz Frameworks Hibernate (JBoss, jetzt RedHat): Baut mittlerweile ebenfalls auf JPA auf Sehr mächtig und performant, lange (proprietäre) Historie Hibernate Query Language Als minimale objektorientierte Erweiterung von SQL entwickelt Am weitesten verbreitet Zusammenarbeit mit DBMS über Wahl von Sprachdialekt als Eigenschaft Ibatis SQL Maps (Apache Software Foundation): Kein echtes ORM-Framework DAO Mapping muss von Hand beschrieben werden, genau wie die SQL-Statements die an die Datenbank weitergereicht werden Dadurch können SQL-Befehle vollständig angepasst werden Bei eigenem Datenbankdesign sehr von Vorteil, spezifische Datenbankfunktionen (Sequencing, ) können voll ausgekostet werden Spring Data Access Framework (SpringSource, VMWare): Unterstützt viele Persistenzframeworks, in dem Interfaces bereitgestellt werden (JPA, toplink, JDO, ibatis,...) Kein direkter Zugriff auf diese APIs nötig, aber möglich 57 Beispiele 58 29

30 Vererbungsstrategie 59 Vererbungshierarchie SingleTable Diese Strategie ist in der Regel performanter, da es niemals einen Join braucht um alle Informationen zu erhalten. Der Nachteil ist, dass sehr viele NULL-Felder entstehen und die Tabelle somit bei grosen Objekten sehr breit wird, also sehr viele ungenutze Spalten entstehen

31 Vererbungshierarchie joined Durch diese Lösungen entstehen die am meisten normalisierten Tabellen, mit sehr wenig Redundanz. Entsehen im Verlaufe der Zeit mehr Subklassen erfordert dies keine grossen Änderungen am Datenbankschema, vielmehr mussen nur entsprechende Tabellen hinzugefugt werden. Nachteile entstehen hier jedoch durch die Joins die notig sind um alle Informationen zu einer erbenden Klasse zu bekommen. Wird jedoch hauptsachlich auf die Basisklasse zugegriffen oder die Basisklassenelemente werden nur bei Bedarf ( Lazy Loading, siehe S. 29) aus der Datenbank geladen, ist diese Methode sehr schnell, da so nur auf eine einzelne Tabelle zugegriffen werden muss und unnotige Spalten in den Tabellen vermieden werden. 61 Vererbungshierarchie Table per Class Zugriffe auf Instanzen einzelner Klassen sind sehr effizient, da jegliche Joins vermieden werden. Auch wenn neue Subklassen erstellt werden, muss am bestehenden Schema nichts verandert werden, sondern es muss lediglich eine neue Tabelle angelegt werden. Ein groser Nachteil entsteht jedoch, wenn man nicht weiss, in welcher Subklasse die Instanz zu finden ist, beispielsweise wenn man bei einem Angestellten nach Vor- und Nachnamen sucht. Dort muss jede Subklassentabelle nach diesen Attributen durchsucht werden, was in einer Vielzahl verschiedener SELECT- Statements auf viele verschieden Tabellen mündet

32 Eager Loading vs. Lazy Loading Lazy Wenn Attribute selten in der Anwendung verwendet werden sorgt dafür dass die Daten nicht aus der DB geladen werden Erst beim expliziten Zugriff findet der SQL Fetch statt Vorteil: Weniger Load bei Default Zugriff Nachteil: Zusätzliche SQLs wenn falsch konfiguriert Lazy Relationships Bei Referenzen zwischen Objekten Achtung: Hoher Performance-Impact Notwendigkeit für Enhacement oder Weaving Bsp: Runtime: -javaagent:/path/to/openjpa jar Build Time: java org.apache.openjpa.enhance.pcenhancer Stock.java 63 Dirty Checking Verhindert unnotige Datenbank-Schreibaktionen Zu persistierendes Objekt wird vorher auf Veränderungen untersucht Veränderte Attribute werden Attribute markiert Enhancement, Weaving Über Transiente Attribute kann ein Persitieren komplett verhindert werden 64 32

33 Native und NamedQueries Native Query (.createnativequery() ). Schreiben von eigenen SQL queries Z.b. datenbankspezifische Funktionen Named Queries(.createNamedQuery() ) im Vorfeld in einer XML-Datei spezifiziert Rückgabetyp vornherein bekannt Zur Laufzeit abgerufen 65 Robuste Java Anwendungen sollten SQL Exception Handling beinhalten Deadlocks oder Timeouts können meist nie gänzlich ausgeschlossen werden. Derartige Fehler sind jedoch oftmals nur vorrübergehend (transient) und sind bei abermaliger Ausführung eines SQL Statements hinfällig. Anstatt Endbenutzer mit (evtl. unnötigen) SQL Fehlermeldungen zu konfrontieren, sollte die Anwendung daher eine begrenzte Recovery/Retry Logik enthalten. DB2 for z/os 66 33

34 Codebeispiel für Retrylogik im Fall von Deadlocks oder Timeouts int sqlretrycount = 1; int sqlmaxretry = 5;... //Wiederholen bis Ausführung erfolgreich oder Limit erreicht while (0 < sqlretrycount && sqlretrycount < sqlmaxretry) { try { //Ausführen der SQL Statements resultset = preparedstmt.executequery(); sqlretrycount = 0; } catch (SQLException sqlexcept){ //Prüfen ob Deadlock oder Timeout vorliegt errcode = sqlexcept.geterrorcode(); if (errcode == -911 errcode == -913) { sqlretrycount++; try { //Warten über zufällige Zeitspanne Thread.sleep(maxretry*random.nextInt(10)); } catch (InterruptedException interexcept) { interexcept.printstacktrace(); } 67 Roundtrips zur Datenbank und Netztraffic vermeiden Verwenden von Stored Procedures, User-Defined Functions sowie DB2 Functions um Netzwerkverkehr zu reduzieren, unnötige Datenbankoperationen zu vermeiden aber auch Geschäftslogik und häufig genutzte Funktionalitäten zentral zu verwalten. Nutzen von SQL Funktionalitäten wie z.b. INTERSECT, EXCEPT, UNION, MERGE Statement, etc. um requestierte Datenmenge zu reduzieren. Statement Batching für INSERTs und UPDATEs. Multi-row Fetch für SELECTs. DB2 for z/os 69 34

35 Lock-Haltezeiten durch Berücksichtigung in Anwendungslogik reduzieren Zeitnahe Commits beim Erreichen von Konsistenzpunkten, auch in Read- Only Anwendungen. Entsprechend auch zeitnahe ROLLBACKs beim Feststellen von SQL Fehlern innerhalb der Anwendung. Zugriff auf kritische Ressourcen möglichst spät im Verlauf einer Transaktion. Restriktive Statements (z.b. UPDATEs) möglichst am Ende einer Transaktion. Cursor bei SQLJ möglichst zeitnah wieder schließen. Bei JDBC entsprechend ResultSets und Connections wenn nicht benötigt schließen. Kein User Input während einer Transaktion, sämtliche Daten vorher sammeln. DB2 for z/os 70 Weitere Best Practices in der Zusammenfassung Assoziationen zwischen Java Objekten einfach halten (da z.b. eine M:N Assoziation 3-way Joins erfordern). Kein SELECT * und kein INSERT INTO T _ VALUES (ohne Column list). Wie werden Connections validiert? Select count(*) from sysibm.sysdummy1 Select count(*) from sysibm.sysdummy1 where 1=0 isdb2alive oder Connection.isValid(int timeout) mit JDBC 4.0 SQL Authid Program Stmt Stmt SQL Average Total No Name No Type Execs Fetches CPU Cost > > USER1 DDF 1 D-CURSOR : USER1 DDF 2 D-CURSOR : DB2 for z/os 71 35

36 Agendaübersicht Java Zugriffsmöglichkeiten Anwendungsentwicklung mit JDBC und SQLJ Persistenzframeworks DB2 und Application Server Systemadministration 72 Breites Spektrum an unterschiedlichsten Application Servern Eigenentwicklung Open Source Komplexere Umgebung Einfache Handhabung Selbsterklärende Konfiguration Großteils manuelle Einrichtung Umfassende Zusatzfeatures Schlanker Funktionsumfang DB2 for z/os 73 36

37 JDBC Provider / Driver einrichten in der WebSphere Admin Konsole Spezifizieren der entsprechenden Driver *.jar files und *.license files. db2jcc.jar db2jcc_license_cisuz.jar Dieser Provider kann in der Folge von verschiedenen Data Sources wiederverwendet werden. 74 Data Source Aufsetzen im WebSphere und Properties Hierarchien Angeben des JDBC Providers, Username, PW, Connection URL Im Nachgang dann Möglichkeit Data Source und JDBC Properties zu setzen: Custom Properties WebSphere spezifische Properties Connection Pool Properties 75 37

38 Zentrales JDBC Tracing mit WebSphere Custom Data Source Properties 76 Weitere wichtige DB2 Data Source Custom Properties in WebSphere Default Isolation Level für die Transaktionen einer Connection mit möglichen Werten: 1 (READ UNCOMMITTED) 2 (READ COMMITTED) 4 (REPEATABLE READ) 8 (SERIALIZABLE) keepdynamic legt fest ob DB2 z/os dynamische SQL statements nach einem Commit im Cache behält (1=Ja, 2=Nein)

39 WebSphere bietet umfassende Connection Pooling Funktionalitäten Pool von JDBC Connections zur Vermeidung des kostspieligen Overheads für Connection Verwaltung (create & destroy). Pro Data Source jeweils eigener Connection Pool. Bei Verteilung in Application Server Cluster hat jeder Servant seine eigene Connection Pool Instanz. DB2ConnectionPoolDataSource DB2PooledConnection Connection JDBC Driver stellt nur das Gerüst, WebSphere selbst stellt die eigentliche Implementierung. Gefahr von Connection Deadlocks bei Anwendungen mit mehr als 1 Connection gleichzeitig. 78 WebSphere Connection Pooling Architekturüberblick WebSphere Application Server JVM DB2 Universal Driver JDBC/SQLJ Anwendung Resource Adapter JCA Connection Manager Logische Verbindung 1 Logische Verbindung 2 Logische Verbindung 3 Transport 1 Transport 2 CF DB Connection Pool Disconnect bei Commit oder Rollback Es sollte stets der einer Anwendung am nächsten liegendste Connection Pool verwendet werden. Zudem sollte für größtmögliche Verfügbarkeit Sysplex Workload Balancing aktiviert sein. Pooled Connections zur DB2 for z/os Data Sharing Group 79 39

40 Connection Pooling wird konfiguriert über die WebSphere Admin Konsole Defaultwerte Erläuterung der Parameter: Connection Timeout: Wie lange darf ein Connection Request an den Pool höchstens dauern. Reap Time: In welchen Zeitabständen wird der Pool bereinigt. Unused Timeout: Wie lange verbleibt eine ungenutzte Connection im Pool. Aged Timeout: Wie lange bleibt eine aktive Connection in Verwendung bevor sie recycled wird. Purge Policy: Wie wird im Fall einer fehlgeschlagenen Verbindung vorgegangen. 80 Performance Monitoring Infrastructure für WebSphere Connection Pools JDBC Connection Pool Counter werden verwendet um die Leistungsfähigkeit der entsprechenden Data Sources zu überwachen. Die Daten können in der WebSphere Admin Konsole graphisch aufbereitet vom Peformance Viewer angezeigt werden. Basierend auf den Monitoring-Daten lassen sich in der Folge die Connection Pool Parameter oder aber die Anwendung selbst (Connectionauf-/abbau) optimieren

41 Die Konzepte Trusted Context und Roles bieten mehr Sicherheit Ein spezifischer WebSphere Application Server mit bestimmten Usern darf auf DB2 zugreifen. Die Rechte der User werden über vordefinierte Rollen bestimmt. DB2 Server CREATE ROLE WASADMIN; GRANT DBADM... TO ROLE WASADMIN; CREATE ROLE WASACCESS; GRANT SELECT on T1 TO ROLE WASACCESS; CREATE TRUSTED CONTEXT WAS1... USING SYSTEM AUTHID WASPROD DEFAULT ROLE WASADMIN WITHOUT ROLE AS OBJECT OWNER ENABLE ATTRIBUTES (ADDRESS ENCRYPTION... SERVAUTH...) WITH USE FOR PETER ROLE WASACCESS, CHRISTIAN; Aufbau einer Trusted Connection. Bei Fehlschlag: SQLCODE untrusted connection WebSphere Application Server propagateclientidentityusingtrustedcontext WASPROD Registry name IP Address PETER CHRISTIAN Client User-Ids pooldatasource.getdb2trustedpooledconnection 82 Agendaübersicht Java Zugriffsmöglichkeiten Anwendungsentwicklung mit JDBC und SQLJ Persistenzframeworks DB2 und Application Server Systemadministration 83 41

42 Antwortzeiten der Anwendung sind schlecht? Wo liegt das Problem? Was ist zu tun? Wo soll ich starten? 84 Problemfelder bei großen Java Anwendungen Oftmals liegt der Focus rein auf der Anwendungslogik und weniger auf Datenbankthemen Einsatz von 3rd Party Frameworks und diversen Layern führt zu komplexem DB Design (OO meats relationally) Unüberaschaubare Menge an DB2 Objekten Unmengen an SQL Statements (Langläufer, Komplexität) Lange UOW s, Timeouts, Deadlocks Lesen von Unmengen an Daten DB2 Performancefeatures sind nicht bekannt oder werden wegen Portabilität nicht genutzt Aufgrund kurzer Releasezyklen wird wenig getestet und wenig Kapazitätsplanung betrieben 85 42

43 Herangehensweise Proaktiv Handeln Kapazitätsmanagement Aufsetzen von Performance Baseline durch kontinuierliches Performance Monitoring Abstimmung während der Entwicklung Problemlösung Hinterfragen der Probleme! Gibt es Vergleichsdaten? Kontinuierliches Monitoring? Wurde die Anwendung geändert? Was wurde im System / HW / DB2 geändert? Eingrenzen der Probleme Anwendung, Middleware, Connectivity, Datenbank End-to-end Monitoring? JDBC Driver Funktionalität Monitoring und Analyse Anwendungstrace JDBC Trace Netzwerktrace DB2 Statistiken und Accounting Änderungen 86 Tracing im JDBC und SQLJ Treiber Properties tracelevel Detaillierte Einstellungsmöglichkeit des Levels tracefile Wohin wird geschrieben? tracedirectory Tracefile pro Connection Kann dynamisch ein und ausgeschaltet werden Hilfreich zur Auswertung der Connection, Methoden und DRDA Flow called FKEY FROM WRKTB01 WHERE (FKEY >=?) OPTIMIZE FOR 1 ROW ) called () returned (1, 400) called () called TRACE_RESULT_SET_META_DATA set meta data for statement of result set columns:

44 Rudimentäres End to end Monitoring ((DB2Connection)conn).getDB2SystemMonitor(); monitor.enable(true); monitor.start(com.ibm.db2.jcc.db2systemmonitor.reset_times); monitor.stop(); monitor.getservertime() monitor.getnetworkiotime() monitor.getcoredrivertime() monitor.getapplicationtime() Java App. Univ. Driver SQLJ/JDBC DB2 Server preparestatement/ executeupdate executeupdate executeupdate 88 IBM Performance Expert Extended Insight Feature 89 44

45 DB2 und SMF Auswertung von SMF Daten Zum Beispiel Tivoli Omegamon XE for DB2 Performance Expert 90 DB2 Statistics SMF 100 Analyse über das DB2 Subsystem Für Type 4 auch DDF Block überprüfen, bei JDBC, dynamic SQL überprüfen GLOBAL DDF ACTIVITY QUANTITY DBAT QUEUED-MAXIMUM ACTIVE 0.00 CONV.DEALLOC-MAX.CONNECTED 0.00 CUR TYPE 1 INACTIVE DBATS 0.00 CUR TYPE 2 INACTIVE DBATS TYPE 2 INACTIVE DBATS HWM CURRENT ACTIVE DBATS ACTIVE DBATS HWM TOTAL DBATS HWM CURRENT DBATS NOT IN USE 6.39 DBATS NOT IN USE HWM DBATS CREATED 0.00 POOL DBATS REUSED DYNAMIC SQL STMT QUANTITY PREPARE REQUESTS FULL PREPARES 1.37 SHORT PREPARES GLOBAL CACHE HIT RATIO (%) DRDA REMOTE LOCS SENT RECEIVED TRANSACTIONS CONVERSATIONS CONVERSATIONS QUEUED 0.00 SQL STATEMENTS K SINGLE PHASE COMMITS K SINGLE PHASE ROLLBACKS ROWS K 0.00 MESSAGES K K BYTES 703.6M 685.2M BLOCKS 350.4K 0.00 MESSAGES IN BUFFER K 91 45

46 Tivoli Omegamon XE for DB2 Performance Expert 92 DB2 Accounting SMF 101 Informationen über die Anwendung Beeinflussende ZPARMs Wann werden Accounting Records geschrieben? Thread wird abgebaut Type 4 Thread geht inaktiv (CMTSTAT=INACTIVE) COMMIT Type 2 COMMIT nur wenn PQ95284 applied und JDBC Property accountinginterval=commit 93 46

47 DB2 Accounting Class 2 Zeit (in DB2) sollte gleich sein (T2 vs. T4) Zeit im DB2 T2: Cl.2 non-nested ET + Cl.1 SP, UDF, trigger ET T4: Cl.2 non-nested ET + Cl.1 SP, UDF, trigger ET + non-nested (Cl.1 CPU Cl.2 CPU) Zeit außerhalb DB2 Total Cl.1 ET Zeit im DB2 (vorherige Berechnung) enthält Idle Time für thread reuse T2 CPU für Anwendung: non-nested (Cl.1 CPU Cl.2 CPU) AVERAGE APPL(CL.1) DB2 (CL.2) ELAPSED TIME 7: NONNESTED 7: STORED PROC UDF TRIGGER CPU TIME AGENT NONNESTED STORED PRC UDF TRIGGER PAR.TASKS SUSPEND TIME N/A AGENT N/A PAR.TASKS N/A DB2 Performance SMF 102 Details über SQL Statements, Pläne, Packages, Overhead für DB2 Subsystem Sehr granular, große Datenmengen 96 47

48 Tivoli Omegamon XE for DB2 Performance Expert 97 Tivoli Omegamon XE for DB2 Performance Expert 99 48

49 Oftmals gestellte Fragen Welches sind die teuersten Statements? Priorisierung nach CPU, I/O Wieviel Workload kann eingespart werden? Welche Statements werden wie oft ausgeführt? Execution Count Parameter Marker DB2 Sicht vs. Java Sicht Welche Tabellen werden von welchen Statements gelesen/upgedated? Welche Java Packages greifen auf welche DB2 Objekte zu? Mögliches Tooling: Tivoli Omegamon XE for DB2 Performance Expert Optimization Expert, Optimization Service Center Optim purequery Runtime - Outline 100 Analyse des Dynamic Statement Cache Cached Statements, sorted by descending accumulated CPU time

50 Optimization Expert Index Advisor Index Recommendation 102 purequery Outline im Optim Development Studio Abschätzen der Auswirkungen von Java Anwendungen auf DB2 Database objects Java source code DB2 packages

DB2 & Anwendungsentwicklung

DB2 & Anwendungsentwicklung DB2 & Anwendungsentwicklung in Java Christian Daser, Technischer Vertrieb Information Management for System z 16.09.2009 2009 IBM Corporation Agendaübersicht Java Zugriffsmöglichkeiten Anwendungsentwicklung

Mehr

DB-Programmierung. Lehr- und Forschungseinheit Datenbanken und Informationssysteme 1. Ziele. DB2 Zugriff mit Java selbst programmieren

DB-Programmierung. Lehr- und Forschungseinheit Datenbanken und Informationssysteme 1. Ziele. DB2 Zugriff mit Java selbst programmieren DB-Programmierung Lehr- und Forschungseinheit Datenbanken und Informationssysteme 1 Ziele static SQL verstehen Build-Prozess / Art des Datenzugriffs Host-Variablen Vor- / Nachteile dynamic SQL verstehen

Mehr

Werkzeuge für Datenbank Handwerker: IBM Data Studio und IBM Optim QWT

Werkzeuge für Datenbank Handwerker: IBM Data Studio und IBM Optim QWT Werkzeuge für Datenbank Handwerker: IBM Data Studio und IBM Optim QWT Neue Technologien effizient nutzen Ehningen, 3. Juli 2014 Rodney Krick rk@aformatik.de aformatik Training & Consulting GmbH & Co. KG

Mehr

Datenbankanwendungen (JDBC)

Datenbankanwendungen (JDBC) Datenbankanwendungen (JDBC) Hierarchie: Connection Transaction Statement Connection Aufbau (klassisch): Registrierung des JDBC Driver beim DriverManager: Class.forName(JDBC Driver); Eigentlicher Verbindungsaufbau

Mehr

Objekt-relationales Mapping und Performance-Tuning

Objekt-relationales Mapping und Performance-Tuning Objekt-relationales Mapping und Performance-Tuning Thomas Krüger tkrueger@vanatec.com Agenda Wege um Daten zu lesen Wege um Daten zu modellieren Wege um Datenbanken effizient zu nutzen 2 2 Wege, Daten

Mehr

ANDREAS PROUZA. Wien, 2015-03-27. andreaspr@aon.at andreas@prouza.at. http://www.prouza.at

ANDREAS PROUZA. Wien, 2015-03-27. andreaspr@aon.at andreas@prouza.at. http://www.prouza.at DB2 & SQL E I N F Ü H R U N G T U N I N G O P T I M I E R U N G S E C R E T S ANDREAS PROUZA andreaspr@aon.at andreas@prouza.at http://www.prouza.at Wien, 2015-03-27 1 Inhaltsverzeichnis 1 Inhaltsverzeichnis...

Mehr

Kapitel DB:VI (Fortsetzung)

Kapitel DB:VI (Fortsetzung) Kapitel DB:VI (Fortsetzung) VI. Die relationale Datenbanksprache SQL Einführung SQL als Datenanfragesprache SQL als Datendefinitionssprache SQL als Datenmanipulationssprache Sichten SQL vom Programm aus

Mehr

Entwicklung von Web-Anwendungen auf JAVA EE Basis

Entwicklung von Web-Anwendungen auf JAVA EE Basis Entwicklung von Web-Anwendungen auf JAVA EE Basis Java Enterprise Edition - Überblick Prof. Dr. Bernhard Schiefer Inhalt der Veranstaltung Überblick Java EE JDBC, JPA, JNDI Servlets, Java Server Pages

Mehr

Softwareentwicklung mit Enterprise JAVA Beans

Softwareentwicklung mit Enterprise JAVA Beans Softwareentwicklung mit Enterprise JAVA Beans Java Enterprise Edition - Überblick Was ist J2EE Java EE? Zunächst mal: Eine Menge von Spezifikationen und Regeln. April 1997: SUN initiiert die Entwicklung

Mehr

(*) IBM DB2 V8 for z/os. DB2 Versionen. (*) ist eingetragenes Warenzeichen der IBM International Business Machines Inc. Feb 2005 1

(*) IBM DB2 V8 for z/os. DB2 Versionen. (*) ist eingetragenes Warenzeichen der IBM International Business Machines Inc. Feb 2005 1 (*) IBM DB2 V8 for z/os DB2 Versionen (*) ist eingetragenes Warenzeichen der IBM International Business Machines Inc. 1 Neuerungen der DB2 UDB Version 7 für z/os (Release-Datum: ca. Juli 2001): Universelle

Mehr

Transaktionen in der Praxis. Dr. Karsten Tolle

Transaktionen in der Praxis. Dr. Karsten Tolle Transaktionen in der Praxis Dr. Karsten Tolle Praxisbeispiel in Java Connection con = null; try { con = DriverManager.getConnection("jdbc:db2:sample"); } catch (Exception e) { e.printstacktrace(); } con.setautocommit(false);

Mehr

Java und Datenbanksysteme Datenbankanbindung mit JDBC

Java und Datenbanksysteme Datenbankanbindung mit JDBC Java und Datenbanksysteme Datenbankanbindung mit JDBC 30.05.2001 Stefan Niederhauser sn@atelier-w.ch 1-Einführung Datenbanksysteme Java und Datenbanken: JDBC Geschichte der JDBC-Versionen Vergleich von

Mehr

Datenbanksysteme. Programmieren von Datenbankzugriffen mit JDBC. Burkhardt Renz. Fachbereich MNI Technische Hochschule Mittelhessen

Datenbanksysteme. Programmieren von Datenbankzugriffen mit JDBC. Burkhardt Renz. Fachbereich MNI Technische Hochschule Mittelhessen Programmieren von Datenbankzugriffen mit JDBC Fachbereich MNI Technische Hochschule Mittelhessen Sommersemester 2015 Überblick über das Package java.sql Übersicht Architektur von JDBC Grundstruktur eines

Mehr

DB2 Version 10 Kapitel IT-Sicherheit

DB2 Version 10 Kapitel IT-Sicherheit (*) IBM DB2 for z/os DB2 Version 10 Kapitel IT-Sicherheit (06_DB2V10_itsicherheit.pptx) (*) ist eingetragenes Warenzeichen der IBM International Business Machines Inc. 1 DB2 Version 10 IT Sicherheit DB2

Mehr

Portierung einer DB2/VM-Datenbank nach DB2 unter zlinux 4 Jahre später - Wie würde ich heute vorgehen?

Portierung einer DB2/VM-Datenbank nach DB2 unter zlinux 4 Jahre später - Wie würde ich heute vorgehen? Portierung einer DB2/VM-Datenbank nach DB2 unter zlinux 4 Jahre später - Wie würde ich heute vorgehen? Tipps aus der Praxis zur Anwendungsentwicklung, Migration und Performanceuntersuchung 1 Einleitung

Mehr

DB2 Newsletter Inhalt

DB2 Newsletter Inhalt DB2 Newsletter Inhalt Datenbankdesign Wie groß ist eine Large Tabelle 200811 Anwendung der Datenkomprimierung in DB2 LUW 200808 Macht Table Partitioning Union-All-Views überflüssig? 200807 BCU: Was ist

Mehr

Isolationsstufen für. Dr. Karsten Tolle Dienstag 31. Januar 2012

Isolationsstufen für. Dr. Karsten Tolle Dienstag 31. Januar 2012 Isolationsstufen für Transaktionen / Sicherheit Dr. Karsten Tolle Dienstag 31. Januar 2012 Praxisbeispiel in Java Connection con = null; try { con = DriverManager.getConnection("jdbc:db2:sample"); } catch

Mehr

Übungsaufgabe Transaktion als Middleware

Übungsaufgabe Transaktion als Middleware Übungsaufgabe Transaktion als Middleware und Java Persistence API Client/Server Abstraktes Komponentenmodell Entscheidende Punkte Erweiterung der Invoke-Methode Context-Verwaltung Transaktionsbehandlung

Mehr

.NET-Objekte einfach speichern Michael Braam, Senior Sales Engineer InterSystems GmbH

.NET-Objekte einfach speichern Michael Braam, Senior Sales Engineer InterSystems GmbH Make Applications Faster.NET-Objekte einfach speichern Michael Braam, Senior Sales Engineer InterSystems GmbH Agenda Vorstellung InterSystems Überblick Caché Live Demo InterSystems auf einen Blick 100.000

Mehr

11 Anwendungsprogrammierung

11 Anwendungsprogrammierung 11 11 11.1 Programmiersprachenanbindung 11.2 11.3 183 11 Programmiersprachenanbindung Programmiersprachenanbindung Kopplungsarten: prozedurale oder CALL-Schnittstellen (call level interface) Beispiele:

Mehr

PostgreSQL im praktischen Einsatz. Stefan Schumacher

PostgreSQL im praktischen Einsatz. Stefan Schumacher PostgreSQL im praktischen Einsatz 2. Brandenburger Linux Infotag 2005 Stefan Schumacher , PGP Key http:/// $Header: /home/daten/cvs/postgresql/folien.tex,v 1.11 2005/04/25

Mehr

Performance Tuning mit @enterprise

Performance Tuning mit @enterprise @enterprise Kunden-Forum 2005 Performance Tuning mit @enterprise Herbert Groiss Groiss Informatics GmbH, 2005 Inhalt Datenbank RMI JAVA API HTTP Konfiguration Analyse Groiss Informatics GmbH, 2005 2 Datenbank

Mehr

Java und Datenbanken Ein Überblick

Java und Datenbanken Ein Überblick Java und Datenbanken Ein Überblick Benjamin Lietzau & Philipp Meyer Sommersemester 2011 1 Themenüberblick 29.03.11 - Benjamin Lietzau & Philipp Meyer - Java und Datenbanken 2 Themenüberblick 1. Einführung

Mehr

Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de info@oio.de Version: 2014 Orientation 1.0 in Objects GmbH Der Sprecher Erik Bamberg (OIO) 2 1 s Aufgaben des Cachings Datenbank

Mehr

Integrated Data Management Konzentrieren sie sich auf ihr Business, und nicht auf die Verwaltung ihrer Daten

Integrated Data Management Konzentrieren sie sich auf ihr Business, und nicht auf die Verwaltung ihrer Daten Integrated Data Management Konzentrieren sie sich auf ihr Business, und nicht auf die Verwaltung ihrer Daten Entwurf Data Architect Verwaltung und Umsetzung komplexer Datenmodelle Graphische Darstellung

Mehr

Datenbankzugriff mit JDBC

Datenbankzugriff mit JDBC Java: Kapitel 8 Datenbankzugriff mit JDBC Programmentwicklung WS 2008/2009 Holger Röder holger.roeder@informatik.uni-stuttgart.de Überblick über Kapitel 8 Einführung in SQL und JDBC Verbindung zur Datenbank

Mehr

Einführung in die Informatik II

Einführung in die Informatik II Einführung in die Informatik II Die Structured Query Language SQL Prof. Dr. Nikolaus Wulff SQL Das E/R-Modell lässt sich eins zu eins auf ein Tabellenschema abbilden. Benötigt wird eine Syntax, um Tabellen

Mehr

Verbinde die Welten. Von Oracle auf MySQL zugreifen

Verbinde die Welten. Von Oracle auf MySQL zugreifen Verbinde die Welten Von Oracle auf MySQL zugreifen Ronny Fauth DB Systel GmbH Zertifizierter MySQL 5.0 DBA Zertifizierter Oracle 11 DBA Einleitung: - keine Allroundlösungen mehr - Verbindungen zwischen

Mehr

WHERE Klausel Generierung mit.net und Oracle. Aus unserer Projekterfahrung und Architektur-Kurs

WHERE Klausel Generierung mit.net und Oracle. Aus unserer Projekterfahrung und Architektur-Kurs Betrifft Art der Info Quelle WHERE Klausel Generierung mit.net und Oracle Technical Info Aus unserer Projekterfahrung und Architektur-Kurs Where ist the WHERE? Der Artikel untersucht die Möglichkeiten,

Mehr

Datenbank Anbindung. Arthur Zaczek. Nov 2014

Datenbank Anbindung. Arthur Zaczek. Nov 2014 Arthur Zaczek Nov 2014 1 Datenbank Anbindung 1.1 Übersicht Datenbankanbindung mit JDBC und ADO.NET. 1.2.NET ADO.NET Kein Treiberkonzept. Jede Datenbank hat eigenes Set an Klassen. Meistens wird für nur

Mehr

Enterprise Java Beans Einführung

Enterprise Java Beans Einführung Enterprise Java Beans Einführung Vorlesung 8 Ralf Gitzel ralf_gitzel@hotmail.de 1 Themenübersicht Ralf Gitzel ralf_gitzel@hotmail.de 2 Übersicht EJBs im JEE Umfeld Verschiedene Typen von EJBs Von der Javaklasse

Mehr

Einsatz von Applikationsservern. Untersucht am Beispiel des Sybase Enterprise Application Server

Einsatz von Applikationsservern. Untersucht am Beispiel des Sybase Enterprise Application Server Einsatz von Applikationsservern Untersucht am Beispiel des Sybase Enterprise Application Server Architektur von Datenbanksystemen Client / Server Modell (2 Schichten Modell) Benutzerschnittstelle Präsentationslogik

Mehr

Einführung in PHP 5 und IBM DB2

Einführung in PHP 5 und IBM DB2 Einführung in PHP 5 und IBM DB2 Webapplikationen mit PHP 5.2 und IBM DB2 PHP Conference 2006-08.11.2006 Themenübersicht PHP 5.2 und Datenbanken PDO Warum IBM DB2? PHP und IBM DB2 Installation / Konfiguration

Mehr

Inhaltsverzeichnis. Enterprise Java im Überblick. Technologien der Java2 Enterprise Edition

Inhaltsverzeichnis. Enterprise Java im Überblick. Technologien der Java2 Enterprise Edition Inhaltsverzeichnis Vorwort 13 I Enterprise Java im Überblick 1 Bedeutung von Enterprise Java und IBM WebSphere 21 1.1 Enterprise Java 23 1.1.1 Anforderungen 23 1.1.2 E-Business 30 1.1.3 Java 36 1.2 IBM

Mehr

Hibernate. Vortragender : Nabil Janah Kursleiter : Prof. Dr. Björn Dreher Lehrveranstaltung : Komponenten-Architekturen. Nabil janah 1 Hibernate

Hibernate. Vortragender : Nabil Janah Kursleiter : Prof. Dr. Björn Dreher Lehrveranstaltung : Komponenten-Architekturen. Nabil janah 1 Hibernate Hibernate Vortragender : Nabil Janah Kursleiter : Prof. Dr. Björn Dreher Lehrveranstaltung : Komponenten-Architekturen Nabil janah 1 Hibernate Inhalt Hibernate allgemeines Vorteile von Hibernate Hibernate-Architektur

Mehr

Erfahrungen und Erkenntnisse. Klaus Richarz, HBT GmbH

Erfahrungen und Erkenntnisse. Klaus Richarz, HBT GmbH Erfahrungen und Erkenntnisse Klaus Richarz, HBT GmbH Java Enterprise Edition 5.0 JBoss Seam Konsequenzen für Realisierung Qualitätssicherung Build & Deployment Fazit & Empfehlungen JBoss Seam in Projekten,

Mehr

DB2 SQL, der Systemkatalog & Aktive Datenbanken

DB2 SQL, der Systemkatalog & Aktive Datenbanken DB2 SQL, der Systemkatalog & Aktive Datenbanken Lehr- und Forschungseinheit Datenbanken und Informationssysteme 1 Ziele Auf DB2 Datenbanken zugreifen DB2 Datenbanken benutzen Abfragen ausführen Den Systemkatalog

Mehr

Transaktionsverwaltung

Transaktionsverwaltung Transaktionsverwaltung VU Datenbanksysteme vom 21.10. 2015 Reinhard Pichler Arbeitsbereich Datenbanken und Artificial Intelligence Institut für Informationssysteme Technische Universität Wien Transaktionsverwaltung

Mehr

Übungen zum Workshop Objektrelationales Mapping mit JPA 2.0

Übungen zum Workshop Objektrelationales Mapping mit JPA 2.0 Übungen zum Workshop Objektrelationales Mapping mit JPA 2.0 Alle Unterlagen und Übungen sind in folgenden Google Code Project abgelegt und frei zugänglich: https://code.google.com/p/jpaworkshop/ Aktualisierung

Mehr

SQL Server 2014 Roadshow

SQL Server 2014 Roadshow 1 SQL Server 2014 Roadshow Kursleitung: Dieter Rüetschi (ruetschi@ability-solutions.ch) 2 Inhalt Allgemeine Informationen Buffer Pool Extension Column Store Index In Memory OLTP Scripting Security SQL

Mehr

Hochschule Karlsruhe Technik und Wirtschaft- 10.7.2013. Anhänge: Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Prof. Schmidt.

Hochschule Karlsruhe Technik und Wirtschaft- 10.7.2013. Anhänge: Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Prof. Schmidt. Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Datenbanken und Informationssysteme II Szenario: Projektverwaltung. Es gibt Projekte, Projektleiter, Mitarbeiter und ihre Zuordnung zu Projekten.

Mehr

Folgendes PL/SQL Codefragment zeigt das grundlegende Statement für diesen Test: Java. http://www.trivadis.com/images/javaperf_tcm16-7133.

Folgendes PL/SQL Codefragment zeigt das grundlegende Statement für diesen Test: Java. http://www.trivadis.com/images/javaperf_tcm16-7133. Page 1 of 7 Betrifft: Java oder PL/SQL? Art der Info: Technische Background Info Autor: Guido Schmutz (guido.schmutz@trivadis.com) Quelle: Aus unserer Schulungs- und Beratungstätigkeit Mit Oracle8.1 besteht

Mehr

Cassandra Query Language (CQL)

Cassandra Query Language (CQL) Cassandra Query Language (CQL) Seminar: NoSQL Wintersemester 2013/2014 Cassandra Zwischenpräsentation 1 Gliederung Basic facts Datentypen DDL/DML ähnlich zu SQL Besonderheiten Basic facts CQL kurz für

Mehr

ORM & OLAP. Object-oriented Enterprise Application Programming Model for In-Memory Databases. Sebastian Oergel

ORM & OLAP. Object-oriented Enterprise Application Programming Model for In-Memory Databases. Sebastian Oergel ORM & OLAP Object-oriented Enterprise Application Programming Model for In-Memory Databases Sebastian Oergel Probleme 2 Datenbanken sind elementar für Business-Anwendungen Gängiges Datenbankparadigma:

Mehr

Java Forum Stuttgart 2013 Kai.Spichale@adesso.de twitter.com/kspichale spichale.blogspot.de

Java Forum Stuttgart 2013 Kai.Spichale@adesso.de twitter.com/kspichale spichale.blogspot.de NoSQL für Java-Entwickler Java Forum Stuttgart 2013 Kai.Spichale@adesso.de twitter.com/kspichale spichale.blogspot.de 23.06.2013 Agenda Datengröße Key-value Stores 1. Wide Column 2. Cassandra Document

Mehr

CLR-Integration im SQL-Server. Alexander Karl

CLR-Integration im SQL-Server. Alexander Karl CLR-Integration im SQL-Server Alexander Karl seit der Version SQL-Server 2005 können Programmierungen zusätzlich zum T-SQL auch mit.net-sprachen erfolgen. Data Types Stored Procedures Triggers Functions

Mehr

Caching. Hintergründe, Patterns &" Best Practices" für Business Anwendungen

Caching. Hintergründe, Patterns & Best Practices für Business Anwendungen Caching Hintergründe, Patterns &" Best Practices" für Business Anwendungen Michael Plöd" Senacor Technologies AG @bitboss Business-Anwendung!= Twitter / Facebook & co. " / kæʃ /" bezeichnet in der EDV

Mehr

Das Interceptor Muster

Das Interceptor Muster Das Interceptor Muster Implementierung des Interceptor Musters basierend auf OSGi and Friends Benjamin Friedrich Hochschule für Technik und Wirtschaft des Saarlandes Praktische Informatik - Entwurfsmuster

Mehr

Enterprise JavaBeans Überblick: 17. Enterprise Information System Schicht

Enterprise JavaBeans Überblick: 17. Enterprise Information System Schicht Enterprise JavaBeans Überblick 1. Überblick Komponententechnologien 2. Einführung 3. Enterprise JavaBeans Architektur 4. Ressourcen Management und Primäre Services 5. Java Persistence: Entity Manager 6.

Mehr

MySQL Performance Tuning für Entwickler

MySQL Performance Tuning für Entwickler MySQL Performance Tuning für Entwickler Cebit 2015, Hannover Oli Sennhauser Senior MySQL Consultant, FromDual GmbH oli.sennhauser@fromdual.com 1 / 18 FromDual GmbH Support Beratung remote-dba Schulung

Mehr

Oracle 10g und SQL Server 2005 ein Vergleich. Thomas Wächtler 39221

Oracle 10g und SQL Server 2005 ein Vergleich. Thomas Wächtler 39221 Oracle 10g und SQL Server 2005 ein Vergleich Thomas Wächtler 39221 Inhalt 1. Einführung 2. Architektur SQL Server 2005 1. SQLOS 2. Relational Engine 3. Protocol Layer 3. Services 1. Replication 2. Reporting

Mehr

Datenbankadministration

Datenbankadministration Datenbankadministration 10. Monitoring AG DBIS University of Kaiserslautern, Germany Karsten Schmidt kschmidt@informatik.uni-kl.de (Vorlage TU-Dresden) Wintersemester 2008/2009 Momentaufnahmen Momentaufnahmen

Mehr

Hier folgt eine kurze Aufstellung über die verwendete Architekur. Die Angaben sind ohne Gewähr für Vollständigkeit oder vollständige Richtigkeit.

Hier folgt eine kurze Aufstellung über die verwendete Architekur. Die Angaben sind ohne Gewähr für Vollständigkeit oder vollständige Richtigkeit. 1. ODBC 1.1 Problemstellung Die Informationen über die Microsoft SQL Server Datenbanken sind zur Zeit nicht auf der TIMD Website verfügbar. Der Grund ist, dass kein Interface zur Abfrage der benötigten

Mehr

Prof. Dr.-Ing. Wolfgang Lehner. Externe User Defined Functions und externe Stored Procedures

Prof. Dr.-Ing. Wolfgang Lehner. Externe User Defined Functions und externe Stored Procedures Prof. Dr.-Ing. Wolfgang Lehner 7. Externe User Defined Functions und externe Stored Procedures Roadmap intern intern/extern extern SQL UDF SQL SP XQUERY Trigger ext. UDF ext. SP SQLJ Embedded SQL JDBC

Mehr

Zeichensatzkonvertierung in Oracle-DB. moving objects GmbH Martin Busik Hamburg - Mai 2003 www.moving-objects.de

Zeichensatzkonvertierung in Oracle-DB. moving objects GmbH Martin Busik Hamburg - Mai 2003 www.moving-objects.de Zeichensatzkonvertierung in Oracle-DB moving objects GmbH Martin Busik Hamburg - Mai 2003 www.moving-objects.de moving objects GmbH? Beratung Anforderungserhebung Geschäftprozessanalyse Coaching? Schulung

Mehr

Einstieg in das SQL- und Datenbanktuning 14.01.2009. Loblied auf den Tabellen-Index!

Einstieg in das SQL- und Datenbanktuning 14.01.2009. Loblied auf den Tabellen-Index! 1/40 PHP-User-Group Stuttgart 14.01.2009 Warum Datenbanken einen Hals bekommen und was sich dagegen tun lässt. Tuning und Performancesteigerung ohne zusätzliche Hardware. Ein. Loblied auf den Tabellen-Index!

Mehr

Web-Anwendungsentwicklung mit dem Delivery Server

Web-Anwendungsentwicklung mit dem Delivery Server Web-Anwendungsentwicklung mit dem Delivery Server Java-Framework auf Basis der Open API Bernfried Howe, Webertise Consulting GmbH WEBertise Consulting Dipl. Informatiker (Wirtschaftsinformatik) 2001-2010

Mehr

Employment and Salary Verification in the Internet (PA-PA-US)

Employment and Salary Verification in the Internet (PA-PA-US) Employment and Salary Verification in the Internet (PA-PA-US) HELP.PYUS Release 4.6C Employment and Salary Verification in the Internet (PA-PA-US SAP AG Copyright Copyright 2001 SAP AG. Alle Rechte vorbehalten.

Mehr

Übung: Data Warehousing und Data Mining

Übung: Data Warehousing und Data Mining Übung: Data Warehousing und Data Mining Sebastian Wandelt 20. Oktober 2011 wandelt@informatik.hu-berlin.de Überblick Organisatorisches Kurze Einführung JDBC PL/SQL 1. Aufgabenblatt Ablauf des Semesters

Mehr

Built in Function. BIF Compatibility. Eine anonymisierte Kundenpräsentation. von Siegfried Fürst SOFTWARE ENGINEERING GmbH

Built in Function. BIF Compatibility. Eine anonymisierte Kundenpräsentation. von Siegfried Fürst SOFTWARE ENGINEERING GmbH GIVE and TAKE Programme Inspiring experiences Built in Function BIF Compatibility Eine anonymisierte Kundenpräsentation von Siegfried Fürst SOFTWARE ENGINEERING GmbH 2015 SOFTWARE ENGINEERING GMBH and

Mehr

NHibernate vs. Entity Framework

NHibernate vs. Entity Framework Manfred Steyer CAMPUS 02 softwarearchitekt.at NHibernate vs. Entity Framework Ziele NHibernate und Entity Framework sowie deren Unterschiede kennen lernen 1 Agenda Kriterien Beispiel mit EF Beispiel mit

Mehr

Archive / Backup System für OpenVMS

Archive / Backup System für OpenVMS Archive / Backup System für OpenVMS DECUS Symposium 2002 Bonn Vortrag-Nr. 3C04 Günther Fröhlin Compaq Computer Corporation Colorado Springs, USA 1 Highlights V4.0 Auslieferung Januar 2002 Hauptversion

Mehr

UNIVERSITÄT LEIPZIG. Mainframe Internet Integration SS2013. Java Connection Architecture Teil 4 JCA

UNIVERSITÄT LEIPZIG. Mainframe Internet Integration SS2013. Java Connection Architecture Teil 4 JCA UNIVERSITÄT LEIPZIG Mainframe Internet Integration Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth SS2013 Java Connection Architecture Teil 4 JCA el0100 copyright W. G. Spruth, wgs 04-09 Enterprise

Mehr

NoSQL mit Postgres 15. Juni 2015

NoSQL mit Postgres 15. Juni 2015 Tag der Datenbanken 15. Juni 2015 Dipl.-Wirt.-Inform. Agenda l Vorstellung l Marktübersicht l Warum PostgreSQL? l Warum NoSQL? l Beispielanwendung Seite: 2 Vorstellung Dipl.-Wirt.-Inform. [1990] Erste

Mehr

Effiziente Anwendungs-Entwicklung mittels Business Software Framework BISON Solution

Effiziente Anwendungs-Entwicklung mittels Business Software Framework BISON Solution Effiziente Anwendungs-Entwicklung mittels Business Software Framework BISON Solution Thomas Seiler Product Manager Technology BISON Schweiz AG Agenda Vergleich - Business Software Framework zu.net Framework

Mehr

Configuration Management mit Verbosy 17.04.2013 OSDC 2013. Eric Lippmann www.netways.de

Configuration Management mit Verbosy 17.04.2013 OSDC 2013. Eric Lippmann www.netways.de Configuration Management mit Verbosy 17.04.2013 OSDC 2013 Eric Lippmann Kurzvorstellung NETWAYS Expertise OPEN SOURCE SYSTEMS MANAGEMENT OPEN SOURCE DATA CENTER Monitoring & Reporting Configuration Management

Mehr

Technologietag SharePoint 2010

Technologietag SharePoint 2010 Technologietag SharePoint 2010 Business Applications in SharePoint 2010 Marco Leithold, Thomas Lorenz conplement AG 2 conplement AG 2010. All Rights Reserved. Agenda Einführung Business Applications mit

Mehr

Datenbankprogrammierung 2

Datenbankprogrammierung 2 Datenbankprogrammierung 2 JDBC Java Database Connectivity Call Level Interface Schnittstelle zwischen DBMS und Applikation JDBC API ist seit JDK1.1 inkludiert Ermöglicht Zugriff aus Java-Applikationen

Mehr

Anwendungsentwicklung für relationale Datenbanken setzt voraus, dass prozedurale Abläufe programmiert werden können!

Anwendungsentwicklung für relationale Datenbanken setzt voraus, dass prozedurale Abläufe programmiert werden können! Datenbanken: Standard CLI und JDBC Anwendungsentwicklung für relationale Datenbanken setzt voraus, dass prozedurale Abläufe programmiert werden können! (Endanwendern ist nicht zuzumuten, SQL zu lernen

Mehr

Isabel Arnold CICS Technical Sales Germany Isabel.arnold@de.ibm.com. z/os Explorer. 2014 IBM Corporation

Isabel Arnold CICS Technical Sales Germany Isabel.arnold@de.ibm.com. z/os Explorer. 2014 IBM Corporation Isabel Arnold CICS Technical Sales Germany Isabel.arnold@de.ibm.com z/os Explorer Agenda Introduction and Background Why do you want z/os Explorer? What does z/os Explorer do? z/os Resource Management

Mehr

Hauptschritte einer JDBC-App

Hauptschritte einer JDBC-App JDBC Java DataBase Connectivity Sammlung von Klassen und Interfaces zur Arbeit mit Datenbanken auf Basis von SQL Package java.sql Datenbankmanagementsystem und eine oder mehrere Datenbanken Jdbc Driver,

Mehr

OWB Referenzarchitektur, Releasemanagement und Deployment. Carsten Herbe metafinanz - Informationssysteme GmbH

OWB Referenzarchitektur, Releasemanagement und Deployment. Carsten Herbe metafinanz - Informationssysteme GmbH OWB Referenzarchitektur, Releasemanagement und Deployment Carsten Herbe metafinanz - Informationssysteme GmbH Wir fokussieren mit unseren Services die Herausforderungen des Marktes und verbinden Mensch

Mehr

Andrea Held. Virtualisierung im Oracle-Umfeld Virtualisierungslayer Voraussetzungen Schnittstellen Workload Management Grid Control

Andrea Held. Virtualisierung im Oracle-Umfeld Virtualisierungslayer Voraussetzungen Schnittstellen Workload Management Grid Control Andrea Held Virtualisierung im Oracle-Umfeld Virtualisierungslayer Voraussetzungen Schnittstellen Workload Management Grid Control 1 Einzelne Server ausgelegt auf Lastspitzen Niedrige durchschnittliche

Mehr

Ist Ihre Mainframe Anwendungs- Umgebung wirklich so effizient, wie Sie denken?

Ist Ihre Mainframe Anwendungs- Umgebung wirklich so effizient, wie Sie denken? Ist Ihre Mainframe Anwendungs- Umgebung wirklich so effizient, wie Sie denken? Cross-Enterprise APM und Application Performance Management 30. Oktober 2012 Agenda Cross-Enterprise APM Mainframe Application

Mehr

SINT Rest App Documentation

SINT Rest App Documentation SINT Rest App Documentation Release 1.0 Florian Sachs September 04, 2015 Contents 1 Applikation 3 2 Rest Service 5 3 SOAP Service 7 4 Technologiestack 9 5 Deployment 11 6 Aufgabe 1: Google Webservice

Mehr

IDS Lizenzierung für IDS und HDR. Primärserver IDS Lizenz HDR Lizenz

IDS Lizenzierung für IDS und HDR. Primärserver IDS Lizenz HDR Lizenz IDS Lizenzierung für IDS und HDR Primärserver IDS Lizenz HDR Lizenz Workgroup V7.3x oder V9.x Required Not Available Primärserver Express V10.0 Workgroup V10.0 Enterprise V7.3x, V9.x or V10.0 IDS Lizenz

Mehr

Um asynchrone Aufrufe zwischen Browser und Web Anwendung zu ermöglichen, die Ajax Hilfsmittel DWR ist gebraucht.

Um asynchrone Aufrufe zwischen Browser und Web Anwendung zu ermöglichen, die Ajax Hilfsmittel DWR ist gebraucht. Technisches Design Inhalt Design Übersicht Menü und DispatcherServlet DWR Servlet Viewer Servlets Controllers Managers Sicherheit Anwendung Architektur Component Diagram Deployment Diagram Komponente Sequence

Mehr

Enterprise Computing Einführung in das Betriebssystem z/os. Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth WS2012/2013

Enterprise Computing Einführung in das Betriebssystem z/os. Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth WS2012/2013 UNIVERSITÄT LEIPZIG Enterprise Computing Einführung in das Betriebssystem z/os Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth WS2012/2013 Transaktionsverarbeitung Teil 2 SQL copyright W. G. Spruth,

Mehr

Mobile Backend in der

Mobile Backend in der Mobile Backend in der Cloud Azure Mobile Services / Websites / Active Directory / Kontext Auth Back-Office Mobile Users Push Data Website DevOps Social Networks Logic Others TFS online Windows Azure Mobile

Mehr

Oracle Weblogic Administration Grundlagen

Oracle Weblogic Administration Grundlagen Oracle Weblogic Administration Grundlagen Seminarunterlage Version: 1.07 Version 1.07 vom 14. September 2015 Dieses Dokument wird durch die veröffentlicht.. Alle Rechte vorbehalten. Alle Produkt- und Dienstleistungs-Bezeichnungen

Mehr

(*) IBM DB2 for z/os. Einleitung - bisherige DB2 Versionen. (*) ist eingetragenes Warenzeichen der IBM International Business Machines Inc.

(*) IBM DB2 for z/os. Einleitung - bisherige DB2 Versionen. (*) ist eingetragenes Warenzeichen der IBM International Business Machines Inc. (*) IBM DB2 for z/os Einleitung - bisherige DB2 Versionen (*) ist eingetragenes Warenzeichen der IBM International Business Machines Inc. 1 (V10) DB2 V10 Neuerungen (Release Oktober 2010) Subsystem Verbesserungen

Mehr

Karl Kessler, Peter Tillert, Panayot Dobrikov Java-Programmierung mit dem SAP Web Application Server

Karl Kessler, Peter Tillert, Panayot Dobrikov Java-Programmierung mit dem SAP Web Application Server 2008 AGI-Information Management Consultants May be used for personal purporses only or by libraries associated to dandelon.com network. Karl Kessler, Peter Tillert, Panayot Dobrikov Java-Programmierung

Mehr

AS 7 / EAP 6 - Clustering. heinz.wilming@akquinet.de @akquinet h3p://blog.akquinet.de

AS 7 / EAP 6 - Clustering. heinz.wilming@akquinet.de @akquinet h3p://blog.akquinet.de AS 7 / EAP 6 - Clustering heinz.wilming@akquinet.de @akquinet h3p://blog.akquinet.de Was ist die EAP 6? EAP6!= EAP5 +1 JBoss Enterprise ApplicaBon PlaCorm 6 Stabile und unterstützte Pla>orm Basiert auf

Mehr

Object Relational Mapping Layer

Object Relational Mapping Layer Object Relational Mapping Layer Views Controlers Business logic GUI OO-application logic Object-relational-Mapping Relational DBMS PHP (propel) 1/18 Propel - Persistance Layer OR-Mapper für PHP Portierung

Mehr

Application Performance Management. Auch eine Frage des Netzwerkes?

Application Performance Management. Auch eine Frage des Netzwerkes? Application Performance Management Auch eine Frage des Netzwerkes? Agenda Architektur von Webanwendungen Lange Applikationsantwortzeiten Application Performance Management (APM) Netzwerkbasiertes APM Serverbasiertes

Mehr

IBM Informix Tuning und Monitoring

IBM Informix Tuning und Monitoring Seminarunterlage Version: 11.01 Copyright Version 11.01 vom 25. Juli 2012 Dieses Dokument wird durch die veröffentlicht. Copyright. Alle Rechte vorbehalten. Alle Produkt- und Dienstleistungs-Bezeichnungen

Mehr

ZenQuery - Enterprise Backend as a Service Single Page Applications mit AngularJS und Spring MVC. - Björn Wilmsmann -

ZenQuery - Enterprise Backend as a Service Single Page Applications mit AngularJS und Spring MVC. - Björn Wilmsmann - ZenQuery - Enterprise Backend as a Service Single Page Applications mit AngularJS und Spring MVC - Björn Wilmsmann - ZenQuery Enterprise Backend as a Service Unternehmen horten Daten in Silos ZenQuery

Mehr

Datenbankanwendung. Prof. Dr.-Ing. Sebastian Michel TU Kaiserslautern. Wintersemester 2014/15. smichel@cs.uni-kl.de

Datenbankanwendung. Prof. Dr.-Ing. Sebastian Michel TU Kaiserslautern. Wintersemester 2014/15. smichel@cs.uni-kl.de Datenbankanwendung Wintersemester 2014/15 Prof. Dr.-Ing. Sebastian Michel TU Kaiserslautern smichel@cs.uni-kl.de Übersicht der (kommenden) Vorlesungen ˆ Embedded SQL (in Java und C++) ˆ Stored Procedures

Mehr

Change Log. Fehlerbehebung bei den Funktionen Edit SQL, Set Session_user und Set current Schema..

Change Log. Fehlerbehebung bei den Funktionen Edit SQL, Set Session_user und Set current Schema.. Change Log 15.09.2015 Version 2.0.3.9 Fehlerbehebung bei den Funktionen Edit SQL, Set Session_user und Set current Schema.. 15.01.2015 Version 2.0.3.8 Unter Optionen können jetzt zusätzliche Parameter

Mehr

Rechnernetze Projekt SS 2015

Rechnernetze Projekt SS 2015 30/03/15 Seite 1 Aspektorientierte Programmierung logische Aspekte (Concerns) im Programm separieren Crosscutting Concerns (Ziel: generische Funktionalitäten über mehrere Klassen hinweg zu verwenden -

Mehr

Java Forum Stuttgart 2008

Java Forum Stuttgart 2008 Professionelle Open Source SOA in 45 Minuten! Java Forum Stuttgart 2008 Dr. Halil-Cem Gürsoy, CDI AG Der Referent Insgesamt ca. 10 Jahre Beratung, davor Forschung Senior Consultant - JEE Evangelist Hauptsächlich

Mehr

Forms Survival Kit Fehlersuche in WebForms-Applikationen

<Insert Picture Here> Forms Survival Kit Fehlersuche in WebForms-Applikationen Forms Survival Kit Fehlersuche in WebForms-Applikationen Jürgen Menge Oracle Deutschland Forms Survival Kit Fehlersuche in WebForms-Applikationen Einstieg Fehlersuche in Komponenten

Mehr

ENTWICKLUNGS- UND LAUFZEITUMGEBUNG DER CSE: ECLIPSE UND JBOSS. Piotr Kasprzak

ENTWICKLUNGS- UND LAUFZEITUMGEBUNG DER CSE: ECLIPSE UND JBOSS. Piotr Kasprzak ENTWICKLUNGS- UND LAUFZEITUMGEBUNG DER CSE: ECLIPSE UND JBOSS Piotr Kasprzak Agenda Laufzeitumgebung Java EE (J2EE) Motivation APIs / Technologien JBoss Entwicklungsumgebung Eclipse Ausblick Java EE -

Mehr

Remote Communications

Remote Communications HELP.BCFESDEI Release 4.6C SAP AG Copyright Copyright 2001 SAP AG. Alle Rechte vorbehalten. Weitergabe und Vervielfältigung dieser Publikation oder von Teilen daraus sind, zu welchem Zweck und in welcher

Mehr

DB2 for VM / VSE 7.5. News & Experiences. Torsten Röber. GSE Frühjahrstagung April 2008, Bonn. IBM Software Group

DB2 for VM / VSE 7.5. News & Experiences. Torsten Röber. GSE Frühjahrstagung April 2008, Bonn. IBM Software Group DB2 for VM / VSE 7.5 News & Experiences IBM Software Group Torsten Röber GSE Frühjahrstagung April 2008, Bonn Agenda DB2 Server/Client for VSE & VM 7.5 Migrationsprojekte Performance Hints & Tipps Lessons

Mehr

Warum EJB Technologie (1)?

Warum EJB Technologie (1)? Datenbanken und Informationssysteme 2 SS 2004 Prof. Dr. Stefan Böttcher Universität Paderborn Datenbanken und Informationssysteme 2 - Prof. Dr. Stefan Böttcher - SS 2004 Folie EJB - 1 Warum EJB Technologie

Mehr

InQMy Application Server Flexible Softwareinfrastruktur für verteilte Anwendungen

InQMy Application Server Flexible Softwareinfrastruktur für verteilte Anwendungen InQMy Application Server Flexible Softwareinfrastruktur für verteilte Anwendungen IN-Q-My Title Company (Name) / 1 Agenda Firmenübersicht ebusiness Evolution InQMy Application Server Architektur Zusammenfassung

Mehr

Programmierung von Client/Server- Anwendungen

Programmierung von Client/Server- Anwendungen Programmierung von Client/Server- Anwendungen Komponenten des Web-Containers (Java EE) SoSe2015 Prof. Dr. Andreas Schmietendorf 1 Übersicht zur Vorlesung Entwicklung der Java Enterprise Edition Servlets,

Mehr

Zugriff auf die Datenbank. Ulf Leser Wissensmanagement in der Bioinformatik

Zugriff auf die Datenbank. Ulf Leser Wissensmanagement in der Bioinformatik Zugriff auf die Datenbank Ulf Leser Wissensmanagement in der Bioinformatik Wie komme ich an die Datenbank? Alternativen Alles in Java machen JDBC Treiber von Oracle herunterladen Java programmieren Java-basierte

Mehr

SQL für Trolle. mag.e. Dienstag, 10.2.2009. Qt-Seminar

SQL für Trolle. mag.e. Dienstag, 10.2.2009. Qt-Seminar Qt-Seminar Dienstag, 10.2.2009 SQL ist......die Abkürzung für Structured Query Language (früher sequel für Structured English Query Language )...ein ISO und ANSI Standard (aktuell SQL:2008)...eine Befehls-

Mehr