Techniques for Sending/Receiving XML Packets Using SQL...

38
1 XML Presentation Techniques for Sending/Receiving XML Packets Using SQL Developer 11g Release 2 Thursday, September 22, 2011 10:45AM 11:45AM Developer Room 118

Transcript of Techniques for Sending/Receiving XML Packets Using SQL...

Page 1: Techniques for Sending/Receiving XML Packets Using SQL ...nyoug.org/Presentations/2011/September/Leviter_Sending_Receiving_XML.pdf · 3 CV - WMS Group – Thirteen years - VAX Rewrite

1

XML Presentation

Techniques for Sending/Receiving XML Packets Using

SQL Developer 11g Release 2

Thursday, September 22, 2011

10:45AM – 11:45AM

Developer Room 118

Page 2: Techniques for Sending/Receiving XML Packets Using SQL ...nyoug.org/Presentations/2011/September/Leviter_Sending_Receiving_XML.pdf · 3 CV - WMS Group – Thirteen years - VAX Rewrite

2

Techniques for Sending/Receiving XML

Packets Using SQL Developer

11g Release 2

Coleman Leviter

Arrow Electronics

IT Software Systems Engineer

[email protected]

Presentation #411

Page 3: Techniques for Sending/Receiving XML Packets Using SQL ...nyoug.org/Presentations/2011/September/Leviter_Sending_Receiving_XML.pdf · 3 CV - WMS Group – Thirteen years - VAX Rewrite

3

CV

- WMS Group – Thirteen years

- VAX Rewrite (.for ) to UNIX (.c, .pc)

- VAX Forms to Oracle Forms

- TIFF file migration to Oracle

- XML Development

- WMS Development and Support

- IOUG Select Contributor ’06, ’08

- ODTUG Journal ‘09

- NYOUG WEB SIG Chair, Steering Committee

- IOUG Collaborate ’07, ’08, ’09, ’10, ’11, '12

- Oracle Open World ’10, '11

- IOUG Development Co-track Manager ’10

- IOUG Education Co-Chair ’11

- COLLABORATE 12 - IOUG FORUM CONFERENCE CHAIR

Page 4: Techniques for Sending/Receiving XML Packets Using SQL ...nyoug.org/Presentations/2011/September/Leviter_Sending_Receiving_XML.pdf · 3 CV - WMS Group – Thirteen years - VAX Rewrite

4

Presentation Objectives

• Introduction

• Background - Project

• Data Structures

• XML Packet Techniques

• XML Child Node Packets

• CLOB Packets

• Demo

• Questions

Page 5: Techniques for Sending/Receiving XML Packets Using SQL ...nyoug.org/Presentations/2011/September/Leviter_Sending_Receiving_XML.pdf · 3 CV - WMS Group – Thirteen years - VAX Rewrite

5

Oracle XML History

•8i 1998 - XML Api

•9i 2001 - XML Storage

•10g 2004 – XPath, Within

•11g 2007 - Binary XML

•12g ????

Page 6: Techniques for Sending/Receiving XML Packets Using SQL ...nyoug.org/Presentations/2011/September/Leviter_Sending_Receiving_XML.pdf · 3 CV - WMS Group – Thirteen years - VAX Rewrite

6

Terminology

• XML1 - Short for eXtensible Markup Language, a

specification developed by the World Wide Web Consortium

(W3C). It allows designers to create their own customized

tags, enabling the definition, transmission, validation, and

interpretation of data between applications and between

organizations.

• Warehouse Management System - a component of the

movement and storage of materials within a warehouse 1 http://en.wikipedia.org/wiki/XML

Page 7: Techniques for Sending/Receiving XML Packets Using SQL ...nyoug.org/Presentations/2011/September/Leviter_Sending_Receiving_XML.pdf · 3 CV - WMS Group – Thirteen years - VAX Rewrite

7

Project Steps

• Develop XSD

• Data Structures

• Temporary Tables

• Use Oracle 11g XML DB for messages

• Use MQ Series for the communications layer – guaranteed message delivery

Page 8: Techniques for Sending/Receiving XML Packets Using SQL ...nyoug.org/Presentations/2011/September/Leviter_Sending_Receiving_XML.pdf · 3 CV - WMS Group – Thirteen years - VAX Rewrite

8

XSD Design – XML SPY • XML Schema Definition (XSD) language is the current standard

schema language for all XML documents and data.

Page 9: Techniques for Sending/Receiving XML Packets Using SQL ...nyoug.org/Presentations/2011/September/Leviter_Sending_Receiving_XML.pdf · 3 CV - WMS Group – Thirteen years - VAX Rewrite

9

Nodal Representation

house

|

-----------------------------------------------

| | | |

room room room room

| | | |

kitchen living room dining room den

| | | | | |

oven range chair couch table lamp

Page 10: Techniques for Sending/Receiving XML Packets Using SQL ...nyoug.org/Presentations/2011/September/Leviter_Sending_Receiving_XML.pdf · 3 CV - WMS Group – Thirteen years - VAX Rewrite

10

Table Data

Table Name: my_relat_table

NAME ITEM

kitchen sink

kitchen oven

kitchen refrigerator

living_room pictures

dining_room table

dining_room chair

dining_room chandelier

den chair

den lamp

den étagère

Page 11: Techniques for Sending/Receiving XML Packets Using SQL ...nyoug.org/Presentations/2011/September/Leviter_Sending_Receiving_XML.pdf · 3 CV - WMS Group – Thirteen years - VAX Rewrite

11

XML Document

<?xml version="1.0" encoding="WINDOWS-1252"?> <house> <room> <name>kitchen</name> <item>sink</item> </room> <room> <name>kitchen</name> <item>table</item> </room> <room> <name>kitchen</name> <item>counter</item> </room> <room> <name>kitchen</name> <item>microwave</item> </room> etc... </house>

Page 12: Techniques for Sending/Receiving XML Packets Using SQL ...nyoug.org/Presentations/2011/September/Leviter_Sending_Receiving_XML.pdf · 3 CV - WMS Group – Thirteen years - VAX Rewrite

12

EBS/SOA*-WMS Data Flow

MQ Write Queue

MQ Read Queue

XML Request Message XML Request Message

XML Request Message XML Request Message

Step 1

Step 1

EBS/SOA* WMS

MQ Status

MQ Status

* DTI Direct Transfer Interface

Page 13: Techniques for Sending/Receiving XML Packets Using SQL ...nyoug.org/Presentations/2011/September/Leviter_Sending_Receiving_XML.pdf · 3 CV - WMS Group – Thirteen years - VAX Rewrite

13

XML Producer / Consumer Model

PIPE

XML

Document

1

XML

Document

2

XML

Document

n

XML

Document

1

XML

Document

2

XML

Document

n

Page 14: Techniques for Sending/Receiving XML Packets Using SQL ...nyoug.org/Presentations/2011/September/Leviter_Sending_Receiving_XML.pdf · 3 CV - WMS Group – Thirteen years - VAX Rewrite

14

Problem

• The pipe is 32k bytes

• XML Documents can range in size upwards

past the 32k bytes size of the pipe

• How do know how big to make the pipe?

• Pipe size - 32k bytes? 64K bytes?

128K bytes?

• Where do you stop?

Page 15: Techniques for Sending/Receiving XML Packets Using SQL ...nyoug.org/Presentations/2011/September/Leviter_Sending_Receiving_XML.pdf · 3 CV - WMS Group – Thirteen years - VAX Rewrite

15

Possible Solutions

• Restrict XML Documents < 32k

bytes?

• Create several different size pipes

and use as needed?

• Break up the XML Document and

ship through the pipe?

Page 16: Techniques for Sending/Receiving XML Packets Using SQL ...nyoug.org/Presentations/2011/September/Leviter_Sending_Receiving_XML.pdf · 3 CV - WMS Group – Thirteen years - VAX Rewrite

16

Data Structures

--- original

CREATE TABLE MY_RELAT_TABLE

( NAME VARCHAR2(20 BYTE),

ITEM VARCHAR2(20 BYTE) );

--- xml, clob

CREATE TABLE MY_XML_TABLE

( REF_ID NUMBER,

XMLCOL SYS.XMLTYPE,

CLOBCOL CLOB);

--- reconstructed

CREATE TABLE MY_RELAT_TABLE_XML_PARSED

( NAME VARCHAR2(20 BYTE),

ITEM VARCHAR2(20 BYTE));

Page 17: Techniques for Sending/Receiving XML Packets Using SQL ...nyoug.org/Presentations/2011/September/Leviter_Sending_Receiving_XML.pdf · 3 CV - WMS Group – Thirteen years - VAX Rewrite

17

XML Packet Creation

XML Document > 32K

Each XML Document < 32 K

Parent Node

Child Node 2

Child Node 3

Parent Node

Parent Node

XML DB

pl/sql

Parent Node

Child Node 1

Child Node 2

Child Node 3

Child Node n

Child Node 1

Child Node 4

Parent Node

Child Node n

Parent Node

P

I

P

E

Page 18: Techniques for Sending/Receiving XML Packets Using SQL ...nyoug.org/Presentations/2011/September/Leviter_Sending_Receiving_XML.pdf · 3 CV - WMS Group – Thirteen years - VAX Rewrite

18

XML Packet - Multiple Child Nodes <StandardHeader>

<DateTime>mm/dd/yyyy hh:mi:ss</DateTime>

<PacketNumber>1</PacketNumber>

<AnyMorePackets>Y</AnyMorePackets>

<TotalPackets>4</TotalPackets>

<house>

<room> --------- child 1

<name>kitchen</name>

<item>sink</item>

</room>

<room> --------- child 2

<name>kitchen</name>

<item>table</item>

</room>

<room> --------- child 3

<name>kitchen</name>

<item>counter</item>

</room>

</house>

</StandardHeader>

Page 19: Techniques for Sending/Receiving XML Packets Using SQL ...nyoug.org/Presentations/2011/September/Leviter_Sending_Receiving_XML.pdf · 3 CV - WMS Group – Thirteen years - VAX Rewrite

19

Producer - XML Create Child Node Packet - 1

-- Create Standard Header with root node “house"

<StandardHeader>

<DateTime>mm/dd/yyyy hh:mi:ss</DateTime>

<PacketNumber>1</PacketNumber>

<AnyMorePackets>Y</AnyMorePackets>

<TotalPackets>4</TotalPackets>

<house>

<room>

<name>kitchen</name>

<item>counter</item>

</room>

<room>

<name>kitchen</name>

<item>microwave</item>

</room>

</house>

</StandardHeader>

Page 20: Techniques for Sending/Receiving XML Packets Using SQL ...nyoug.org/Presentations/2011/September/Leviter_Sending_Receiving_XML.pdf · 3 CV - WMS Group – Thirteen years - VAX Rewrite

20

Producer - XML Create Child Node Packet - 2

-- Create Standard Header with root node “house"

<StandardHeader>

<DateTime>mm/dd/yyyy hh:mi:ss</DateTime>

<PacketNumber>2</PacketNumber>

<AnyMorePackets>Y</AnyMorePackets>

<TotalPackets>4</TotalPackets>

<house>

<room>

<name>living_room</name>

<item>pictures</item>

</room>

<room>

<name>living_room</name>

<item>chair</item>

</room>

</house>

</StandardHeader>

Page 21: Techniques for Sending/Receiving XML Packets Using SQL ...nyoug.org/Presentations/2011/September/Leviter_Sending_Receiving_XML.pdf · 3 CV - WMS Group – Thirteen years - VAX Rewrite

21

Producer - XML Create Child Node Packet - 3

-- Create Standard Header with root node “house"

<StandardHeader>

<DateTime>mm/dd/yyyy hh:mi:ss</DateTime>

<PacketNumber>3</PacketNumber>

<AnyMorePackets>Y</AnyMorePackets>

<TotalPackets>4</TotalPackets>

<house>

<room>

<name>dining_room</name>

<item>étagère</item>

</room>

<room>

<name>dining_room</name>

<item>chair</item>

</room>

</house>

</StandardHeader>

Page 22: Techniques for Sending/Receiving XML Packets Using SQL ...nyoug.org/Presentations/2011/September/Leviter_Sending_Receiving_XML.pdf · 3 CV - WMS Group – Thirteen years - VAX Rewrite

22

Producer - XML Create Child Node Packet - 4

-- Create Standard Header with root node “house"

<StandardHeader>

<DateTime>mm/dd/yyyy hh:mi:ss</DateTime>

<PacketNumber>4</PacketNumber>

<AnyMorePackets>N</AnyMorePackets>

<TotalPackets>4</TotalPackets>

<house>

<room>

<name>den</name>

<item>fireplace</item>

</room>

<room>

<name>den</name>

<item>table</item>

</room>

</house>

</StandardHeader>

Page 23: Techniques for Sending/Receiving XML Packets Using SQL ...nyoug.org/Presentations/2011/September/Leviter_Sending_Receiving_XML.pdf · 3 CV - WMS Group – Thirteen years - VAX Rewrite

23

XML Document Re-Construction

XML Document > 32K

Each XML Document < 32 K

XML DB

pl/sql

Parent Node

Child Node 1

Child Node 2

Child Node 3

Child Node n

Parent Node

Child Node 2

Child Node 3

Parent Node

Parent Node

Child Node 1

Child Node 4

Parent Node

Child Node n

Parent Node

P

I

P

E

Page 24: Techniques for Sending/Receiving XML Packets Using SQL ...nyoug.org/Presentations/2011/September/Leviter_Sending_Receiving_XML.pdf · 3 CV - WMS Group – Thirteen years - VAX Rewrite

24

XML Document

<?xml version="1.0" encoding="WINDOWS-1252"?> <house> <room> <name>kitchen</name> <item>sink</item> </room> <room> <name>kitchen</name> <item>table</item> </room> <room> <name>kitchen</name> <item>counter</item> </room> <room> <name>kitchen</name> <item>microwave</item> </room> etc... </house>

Page 25: Techniques for Sending/Receiving XML Packets Using SQL ...nyoug.org/Presentations/2011/September/Leviter_Sending_Receiving_XML.pdf · 3 CV - WMS Group – Thirteen years - VAX Rewrite

25

Restored Table Data

Table Name: my_relat_table_xml_parsed

NAME ITEM

kitchen sink

kitchen oven

kitchen refrigerator

living_room pictures

dining_room table

dining_room chair

dining_room chandelier

den chair

den lamp

den étagère

Q.E.D. (demo)

Page 26: Techniques for Sending/Receiving XML Packets Using SQL ...nyoug.org/Presentations/2011/September/Leviter_Sending_Receiving_XML.pdf · 3 CV - WMS Group – Thirteen years - VAX Rewrite

26

XML (CLOB) Packet Creation

XML Document > 32K

CLOB < 32 K

XML Header 1

XML Header 2

XML Header 3

XML Header 4

XML Header n

XML DB

pl/sql

P

I

P

E

XML

Document

CLOB 1 CLOB 1 CLOB 1 CLOB 1

CLOB 2

CLOB 3

CLOB 2

CLOB 4

CLOB n

Page 27: Techniques for Sending/Receiving XML Packets Using SQL ...nyoug.org/Presentations/2011/September/Leviter_Sending_Receiving_XML.pdf · 3 CV - WMS Group – Thirteen years - VAX Rewrite

27

Table Data

Table Name: my_relat_table

NAME ITEM

kitchen sink

kitchen oven

kitchen refrigerator

living_room pictures

dining_room table

dining_room chair

dining_room chandelier

den chair

den lamp

den étagère

Page 28: Techniques for Sending/Receiving XML Packets Using SQL ...nyoug.org/Presentations/2011/September/Leviter_Sending_Receiving_XML.pdf · 3 CV - WMS Group – Thirteen years - VAX Rewrite

28

XML Document

<?xml version="1.0" encoding="WINDOWS-1252"?> <house> <room> <name>kitchen</name> <item>sink</item> </room> <room> <name>kitchen</name> <item>table</item> </room> <room> <name>kitchen</name> <item>counter</item> </room> <room> <name>kitchen</name> <item>microwave</item> </room> etc... </house>

Page 29: Techniques for Sending/Receiving XML Packets Using SQL ...nyoug.org/Presentations/2011/September/Leviter_Sending_Receiving_XML.pdf · 3 CV - WMS Group – Thirteen years - VAX Rewrite

29

CLOB Packet - 1 <StandardHeader>

<DateTime>mm/dd/yyyy hh:mi:ss</DateTime>

<PacketNumber>1</PacketNumber>

<AnyMorePackets>Y</AnyMorePackets>

<TotalPackets>4</TotalPackets>

</StandardHeader>

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

8"?><house><room><name>kitchen</name><item>sink</it

em></room><room><name>kitchen</name><item>table</it

em></room><room><name>kitchen</name><item>counter</

item></room><room><name>kitchen</name><item>microwa

ve</item></room><room><name>kitchen</name><item>ove

n

</item></r*

*cutoff point

Page 30: Techniques for Sending/Receiving XML Packets Using SQL ...nyoug.org/Presentations/2011/September/Leviter_Sending_Receiving_XML.pdf · 3 CV - WMS Group – Thirteen years - VAX Rewrite

30

CLOB Packet - 2 <StandardHeader>

<DateTime>mm/dd/yyyy hh:mi:ss</DateTime>

<PacketNumber>2</PacketNumber>

<AnyMorePackets>Y</AnyMorePackets>

<TotalPackets>4</TotalPackets>

</StandardHeader>

oom><room><name>kitchen</name><item>range</item>

</room><room><name>kitchen</name><item>refrige

rator</item></room><room><name>living_room</na

me><item>pictures</item></room><room><name>liv

ing_room</name><item>chair</item></room><room>

<name>living_room</name><item>television</item

></room><room><name>li*

*cutoff point

Page 31: Techniques for Sending/Receiving XML Packets Using SQL ...nyoug.org/Presentations/2011/September/Leviter_Sending_Receiving_XML.pdf · 3 CV - WMS Group – Thirteen years - VAX Rewrite

31

CLOB Packet - 3 <StandardHeader>

<DateTime>mm/dd/yyyy hh:mi:ss</DateTime>

<PacketNumber>3</PacketNumber>

<AnyMorePackets>Y</AnyMorePackets>

<TotalPackets>4</TotalPackets>

</StandardHeader>

ving_room</name><item>couch</item></room><room><

name>dining_room</name><item>table</item></roo

m><room><name>dining_room</name><item>etagere<

/item></room><room><name>dining_room</name><it

em>chair</item></room><room><name>dining_room<

/name><item>chandelier</item></room><room><nam

e>den</name><item>fire*

*cutoff point

Page 32: Techniques for Sending/Receiving XML Packets Using SQL ...nyoug.org/Presentations/2011/September/Leviter_Sending_Receiving_XML.pdf · 3 CV - WMS Group – Thirteen years - VAX Rewrite

32

CLOB Packet - 4 <StandardHeader>

<DateTime>mm/dd/yyyy hh:mi:ss</DateTime>

<PacketNumber>4</PacketNumber>

<AnyMorePackets>N</AnyMorePackets>

<TotalPackets>4</TotalPackets>

</StandardHeader>

place</item></room><room><name>den</name><it

em>table</item></room><room><name>den</name

><item>chair</item></room><room><name>den</

name><item>lamp</item></room><room><name>de

n</name><item>étagère</item></room></house>

Page 33: Techniques for Sending/Receiving XML Packets Using SQL ...nyoug.org/Presentations/2011/September/Leviter_Sending_Receiving_XML.pdf · 3 CV - WMS Group – Thirteen years - VAX Rewrite

33

CLOB (XML) Document Construction 2 of 2

XML Document > 32K

(CLOB + XML Header) < 32 K

XML Header 1

XML Header 2

XML Header 3

XML Header 4

XML Header n

XML DB

pl/sql

P

I

P

E

XML

Document

CLOB 1

CLOB 2

CLOB 3

CLOB 4

CLOB n

Page 34: Techniques for Sending/Receiving XML Packets Using SQL ...nyoug.org/Presentations/2011/September/Leviter_Sending_Receiving_XML.pdf · 3 CV - WMS Group – Thirteen years - VAX Rewrite

34

XML Document - Reconstructed

<?xml version="1.0" encoding="WINDOWS-1252"?> <house> <room> <name>kitchen</name> <item>sink</item> </room> <room> <name>kitchen</name> <item>table</item> </room> <room> <name>kitchen</name> <item>counter</item> </room> <room> <name>kitchen</name> <item>microwave</item> </room> etc... </house>

Page 35: Techniques for Sending/Receiving XML Packets Using SQL ...nyoug.org/Presentations/2011/September/Leviter_Sending_Receiving_XML.pdf · 3 CV - WMS Group – Thirteen years - VAX Rewrite

35

Restored Table Data

Table Name: my_relat_table_xml_parsed

NAME ITEM

kitchen sink

kitchen oven

kitchen refrigerator

living_room pictures

dining_room table

dining_room chair

dining_room chandelier

den chair

den lamp

den étagère

Q.E.D. (demo)

Page 36: Techniques for Sending/Receiving XML Packets Using SQL ...nyoug.org/Presentations/2011/September/Leviter_Sending_Receiving_XML.pdf · 3 CV - WMS Group – Thirteen years - VAX Rewrite

36

Technique Comparison - Summary

• XML Child Node Packets - multiple child relationship to one parent.

• May also apply to many children belonging to many parents.

• Complications - “bookkeeping” - accordion like effect

• Data Structures - agreement with both sides

• XML header prefixed to a CLOB packet

• The entire XML document is divided into arbitrary sections or

CLOBs.

• The receiver must know the size of the XML header prior to any data

transfer

• The XML header is segregated from the payload

• With all the CLOB pieces recovered, reconstruct the original XML

document.

Page 37: Techniques for Sending/Receiving XML Packets Using SQL ...nyoug.org/Presentations/2011/September/Leviter_Sending_Receiving_XML.pdf · 3 CV - WMS Group – Thirteen years - VAX Rewrite

37

References

1 Wikipedia, http://en.wikipedia.org/wiki/Moore's_law

2 XML DB, http://download-

west.oracle.com/docs/cd/B28359_01/appdev.111/b28369/toc.htm

3 Wikipedia, http://en.wikipedia.org/wiki/Prettyprint

4 Oracle dbms_lob,

http://download.oracle.com/docs/cd/B28359_01/appdev

.111/b28419/d_lob.htm#i1016062

5 Wikipedia

, http://en.wikipedia.org/wiki/Metadata

6 Wikipedia, http://en.wikipedia.org/wiki/Q.E.D.

Page 38: Techniques for Sending/Receiving XML Packets Using SQL ...nyoug.org/Presentations/2011/September/Leviter_Sending_Receiving_XML.pdf · 3 CV - WMS Group – Thirteen years - VAX Rewrite

38

Questions