• Nem Talált Eredményt

Oracle XML DB and XQuery

N/A
N/A
Protected

Academic year: 2023

Ossza meg "Oracle XML DB and XQuery"

Copied!
38
0
0

Teljes szövegt

(1)

Oracle XML DB and XQuery

Chris Gianfrancesco Aruna Apuri

Oleg Rekutin

(2)

Introduction

XML Type abstraction

Storage

Shredded or LOB

Publishing

XML Views of relational tables

SQL / XML functions and constructs

XMLQuery, XMLTable, and more...

XML Updates

XQuery evaluation and processing

(3)

XML Type

XML Type abstraction

Physical Storage XML Type Views

Relational Data

CLOB Shredded

Hybrid Binary XML

XQuery XPath XSLT SQL / XML

(4)

XML View

Create virtual XML version of object- relational data

Allows XQuery to access relational data

Uses XML Publishing

ora:view()

(5)

SQL/XML Functions

SQL/XML querying function and construct

XMLQuery, XMLTable

SQL/XML functions for creating XML from SQL

XMLElement(), XMLConcat(), XMLAttributes(), XMLForest()

(6)

More XML Functions

Other XML functions

XMLColAttVal(), XMLSequence(),

ExtractValue(), Extract(), XMLTransform()

To support XML updates

UpdateXML(), DeleteXML(), InsertChildXML(), InsertXMLBefore(), AppendChildXML()

(7)

XQuery Hybrid Evaluation

Transform XMLTable into XMLQuery

Static analysis and type checking

If possible, compiles into native SQL data structures

If not possible, XMLQuery is left as is for

processing by XMLQuery processor

(8)

XQuery Hybrid Evaluation

SQL query containing XMLQuery/XMLTable

SQL query containing XMLQuery

SQL structures with XML operators

XQuery evaluated natively

SQL structures containing XMLQuery

Co-processor evaluates Transform XMLTable to XMLQuery

Native compilation of XMLQuery

(9)

Input & Data Representation

All data in one row, one XMLType column

(10)

Input & Data Representation

Each data row in separate DB row, column of XMLType

(11)

Input & Data Representation

Each data row in separate DB row, contents in separate columns

(12)

Input Tools

Straight XML in SQL

INSERT VALUES(

XMLType(‘<xml>goes here</xml>’))

JDBC using special XMLType (also C)

SQL*Loader w/ direct path load mode

XML-SQL Utility (XSU)

Maps XML to columns

Rigid default mapping

No support for attributes

(13)

Storage in Database

XMLType CLOB

File preserved as complete text (whitespace, comments, etc) [textual fidelity]

Can still be validated against a schema

Data internally is not “typed”

Slow querying

Fastest storage and retrieval

(14)

Storage in Database

XMLType View

Create a virtual XML document on top of relational tables

Fast querying, manipulation using pure SQL

Deeply nested views are slow

Updating/inserting requires triggers

Lose strict order guarantee, no textual fidelity

Supports multiple XML schemas on top of one relational schema

(15)

Storage in Database

Native XML type (Structured Storage)

Preserves textual fidelity

Shreds into SQL tables

Complete validation, full SQL support

No triggers to update tables (built-in rewriting)

Some overhead

Cannot change schema w/o reloading all data

(16)

Structured Storage Detail

Annotate XML schema to control nested collections storage, as:

CLOB

Array of serialized SQL objects

Nested table of serialized SQL objects

Array of XMLType

(17)

Working with XML Schema

Registering schema

begin dbms_xmlschema.registerSchema( ‘http://namespace', xdbURIType('schema.xsd').getClob(),

TRUE,TRUE,FALSE,TRUE);

end;

Creating table w/ schema

CREATE TABLE TableName of XMLType

(18)

XQuery Support in Oracle

XMLDB integrated database engine

SQL / XML standard support

Optimized queries – rewrite to relational

Standalone Java query engine

100% Java

Integrated into Oracle App Server -XDS

Interoperates with XSLT/XPath

(19)

XQuery database support

Production in Oracle Database 10gr2

Supports XMLQuery and XMLTable construct

Native compilation into SQL /XML structures

Returns XMLType(Content)

Can query over relational, O-R, XMLType data

fn:doc - Maps to XDB Repository on server

SQLPlus provides xquery command to execute XQuery

(20)

Architecture

XQuery XSL-T Parser

Compiler

XQuery Type check

X Q U E R Y

SQL Metadata XMLSchema

Repository

XML Indexes, Text Indexes

Rewrite to SQLX

SQLX rewrite

Relational Optimizer Normalization

XQueryX

Compiled XQuery Tree

Statically Type checked

Tree Normalized Tree (casts, treat )

SQL/XML Operand Tree

SQL Operand Tree

Execution Structures

S Q L

(21)

XQuery Java implementation

XQuery or XQueryX input

Extensible function implementation

Compiles into rowsource like structures

Optimization – push XQuery to XMLDB

XQJ API driver – for accessing mid tier/backend

Shared data model with XSL/XPath

Shared F&O – pre-defined & external

Standard implementation interfaces

Write Java Function once use it in XQuery/XSLT

(22)

Processing XQuery

Oracle XQuery Compilation Engine

Parser convert XQuery into XQueryX

XQueryX is an XML

representation of XQuery (another W3C candidate recommendation)

XML parser construct a DOM tree from XQueryX

Work on the DOM afterward

Corresponding components are

(23)

Sample XQuery

For each author in the bibliography, list the author's name and the titles of all books by that author, grouped inside a "result" element."

<results>

FOR $a IN

distinct(document("http://www.bn.co m")//author)

RETURN <result>

$a,

FOR $b IN

document("http://www.bn.com")/bib/b ook[author = $a]

(24)

WHAT IS XQueryX

Is an XML representation of an XQuery.

Created by mapping the productions of the XQuery abstract syntax directly into XML productions.

The result is not particularly convenient for humans to read and write.

Easy for programs to parse, and because XQueryX is represented in XML, standard XML tools can be used to create, interpret, or modify queries

(25)

Environments in which XQueryX useful

Parser Reuse. In heterogeneous data environments, a variety of systems may be used to execute a query. One parser can generate XQueryX for all of these

systems.

Queries on Queries. Because XQueryX is represented in XML, queries can be queried and can be transformed into new queries.

For instance, a query can be performed against a set of XQueryX queries to

determine which queries use FLWOR expressions to range over a set of invoices.

Generating Queries. In some XML-oriented programming environments, it may be more convenient to build a query in its XQueryX representation than in the

corresponding XQuery representation, since XML tools can be used to do so.

Embedding Queries in XML. XQueryX can be embedded directly in an XML

(26)

Why XQuery static type checking?

XQuery static type checking is very

useful when the input XML structure is known during compile time.

The feature itself enables early error

recovery.

(27)

XQuery Static Type-Checking in Oracle XML DB

Oracle XML DB performs static (that is, compile-time) type-checking of XQuery expressions. It also performs dynamic (runtime) type-checking.

Example Static Type-Checking of XQuery Expression

The XML view produced on the fly by Oracle XQuery function ora:view has ROW as its top-level element, but this example incorrectly lacks that ROW wrapper

element. This omission raises a compile-time error.

Forgetting that ora:view wraps relational data in this way is an easy mistake to make, and one that could be difficult

(28)

Static Type-Checking of XQuery Expressions: ora:view

This produces a static-type-check error, because "ROW" is missing.

SELECT XMLQuery('for $i in ora:view("REGIONS"), $j in ora:view("COUNTRIES")

where $i/REGION_ID = $j/REGION_ID and

$i/REGION_NAME = "Asia"

return $j'

RETURNING CONTENT) AS asian_countries FROM DUAL;

SELECT XMLQuery('for $i in ora:view("REGIONS"), $j in ora:view("COUNTRIES")

*

ERROR at line 1:

ORA-19276: XP0005 - XPath step specifies an invalid element/attribute name:

(REGION_ID)

(29)

Correct code

SELECT XMLQuery('for $i in ora:view("REGIONS"), $j in ora:view("COUNTRIES")

where $i/ROW/REGION_ID = $j/ROW/REGION_ID and $i/ROW/REGION_NAME = "Asia"

return $j'

RETURNING CONTENT) AS asian_countries FROM DUAL;

(30)

Result Sequence

<ROW><DEPARTMENT_ID>10</DEPARTMENT_ID><DEPARTMENT_NAME>Administr ation</DEPARTMENT_NAME><MANAGER_ID>200</MANAGER_ID><LOCATION_

ID>1700</LOCATION_ID></ROW>

<ROW><DEPARTMENT_ID>20</DEPARTMENT_ID><DEPARTMENT_NAME>Marketing

</DEPARTMENT_NAME><MANAGER_ID>201</MANAGER_ID><LOCATION_ID>18 00</LOCATION_ID></ROW>

<ROW><DEPARTMENT_ID>30</DEPARTMENT_ID><DEPARTMENT_NAME>Purchasin g</DEPARTMENT_NAME><MANAGER_ID>114</MANAGER_ID><LOCATION_ID>1 700</LOCATION_ID></ROW>

<ROW><DEPARTMENT_ID>40</DEPARTMENT_ID><DEPARTMENT_NAME>Human Resources</DEPARTMENT_NAME><MANAGER_ID>203</MANAGER_ID><LOCAT ION_ID>2400</LOCATION_ID></ROW>

(31)

XQuery Processing

Choices: co-processor or native compilation?

Co-processor:

“off-the-shelf” XQuery processor

opaque to DBMS

Native compilation:

XQuery processing added to database engine

DBMS-specific processor

(32)

Co-processor Advantages

Easy to implement and install

Modularity of XQuery processor

Standard XQuery processor between applications

Third-party development

Flexibility

(33)

Co-processor Limitations

Storage Optimization

Advanced Oracle XML DB features being wasted (e.g. indexed XML)

Query Optimization

Cannot use already-established Oracle query engine optimizations

No support for SQL/XML query optimization

(34)

Oracle's Native Processing

XQueries are compiled into sub-blocks and execution structures usable by existing DB engine

“tightly integrate XQuery and SQL/XML support within the database kernel”

Focuses on utilizing existing optimization techniques (algebra optimizations)

XQuery interpreter for unsupported

(35)

Native Processor Architecture

(36)

Advantages of Oracle's Approach

Fully utilizes mature optimization techniques

Integration of SQL and XQueries

Much stronger support for SQL/XML mixed query optimizations

No need for development of a separate set of optimizations

“performance that is orders of magnitude

faster than the co-processor approach”

(37)

Conclusion

XMLType

Variety of ways for data to be stored

XQuery parsing and static type checking

XQuery native processing and co-

processor

(38)

References

Zhen Hua Liu, Maralidhar Krishnaprasad, Vikas Aora. Native XQuery Processing in Oracle XMLDB. SIGMOD2005.

Ravi Murthy, Zhen Hua Liu, Muralidhar Krishnaprasad, et al. Towards An Enterprise XML Architecture. SIGMOD2005.

Mark Scardina. XML Storage Models: One Size Does Not Fit All.

http://www.oracle.com/technology/oramag/webcolumns/2003/techarticles/s cardina_xmldb.html

XML Query (XQuery) Support in Oracle Database 10g Release 2. Oracle White Paper. May 2005.

XML and Datenbanken.

http://www.dbis.ethz.ch/education/ws0506/xml_db_ws2005

http://www.dbspecialists.com

http://www.w3.org/TR/2003/WD-xqueryx-20031219/#N1016C

http://www.w3schools.com/xquery/xquery_example.asp

Hivatkozások

KAPCSOLÓDÓ DOKUMENTUMOK

However, as discussed in Section 5.5 (Initializing and Preload- ing Servlets and JSP Pages), the initialization parameters are available only when the servlet or JSP page is accessed

● keresés forrásra: Az ebbe a mezőbe írt kereső- kifejezés, amely automatikus szóvégi csonkolást tartalmaz, az XML-fájl minden szöveges eleme között keres.

„Ahogyan a HTML lehetővé tette, hogy minden számitógép-felhasználó olvashassa az internetes dokumentumokat, úgy az XML - az inkompatibilis számítógépes rendszerek

• In the definition of an attribute of a child there can be attributes of any children which lie to the left side of it, or are those attributes of the same child that have

Az XML dokumentumok tárolhatóak egy adatbázisban úgy mint szöveg, bináris objektum, vagy valamilyen XML adat típus.. Néhány relációs adatbázis engedélyezi

I have implemented search, retrieval and content processing agents, the XML-based analysis framework, the Conceptual Model and several controlled language interfaces.. A detailed

A dolgozat részét képezi annak elméleti vizsgálata is, hogy az XML adatmodell használata esetén – összehasonlítva például az elosztott relációs

Marketplaces, search engines, and business apps query the registry to discover services at other companies. Szolgáltatás