Jerry Held - Downloads

advertisement
Session id: 40020
Building High-Performance Enterprise
XML Applications with Oracle
Database 10g
Mark Scardina
Group Product Manager & XML Evangelist
Oracle Corporation
Why You Need XML
 Expanding business
–
XML is widely accepted as the standard data exchange
format for B2B, B2C and EAI applications
 Moving legacy applications to the Internet
–
XML incorporates metadata with data facilitating cross
platform data exchange
 Building e-Business applications over the Internet
–
XML provides powerful data abstraction for transaction data
management and exchange
 Publishing content across media and device types
–
XML provides flexible content representations and easy
transformations
Why XML Demands High Performance
 Encapsulation of data increase payload size
 Standards require character-based processing
–
–
XML Schema validation
XSLT stylesheet transformation
 XSL transformations require expensive DOM
 Content needs data-binding for application
processing
Oracle XML Developer’s Kit 10g
 High Performance Standards-based libraries and utilities
to generate, manipulate, render and store XML
 Includes:
–
–
–
–
–
–
–
–
–
XML Parser
XSLT Processor and XSLTVM
XML Schema Processor
XML Class Generators
XML Java Beans
XML SQL Utility
XSQL Servlet
SOAP Services
XML Pipeline Processor
 Available for Java, C, and C++
 Available in Servers and free of charge from OTN
W3C/JSR Standards Support
Standard
Version
Language
XML
1.0
Java, C/C++
XML Namespaces
1.0
Java, C/C++
1.0/2.0/3.0
Java, C/C++
SAX + Extensions
1.0/2.0
Java, C/C++
XSLT + XPath
1.0/2.0
Java, C/C++
XML Schema
1.0
Java, C/C++
SOAP
1.1
Java
JAXP
1.1
Java
JAXB
1.0
Java
DOM
Oracle XDK 10g: XML to the Power of SQL
 Build Oracle 10g XML OCI Applications
–
Directly access XMLType DOM
 Utilize High Performance XSL Transformations
–
XSLT Compiler and Virtual Machine
 Efficiently Generate Large XML documents
–
Stream-based retrieval
 Speed XML Processing with Stream-based XML
–
One step XML validation and transformation
Build OCI XML DB Applications
 New C APIs for working with XMLType
 Unified development in/out of Oracle DB 10g
–
–
Common XML* C interfaces for XML and
XMLType
Eliminates parsing and DOM construction
 Fast and Efficient XML processing of DB data
–
–
Directly work with the XMLType DOM (XOB)
Eliminates serializing and reparsing
XDK Unified DOM C Code Sample
/* Get an xml context */
params[0].name_ocixmldbparam = XCTXINIT_OCIDUR;
params[0].value_ocixmldbparam = &dur;
xctx = OCIXmlDbInitXmlCtx(envhp, svchp, errhp, params, 1);
/* Parse a schema-based document */
if (!(doc = XmlLoadDom(xctx, &err, "buffer", lpxml_test_sch, "buffer_length",
sizeof(tlpxml_test_sch)-1, "validate", TRUE, NULL)))
/* Create some elements and add them to the document */
top = XmlDomGetDocElem(xctx, doc);
foo = (xmlnode *) XmlDomCreateElem(xctx, doc, (oratext *) "FOO");
foo_data = (xmlnode *) XmlDomCreateText(xctx, doc, (oratext *)
"data");
foo_data = XmlDomAppendChild(xctx, (xmlnode *) foo, (xmlnode *)
foo_data);
foo = XmlDomAppendChild(xctx, quux, foo);
Fast XSLT with Oracle XDK10g
 XSLT Compiler and VM for C/C++
–
–
–
Compile Stylesheets for execution in XSLTVM
Improved throughput up to 2.5x
Significant Reduction in Memory use
 XSLT 2.0 Support and Optimizations in Java
–
–
–
Optimized Stylesheet compilation based on
XML/XSL static analysis
Indexing eliminates expensive XPath navigation
Support for Grouping, Multiple Outputs, Character
Mapping, Temp Trees and XSL functions
XSLT Compiler and Virtual Machine
XSL
XSLT
Compiler
XML
XML
XML
SVG
XSLT
Virtual
Machine
HTML
CSS
WML
Throughput Performance (KB/s)
Result File Size
Oracle
XSLTVM
Oracle
C
Oracle
Java
BrandX
Java
xslbench1
1442
653
103
13
xslbench2
1773
890
1502
534
xslbench3
9813
4461
3125
928
Overall
1574
654
408
208
XSLT Compiler/VM Code Sample
xmlFile = (oratext*)argv[1];
xslFile = (oratext*)argv[2];
/* Create context ad initialize */
xctx = XmlCreate(&err, (oratext *) "sample",
"data_encoding", "US-ASCII", NULL);
comp = XmlXslCreateComp (xctx);
vm = XmlXslVMCreate (xctx);
/* Compile XSL stylesheet input file */
code = XmlXslCompileFile (comp, xslFile, NULL,
XMLXSL_STRIPSPACE, &err);
/* Transform XML input file */
len = XmlXslGetBytecodeLength (code, &err);
err = XmlXslVMSetBytecodeBuffer (vm, code, len);
err = XmlXslVMTransformFile (vm, xmlFile, NULL);
Efficiently Generate Large XML Docs






Print XML directly from SQL Queries
Print Large XML Documents and Result Sets
Easily print directly from SAX events
Extends XML SQL Utility in Oracle XDK 10g
Eliminates the need to create a DOM
No need to create SAX handlers
Efficiently Generate Large XML
StartDocument
SQL Query
Streaming
StartElement
……
XSU
EndElement
EndDocument
JDBC
XML
10g
Performance Numbers
Result Set File Size
Memory (MB) Time (s)
DOM/SAX
DOM/SAX
3K Bytes
35/34
3.72/3.13
300K Bytes
38/37
7.91/4.72
3M Bytes
54/37
37.8/13.4
30M Bytes
<100/37
?/95.5
SAX Print from Query Sample Code
//Open a File and Initialize connection and SAX print
OutputStream out = new FileOutputStream("out.xml");
DriverManager.registerDriver(new
oracle.jdbc.driver.OracleDriver());
conn= DriverManager.getConnection(thinConn,”sh”,”sh”);
XMLSAXPrintDriver sample = new XMLSAXPrintDriver(out);
//init the OracleXMLQuery
OracleXMLQuery qry =
new OracleXMLQuery(conn,"select * from sales");
//Print the results
qry.getXMLSAX(sample);
sample.flush();
Streaming Single-step XML Processing
 Create a stream-based XML integration app
 Validate and Transform XML messages in a
stream-based process
 Utilize Oracle Streams 10g messaging support
 Annotate XML Schema with mapping attributes
 Easily and Efficiently support multiple schemas
 Abstract application schema from input
schemas future-proofing your application
Stream-based XML Processing
XSD
XML
XML
SAX
XML
Schema
Processor
SAX
Query
User
Applications
D E M O N S T R A T I O N
An Open-XML Streaming Business
Process Application
Existing DB Application Business
•PO
Interpretation
Validation
Input
•Relational
•Database
Extending DB Application Business
•PO
•XML Relational
•Database
Interpretation
Validation
Input
Oracle 10g –
The High Performance XML Platform
OracleDB
XML Database
XML
Stream
XMLType Persistence
XML Query Processing
XML Schema Validation
XSLT Processing
XML Messaging &
Queuing
OracleAS
WebCache
OracleAS
J2EE
XML
Stream
XSLT Processing
XML Query Processing
XML Schema/DTD Validation
XML Caching w/ JAAS security
XML J2EE Components
XML Messaging & Queuing
XML Data Integration
Client
XML
Stream
XSLT Processing
XML Query Processing
XML Caching w/HTTP
security
XSLT Processing
XML Query Processing
XML Caching w/o
security
Next Steps….
 Recommended sessions
–
–
40108: Making XML Technologies Easier to Use
40255: Manipulating XML with Oracle JDeveloper
 Recommended demos and/or hands-on labs
–
–
DB: Application Development: XML to the Power of SQL
AS: XML Technologies: Simplify Information Integration
 See Your Business in Our Software
–
Visit the DEMOgrounds for a customized architectural
review, see a customized demo with Solutions Factory, or
receive a personalized proposal. Visit the DEMOgrounds
for more information.
 Relevant web sites to visit for more information
–
XML Technology Center – otn.oracle.com/tech/xml
Oracle XML Resources
•Oracle Technology Network
• http://otn.oracle.com
• Downloads, Demos, Samples, Papers
• XML Support Forum
•Oracle9i XML Handbook
• Covers all of Oracle XML technology
• Includes XDK CD with Samples
• Available today from Bookstores
QUESTIONS
ANSWERS
Oracle XML Developer’s Kit 10g
XML TO THE POWER OF SQL
Reminder –
please complete the OracleWorld
online session survey
Thank you.
Download