Sandeepan Banerjee
Director, Oracle Server Technologies
Synthesized
Information
Multiple domain-specific applications
– Manufacturing,
Inventory, Supply
Chain, Financial, …
Information is trapped within these applications
Financial
Application
CRM
Application
Excel Files on Disk
E-Mail and Document
Contract Management
Repositories
Application
How does an organization get a consolidated view of its information – in real time ?
Domain-specific information
– Replication does not make sense
Independent operation of applications
– Access to information has to be in real-time
Different access method for each application
– Each application has its own protocol and access method
What architecture can best accommodate my present and future needs ?
– Complexity: Avoid the n by m matrix
–
–
Flexibility: Add new sources easily
Time to market: Within days, not months
XML-based Data Integration or
Enterprise Information Integration (EII):
Create aggregated views using XQuery
Get information from diverse sources in XML
Consume synthesized information
XQuery Engine
Order Tracking
J2EE TM CA
Synthesized
Information
EIS
Parts Inventory
JDBC HTTP
Shipment Tracking
Database Web Service
Why XML?
– Different data formats
Why XQuery ?
– Declarative way to query
XML documents
Why J2EE TM ?
– Standards-based infrastructure platform
Why XML Database ?
–
–
–
Native XML storage
XML data management
Performance optimizations
XML
Database
XQuery Engine
J2EE TM Platform
XML-based Data Integration
Application
Integration
Data
Warehousing
Difference
More about data pumping and synchronization among systems
Similarity
Involves data adapters, data translation and transformation
Explicit ETL steps required; large data volume; batch loading, not real-time
Optional cache pre-population step similar to the
“loading” step
SQL & relation-based vs.
XQuery & XML-based
Query-based
Traditional
Report
Generation
Cannot handle nonrelational sources
• XQuery is emerging as the consensus ‘ native ’ query language for XML
• Expected W3C Recommendation in late 2005
• Oracle 10gR2 is the first mainstream commercial database release to support XQuery
• Plan to release under an event in 10gR2
Assume a document – emp.xml
<empset>
<emp empno=“21” ename=“SCOTT” salary=“120000”/>
<emp empno=“22” ename=“JONES” salary=“344000”/>
</empset>
To get the names of employees with salary > 200000 for $i in document(‘emp.xml’)/empset let $j = 200000 where $i/@salary > $j return $i/@ename
Result (attribute node)
JONES
Customer/Address/Zip
ShipTo/Address/Zip
Supplier/Location/AddressForTaxCalculation/Zip
Customer/Address/Work/City/Zip
Customer/Address/Home/City/Zip
Shipper/DropOffLocation/US/California/SFO/Zip
+ any other zip nested to any unanticipated level count ( for $i in doc("contacts.xml")/Contact where $i//zip eq 94065 return $i)
Say we have 3 heterogeneous data sources that yield their contents as XML
– Item Description comes from a Filesystem
–
–
User Information comes from LDAP/DB
Bid Information comes from an App Server
-- For all bicycles, list the item number, description, highest bid (if any), ordered by item no.
for $i in doc("items.xml")//item_tuple let $b := doc("bids.xml")//bid_tuple[itemno = $i/itemno] where contains($i/description, "Bicycle") order by $i/itemno return <item_tuple> { $i/itemno} { $i/description }
<high_bid>{ max($b/bid) }</high_bid> </item_tuple>
Existing relational applications will continue to use
SQL, and Oracle will remain the industry’s best implementation of SQL
New applications based on XML will use XQuery, and
Oracle will be the industry’s best implementation of
XQuery
Oracle will support XQuery both in the database and in the mid-tier
– Use the mid-tier engine when you want to query nondatabase sources
Intelligent ‘query pushdown’ from mid-tier to db when possible
Can mix-and-match XQuery and SQL in same query
Navigation-oriented (using Xpath expressions)
Different type system (XMLSchema based simple types)
Identity-based (XML Node identities and document order)
Namespace aware name-resolution (functions, variables, element creation)
XML-Item based vs Row-based
Results are heterogeneous sequences
Does not have all SQL extensions (e.g. data warehousing etc..)
Other Data sources
XQuery
XQueryX
XPath
XQJ
API
Driver
XQuery
Java
Engine
DB
Drivers
SQL +
XQuery or
XQueryX
JDBC Driver
Java XMLType
User
XQJ API
Mid-Tier
XQuery
Engine
XQuery
XMLQuery,
XMLTable
XQuery Aware SQL Engine
XQuery Parser
Compiler
XQuery Type check
Normalization
SQL
Optimizer, Execution
Engine
SQLX/XPath
D E M O N S T R A T I O N
Native XML storage
– Available since Oracle Database Release 9.2
Inherits RDBMS features: Security, Transaction,…
XML-specific features
– XML indexing, XPath & XSLT support,
XML schema validation, XML partial update
Supports SQL/XML
– Allows blending relational and XML data operations
XML DB can be an XQuery source
– Can define XML views of relational data
– XQuery engine can rewrite query into SQL/XML
XML DB could also be used for caching
– Efficient storage & indexing for large data sets
Can leverage security framework of XML DB
– For both source and cache
Databases
– Relational+ XML Views, Object-Relational, CLOB, Compact
XML (future)
Mid-tier sources
– files, cache, JCA datasources
Bind (an existing DOM)
xmldatasrc – Oracle language addition
Datasource API
–
–
–
– initialize describe execute
Fetch
Applications using
XDS e.g. Portals, Reports etc
XML Data Synthesis
Cached XML Data Source
XDS Client API’s
EJB JSP Tags
XQuery Result
XQuery Subsystem
XQ4J/JXQI
XQuery Engine
XMLDataSource modules
Cached XML Data Source
RDBMS
XML Data source adaptors
Web
Services
Files HTTP
Web
Cache
Web Service
J2EE Security
Framework
XDS Cache
Security
Query
Builder
Tool
Meta-data
Repository
CCI-XML
Java
Functions
XDS
Caching
Service
Stored Query
J2CA EAI
JMS SAP
Oracle
Enterprise
Manager
Oracle
Apps
In-
Mem ory
JCache
XML DB
File system
User registers webservice as datasource
XDS creates an XQuery module automatically
User Query for querying webservice import module namespace wss=“datasrc/stockws”; for $i in wss:getcompanies() return wss:get_stock_price($i/name) wss – namespace prefix for the loaded module
JNDI lookup to get datasource implementation
XDS adapters implement datasource
Search with any language – SQL/XQuery/XSL
Search anywhere - mid tier or backend
Search anything any XML/relational content
Search everything
– XML visualization of all data (backend)
– XML based adapters provide XML content for all data in midtier (XDS)
Search any form – text based/structured
Search any size Scalable solution
Search any time Unbreakable solution
XML in general
– http://www.oracle.com/technology/tech/xml/index.html
XML Query
– http://www.oracle.com/technology/tech/xml/xquery/index.html
XML DB
– http://www.oracle.com/technology/tech/xml/xmldb/index.html