56
Making XML Data Consumable: Introduction to pureXML in DB2 9 for z/OS Guogen (Gene) Zhang, IBM SVL, [email protected] May 2012

DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, [email protected]

  • Upload
    others

  • View
    15

  • Download
    0

Embed Size (px)

Citation preview

Page 1: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

Making XML Data Consumable:

Introduction to pureXML in DB2 9 for z/OS

Guogen (Gene) Zhang, IBM SVL, [email protected]

May 2012

Page 2: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

2

Information Management

Important Disclaimer

THE INFORMATION CONTAINED IN THIS PRESENTATION IS PROVIDED FOR INFORMATIONAL PURPOSES ONLY.

WHILE EFFORTS WERE MADE TO VERIFY THE COMPLETENESS AND ACCURACY OF THE INFORMATION CONTAINED IN THIS PRESENTATION, IT IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED.

IN ADDITION, THIS INFORMATION IS BASED ON IBM’S CURRENT PRODUCT PLANS AND STRATEGY, WHICH ARE SUBJECT TO CHANGE BY IBM WITHOUT NOTICE.

IBM SHALL NOT BE RESPONSIBLE FOR ANY DAMAGES ARISING OUT OF THE USE OF, OR OTHERWISE RELATED TO, THIS PRESENTATION OR ANY OTHER DOCUMENTATION.

NOTHING CONTAINED IN THIS PRESENTATION IS INTENDED TO, OR SHALL HAVE THE EFFECT OF:

• CREATING ANY WARRANTY OR REPRESENTATION FROM IBM (OR ITS AFFILIATES OR ITS OR THEIR SUPPLIERS AND/OR LICENSORS); OR

• ALTERING THE TERMS AND CONDITIONS OF THE APPLICABLE LICENSE AGREEMENT GOVERNING THE USE OF IBM SOFTWARE.

Page 3: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

3

Information Management

Agenda

What is XML and Where is XML used

Overview of pureXML in DB2 9 for z/OS

– SQL XML data type

– DDL

– XML storage and indexing

– Query language and application interfaces

– XML schema validation

– Tools and Utilities

Advantages and Business Value of DB2 pureXML

Summary

Page 4: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

4

Information Management

An XML Purchase Order

<?xml version="1.0" encoding="UTF-8"?>

<ipo:purchaseOrder

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:ipo="http://www.example.com/IPO" orderDate="1999-12-01">

<shipTo exportCode="1" xsi:type="ipo:UKAddress">

<name>Helen Zoe</name>

<street>47 Eden Street</street>

<city>Cambridge</city>

<postcode>CB1 1JR</postcode>

</shipTo>

<billTo xsi:type="ipo:USAddress">

<name>Robert Smith</name>

<street>8 Oak Avenue</street>

<city>Old Town</city>

<state>PA</state>

<zip>95819</zip>

</billTo>

<?xml version="1.0" encoding="UTF-8"?>

<ipo:purchaseOrder

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:ipo="http://www.example.com/IPO" orderDate="1999-12-01">

<shipTo exportCode="1" xsi:type="ipo:UKAddress">

<name>Helen Zoe</name>

<street>47 Eden Street</street>

<city>Cambridge</city>

<postcode>CB1 1JR</postcode>

</shipTo>

<billTo xsi:type="ipo:USAddress">

<name>Robert Smith</name>

<street>8 Oak Avenue</street>

<city>Old Town</city>

<state>PA</state>

<zip>95819</zip>

</billTo>

<items>

<item partNum="833-AA">

<productName>Lapis necklace</productName>

<quantity>1</quantity>

<USPrice>99.95</USPrice>

<comment>Want this for the

holidays!</comment>

<shipDate>1999-12-05</shipDate>

</item>

<item partNum="926-AA">

<productName>Baby Monitor</productName>

<quantity>1</quantity>

<USPrice>39.98</USPrice>

<shipDate>1999-12-21</shipDate>

</item>

</items>

</ipo:purchaseOrder>

<items>

<item partNum="833-AA">

<productName>Lapis necklace</productName>

<quantity>1</quantity>

<USPrice>99.95</USPrice>

<comment>Want this for the

holidays!</comment>

<shipDate>1999-12-05</shipDate>

</item>

<item partNum="926-AA">

<productName>Baby Monitor</productName>

<quantity>1</quantity>

<USPrice>39.98</USPrice>

<shipDate>1999-12-21</shipDate>

</item>

</items>

</ipo:purchaseOrder>

Page 5: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

5

Information Management

An XML Purchase Order

<?xml version="1.0" encoding="UTF-8"?>

<ipo:purchaseOrder

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:ipo="http://www.example.com/IPO" orderDate="1999-12-01">

<shipTo exportCode="1" xsi:type="ipo:UKAddress">

<name>Helen Zoe</name>

<street>47 Eden Street</street>

<city>Cambridge</city>

<postcode>CB1 1JR</postcode>

</shipTo>

<billTo xsi:type="ipo:USAddress">

<name>Robert Smith</name>

<street>8 Oak Avenue</street>

<city>Old Town</city>

<state>PA</state>

<zip>95819</zip>

</billTo>

<?xml version="1.0" encoding="UTF-8"?>

<ipo:purchaseOrder

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:ipo="http://www.example.com/IPO" orderDate="1999-12-01">

<shipTo exportCode="1" xsi:type="ipo:UKAddress">

<name>Helen Zoe</name>

<street>47 Eden Street</street>

<city>Cambridge</city>

<postcode>CB1 1JR</postcode>

</shipTo>

<billTo xsi:type="ipo:USAddress">

<name>Robert Smith</name>

<street>8 Oak Avenue</street>

<city>Old Town</city>

<state>PA</state>

<zip>95819</zip>

</billTo>

<items>

<item partNum="833-AA">

<productName>Lapis necklace</productName>

<quantity>1</quantity>

<USPrice>99.95</USPrice>

<comment>Want this for the

holidays!</comment>

<shipDate>1999-12-05</shipDate>

</item>

<item partNum="926-AA">

<productName>Baby Monitor</productName>

<quantity>1</quantity>

<USPrice>39.98</USPrice>

<shipDate>1999-12-21</shipDate>

</item>

</items>

</ipo:purchaseOrder>

<items>

<item partNum="833-AA">

<productName>Lapis necklace</productName>

<quantity>1</quantity>

<USPrice>99.95</USPrice>

<comment>Want this for the

holidays!</comment>

<shipDate>1999-12-05</shipDate>

</item>

<item partNum="926-AA">

<productName>Baby Monitor</productName>

<quantity>1</quantity>

<USPrice>39.98</USPrice>

<shipDate>1999-12-21</shipDate>

</item>

</items>

</ipo:purchaseOrder>

<billTo xsi:type="ipo:USAddress"><name>Robert Smith</name><street>8 Oak Avenue</street><city>Old Town</city><state>PA</state><zip>95819</zip>

</billTo>

Start Tag

End Tag

ElementAttribute

Content

Page 6: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

6

Information Management

XML Characteristics

XML can represent flexible structured data in text

– Nesting

– Repeating

– Self-describing

XML is a universal language to represent e-Business data

and transactions.

Platform-independent, and Unicode compliant

Easy to understand and easy to process (with the right

tools)

Page 7: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

7

Information Management

Where is XML Used?

Data interchange and Web development

– HTML 4.0 => XHTML

– Web services, SOAP, SOA

– Web 2.0 AJAX

Documentation and content

Database development

– Managing XML data

– Use XML as a flexible hierarchical data model

Page 8: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

8

Information Management

Agenda

What is XML and Where is XML used

Overview of pureXML in DB2 9 for z/OS

– SQL XML data type

– DDL

– XML storage and indexing

– Query language and application interfaces

– XML schema validation

– Tools and Utilities

Advantages and Business Value of DB2 pureXML

Summary

Page 9: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

9

Information Management

What You Can Do with pureXML

Create tables with XML columns or alter table add XML columnsInsert XML data, optionally validated against schemasCreate indexes on XML dataEfficiently search XML dataExtract XML dataDecompose XML data into relational dataConstruct XML documents from relational and XML dataHandle XML objects in all the utilities and tools

XML

DOC

XML Column

XMLIndex

XML

- Managing XML data the same way as relational data

Page 10: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

10

Information Management

What you can Do with pureXML (1)-- XML Type and DDL

CREATE TABLE PurchaseOrders (PONUMBER VARCHAR(10) NOT NULL,PODATE DATE NOT NULL,STATUS CHAR(1),XMLPO XML);

[ IN MYDB.MYTS; ]

CREATE TABLE PO LIKE PurchaseOrders;

CREATE VIEW ValidPurchaseOrders asSELECT ponumber, podate, XMLpo

FROM PurchaseOrdersWHERE status = ‘A’;

ALTER TABLE PurchaseOrdersADD revisedXMLpo xml;

CREATE INDEX IDX1 ON PurchaseOrders(XMLPO) Generate Keys Using XMLPATTERN ‘//items/item/desc’ as SQL VARCHAR(100);

Page 11: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

11

Information Management

XML Storage on Mature Infrastructure

Base Table

XMLColDOCID …

B+treeB+tree

DocID index

Internal XML Table

B+treeB+tree

NodeID index

B+treeB+tree

XML index (user)

Each XMLData column is a VARBINARY, containing a subtree or a sequence of subtrees, with context path. Rows in XML table are freely movable, linked with a NodeID index.

A table with an XML column has a DocID column, used to link from the base table to the XML table.A DocID index is used for getting to base table rows from XML indexes.

XMLDataDOCID MIN_NODEID

Regular Table space

(DB2_GENERATED_DOCID_FOR_XML)1

2

3

1

2

2

3

02

02

0208

02

Page 12: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

12

Information Management

What you can do with pureXML (2)-- DML (I/U/D)EXEC SQL BEGIN DECLARE SECTION;

SQL TYPE IS XML AS CLOB(1M) xmlPo;EXEC SQL END DECLARE SECTION;

INSERT INTO PurchaseOrders VALUES (‘200300001’,CURRENT DATE, ‘A’, :xmlPo);

INSERT INTO PurchaseOrders VALUES(‘200300002’, CURRENT DATE, ‘A’, XMLPARSE(DOCUMENT :vchar PRESERVE WHITESPACE) );

INSERT into PurchaseOrders VALUES( '200300001', CURRENT DATE, 'A', DSN_XMLValidate(:lobPo,’SYSXSR.myPOSchema’) );

UPDATE PurchaseOrders SET XMLpo = :XMPpo_newWHERE ponumber = ‘12345’;

DELETE FROM PurchaseOrders WHERE ponumber = ‘12345’ ORXMLEXISTS(‘/purchaseOrder/items/item[shipDate < “2000-01-01”]’ PASSING

XMLPO);

Page 13: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

13

Information Management

<book>

<authors>

<author id=“47”>John Doe</author>

<author id=“58”>Peter Pan</author>

</authors>

<title>Database systems</title>

<price>29</price>

<keywords>

<keyword>SQL</keyword>

<keyword>relational</keyword>

</keywords>

</book>

XML ParsingXMLPARSE()

SerializationXMLSERIALIZE()

book

title price

author

authors

author

keywords

keyword keyword

id=47 id=58 SQL relational

Database

Systems29

John Doe Peter Pan

XML Parsing and Serialization

Page 14: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

14

Information Management

- ipo:purchaseOrder orderDate="1999-12-01"

- shipTo exportCode="1" xsi:type="ipo:UKAddress"

-name: Helen Zoe

-street: 47 Eden Street

-city: Cambridge

-postcode: CB1 1JR

- billTo xsi:type="ipo:USAddress"

-name: Robert Smith

-street:8 Oak Avenue

-city: Old Town

-state: PA

-zip: 95819

- items

-item partNum="833-AA"

-productName: Lapis necklace

-quantity: 1

-USPrice: 99.95

-comment: Want this for the holidays!

-shipDate: 1999-12-05

-item partNum="926-AA"

-productName: Baby Monitor

-quantity: 1

-USPrice: 39.98

-shipDate: 1999-12-21

A Data RecordView and

XPath Examples

ShipTo name: /ipo:purchaseOrder/shipTo/name

BillTo: /ipo:purchaseOrder/billTo

Product names:/ipo:purchaseOrder/items/item/productName

Ship date of the first item:/ipo:purchaseOrder/items/item[1]/shipDate

Item info with product “Baby Monitor”:/ipo:purchaseOrder/items/item[productName = “Baby Monitor”]

Total amount:fn:sum(/ipo:purchaseOrder/items/item/xs:decimal(USPrice))

Sold price of product “Baby Monitor”:/ipo:purchaseOrder/items/item[productName = “Baby Monitor”]/USPrice

+

Page 15: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

15

Information Management

What you can do with pureXML (3)-- DML (Select)

SELECT XMLpo INTO :xmlPoFROM PurchaseOrdersWHERE ponumber = ‘200300001’;

SELECT XMLQUERY(‘declare namespace ipo="http://www.example.com/IPO"; /ipo:purchaseOrder/items/item/quantity’ PASSING XMLpo)

FROM PurchaseOrders;

SELECT XMLPOFROM PurchaseOrdersWHERE XMLEXISTS(‘//items/item[desc = “Shoe”]’ PASSING XMLpo);

SELECT XMLPOFROM PurchaseOrders, ProductWHERE XMLEXISTS(‘//items/item[desc = $n]’ PASSING XMLpo,

Product.name as “n”);

Page 16: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

16

Information Management

XML Indexes

XPath value index: index values of elements or attributes inside a document.Index entries include:(key value, DocID, NodeID, RIDx)Support string (VARCHAR) or numeric (DECFLOAT) key type

CREATE INDEX IDX1 ON PurchaseOrders(XMLPO) Generate Keys Using XMLPATTERN ‘/purchaseOrder/items/item/desc’as SQL VARCHAR(100);

<?xml version="1.0"?>

<purchaseOrder orderDate="1999-10-20">

<shipTo country="US">

<name>Alice Smith</name>

. . .

</shipTo>

<billTo country="US">

<name>Robert Smith</name>

. . .

</billTo>

<comment>Hurry, my lawn is going wild!</comment>

<items>

<item partNum="872-AA">

<desc>Lawnmower</desc>

<quantity>1</quantity>

<USPrice>148.95</USPrice>

<comment>Confirm this is electric</comment>

</item>

<item partNum="926-AA">

<desc>Baby Monitor</desc>

<quantity>1</quantity>

<USPrice>39.98</USPrice>

<shipDate>2003-05-21</shipDate>

</item>

</items>

</purchaseOrder>

<?xml version="1.0"?>

<purchaseOrder orderDate="1999-10-20">

<shipTo country="US">

<name>Alice Smith</name>

. . .

</shipTo>

<billTo country="US">

<name>Robert Smith</name>

. . .

</billTo>

<comment>Hurry, my lawn is going wild!</comment>

<items>

<item partNum="872-AA">

<desc>Lawnmower</desc>

<quantity>1</quantity>

<USPrice>148.95</USPrice>

<comment>Confirm this is electric</comment>

</item>

<item partNum="926-AA">

<desc>Baby Monitor</desc>

<quantity>1</quantity>

<USPrice>39.98</USPrice>

<shipDate>2003-05-21</shipDate>

</item>

</items>

</purchaseOrder>

This index can be used for predicate:

XMLEXISTS(‘/purchaseOrder/items/item[desc = “Baby Monitor”]’ passing XMLPO)

Page 17: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

17

Information Management

Query processing using index ANDing in a picture

XML IDX1XML IDX1 XML IDX2XML IDX2

DOCID list 1 DOCID list 2

INTERSECT

DOCID list

DOCID IDXDOCID IDX

RID list

Base Table NODEID IDXNODEID IDX1 2

34

56

Base Table

XMLColDocID …

B+treeB+tree

DocID index

Internal XML Table

B+treeB+tree

NodeID index

B+treeB+tree

XML index (user)

XMLDataDOCID MIN_NODEID

1

2

3

1

2

2

3

02

02

0208

02

Base Table

XMLColDocID …

B+treeB+tree

DocID index

Internal XML Table

B+treeB+tree

NodeID index

B+treeB+tree

XML index (user)

XMLDataDOCID MIN_NODEID

1

2

3

1

2

2

3

02

02

0208

02

XMLEXISTS('/a/b[c<5 and d="good"]' …) or XMLEXISTS('/a/[…]/d[…]…' …)or XMLEXISTS(…) AND XMLEXISTS(…) <= same column or different columns

Page 18: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

18

Information Management

What you can do with pureXML (4)-- DML (construct XML from relational)

SELECT XMLDOCUMENT(XMLELEMENT(NAME “hr:Department", XMLNAMESPACES(‘http://example.com/hr’ as “hr”),XMLATTRIBUTES (e.dept AS "name" ),XMLCOMMENT(‘names in alphabetical order’),XMLAGG(XMLELEMENT(NAME “hr:emp", e.lname)

ORDER BY e.lname )) ) AS "dept_list”

FROM employees e GROUP BY dept;

<?xml version=“1.0” encoding=“UTF-8”><hr:Department xmlns:hr=“http://example.com/hr”

name="Shipping"><!-- names in alphabetical order --><hr:emp>Lee</hr:emp><hr:emp>Martin</hr:emp><hr:emp>Oppenheimer</hr:emp>

</hr:Department>

<?xml version=“1.0” encoding=“UTF-8”><hr:Department xmlns:hr=“http://example.com/hr”

name="Shipping"><!-- names in alphabetical order --><hr:emp>Lee</hr:emp><hr:emp>Martin</hr:emp><hr:emp>Oppenheimer</hr:emp>

</hr:Department>

Can construct XHTML for web pages.

Shipping

Shipping

ShippingLeeSean

AccountingJohnsonMichael

OppenheimerVicky

MartinChristine

deptlnamefirstname

Page 19: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

19

Information Management

What you can do with pureXML (5)-- DML (construct new doc from existing doc)

SELECT XMLDocument(XMLElement(NAME "invoice",XMLAttributes( '12345' as "invoiceNo'),

XMLQuery ('/purchaseOrder/billTo' PASSING xmlpo),XMLElement(NAME “purchaseOrderNo”,

PO.ponumber)XMLElement(NAME "amount",XMLQuery('fn:sum(/purchaseOrder/items/item/xs:decimal(USPrice))'PASSING xmlpo) )

) )FROM PurchaseOrders PO,WHERE PO.ponumber = ‘200300001’;

Page 20: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

20

Information Management

What you can do with pureXML (6)-- Leveraging the Power of SQL

CREATE VIEW ORDER_VIEW AS

SELECT PO.POID, X.*

FROM PurchaseOrders PO,

XMLTABLE( '//item' PASSING PO.XMLPO

COLUMNS "orderDate" DATE PATH '../../@orderDate',

"shipTo City" VARCHAR(20) PATH '../../shipTo/city',

"shipTo State" CHAR(2) PATH '../../shipTo/state',

"Part #" CHAR(6) PATH '@partnum',

"Product Name" VARCHAR(20) PATH 'productName',

"Quantity" INTEGER PATH 'quantity',

"US Price" DECIMAL(9,2) PATH 'USPrice',

"Ship Date" DATE PATH 'shipDate',

"Comment" VARCHAR(60) PATH 'comment' ) AS X;

SELECT "Product Name", "shipTo State",

SUM("US Price" * "Quantity") AS TOTAL_SALE

FROM ORDER_VIEW

GROUP BY "Product Name", "shipTo State";

SELECT "shipTo City", "shipTo State",

RANK() OVER(ORDER BY SUM("Quantity")) AS SALES_RANK

FROM ORDER_VIEW

WHERE "Product Name" = 'Baby Monitor'

GROUP BY "shipTo State", "shipTo City"

ORDER BY SALES_RANK;

XMLTable function was delivered after V9 GA PTF UK33493

Can join with other tables.

Page 21: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

21

Information Management

XMLTABLE: Table view of XML Data

SELECT X.*

FROM PurchaseOrders PO,

XMLTABLE( '//item' PASSING PO.XMLPO

COLUMNS "Seqno"FOR ORDINALITY,

"Part #" CHAR(6) PATH '@partnum',

"Product Name" VARCHAR(20) PATH 'productName',

"Quantity" INTEGERPATH 'quantity',

"US Price" DECIMAL(9,2) PATH 'USPrice',

"Ship Date" DATE PATH 'shipDate',

"Comment" VARCHAR(60) PATH 'comment' ) AS X;

1999-12-2139.981Baby Monitor926-AA2

Want this for

the holidays!

1999-12-0599.951Lapis

necklace

833-AA1

CommentShip DateUS PriceQuantityProduct

Name

Part #Seqno

Page 22: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

22

Information Management

What you can do with pureXML (7)

--XML Schema Support

XML Schema adds constraints on XML data (W3C Standard).Register a schema in XML Schema Repository (XSR)– A set of DB2 provided user tables, and stored procedures– CLP commands and Data Studio support

Schema validation (type annotation not kept)INSERT into PurchaseOrdersVALUES( '200300001', CURRENT DATE, 'A', SYSFUN.DSN_XMLValidate(:lobPO,’SYSXSR.ORDERSCHEMA’));

New: lift validation 50MB size limit (PK90032/90040)SYSIBM.DSN_XMLVALIDATE()up to 2GB, invokes XML System Services and 100% zIIP/zAAP eligible

Page 23: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

23

Information Management

Simple Parsing v.s. Validation

<employee>

<name>Jason</name>

<job>Software Engineer</job>

</employee>

XML Document

XDM Instance

myschema.xsdSimple Parsing

(well-formednesschecking) Validating Parsing

with XML Schema

(optional)

XDM Instance

Page 24: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

24

Information Management

Application Interfaces

Host variables of string types can be used for XML values

– VARCHAR, VARBINARY, CLOB, BLOB

XML host variables:

– XML AS CLOB(n), XML AS BLOB(n)

Parameter marker

– CAST(? AS XML)

File reference variables (FRVs) – CLOB_FILE, BLOB_FILE

XML values in applications are represented as strings.

Encodings supported

– Convert to/from UTF-8

– Input encoding in binary recognized, or default to UTF-8

– Input encoding in char honored, override XML declaration.

Use FETCH CONTINUE for unknown length

Page 25: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

25

Information Management

Tools for application development

Tool choices:– IBM Data Studio/Optim Development Studio– Rational Data Architect– Rational Application Developer– .NET– QMF– SPUFI– CLP (Command Line Processor)

They can help to perform:– Schema registration, validation– Mapping relational to XML schema for XML

generation

Page 26: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

26

Information Management

DBA Considerations

Database administrators should treat XML database objects as they do

in LOB database objects.

– Like LOB objects, XML objects contain data stored outside the base table

space.

– Use LISTDEF, REPORT TABLESPACESET, or query catalog tables

All the utilities either support or tolerate XML, with some specific XML

keyword support (XML field or include/exclude XML objects).

In addition, XML has more considerations, such as table space size

limit, compression, and indexes.

Since XML native support is built on top of regular tablespace structure,

there are no special changes in DB2 Performance Expert to support XML

other than minor things - such as new XML locks (type x’35’).

XML performance problem can be analyzed through accounting traces and

performance traces.

Page 27: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

27

Information Management

Utilities for XML

No new special utilities for XML.

DB2 utilities support the XML data type and the related database

objects

– The XML data type in LOAD and UNLOAD, with file reference support

– Support for the XML table spaces and tables used to store XML column

values

– Support for auxiliary relationships used to connect base tables to XML

tables

– Support for the base table space DocID index

– Support for the XML table space NodeID index and XML indexes

No partition level checking for XML PBG UTS(APAR pk49033)

DSN1COPY copied data set containing XML objects cannot be

moved to another system due to stringIDs (dictionary specific to each

system).

Page 28: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

28

Information Management

Backup and Recovery

To recover base table space, take image copies of all related objects

– Use LISTDEF to define a list of related objects

– (QUIESCE not needed in V9)

COPYTOCOPY may be used to replicate image copies of XML objects.

MERGECOPY may be used to merge incremental copies of XML table

spaces.

Point in Time recovery (RECOVER TORBA, TOLOGPOINT)

– All related objects, including XML objects must be recovered to a consistent

point in time

Optional: CHECK utilities to validate base table spaces with XML columns,

XML indexes and related XML table spaces.

If there is an availability issue with one object in the related set, availability of

the others may be impacted.

Page 29: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

29

Information Management

Diagnosing Problem Related to XML Objects

Identify XML tables and their related objects

– Run REPORT TABLESPACESET or query catalog tables

Validate that the auxiliary index is consistent with the underlying

table spaces

– Run CHECK INDEX on all indexes, DocID, NodeID and XML value indexes

Validate the logical connection between the base table and XML

table.

– Run CHECK DATA against the base table space.

Use Repair to diagnose problem related to base table spaces with

XML columns and their DocID index

– Use REPAIR LOCATE KEY to locate a row using DocID key in the DocID

index

Use Repair to diagnose problem related to XML table spaces and

their NodeID index or XML Value Index

– Use REPAIR LOCATE RID to locate a row using a RID.

Page 30: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

30

Information Management

Performance Monitoring and Tuning

Since XML native storage is built on top of regular

tablespace structure, there are no special changes in

DB2 Performance Expert to support XML other than

minor points - such as new XML locks.

XML performance problem can be analyzed through

accounting traces and performance traces.

There is a new LOAD MODULE for XML: DSNNXMLXML indexes have the same consideration as other indexes.The REORG utility should be used to maintain order and free space.Run RUNSTATS for statistics to help pick XML indexes.

Page 31: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

31

Information Management

XML Features in V9 - Summary

SQL/XML (ANSI/ISO XML extension to SQL)– First-class XML type, native storage of XQuery Data

Model– Complete SQL/XML constructor functions– XMLPARSE, XMLSERIALIZE, XMLCAST (conversion)– SQL/XML functions with XPath (Search, extract)

• XMLEXISTS, XMLQUERY, XMLTABLE

XML indexes and exploitation

XML Schema repository, Validation UDF, and decomposition stored proc

DRDA (distributed support) and application interfaces

Utilities and tools

Page 32: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

32

Information Management

DB2 z/OS XML Unique Features

Mature optimized storage infrastructure, compact storage with optional high-ratio compression– As little as 0.3 of original document size

Synergy with z/OS XML system services for highly efficient parsing, achieving unparalleled XML insertion and load performanceSchema validation exploiting new next-generation XML validating parser (XLXP-C);Efficient XML indexes for scalability; Patent pending highly efficient XPath algorithm for query performance;Partitioned table space and data sharing support;Redirection of XML processing to the zIIP specialty engine from DRDA workload;100% redirection of XML parsing to the zIIP or zAAPspecialty engine, validation in the near future.

Page 33: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

33

Information Management

Agenda

What is XML and Where is XML used

Overview of pureXML in DB2 9 for z/OS

– SQL XML data type

– DDL

– XML storage and indexing

– Query language and application interfaces

– XML schema validation

– Tools and Utilities

Advantages and Business Value of DB2 pureXML

Summary

Page 34: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

34

Information Management

Highlights of DB2 for z/OS pureXML

Store XML data and complex data in XML columns directly.

– Without mapping or transformation code.

Parse XML once (schema validation optional), and store in compact binary hierarchical storage format.

– Optimized for efficient processing

Support indexes into XML data, and index-based query processing.

– Critical for query performance and scalability.

Support XPath in SQL with SQL/XML standard query language, speed up application development.

Use the same storage infra-structure, and use same utilities and familiar DBA tools to manage XML objects.

Support zIIP/zAAP redirection for XML processing, and 100% zIIP/zAAP for XML parsing.

Page 35: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

35

Information Management

Benefits

For application developers, new flexible data model and

powerful language to deal with new requirements.

– Higher productivity

– Shorter time to market

For DBAs, use the familiar tools managing XML objects.

– Manageability for XML data

z platform: unparalleled reliability, availability, scalability,

serviceability, and security.

Page 36: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

36

Information Management

When to use XML – some general Qs?

Flexibility is more important?

– Schema is volatile? Yes - XML

Will data be processed heavily as relational later? No -

XML

Data components are specific to each documents even if

they occur in many places? Yes - XML

Data attributes apply to all data or a small subset? Latter

- XML

Referential integrity is required? Yes - Relational

Data needs to be updated often? Yes - Relational

Tedious normalization and frustrated changes of schema are an indicator for using native XML.

Tedious normalization and frustrated changes of schema are an indicator for using native XML.

Page 37: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

37

Information Management

Text String v.s. Native XML

Store XML in VARCHAR/VARBINARY or LOB if

you

– Store and retrieve whole documents only

– Never search inside XML data

Use XML if you need to search, and or retrieve

partial documents, or validate, or join with relational

tables, etc.

Inserting XML is faster than LOB for very small

documents

Page 38: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

38

Information Management

Native XML v.s. Decomposition

Consider decomposing XML into relational data, only if– The schema is regular, fixed and very stable.

– The follow-on processing is all relational and there is no need to get data back to XML.

– Existing software requires efficient relational storage

Decomposition may not be a good choice, if– Schema changes frequently

– Schema is irregular and complex, decomposition requires dozens or even hundred tables.

– Significant new application development and generates XML

– Need to preserve digital signatures

Decomposition CPU time could be much more expensive than native XML insert. Query performance depends.

Page 39: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

39

Information Management

XML Schema Flexibility

No Schema One Schema Schema V1 Documents Any mix you want!& Schema V2 w/ and w/o

schema

Mix of documents in an XML column ���� Many Options:

Page 40: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

40

Information Management

XML-Enabled Databases: Two Main Options

XML

DOC

Extract selected

elements/attr.

Side Tables

CLOB/Varchar

XML DOC

XML DOC

XML DOC

XML

DOC

Varchar or clobcolumn

Fixed

MappingShredder

(regular tables forfaster lookup)

(regular relational tables)

“Decomposition”

Shredding

Page 41: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

41

Information Management

Decomposition: A simple case

<DEPARTMENT deptid="15" deptname="Sales"><EMPLOYEE>

<EMPNO>10</EMPNO><FIRSTNAME>CHRISTINE</FIRSTNAME><LASTNAME>SMITH</LASTNAME><PHONE>408-463-4963</PHONE><SALARY>52750.00</SALARY>

</EMPLOYEE><EMPLOYEE>

<EMPNO>27</EMPNO><FIRSTNAME>MICHAEL</FIRSTNAME><LASTNAME>THOMPSON</LASTNAME><PHONE>406-463-1234</PHONE><SALARY>41250.00</SALARY>

</EMPLOYEE></DEPARTMENT>

DepartmentDEPTID DEPTNAME

15 Sales

EmployeeDEPTID EMPNO FIRSTNAME LASTNAME PHONE SALARY

15 27 MICHAEL THOMPSON 406-463-1234 41250

15 10 CHRISTINE SMITH 408-463-4963 52750

Page 42: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

42

Information Management

Decomposition: A schema change…

“Employees are now allowed to have multiple phone numbers…”

<DEPARTMENT deptid="15" deptname="Sales"><EMPLOYEE>

<EMPNO>10</EMPNO><FIRSTNAME>CHRISTINE</FIRSTNAME><LASTNAME>SMITH</LASTNAME><PHONE>408-463-4963</PHONE><PHONE>415-010-1234</PHONE><SALARY>52750.00</SALARY>

</EMPLOYEE><EMPLOYEE>

<EMPNO>27</EMPNO><FIRSTNAME>MICHAEL</FIRSTNAME><LASTNAME>THOMPSON</LASTNAME><PHONE>406-463-1234</PHONE><SALARY>41250.00</SALARY>

</EMPLOYEE></DEPARTMENT>

PhoneEMPNO PHONE

27 406-463-1234

10 415-010-1234

10 408-463-4963

Requires:• Normalization of existing data !• Modification of the mapping• Change of applications

Costly!

DepartmentDEPTID DEPTNAME

15 Sales

EmployeeDEPTID EMPNO FIRSTNAME LASTNAME PHONE SALARY

15 27 MICHAEL THOMPSON 406-463-1234 41250

15 10 CHRISTINE SMITH 408-463-4963 52750

Page 43: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

43

Information Management

Versatile schemas and enable end-user customizable applications.

–very difficult to reflect in a relational schema

Object persistence (single XML column v.s. many tables)

–avoiding mapping of complex XML into many relational tables

Sparse attribute values (null v.s. absence)

–Product features (e.g. car feature)

Usage Scenarios: Relational Schema vs. XML

Page 44: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

44

Information Management

DB2 pureXML Advantages

Directly store XML, no decomp/comp, normalize/de-

normalize

Eliminates database schema evolution bottleneck

Declarative language, reduce complexity,

dramatically improve application development

productivity

Native processing, high performance

Unparalleled reliability, availability, scalability

Up to 10 times

Page 45: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

45

Information Management

XML and the Web before DB2 pureXML

Client Application Server

XML

XML ObjectsMapping Mapping

Relational schema

Relational Database

XML to object mapping and object to relational mapping

– Very costly

– Complex

– Inflexible

Page 46: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

46

Information Management

An End-to-end XML Paradigm

Client Presentation

HTML+XFormsLotus Forms

XML

Data StorageDB2 pureXML

relationalXML

SOA Gateway / WASXQueryXSLTXPath

End-to-End Straight Through Processing using XML

XML programming paradigm and architecture pattern

– XForms

– REST/SOAP web services

– XQuery suite: XQuery, XQuery update facility, XQuery scripting extension, etc.

ProtocolSOAPHTTP

REST

Page 47: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

47

Information Management

Business Value of pureXML Summary

Accelerated Application Development– Reduced system and development complexity– Improved developer productivity

Greater Business Agility– Easily accommodate changes to data and schemas– Update applications rapidly and reduce maintenance costs

Improved Business Insight– Access to information in otherwise unexploited documents– Unprecedented application performance

Consolidating converged information on System z– Reduce floor space, power consumption, cooling cost– Consolidate information resources and reduce admin cost

Page 48: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

48

Information Management

Summary

DB2 9 pureXML provides XML management features.

Many application logic on XML can be pushed down to DB2,

achieving:

– simplified systems, high development productivity, high

performance, and business agility.

I urge you to investigate further on how your existing and new

applications can benefit from this “revolutionary” capabilities.

Page 49: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

49

Information Management

Some References

Info APAR: II14426

DB2 for z/OS pureXML wikihttp://www.ibm.com/developerworks/wikis/display/db2xml/DB2+for+zOS+pureXML

DB2 pureXML Team Bloghttp://www-128.ibm.com/developerworks/blogs/page/purexml

DB2 pureXML wikihttp://www.ibm.com/developerworks/wikis/display/db2xml/Home

DB2 9 for z/OS XML Guidehttp://publib.boulder.ibm.com/infocenter/dzichelp/v2r2/topic/com.ibm.db29.doc.xml/db2z_xml.htm

IBM developerWorks DB2 XML (LUW)http://www.ibm.com/developerworks/db2/zones/xml/index.html

Google pureXML wikipureXML wiki

Page 50: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

Back up Charts

Page 51: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

51

Information Management

System Configurations

Basic XML parsing requires z/OS XMLSS: z/OS 1.8 or z/OS 1.7 with APAR OA16303

XML schemas requires IBM 31-bit SDK for z/OS, Java 2 Technology Edition, V5 (5655-N98), SDK5. And Java stored procedure setup.

Zparms for virtual storage: XMLVALA and XMLVALS– Default: 200MB and 10GB.– Also LOBVALA and LOBVALS impact bind-in and bind-out of XML

Buffer pool for XML tables (default BP16K0), authorization for users who create or alter tables with XML columns.– DEFAULT BUFFER POOL FOR USER XML DATA ===> BP16K0

BP16K0 - BP16K9

Zparms for locks (for large docs): LOCKS PER TABLE(SPACE), LOCKS PER USER (may no longer be necessary with PK68265)

Page 52: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

52

Information Management

Storing XML Trees - Tree Packing

Node1 (3) Node 2 (p)

Node6 Node7 (1) Node8

Node1Node1

Node2Node2 Node7Node7

Node3Node3 Node4Node4 Node5Node5 Node8Node8

Node6Node6

Node 2 (3) Node3 Node4

Node5

Each node contains local node id, length and optional number of children.

Proxy nodes are used as placeholder for subtrees in a separate record.

It supports traversal using firstChild,nextSibling, or nextNode.

RecHdr contains context path information for the record – absolute ID, path, in-scope namespaces

All names use stringIDs.

Each node contains local node id, length and optional number of children.

Proxy nodes are used as placeholder for subtrees in a separate record.

It supports traversal using firstChild,nextSibling, or nextNode.

RecHdr contains context path information for the record – absolute ID, path, in-scope namespaces

All names use stringIDs.

Rec Hdr

Rec Hdr

Node0Node002

02

02

02 04 06

04 06

02

Node0 (1)rid1

rid2

Page 53: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

53

Information Management

XML Objects for Non-partitioned Base Table

BASE Table

DOCIDINDEX

Non-Partioned Base TS

(simple, segmented, PBG)

Table for XMLCol1

NODEIDINDEX

XMLIndex

PBG TS for XMLCol1

PBG TS for XMLCol2

Cols:DOCID

MIN_NODEIDXMLDATA

Cols:DOCID

XMLCol1XMLCol2

Table for XMLCol1

NODEIDINDEX

XMLIndex

Cols:DOCID

MIN_NODEIDXMLDATA

Default: Maxpartitions – 256, SEGSIZE 4, DSSIZE 4G

Page 54: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

54

Information Management

XML Objects for Range-Partitioned Base Table

Cols:DOCID

XMLCOL1XMLCOL2

BASE TablePart1

Partitioned Base TS2 Parts, Table has 2

XML Coumns

XMLIndex(NPI)

Partitioned TS for XMLCol1

(NPI)

Cols:DOCID

XMLCOL1XMLCOL2

BASE TablePart2

Part1 Part2

NodeIDINDEX(NPI)

Partitioned TS for XMLCol2

DOCID

INDEX

DOCIDMIN_NODEID

XMLDATA

DOCIDMIN_NODEID

XMLDATA

XMLIndex(NPI)

Part1 Part2

DOCIDMIN_NODEID

XMLDATA

DOCIDMIN_NODEID

XMLDATA

NodeIDINDEX(NPI)

DSSIZE depends on base table page size (max num parts) – to be enhanced

Page 55: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

55

Information Management

Index Exploitation

Indexes are critical for query performance.

Indexes are not used for the XMLQuery funtion.

Indexes are used for XMLExists and XMLTable.

/po/items/item[price > 123.5] can match

XMLPattern /po/items/item/price

/po[billTo/city=“London”]/items/item[price >

123.5] matches two indexes:

/po/billTo/city and

/po/items/item/price

(also //city and //price - not recommended)

DocScan

Use index

Page 56: DB2 9 zOS pureXML Introduction - OOWidgets 9 zOS pureXML Introduction.pdfMaking XML Data Consumable: Introduction to pureXML in DB2 9 for z/OSGuogen (Gene) Zhang, IBM SVL, gzhang@us.ibm.com

56

Information Management

New Access Methods

XMLExists(‘/Catalog/Categories/Product[RegPrice >

100]’ passing catalog) with index on

‘/Catalog/Categories/Product/RegPrice’ as SQL

DECFLOAT

DocID list access “DX”

unique DocID list from an

XML index, then access

the base table and XML

table.

XMLExists(‘/Catalog/Categories/Product[RegPrice >

100 and Discount > 0.1]’ … )

With indexes on:

‘//RegPrice’ as SQL DECFLOAT and

‘//Discount’ as SQL DECFLOAT

DocID ANDing/ORing

“DX/DI/DU” union or

intersect (unique) DocID

lists from XML indexes,

then access the base

table and XML table.

Base algorithm: given a document, scan and evaluate

XPath

DocScan “R”

(QuickXScan)

DescriptionAccess Methods