IBM i 7.1 DB2, SQL, XML, IFS, ODBC Andreas Prouza 2010

Slides:



Advertisements
Ähnliche Präsentationen
OmsCube Objektverwaltung, basierend auf einem relationalen Datenbankmanagementsystem.
Advertisements

Die Virtuelle Fachbibliothek Germanistik – Germanistik im Netz (GiN)…
Object Relational Mapping (ORM). Objektmodell - Datenbankmodell.
Datenintegrität Einschränkung der möglichen Datenbankzustände und -übergänge auf die in der Realität möglichen Formulierung von Integritätsbedingungen.
Datenintegrität Integitätsbedingungen Schlüssel
PL/SQL - Einführung. © Prof. T. Kudraß, HTWK Leipzig Vorteile Application Other DBMSs Application Oracle with PL/SQL SQL SQL SQL SQL SQLIF...THENSQLELSESQL.
PL/SQL - Programmierung von Programmeinheiten. © Prof. T. Kudraß, HTWK Leipzig Gespeicherte Prozeduren – Eine Prozedur ist ein benannter PL/SQL Block,
1 Datenbankapplikationen 9.1MS Visio 9.2MS Access 9.3Embedded SQL 9.4JDBC 9.5Cold Fusion 9.6PHP.
Transaction Synchronization for XML Data in Client Server Web Applications Stefan Böttcher & Adelhard Türling Universität Paderborn.
PL/SQL - Kurze Einführung -.
System J – Compiler – Praktikum: Datenbanksystementwicklung Knut Stolze
Objektrelationales Mapping mit JPA Entity Mapping Jonas Bandi Simon Martinelli.
SQL als Abfragesprache
SQL als Abfragesprache
IS: Datenbanken, © Till Hänisch 2000 Tabellen In relationalen DB werden Daten in Tabellen organisiert Jede Spalte enthält eine bestimmte Art von Information,
Oracle PL/SQL Server Pages (PSP). © Prof. T. Kudraß, HTWK Leipzig Grundidee: PSP – Internet-Seiten mit dynamischer Präsentation von Inhalten durch Einsatz.
SQL/XML. © Prof. T. Kudraß, HTWK Leipzig 2 2 Motivation Speicherung von XML in allen großen kommerziellen DBMS vorhanden proprietäre Lösungen für die.
PL/SQL - Einführung. © Prof. T. Kudraß, HTWK Leipzig Vorteile Application Other DBMSs Application Oracle with PL/SQL SQL SQL SQL SQL SQLIF...THENSQLELSESQL.
PL/SQL - Programmierung von Programmeinheiten. © Prof. T. Kudraß, HTWK Leipzig Gespeicherte Prozeduren – Eine Prozedur ist ein benannter PL/SQL Block,
PL/SQL - Programmierung von Programmeinheiten. © Prof. T. Kudraß, HTWK Leipzig Gespeicherte Prozeduren – Eine Prozedur ist ein benannter PL/SQL Block,
Oracle interMedia Audio Vortrag für das Seminar Oracle Zusatzoptionen Chris Haußmann.
DVG Verkettete Listen Verkettete Listen. DVG Verkettete Listen 2 Primitive Datentypen Vorteile: –werden direkt vom Prozessor unterstützt.
1 Datenintegrität Statische Bedingung (jeder Zustand) Dynamische Bedingung (bei Zustandsänderung) Bisher: Definition eines Schlüssels 1:N - Beziehung Angabe.
1 Kapitel 8: Datenintegrität. 2 Datenintegrität Statische Bedingung (jeder Zustand) Dynamische Bedingung (bei Zustandsänderung) Bisher: Definition eines.
Datenbanken 10: Einfügen, Ändern, Löschen
SQL in Visual FoxPro. © 1999 TMN-Systemberatung GmbH SQL Historie n SQL - Structured Query Language n In den 70er Jahren von IBM entwickelt n 1986 zum.
SQL PHP und MySQL Referat von Katharina Stracke und Carina Berning
(c) Peter Starke ITEX Erfolgreiches Datenmanagement für Verlage Peter Starke Strategiebasierte Internetlösungen.
Web Programmierung mit CGI, ILE RPG und SQL
Medien zwischen Technologie und Gesellschaft Dozent: Herr Prof. Dr. Manfred Thaller SS 13 Referent: Christian Braun.
VS one Veranstalter: VSone Feb. 08 Folie 1 Copyright by XML-Serialisierung zur Persistierung von Objekten Thomas Schissler
IBM DB2 V8 for z/OS Neue Funktionen für AE und Applikationsprogramme
WS 2004/2005 Datenbanken II - 5W Mi 17:00 – 18:30 G 3.18 Vorlesung #4 Anfragebearbeitung (Teil 2)
FH-Hof Standard Query Language Richard Göbel. FH-Hof Geschichte der Sprache SQL System/R-Projekts von IBM zu Beginn der 70er Jahre: Entwicklung der Sprache.
© All rights reserved. Zend Technologies, Inc. Jan Burkl System Engineer, Zend Technologies Zend Server im Cluster.
Betrieb von Datenbanken Marco Skulschus & Marcus Wiederstein Datenmanipulation Lehrbuch, Kapitel 4.
The free XML Editor for Windows COOKTOP Semistrukturierte Daten 1 Vortrag Semistrukturierte Daten 1 COOKTOP The free XML-Editor for Windows
Datenintegrität Integitätsbedingungen Schlüssel
Entity Mapping Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
Advanced Mapping Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
3/28/2017 8:11 PM Visual Studio Tools für Office { Rapid Application Development für Office } Jens Häupel Platform Strategy Manager Microsoft Deutschland.
Client Server Architektur
100 Jahre Luftfahrt in der Schweiz Flugmeeting Emmen, 24. Juli 2010 Impressionen…
WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #8 SQL (Teil 5)
SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #9 SQL (Teil 4)
WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #7 SQL (Teil 4)
Rehabilitation im Alter am Beispiel der Kooperation KWP-AKH
Template v5 October 12, Copyright © Infor. All Rights Reserved.
Datenbanksysteme für hörer anderer Fachrichtungen
Softwaresponsoren Mediasponsoren. Vorstellung KnowledgeCenter Neue Sprachfeautres in VB 9.0 LINQ to SQL in der Praxis.
External Labels – The rules For all external labels the following rules apply (external labels are all labels which are not inside of a shape) - all labels.
Qualität der Ausbildung 15. März 2010.
PL/SQL - Kurze Einführung April 2003Übung Data Warehousing: PL/SQL 2 PL/SQL.. ist eine Oracle-eigene, prozedurale Programmiersprache Sämtliche.
Torque in Turbine Team 3 Alexander Mittermair Michael Wesinger.
H. Rösch 03. Okt. 2010Familienausflug H. Rösch 03. Okt. 2010Familienausflug Leider legte der goldene Oktober gerade eine Pause ein, als am.
Die 2. Herren des TV Langen 1908 e.V. 2. Kreisklasse Kreis Cuxhaven Saison 2009 – 2010 Abschlussfeier
Agile ALM for Plex/2E CM MatchPoint ALM. Themen Agenda CM MatchPoint ALM Übersicht CM MatchPoint 5.2 Web und Mobile Entwicklung Agile ALM / DevOps CM.
Launch ON Global.vi System ID object name classname Services to suscribe Observer Control Ref vi-path Service name Step 1 : Objects register to the Global.vi´s,
SQL Server 2005 CLR Integration Sebastian Weber Microsoft Deutschland GmbH
Structured Query Language
Dr. h.c. Rolf-Peter Pack Die Zukunft des Kinder- und Jugendsports
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #8 SQL (Teil 5)
11 Zugriffskontrolle (Access Control) Ziele Privilegien Rollen GRANT und REVOKE Befehl Privilegien Rollen GRANT und REVOKE Befehl.
Trigger-abhängige Client Interaktionen (bezüglich Oracle8i)
Datenbanken abfragen mit SQL
DB2 UDB im z/VSE Heinz Peter Maassen – Lattwein GmbH COURSE Tagung Bad Hersfeld 2008.
XML-Erweiterungen in ORDBMS Seminar: DBMS für spezielle Anwendungen Florian Brieler.
SQL Structured Query Language Enzio Thiem. INHALT CREATE TABLE Anweisung Gängige Datentypen Beispiel CREATE TABLE Beispiel CREATE TABLE - erweitert Beispiel.
Vorlesung #8 SQL (Teil 5).
(Structured Query Language)
 Präsentation transkript:

IBM i 7.1 DB2, SQL, XML, IFS, ODBC Andreas Prouza 2010

ODBC 128-byte schema names Support for the IBM i XML Data Type Connection property to configure Concurrent Access Resolution Support for multi-row UPDATE, DELETE, and MERGE statements Andreas Prouza 2010

.NET Provider 128-byte schema names Support for the IBM i XML Data Type Connection property to configure Concurrent Access Resolution Support for multi-row UPDATE, DELETE, and MERGE statements Support Visual Studio 2008 Online help now available in Visual Studio Andreas Prouza 2010

Temporary user-defined file systems Befehle: Erstellen des Filesystems: CRTUDFS UDFS('/dev/QASP01/myfs.tmpudfs') Erstellen des Verzeichnis im IFS MKDIR DIR('/home/test1') Filesystem an das Verzeichnis anhängen MOUNT TYPE(*UDFS) MFS('/dev/QASP01/myfs.tmpudfs') MNTOVRDIR('/home/test1') Filesystem abhängen UNMOUNT TYPE(*UDFS) MNTOVRDIR('/home/test1') Andreas Prouza 2010

Erklärung zum TMPUDFS Können nur im System ASP erstellt werden (QASP01) Höhere Performance durch geringen Overhead: Kein Journal möglich Kein Sichern oder Wiederherstellen Für Objekte kann keine Berechtigungsliste erstellt werden Maximal-Speicher des Users kann überschritten werden Durch den Befehl Unmount geht auch der Inhalt verloren (daher auch beim IPL) Andreas Prouza 2010

Adaptive Query Processing Erweiterung der SQL Query Engine Bei Abfragen > 1 sek. kann das WÄHREND der Ausführung Änderungen am Zugriffsplan vornehmen. Beispiel: Wenn während der Abfrage ein neuer Index erstellt wurde. Wenn die Abfrage länger als geplant dauert und ein Temporärer Index benötigt wird. Andreas Prouza 2010

Expression Evaluator (SQL Procedures & Functions) SQL Proceduren werden teils in C-Code, teils in SQL-Code geschrieben. C-Code ist schneller als SQL-Code Mit jedem Release werden immer mehr Anweisungen in C unterstützt  Neu erstellen der Procedure oder Function, nach einem Releasewechsel, kann zur Steigerung der Performance führen Andreas Prouza 2010

Expression Evaluator Beispiel: IF v1 > 1 AND v1 < 100 Vor V5R4: SELECT 1 INTO :H FROM QSYS2.QSQPTABL WHERE :H:H > :H:H AND :H:H < :H:H Nach V5R4: VALUES ( CASE WHEN :H:H > :H:H AND :H:H < :H:H THEN 0 ELSE 1 END ) INTO :H AND und OR wird in C nicht unterstützt jedoch wird ab V5R4 keine Dummy-Tabelle benötigt  bessere Performance Andreas Prouza 2010

SQL Merge-Statements Beispiel: Synchronisation 2er Tabellen Merge into tab1 using tab11 on tab1.sp1 = tab11.sp1 when matched then update set tab1.sp2 = tab11.sp2 when not matched then insert (sp1, sp2) values (tab11.sp1, tab11.sp2) Andreas Prouza 2010

Bevorzugte Speichereinheit SSD CHGPF FILE(TAB5) UNIT(*SSD) UNIT SSD Klausel im Create/Alter Table und Create Index Andreas Prouza 2010

Progress status monitors Beim ändern einer großen Tabelle, kann im iSeries Navigator angezeigt werden welche Änderungen noch durchgeführt werden müssen, Index Rebuild, wie lange es noch dauert, usw. Andreas Prouza 2010

Andreas Prouza 2010

DB2 concurrent access resolution USE CURRENTLY COMMITTED Liest die zuletzt bestätigten Sätze aus einer Tabelle WAIT FOR OUTCOME Wartet bis Satzsperre aufgehoben ist SKIP LOCKED DATA (schon ab 6.1) Überliest gesperrte setze SQL_CONCURRENT_ACCESS_RESOLUTION QAQQINI CONACC pre-compiler option Andreas Prouza 2010

Create or Replace Create or Replace Index Tab1_I1 … Create or Replace Variable v1 char(50) Andreas Prouza 2010

Globale Variablen Create Variable Var1 char(50) Es können globale Variablen mit allen DB2 Datentypen erstellt werden Der Inhalt einer globalen Variable ist Jobbezogen Beispiel: Job1: Set var1 = ‚Hallo‘ Job2: Set var1 = ‚Welt‘ Job2: Values (var1)  Welt Job1: Values (var1)  Hallo Bei globale Variablen gibt es kein Commitmen Control Andreas Prouza 2010

EVI mit Aggregation CREATE ENCODED VECTOR INDEX idx1 ON sales(region) INCLUDE ( SUM(saleamt), COUNT(*) ) SELECT region, SUM(saleamt) FROM sales GROUP BY region Andreas Prouza 2010

Expressions in SQL Call Funktionsaufrufe sind können jetzt innerhalb eines Procedure-Calls angewendet werden. CALL myprocedure('ABC', UPPER(MyName), MyNumber*100 ) Andreas Prouza 2010

Neue Funktionen in RPG Neue Funktionen in RPG werden im SEU ab 7.1 nicht mehr unterstützt. IBM will uns dazu zwingen, weg vom SEU, hin zum Rational zu gehen. Denn dort gibt es die Unterstützung. Andreas Prouza 2010

XML & DB2 Man kann XML-Files in eine Tabelle hinzufügen. Man kann die Werte eines XML-Files in ein oder mehrere Tabellen importieren lassen Es können einfach und schnell XML-Files mit Daten aus der DB2 erstellt werden. Andreas Prouza 2010

XSD: login.xsd Andreas Prouza 2010 <?xml version="1.0"?> <!-- Generated using Flame-Ware Solutions XML-2-XSD v2.0 at http://www.flame-ware.com/Products/XML-2-XSD/ --> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:element name="ArrayOfLogIn"> <xs:complexType> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element name="LogIn"> <xs:sequence> <xs:element name="User" type="xs:string" minOccurs="0" /> <xs:element name="Password" type="xs:string" minOccurs="0" /> <xs:element name="System" type="xs:string" minOccurs="0" /> <xs:element name="Library" type="xs:string" minOccurs="0" /> <xs:element name="DSN" type="xs:string" minOccurs="0" /> <xs:element name="Signon" type="xs:string" minOccurs="0" /> <xs:element name="OpsNav" type="xs:string" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element> </xs:choice> </xs:schema> Andreas Prouza 2010

XSD: login_db2.xsd Andreas Prouza 2010 <?xml version="1.0"?> <!-- Generated using Flame-Ware Solutions XML-2-XSD v2.0 at http://www.flame-ware.com/Products/XML-2-XSD/ --> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:db2-xdb="http://www.ibm.com/xmlns/prod/db2/xdb1"> <xs:annotation><xs:appinfo> <db2-xdb:defaultSQLSchema>PRANLIB</db2-xdb:defaultSQLSchema> </xs:appinfo></xs:annotation> <xs:element name="ArrayOfLogIn"> <xs:complexType> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element name="LogIn"> <xs:sequence> <xs:element name="User" type="xs:string" minOccurs="0" db2-xdb:rowSet="LOGIN" db2-xdb:column="USERNAME" db2-xdb:condition="$DECOMP_CONTENT IS NOT NULL"/> <xs:element name="Password" type="xs:string" minOccurs="0" /> <xs:element name="System" type="xs:string" minOccurs="0" db2-xdb:column="SYSTEMNAME" <xs:element name="Library" type="xs:string" minOccurs="0" db2-xdb:column="LIB" <xs:element name="DSN" type="xs:string" minOccurs="0" /> <xs:element name="Signon" type="xs:string" minOccurs="0" /> <xs:element name="OpsNav" type="xs:string" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element> </xs:choice> </xs:schema> Andreas Prouza 2010

XML: login.xml <?xml version="1.0" encoding="utf-8"?> <ArrayOfLogIn xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <LogIn> <User>pran</User> <Password /> <System>192.168.0.10</System> <Library>MyLib</Library> <Signon>-1</Signon> <OpsNav>false</OpsNav> </LogIn> <User>andi</User> <System>192.168.0.201</System> <Library /> </ArrayOfLogIn> Andreas Prouza 2010

XML-Daten in Tabelle importieren XSD-File in eine globale Variable hinzufügen set pranlib.var1 = GET_xml_FILE('/home/prouza/login_db2.xsd‚ XSD in der XML-Repository registrieren CALL SYSPROC.XSR_REGISTER('PRANLIB', 'ArrayOfLogin', null, pranlib.var1 , null) Registrierung vervollständigen call sysproc.xsr_complete ('PRANLIB', 'ArrayOfLogin', null, 1) XML-File in die globale Variable hinzufügen set pranlib.var1 = GET_xml_FILE('/home/prouza/login.xml') XML-Daten in der Datenbank übernehmen call sysproc.XDBDECOMPXML ('PRANLIB', 'ArrayOfLogin', pranlib.var1, null) Andreas Prouza 2010

Ergebnis 1 Andreas Prouza 2010

DB2  XML Daten aus einer Tabelle als XML darstellen. Andreas Prouza 2010

Beispiel 1 select sp1, xmlserialize ( xmlelement (NAME "LogIn", xmlforest (c.sp1 as "System", c.sp2 as "Text")) as varchar (50)) from pranlib.tab1 c Andreas Prouza 2010

Ergebnis 1 Andreas Prouza 2010

Erklärung 1 XMLSERIALIZE: Damit kann ich einen XML-Typ in ein lesbares Character umwandeln XMLELEMENT: Hier wird ein XML-Element definiert. (Erstes Element ist IMMER root!) XMLFOREST: Angabe der verwendeten Spalten Andreas Prouza 2010

Beispiel 2 Select xmlserialize ( xmlelement (NAME "ArrayOfLogIn", xmlnamespaces (DEFAULT 'http://example.org'), xmlagg (xmlelement (NAME "login", xmlforest (c.sp1 as "System", c.sp2 as "User")))) as varchar (9999)) "XML-FILE" From pranlib.tab1 c Andreas Prouza 2010

Ergebnis 2 <ArrayOfLogIn xmlns="http://example.org"> <System>1</System> <User>FFFFF</User> </login> <System>10</System> <User>hallo123456</User> <System>12</System> <User>du da</User> </ArrayOfLogIn> Andreas Prouza 2010

Erklärung 2 XMLNAMESPACES: Für Angabe eines Namespaces in einem Element XMLAGG: Aggregation von Datensätzen (XMLFOREST) Andreas Prouza 2010

Beispiel 3 Select xmlserialize ( xmlelement (NAME "ArrayOfLogIn", xmlnamespaces (DEFAULT 'http://example.org'), xmlagg (xmlelement (NAME "login", xmlattributes (sp1 as "id"), xmlforest (c.sp1 as "System", c.sp2 as "User")))) as varchar (9999)) "XML-FILE" From pranlib.tab1 c Andreas Prouza 2010

Ergebnis 3 <ArrayOfLogIn xmlns="http://example.org"> <login id="1"> <System>1</System> <User>FFFFF</User> </login> <login id="10"> <System>10</System> <User>hallo123456</User> <login id="12"> <System>12</System> <User>du da</User> </ArrayOfLogIn> Andreas Prouza 2010

Erklärung 3 XMLATTRIBUTES: Mit dieser Funktion kann ein Wert aus einer Spalte als Attribut in einem Element verwendet werden. Andreas Prouza 2010

Beispiel 4 values (xmlserialize (xmltext ('Sonderzeichen < > &‚) as varchar (50))) Ergebnis: Sonderzeichen < > & Erklärung: Die XMLTEXT-Funktion kann auch für Verarbeitung von HTML verwendet werden. Andreas Prouza 2010

Stored Procedure Resultsets Resultsets aus Stored Procedures können nun in RPG oder anderen Stored Procedures verarbeitet werden. Andreas Prouza 2010

Stored Procedure CREATE PROCEDURE PRANLIB.TEST1 ( IN SPNR INTEGER ) DYNAMIC RESULT SETS 1 LANGUAGE SQL SPECIFIC PRANLIB.TEST2 BEGIN DECLARE C2 CURSOR WITH RETURN TO CLIENT FOR SELECT * FROM PRANLIB . TAB1 WHERE SP1 > SPNR; OPEN C2; END; Andreas Prouza 2010

Code-Beispiel Dtab1ds E DS extname (tab1) Dc1 S SQLTYPE(RESULT_SET_LOCATOR) /Free Exec Sql Call Test1 (10); Exec Sql ASSOCIATE LOCATORS (:c1) WITH PROCEDURE Test1; Exec Sql ALLOCATE mycur1 CURSOR FOR RESULT SET :c1; Exec Sql Fetch mycur1 Into :tab1ds; /End-Free Andreas Prouza 2010

Erklärung Hier wird ein Result-Set-Locator definiert. SQLTYPE(RESULT_SET_LOCATOR) Der Result-Set-Locator wird mit den Resultset der Procedure verknüpft. Exec Sql ASSOCIATE LOCATORS (:c1) WITH PROCEDURE Test1; Es kann nun ein Cursor erstellt werden, welcher den Resultset einliest. Exec Sql ALLOCATE mycur1 CURSOR FOR RESULT SET :c1; Andreas Prouza 2010

Viel Spaß noch! Andreas Prouza andreaspr@aon.at Andreas Prouza 2010