Presentation is loading. Please wait.

Presentation is loading. Please wait.

Pure XML Pertemuan 10 Matakuliah: T0413 Tahun: 2009.

Similar presentations


Presentation on theme: "Pure XML Pertemuan 10 Matakuliah: T0413 Tahun: 2009."— Presentation transcript:

1

2 Pure XML Pertemuan 10 Matakuliah: T0413 Tahun: 2009

3 Bina Nusantara University 3 XML Web 2.0SOA Database  DB2 9 XML: The foundation of SOA and Web 2.0

4 Bina Nusantara University 4 What is DB2’s pureXML technology? Relational Engine XQuery John 555 1212 SQL idnamephone 9John5551212 name employee phoneid=901 John555-1212 XML Engine

5 Bina Nusantara University 5 What is DB2’s pureXML technology? Two main characteristics: –XML is stored in parsed-hierarchical format in the database –DB2 has a native XML interface to the engine The storage format = the processing format

6 Bina Nusantara University 6 Native XML Storage XML stored in parsed hierarchical format create table dept (deptID char(8),…, deptdoc xml); Relational columns are stored in relational format (tables) XML columns are stored natively XML stored in UTF8

7 Bina Nusantara University 7 Integration: Relational and hierarchical data geneX = 987 geneX = 123 NAMESEXAGECOFFEESMOKEDNA ElizabethF653515 RaulM47100 … TinaF58410 PATIENTS table

8 Bina Nusantara University 8 SQL with Xquery/XPath SELECT name from PATIENTS WHERE xmlexists('$p/Patient/MedicalDetail[geneX="987"]' passing PATIENTS.DNA as "p") and sex = 'F' and age > 55 and coffee > 15 and smoke > 10 ;

9 Bina Nusantara University 9 pureXML: No need to remap for Data Exchange Applications XML Processing Applications XML Processing XML Exchange Formats:  Web Services  Syndication  Industry Formats Relational And XML DB Relational And XML DB  Storing and querying XML without needing to re-map exchange data to relational format  Providing common integrity, recovery, security, management interfaces and mechanisms  Providing flexibility in the face of schema evolution  Supporting easy access through Web Services and Web 2.0 Edge Company Data

10 Bina Nusantara University 10 Table definitions with XML columns create table items ( id int primary key not null, brandname varchar(30), itemname varchar(30), sku int, srp decimal(7,2), comments xml ); create table clients( id int primary key not null, name varchar(50), status varchar(10), contact xml );

11 Bina Nusantara University 11 Insert & Import of XML data INSERT INTO clients VALUES (77, 'John Smith', 'Gold', ' 111 Main St., Dallas, TX, 00112 ') ; IMPORT from "C:\DB2workshop\Quicklabs\quicklab14a\clients.del" of del xml from "C:\DB2workshop\Quicklabs\quicklab14a" INSERT INTO CLIENTS (ID, NAME, STATUS, CONTACT); IMPORT from "C:\DB2workshop\Quicklabs\quicklab14a\items.del" of del xml from "C:\DB2workshop\Quicklabs\quicklab14a" INSERT INTO ITEMS (ID, BRANDNAME, ITEMNAME, SKU, SRP, COMMENTS);

12 Bina Nusantara University 12 John Doe 408 555 1212 344 Peter Pan 408 555 9918 216 / /dept /dept/employee /dept/employee/@id /dept/employee/name /dept/employee/phone /dept/employee/office (...) Each node has a path XPath dept name employee phoneid=901 John Doe office 408-555-1212344 name employee phoneid=902 Peter Pan office 408-555-9918216  XML Query Language  Subset of XQuery & SQL/XML

13 Bina Nusantara University 13 XPath: Simple XPath Expressions Use fully qualified paths to specify elements/attributes “@” is used to specify an attribute use “text()” to specify the text node under an element XPathResult /dept/@bldg101 /dept/employee/@id901 902 /dept/employee/name Peter Pan John Doe /dept/employee/name/text()Peter Pan John Doe John Doe 408 555 1212 344 Peter Pan 408 555 9918 216

14 Bina Nusantara University 14 XPath: Wildcards * matches any tag name // is the “descendent-or-self” wildcard XPathResult /dept/employee/*/text() John Doe 408 555 1212 344 Peter Pan 408 555 9918 216 /dept/*/@id 901 902 //name/text() Peter Pan John Doe /dept//phone 408 555 1212 408 555 9918 John Doe 408 555 1212 344 Peter Pan 408 555 9918 216

15 Bina Nusantara University 15 XPath:Predicates Predicates are enclosed in square brackets […] Can have multiple predicates in one XPath Positional predicates: [n] selects the n-th child XPathResult /dept/employee[@id=“902”]/name Peter Pan /dept[@bldg=“101”]/employee[office >“300”]/name John Doe //employee[office=“344” OR office=“216”]/@id901 902 /dept/employee[2]/@id 902 John Doe 408 555 1212 344 Peter Pan 408 555 9918 216

16 Bina Nusantara University 16 XPath: The Parent Axis Current context: “. ” Parent context: “.. ” XPathResult /dept/employee/name[../@id=“902”] Peter Pan /dept/employee/office[.>“300”] 344 /dept/employee[office > “300”]/office 344 /dept/employee[name=“John Doe”]/../@bldg 101 /dept/employee/name[.=“John Doe”]/../../@bldg 101 John Doe 408 555 1212 344 Peter Pan 408 555 9918 216

17 Bina Nusantara University 17 XQuery XQuery supports path expressions to navigate XML hierarchical structure XQuery supports both typed and untyped data XQuery lacks null values because XML documents omit missing or unknown data XQuery returns sequences of XML data

18 Bina Nusantara University 18 XQuery: The FLWOR Expression FOR: iterates through a sequence, bind variable to items LET: binds a variable to a sequence WHERE: eliminates items of the iteration ORDER: reorders items of the iteration RETURN: constructs query results create table dept(deptID char(8),deptdoc xml); xquery for $d in db2-fn:xmlcolumn(‘DEPT.DEPTDOC')/dept let $emp := $d//employee/name where $d/@bldg > 95 order by $d/@bldg return {$d/@bldg, $emp} John Doe 408 555 1212 344 Peter Pan 408 555 9918 216 Input:

19 Bina Nusantara University 19 SQL/XML queries SQL/XML is designed to bridge between the SQL and XML worlds. –Part of the SQL standard includes specifications for embedding XQuery or XPath expressions within SQL statements XPATH is a language for navigating XML documents to find elements or attributes XQuery includes support for XPATH xmlexists function Restricts results based on an XML element value Syntax required prior to DB2 9.5: select name from clients where xmlexists('$c/Client/Address[z ip="95116"]' passing CLIENTS.CONTACT as "c") New syntax allowed with DB2 9.5: select name from clients where xmlexists('$CONTACT/Client/Add ress[zip="95116"]')

20 Bina Nusantara University 20 select name from clients where xmlexists('$CONTACT/Client/Address[zip="95116"]') SQL is not case sensitive XPath and XQuery are case sensitive! DB2 objects (tables/columns) need to be put in upper case. Example: select name from clients where xmlexists('$contact/Client/Address[zip="95116"]') Case sensitivity - Caution!

21 Bina Nusantara University 21 SQL, XPath and XQuery use straight quotes (for either single or double quotes depending the situation) Examples: ‘The quotes in this example are curly, which is bad!’ 'The quotes in this example are straight, which is good!' The example below uses curly quotes, so it will fail: It is typical to see this problem when copy/pasting from a Word or Powerpoint document Curly quotes - Caution! xquery db2-fn:xmlcolumn(‘CLIENTS.CONTACT’)/Client/Address[zip=“95116”]

22 Bina Nusantara University 22 xmlquery function Retrieve one or more element values from our XML document select xmlquery('$CONTACT/Client/email') from clients where status = 'Gold' Retrieving XML data using “for” and “return” clauses of XQuery SELECT name, xmlquery ('for $e in $CONTACT/Client/email[1] return $e') FROM clients WHERE status = 'Gold'

23 Bina Nusantara University 23 Retrieving and transforming XML into HTML SELECT xmlquery('for $e in $CONTACT/Client/email[1]/text() return {$e} ') FROM clients WHERE status = 'Gold' select t.comment#,i.itemname,t.customerID,Message from items i, xmltable('$COMMENTS/Comments/Comment' columns Comment# integer path 'CommentID', CustomerID integer path 'CustomerID', Message varchar(100) path 'Message') as t xmltable function: From XML to Relational

24 Bina Nusantara University 24 xmlelement function: From Relational to XML select xmlelement (name "item",itemname), xmlelement (name "id", id), xmlelement (name "brand",brandname), xmlelement (name "sku",sku) from items where srp < 100 Review: XMLTABLE vs XMLELEMENT XML Relational XMLELEMENT functionXMLTABLE function

25 Bina Nusantara University 25 Simple XQuery to return customer contact data db2-fn:xmlcolumn is a function with a parameter that identifies the table name and column name of an XML column. xquery db2-fn:xmlcolumn('CLIENTS.CONTACT') FLWOR expression to retrieve client fax data xquery for $y in db2-fn:xmlcolumn('CLIENTS.CONTACT')/Client/fax return $y 4081112222 5559998888

26 Bina Nusantara University 26 Path expression with additional filtering predicate xquery db2-fn:xmlcolumn('CLIENTS.CONTACT')/Client/Address[zip="95116"] Querying DB2 XML data and returning results as HTML xquery { for $y in db2-fn:xmlcolumn('CLIENTS.CONTACT')/Client/Address order by $y/zip return {$y} }

27 Bina Nusantara University 27 Sample HTML 9407 Los Gatos Blvd. Los Gatos ca 95302 4209 El Camino Real Mountain View CA 95302 …

28 Bina Nusantara University 28 Embedded SQL within XQuery xquery for $y in db2-fn:sqlquery('select comments from items where srp > 100')/Comments/Comment where $y/ResponseRequested='Yes' return ( {$y//ProductID} {$y//CustomerID} {$y//Message} ) db2-fn:sqlquery  A function which executes an SQL query and returns only the selected data  The SQL Query passed to db2-fn:sqlquery must return XML data  This XML data can then be further processed by XQuery

29 Bina Nusantara University 29 Joins with SQL/XML select u.unitID from dept d, unit u where XMLEXISTS ('$e//employee[name = $m] ' passing d.deptdoc as "e", u.manager as "m") create table dept (unitID char(8), deptdoc xml) create table unit (unitID char(8) primary key not null, name char(20), manager varchar(20),... ) select u.unitID from dept d, unit u where u.manager = XMLCAST(XMLQUERY('$e//employee/name' passing d.deptdoc as "e") as char(20))

30 Bina Nusantara University 30 DELETE operations DELETE a row based on a condition that uses an XML element –Simply use an SQL DELETE statements –A DELETE first searches for the document, and then deletes it. The search part can be done using the same SQL/XML functions as when querying data UPDATE operations With DB2 9, use: –SQL UPDATE statement –or Stored Procedure DB2XMLFUNCTIONS.XMLUPDATE With DB2 9.5: –Use the TRANSFORM expression

31 Bina Nusantara University 31 Update Example with DB2 9.5: TRANSFORM expression UPDATE purchaseorder SET porder = xmlquery('transform copy $po := $order modify do insert document { 100-103-01 Snow Shovel, Super Deluxe 26 inch 4 49.99 } into $po/PurchaseOrder return $po' passing purchaseorder.porder as "order") where poid=5012; Adding an element to the end

32 Bina Nusantara University 32 Update Example with DB2 9.5: TRANSFORM expression UPDATE purchaseorder SET porder = xmlquery('transform copy $po := $order modify do delete $po/PurchaseOrder/item[partid = ''100-201-01''] return $po' passing porder as "order") WHERE poid=5012; Deleting an element

33 Bina Nusantara University 33 XML Indexing Examples create unique index idx1 on customer(info) generate key using xmlpattern '/customerinfo/@Cid' as sql double; create index idx2 on customer(info) generate key using xmlpattern '/customerinfo/name' as sql varchar(40); Matt Foreman 1596 Baseline Toronto Ontario M3Z-5H9 905-555-4789 416-555-3376 Peter Smith 416-555-3426 create index idx3 on customer(info) generate key using xmlpattern '//name' as sql varchar(40); create table customer( info XML);

34 Bina Nusantara University 34 XML Indexing Examples create table customer( info XML); Don’t index everything! Too expensive for insert, update, delete ! Matt Foreman 1596 Baseline Toronto Ontario M3Z-5H9 905-555-4789 416-555-3376 Peter Smith 416-555-3426 create index idx4 on customer(info) generate key using xmlpattern '//text()' as sql varchar(40);

35 Bina Nusantara University 35 XML Schema Support XML Schemas are supported using “XML Schema repositories” To validate based on an XML Schema you can: –Use the XMLVALIDATE function during an INSERT –Use a BEFORE Trigger To test if an XML document has been validated, you can use the “IS VALIDATED” predicate on a CHECK constraint

36 Bina Nusantara University 36 DB2 pureXML Schema Flexibility No Schema One Schema Schema V1 Documents Any mix you want! & Schema V2 w/ and w/o schema Document validation for zero, one, or many schemas per XML column: Always Well Formed XML (a) (b) (c) (d) (e) Most databases only support (a) and (b). DB2 9 allows (a) through (e). What does an XML Schema do?


Download ppt "Pure XML Pertemuan 10 Matakuliah: T0413 Tahun: 2009."

Similar presentations


Ads by Google