SlideShare a Scribd company logo
1 of 43
XML Indexing Strategies
Choosing the Right Index for the
Right Job
Marco Gralike
Strange Chainsaw Tree Guy
• OakTable Member
• ACE Director
• Customer Advisory
Board Member
• 17+ years DBA, etc.
Blog.gralike.com
Technology.amis.nl
Richard Foote (Mr. Index)
• OakTable Member
• ACE Director
• Oracle Certified
Professional
• 22+ years DBA, etc.
RichardFoote.wordpress.com
Refinement
Structured or Semi-Structured or…
Structured
Semi
Structured
Unstructured Content
Document Driven / Data Driven
XML Container
(in memory or via storage)
In Memory
(document)
CLOB
(document)
Object Relational
(data)
Binary XML
(data)
Design: Width and Height and …
Z
X
Y
1
2
3
4
6
5
Content Height : minOccurs="0" maxOccurs=“unbounded”
Content Width : type="xs:string“, restriction…?
Content Distribution : histogram, statistics, skew, cardinality ?
XMLIndex Use Cases
Binary XML
(Schema based)
XMLIndex
Structured
Component
Binary XML / CLOB Column
(Schema less, Schema
based)
XMLIndex Structured
Component
Mixed
w/ Text
index
Storage Models (xmltype)
• CLOB
– Default until 11.2.0.2.0
– Non-Schema Based
• Binary XML
– Oracle 11 and Onwards
– Schema and Non-Schema Based
• Object Relational (+Hybrid)
– Nested Tables, Types, Varray’s
– Schema Based
Querying XML Content in XML DB
XMLIndex
DOM Tree
Model
Streaming XPath
Evaluation
Object-Relational
Relational Storage Secure Files
Binary XML
XQuerySQL/XML
XMLType Abstraction
XVM
(use “no query rewrite”)
PushdownXQuery Rewrite
Procedural XQueryDB XQuery
SQL Execution
Relational
Access
Methods
Source: S317428: Building Really Scalable XML Applications with Oracle XML DB and Oracle Text
Index Methods (xmltype)
Storage Index Defaults (xmltype)
• Binary XML / CLOB
– LOB Index
• Object Relational
– DBMS_XMLSCHEMA  “OPTIONS”
– Oracle 10g: Index Organized Tables
– Oracle 11g: B-Tree Indexes
– xdb:annotations
• Storage type  xdb:SQLType
• Storage Type  xdb:ColumnProps / xdb:TableProps
Index Methods (10.x)
paragraph
book
title author author
whitepaper
title author id
content
bookstore
chapter
content
Function
based Index
(XPath)
Oracle Text Index
BTBTre
e I
BTre
e
Index
Function-Based Index
• Deprecated in 11.2
• Object Relational XMLType Storage
(can, but shouldn’t on CLOB)
• Performance wise the lesser option…
SQL> CREATE INDEX function_based_index
ON xml_data_table
(extractValue(OBJECT_VALUE, '/Root/TextID'));
BTree / Bitmap Index
• Structured XML Data
– Ordered Collection Tables (OCT)
– ComplexTypes…
– “dot” notation using the “xmldata” pseudocolumn
SQL> CREATE INDEX dot_notation_index
ON xml_data_table
("XMLDATA". "TEXTID");
Index Alternatives
SQL> CREATE INDEX oracle_11_applicable_only_index
ON xml_data_table xdt
(XMLCast(XMLQuery
('$i/Root/TextID'
PASSING xdt.OBJECT_VALUE as "i"
RETURNING content)
as VARCHAR2(10)));
SQL> CREATE INDEX function_based_again_idx
ON xml_data_table
(CAST("XMLDATA". "TEXTID“ as VARCHAR2(10)));
Oracle Text Index
• Unstructured Data in XML
– CLOB storage XML part in Object Relational XML
– Secondary index on XMLIndex
• Can only index XML data TEXT nodes
• Result Set Interface (new in 11.2.0.2)
– Specify Query request and hit list requirements in
XML
SQL> CREATE INDEX oracle_text_index
ON xml_data_table
(OBJECT_VALUE) INDEXTYPE IS CTXSYS.CONTEXT;
Index Methods (11.1)
Unstructured
XMLIndex
paragraph
book
title author author
whitepaper
title author id
content
bookstore
chapter
content
Function
based Index
(XPath)
Secondary Oracle
Text Index
BTBTre
e I
BTre
e
Index
Simple: Unstructured XMLIndex
SQL> CREATE INDEX xmlindex_idx
ON “XMLTYPE_COLUMN"(xdata)
INDEXTYPE IS XDB.XMLINDEX;
Index created.
SQL> CREATE INDEX xmlindex_idx
ON “XMLTYPE_TABLE"(object_value)
INDEXTYPE IS XDB.XMLINDEX;
Index created.
• XML Document contains:
– Semi Structured Data and Structured Data
– Supports searching and fragment extraction
– When XPath queried is not known beforehand
• XMLType CLOB or Binary XML content
• If you use an XMLIndex and/or combine it
with Structured XMLIndex(es)
Usage: Unstructured XMLIndex
Path Table
Path Table
Unstructured
XMLIndex
f (x)
Unstructured XMLIndex (UXI)
 One Path Table
 Use Path Subsetting
 Full Blown XMLIndex can be BIG
 Token Tables (XDB.X$......)
 Query re-write on Tokens
 Fuzzy Searches, //
 Optimizer Statistics
 Can be maintained Manually
 Recorded in Pending Table
 Secondary indexes possible
Path Table
Unstructured
XMLIndex
f (x)
Creating Unstructured XMLIndex
CREATE INDEX XMLIDX
ON XMLBINARY_TAB (object_value)
INDEXTYPE IS XDB.XMLIndex
PARAMETERS
('PATHS (INCLUDE (/ROOT/ID /ROOT/INFO/INFO_ID )
NAMESPACE MAPPING
(xmlns="http://localhost/xmlschema_bin.xsd") )
PATH TABLE path_table (TABLESPACE XML_DATA)
PATH ID INDEX pathid_idx (TABLESPACE XML_INDX)
ORDER KEY INDEX orderkey_idx (TABLESPACE XML_INDX)
VALUE INDEX value_idx (TABLESPACE XML_INDX)
ASYNC (SYNC ALWAYS) STALE (FALSE) ')
PARALLEL LOGGING;
Index Methods (11.2)
Structured
XMLIndex
Unstructured
XMLIndex
paragraph
book
title author author
whitepaper
title author id
content
bookstore
chapter
content
Function
based Index
(XPath)
Secondary Oracle
Text Index
Highly Structured
Islands of Data
BTBTre
e I
BTre
e
Index
Simple: Structured XMLIndex
• “XMLTABLE” Driven Syntax
SQL> CREATE INDEX xmlindex_sxi
on xmldata_table (doc)
indextype is xdb.xmlindex
parameters
('GROUP elementinfo_group
XMLTABLE xml_cnt_tab_elementinfo
' '/root/element' '
COLUMNS
infocol VARCHAR2(4000) PATH ' 'info' '
');
Be aware
' '
• With highly Structured Data
• Likely candidates: ComplexTypes
• Structured Islands of Data
– Can be nested, but only one level
– XMLTABLE “virtual” nested column hint
• Multiple “content tables”
– Multiple XPath defined same columns with
different purpose
They deliver relational performance…!
Usage: Structured XMLIndex
Content Table(s)
KEY INDEX
 (KEY)
 Unique BTREE Index
 Primary Key
RID INDEX
 (RID)
 NON Unique BTREE Index
Your Columns
CONTENT TABLE(s)
RID
rowid
Key
RAW
Not
null
RID
rowid
Key
RAW
Not
null
YOUR
column
s
X
YOUR
column
s
X
RID
rowid
YOUR
column
X
Key
RAW
Not
null
Structured XMLIndex (SXI)
• Content Table(s)
• Based on XMLTABLE syntax
• XMLTable construct can be nested but:
“Only ONE XMLType column allowed”
 VIRTUAL column
• Can be maintained Manually
• Secondary indexes possible
• LOCAL parameter (partitioning)
Content
Tables
Structured
XMLIndex
f (x)
Adding Structured Indexes
SQL> ALTER INDEX xmlindex_sxi
parameters
('ADD_GROUP
GROUP my_new_group
XMLTABLE xml_content_tab_new
' '/root/extra' '
COLUMNS
extracol VARCHAR2(35) PATH ' 'new_element' ' ');
Mixed XMLIndex Options
Unstructured
XMLIndex
Structured
XMLIndex
Structured
XMLIndex
paragraph
book
title author author
whitepaper
title author id
content
bookstore
chapter
content
Secondary
(text) Index
Mixed XMLIndex structures
CREATE INDEX xmlindex on TEST_RANGE_XML (doc)
indextype is xdb.xmlindex
PARAMETERS
(' PATH TABLE path_table PATHS (EXCLUDE(/root/ElementInfo)) ');
BEGIN
DBMS_XMLINDEX.registerParameter
('StructuredXML',
'ADD_GROUP GROUP ElementInfo
XMLTABLE xml_cnttable_valueinfo ' '/root/ElementInfo' '
COLUMNS ValueInfo VARCHAR2(100) PATH ' 'ValueInfo' ');
END; /
ALTER INDEX xmlindex PARAMETERS('PARAM StructuredXML');
XMLIndex Maintenance
• ALTER INDEX
• XMLIndex Parameter Changes
– DBMS_XMLINDEX.DROPPARAMETER
– DBMS_XMLINDEX.MODIFYPARAMETER
– DBMS_XMLINDEX.REGISTERPARAMETER
• Manual Synchronizing an XMLIndex
– DBMS_XMLINDEX.SYNCINDEX
– Pending Tables
“There Can Be Only One…”
Syntax Awareness
• SYNC=ALWAYS
– Mandatory when Combined XMLIndex
• SYNC=MANUAL
– Locking
• STALE=FALSE | TRUE
– Hmmm…
• Empty XMLIndex tables
– OOPS  I got my “XMLTABLE” Syntax etc. “wrong”
Notes on XMLIndex (1)
• Only ONE XMLIndex is allowed in a user
schema
– Add extra XMLIndex structures (structured or
unstructured)
via ADD_GROUP syntax
– Only SYNC=ALWAYS is allowed while using mixed
XMLIndex structures or add more than one
Notes on XMLIndex (2)
• You need the LOCAL parameter to create local
partitioned XMLIndexes
• An XMLIndex on a HASH partitioned XMLType
column or XMLType table, is not (yet) allowed
– But you can create an Oracle Text Index on such
structures
Recap
• True understanding of Storage
and Index options will provide:
– Optimal performance
– Out perform XML (Java based)
• A lot of choice:
– Problems are Complex
– Also provides Solutions
• Good design beforehand is the path to success
References (1)
Oracle Whitepapers
– Oracle XML DB : Choosing the Best XMLType
Storage Option for Your Use Case (PDF)
– Oracle XML DB : Best Practices to Get Optimal
Performance out of XML Queries (PDF)
Blog
– http://blog.gralike.com
• (Dedicated XMLDB blog)
• Semi-Structured XMLIndex section
• Structured XMLIndex section
References (2)
• Oracle Open World Presentation on XML DB
– S317428: Building Really Scalable XML
Applications with Oracle XML DB and Oracle Text
• XML DB OTN / FAQ Thread
– http://forums.oracle.com/forums/forum.jspa?foru
mID=34
– http://forums.oracle.com/forums/thread.jspa?thr
eadID=410714

More Related Content

What's hot

ODTUG Webcast - Thinking Clearly about XML
ODTUG Webcast - Thinking Clearly about XMLODTUG Webcast - Thinking Clearly about XML
ODTUG Webcast - Thinking Clearly about XMLMarco Gralike
 
OPP2010 (Brussels) - Programming with XML in PL/SQL - Part 1
OPP2010 (Brussels) - Programming with XML in PL/SQL - Part 1OPP2010 (Brussels) - Programming with XML in PL/SQL - Part 1
OPP2010 (Brussels) - Programming with XML in PL/SQL - Part 1Marco Gralike
 
OPP2010 (Brussels) - Programming with XML in PL/SQL - Part 2
OPP2010 (Brussels) - Programming with XML in PL/SQL - Part 2OPP2010 (Brussels) - Programming with XML in PL/SQL - Part 2
OPP2010 (Brussels) - Programming with XML in PL/SQL - Part 2Marco Gralike
 
XFILES, The APEX 4 version - The truth is in there
XFILES, The APEX 4 version - The truth is in thereXFILES, The APEX 4 version - The truth is in there
XFILES, The APEX 4 version - The truth is in thereMarco Gralike
 
UKOUG Tech14 - Using Database In-Memory Column Store with Complex Datatypes
UKOUG Tech14 - Using Database In-Memory Column Store with Complex DatatypesUKOUG Tech14 - Using Database In-Memory Column Store with Complex Datatypes
UKOUG Tech14 - Using Database In-Memory Column Store with Complex DatatypesMarco Gralike
 
Starting with JSON Path Expressions in Oracle 12.1.0.2
Starting with JSON Path Expressions in Oracle 12.1.0.2Starting with JSON Path Expressions in Oracle 12.1.0.2
Starting with JSON Path Expressions in Oracle 12.1.0.2Marco Gralike
 
BGOUG 2012 - Design concepts for xml applications that will perform
BGOUG 2012 - Design concepts for xml applications that will performBGOUG 2012 - Design concepts for xml applications that will perform
BGOUG 2012 - Design concepts for xml applications that will performMarco Gralike
 
UKOUG Tech14 - Getting Started With JSON in the Database
UKOUG Tech14 - Getting Started With JSON in the DatabaseUKOUG Tech14 - Getting Started With JSON in the Database
UKOUG Tech14 - Getting Started With JSON in the DatabaseMarco Gralike
 
XML In The Real World - Use Cases For Oracle XMLDB
XML In The Real World - Use Cases For Oracle XMLDBXML In The Real World - Use Cases For Oracle XMLDB
XML In The Real World - Use Cases For Oracle XMLDBMarco Gralike
 
Real World Experience With Oracle Xml Database 11g An Oracle Ace’s Perspectiv...
Real World Experience With Oracle Xml Database 11g An Oracle Ace’s Perspectiv...Real World Experience With Oracle Xml Database 11g An Oracle Ace’s Perspectiv...
Real World Experience With Oracle Xml Database 11g An Oracle Ace’s Perspectiv...Marco Gralike
 
XMLDB Building Blocks And Best Practices - Oracle Open World 2008 - Marco Gra...
XMLDB Building Blocks And Best Practices - Oracle Open World 2008 - Marco Gra...XMLDB Building Blocks And Best Practices - Oracle Open World 2008 - Marco Gra...
XMLDB Building Blocks And Best Practices - Oracle Open World 2008 - Marco Gra...Marco Gralike
 
Oracle Database - JSON and the In-Memory Database
Oracle Database - JSON and the In-Memory DatabaseOracle Database - JSON and the In-Memory Database
Oracle Database - JSON and the In-Memory DatabaseMarco Gralike
 
Jdbc 4.0 New Features And Enhancements
Jdbc 4.0 New Features And EnhancementsJdbc 4.0 New Features And Enhancements
Jdbc 4.0 New Features And Enhancementsscacharya
 
Cloudera Impala, updated for v1.0
Cloudera Impala, updated for v1.0Cloudera Impala, updated for v1.0
Cloudera Impala, updated for v1.0Scott Leberknight
 
Database Programming
Database ProgrammingDatabase Programming
Database ProgrammingHenry Osborne
 
JSON in der Oracle Datenbank
JSON in der Oracle DatenbankJSON in der Oracle Datenbank
JSON in der Oracle DatenbankUlrike Schwinn
 
Object Relational Mapping in PHP
Object Relational Mapping in PHPObject Relational Mapping in PHP
Object Relational Mapping in PHPRob Knight
 

What's hot (20)

ODTUG Webcast - Thinking Clearly about XML
ODTUG Webcast - Thinking Clearly about XMLODTUG Webcast - Thinking Clearly about XML
ODTUG Webcast - Thinking Clearly about XML
 
OPP2010 (Brussels) - Programming with XML in PL/SQL - Part 1
OPP2010 (Brussels) - Programming with XML in PL/SQL - Part 1OPP2010 (Brussels) - Programming with XML in PL/SQL - Part 1
OPP2010 (Brussels) - Programming with XML in PL/SQL - Part 1
 
OPP2010 (Brussels) - Programming with XML in PL/SQL - Part 2
OPP2010 (Brussels) - Programming with XML in PL/SQL - Part 2OPP2010 (Brussels) - Programming with XML in PL/SQL - Part 2
OPP2010 (Brussels) - Programming with XML in PL/SQL - Part 2
 
XFILES, The APEX 4 version - The truth is in there
XFILES, The APEX 4 version - The truth is in thereXFILES, The APEX 4 version - The truth is in there
XFILES, The APEX 4 version - The truth is in there
 
UKOUG Tech14 - Using Database In-Memory Column Store with Complex Datatypes
UKOUG Tech14 - Using Database In-Memory Column Store with Complex DatatypesUKOUG Tech14 - Using Database In-Memory Column Store with Complex Datatypes
UKOUG Tech14 - Using Database In-Memory Column Store with Complex Datatypes
 
Starting with JSON Path Expressions in Oracle 12.1.0.2
Starting with JSON Path Expressions in Oracle 12.1.0.2Starting with JSON Path Expressions in Oracle 12.1.0.2
Starting with JSON Path Expressions in Oracle 12.1.0.2
 
BGOUG 2012 - Design concepts for xml applications that will perform
BGOUG 2012 - Design concepts for xml applications that will performBGOUG 2012 - Design concepts for xml applications that will perform
BGOUG 2012 - Design concepts for xml applications that will perform
 
UKOUG Tech14 - Getting Started With JSON in the Database
UKOUG Tech14 - Getting Started With JSON in the DatabaseUKOUG Tech14 - Getting Started With JSON in the Database
UKOUG Tech14 - Getting Started With JSON in the Database
 
XML In The Real World - Use Cases For Oracle XMLDB
XML In The Real World - Use Cases For Oracle XMLDBXML In The Real World - Use Cases For Oracle XMLDB
XML In The Real World - Use Cases For Oracle XMLDB
 
Real World Experience With Oracle Xml Database 11g An Oracle Ace’s Perspectiv...
Real World Experience With Oracle Xml Database 11g An Oracle Ace’s Perspectiv...Real World Experience With Oracle Xml Database 11g An Oracle Ace’s Perspectiv...
Real World Experience With Oracle Xml Database 11g An Oracle Ace’s Perspectiv...
 
XMLDB Building Blocks And Best Practices - Oracle Open World 2008 - Marco Gra...
XMLDB Building Blocks And Best Practices - Oracle Open World 2008 - Marco Gra...XMLDB Building Blocks And Best Practices - Oracle Open World 2008 - Marco Gra...
XMLDB Building Blocks And Best Practices - Oracle Open World 2008 - Marco Gra...
 
Oracle Database - JSON and the In-Memory Database
Oracle Database - JSON and the In-Memory DatabaseOracle Database - JSON and the In-Memory Database
Oracle Database - JSON and the In-Memory Database
 
Jdbc 4.0 New Features And Enhancements
Jdbc 4.0 New Features And EnhancementsJdbc 4.0 New Features And Enhancements
Jdbc 4.0 New Features And Enhancements
 
Xml parsers
Xml parsersXml parsers
Xml parsers
 
Cloudera Impala, updated for v1.0
Cloudera Impala, updated for v1.0Cloudera Impala, updated for v1.0
Cloudera Impala, updated for v1.0
 
Polyglot Persistence
Polyglot PersistencePolyglot Persistence
Polyglot Persistence
 
Database Programming
Database ProgrammingDatabase Programming
Database Programming
 
JSON in der Oracle Datenbank
JSON in der Oracle DatenbankJSON in der Oracle Datenbank
JSON in der Oracle Datenbank
 
wtf is in Java/JDK/wtf7?
wtf is in Java/JDK/wtf7?wtf is in Java/JDK/wtf7?
wtf is in Java/JDK/wtf7?
 
Object Relational Mapping in PHP
Object Relational Mapping in PHPObject Relational Mapping in PHP
Object Relational Mapping in PHP
 

Similar to UKOUG 2010 (Birmingham) - XML Indexing strategies - Choosing the Right Index for the Right Job

Similar to UKOUG 2010 (Birmingham) - XML Indexing strategies - Choosing the Right Index for the Right Job (20)

advDBMS_XML.pptx
advDBMS_XML.pptxadvDBMS_XML.pptx
advDBMS_XML.pptx
 
DATA INTEGRATION (Gaining Access to Diverse Data).ppt
DATA INTEGRATION (Gaining Access to Diverse Data).pptDATA INTEGRATION (Gaining Access to Diverse Data).ppt
DATA INTEGRATION (Gaining Access to Diverse Data).ppt
 
unit_5_XML data integration database management
unit_5_XML data integration database managementunit_5_XML data integration database management
unit_5_XML data integration database management
 
Sql Summit Clr, Service Broker And Xml
Sql Summit   Clr, Service Broker And XmlSql Summit   Clr, Service Broker And Xml
Sql Summit Clr, Service Broker And Xml
 
ASP.Net Presentation Part2
ASP.Net Presentation Part2ASP.Net Presentation Part2
ASP.Net Presentation Part2
 
Spark Sql and DataFrame
Spark Sql and DataFrameSpark Sql and DataFrame
Spark Sql and DataFrame
 
Xml
XmlXml
Xml
 
PostgreSQL's Secret NoSQL Superpowers
PostgreSQL's Secret NoSQL SuperpowersPostgreSQL's Secret NoSQL Superpowers
PostgreSQL's Secret NoSQL Superpowers
 
No SQL, No problem - using MongoDB in Ruby
No SQL, No problem - using MongoDB in RubyNo SQL, No problem - using MongoDB in Ruby
No SQL, No problem - using MongoDB in Ruby
 
SXML: S-expression eXtensible Markup Language
SXML: S-expression eXtensible Markup LanguageSXML: S-expression eXtensible Markup Language
SXML: S-expression eXtensible Markup Language
 
"If I knew then what I know now"
"If I knew then what I know now""If I knew then what I know now"
"If I knew then what I know now"
 
Local Storage
Local StorageLocal Storage
Local Storage
 
Inside SQL Server In-Memory OLTP
Inside SQL Server In-Memory OLTPInside SQL Server In-Memory OLTP
Inside SQL Server In-Memory OLTP
 
XML Tools for Perl
XML Tools for PerlXML Tools for Perl
XML Tools for Perl
 
XML
XMLXML
XML
 
XML
XMLXML
XML
 
Helberg acl-final
Helberg acl-finalHelberg acl-final
Helberg acl-final
 
DB2 Native XML
DB2 Native XMLDB2 Native XML
DB2 Native XML
 
SQLPASS AD501-M XQuery MRys
SQLPASS AD501-M XQuery MRysSQLPASS AD501-M XQuery MRys
SQLPASS AD501-M XQuery MRys
 
Hibernate
HibernateHibernate
Hibernate
 

More from Marco Gralike

UKOUG2018 - I Know what you did Last Summer [in my Database].pptx
UKOUG2018 - I Know what you did Last Summer [in my Database].pptxUKOUG2018 - I Know what you did Last Summer [in my Database].pptx
UKOUG2018 - I Know what you did Last Summer [in my Database].pptxMarco Gralike
 
eProseed Oracle Open World 2016 debrief - Oracle Management Cloud
eProseed Oracle Open World 2016 debrief - Oracle Management CloudeProseed Oracle Open World 2016 debrief - Oracle Management Cloud
eProseed Oracle Open World 2016 debrief - Oracle Management CloudMarco Gralike
 
eProseed Oracle Open World 2016 debrief - Oracle 12.2.0.1 Database
eProseed Oracle Open World 2016 debrief - Oracle 12.2.0.1 DatabaseeProseed Oracle Open World 2016 debrief - Oracle 12.2.0.1 Database
eProseed Oracle Open World 2016 debrief - Oracle 12.2.0.1 DatabaseMarco Gralike
 
UKOUG Tech15 - Going Full Circle - Building a native JSON Database API
UKOUG Tech15 - Going Full Circle - Building a native JSON Database APIUKOUG Tech15 - Going Full Circle - Building a native JSON Database API
UKOUG Tech15 - Going Full Circle - Building a native JSON Database APIMarco Gralike
 
Ordina Oracle Open World
Ordina Oracle Open WorldOrdina Oracle Open World
Ordina Oracle Open WorldMarco Gralike
 
An introduction into Oracle VM V3.x
An introduction into Oracle VM V3.xAn introduction into Oracle VM V3.x
An introduction into Oracle VM V3.xMarco Gralike
 
An introduction into Oracle Enterprise Manager Cloud Control 12c Release 3
An introduction into Oracle Enterprise Manager Cloud Control 12c Release 3An introduction into Oracle Enterprise Manager Cloud Control 12c Release 3
An introduction into Oracle Enterprise Manager Cloud Control 12c Release 3Marco Gralike
 
An AMIS Overview of Oracle database 12c (12.1)
An AMIS Overview of Oracle database 12c (12.1)An AMIS Overview of Oracle database 12c (12.1)
An AMIS Overview of Oracle database 12c (12.1)Marco Gralike
 
Flexibiliteit & Snel Schakelen
Flexibiliteit & Snel SchakelenFlexibiliteit & Snel Schakelen
Flexibiliteit & Snel SchakelenMarco Gralike
 
Expertezed 2012 Webcast - XML DB Use Cases
Expertezed 2012 Webcast - XML DB Use CasesExpertezed 2012 Webcast - XML DB Use Cases
Expertezed 2012 Webcast - XML DB Use CasesMarco Gralike
 
BGOUG 2012 - Drag & drop and other stuff - Using your database as a file server
BGOUG 2012 - Drag & drop and other stuff - Using your database as a file serverBGOUG 2012 - Drag & drop and other stuff - Using your database as a file server
BGOUG 2012 - Drag & drop and other stuff - Using your database as a file serverMarco Gralike
 
Design Concepts For Xml Applications That Will Perform
Design Concepts For Xml Applications That Will PerformDesign Concepts For Xml Applications That Will Perform
Design Concepts For Xml Applications That Will PerformMarco Gralike
 

More from Marco Gralike (13)

UKOUG2018 - I Know what you did Last Summer [in my Database].pptx
UKOUG2018 - I Know what you did Last Summer [in my Database].pptxUKOUG2018 - I Know what you did Last Summer [in my Database].pptx
UKOUG2018 - I Know what you did Last Summer [in my Database].pptx
 
eProseed Oracle Open World 2016 debrief - Oracle Management Cloud
eProseed Oracle Open World 2016 debrief - Oracle Management CloudeProseed Oracle Open World 2016 debrief - Oracle Management Cloud
eProseed Oracle Open World 2016 debrief - Oracle Management Cloud
 
eProseed Oracle Open World 2016 debrief - Oracle 12.2.0.1 Database
eProseed Oracle Open World 2016 debrief - Oracle 12.2.0.1 DatabaseeProseed Oracle Open World 2016 debrief - Oracle 12.2.0.1 Database
eProseed Oracle Open World 2016 debrief - Oracle 12.2.0.1 Database
 
UKOUG Tech15 - Going Full Circle - Building a native JSON Database API
UKOUG Tech15 - Going Full Circle - Building a native JSON Database APIUKOUG Tech15 - Going Full Circle - Building a native JSON Database API
UKOUG Tech15 - Going Full Circle - Building a native JSON Database API
 
Ordina Oracle Open World
Ordina Oracle Open WorldOrdina Oracle Open World
Ordina Oracle Open World
 
An introduction into Oracle VM V3.x
An introduction into Oracle VM V3.xAn introduction into Oracle VM V3.x
An introduction into Oracle VM V3.x
 
An introduction into Oracle Enterprise Manager Cloud Control 12c Release 3
An introduction into Oracle Enterprise Manager Cloud Control 12c Release 3An introduction into Oracle Enterprise Manager Cloud Control 12c Release 3
An introduction into Oracle Enterprise Manager Cloud Control 12c Release 3
 
An AMIS Overview of Oracle database 12c (12.1)
An AMIS Overview of Oracle database 12c (12.1)An AMIS Overview of Oracle database 12c (12.1)
An AMIS Overview of Oracle database 12c (12.1)
 
Flexibiliteit & Snel Schakelen
Flexibiliteit & Snel SchakelenFlexibiliteit & Snel Schakelen
Flexibiliteit & Snel Schakelen
 
Expertezed 2012 Webcast - XML DB Use Cases
Expertezed 2012 Webcast - XML DB Use CasesExpertezed 2012 Webcast - XML DB Use Cases
Expertezed 2012 Webcast - XML DB Use Cases
 
BGOUG 2012 - Drag & drop and other stuff - Using your database as a file server
BGOUG 2012 - Drag & drop and other stuff - Using your database as a file serverBGOUG 2012 - Drag & drop and other stuff - Using your database as a file server
BGOUG 2012 - Drag & drop and other stuff - Using your database as a file server
 
Amis ACE
Amis ACEAmis ACE
Amis ACE
 
Design Concepts For Xml Applications That Will Perform
Design Concepts For Xml Applications That Will PerformDesign Concepts For Xml Applications That Will Perform
Design Concepts For Xml Applications That Will Perform
 

Recently uploaded

AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfngoud9212
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 

Recently uploaded (20)

AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdf
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 

UKOUG 2010 (Birmingham) - XML Indexing strategies - Choosing the Right Index for the Right Job

  • 1. XML Indexing Strategies Choosing the Right Index for the Right Job Marco Gralike
  • 2. Strange Chainsaw Tree Guy • OakTable Member • ACE Director • Customer Advisory Board Member • 17+ years DBA, etc. Blog.gralike.com Technology.amis.nl
  • 3. Richard Foote (Mr. Index) • OakTable Member • ACE Director • Oracle Certified Professional • 22+ years DBA, etc. RichardFoote.wordpress.com
  • 5. Structured or Semi-Structured or… Structured Semi Structured
  • 7. Document Driven / Data Driven
  • 8. XML Container (in memory or via storage) In Memory (document) CLOB (document) Object Relational (data) Binary XML (data)
  • 9. Design: Width and Height and … Z X Y 1 2 3 4 6 5 Content Height : minOccurs="0" maxOccurs=“unbounded” Content Width : type="xs:string“, restriction…? Content Distribution : histogram, statistics, skew, cardinality ?
  • 10.
  • 11. XMLIndex Use Cases Binary XML (Schema based) XMLIndex Structured Component Binary XML / CLOB Column (Schema less, Schema based) XMLIndex Structured Component Mixed w/ Text index
  • 12. Storage Models (xmltype) • CLOB – Default until 11.2.0.2.0 – Non-Schema Based • Binary XML – Oracle 11 and Onwards – Schema and Non-Schema Based • Object Relational (+Hybrid) – Nested Tables, Types, Varray’s – Schema Based
  • 13. Querying XML Content in XML DB XMLIndex DOM Tree Model Streaming XPath Evaluation Object-Relational Relational Storage Secure Files Binary XML XQuerySQL/XML XMLType Abstraction XVM (use “no query rewrite”) PushdownXQuery Rewrite Procedural XQueryDB XQuery SQL Execution Relational Access Methods Source: S317428: Building Really Scalable XML Applications with Oracle XML DB and Oracle Text
  • 15. Storage Index Defaults (xmltype) • Binary XML / CLOB – LOB Index • Object Relational – DBMS_XMLSCHEMA  “OPTIONS” – Oracle 10g: Index Organized Tables – Oracle 11g: B-Tree Indexes – xdb:annotations • Storage type  xdb:SQLType • Storage Type  xdb:ColumnProps / xdb:TableProps
  • 16. Index Methods (10.x) paragraph book title author author whitepaper title author id content bookstore chapter content Function based Index (XPath) Oracle Text Index BTBTre e I BTre e Index
  • 17. Function-Based Index • Deprecated in 11.2 • Object Relational XMLType Storage (can, but shouldn’t on CLOB) • Performance wise the lesser option… SQL> CREATE INDEX function_based_index ON xml_data_table (extractValue(OBJECT_VALUE, '/Root/TextID'));
  • 18. BTree / Bitmap Index • Structured XML Data – Ordered Collection Tables (OCT) – ComplexTypes… – “dot” notation using the “xmldata” pseudocolumn SQL> CREATE INDEX dot_notation_index ON xml_data_table ("XMLDATA". "TEXTID");
  • 19. Index Alternatives SQL> CREATE INDEX oracle_11_applicable_only_index ON xml_data_table xdt (XMLCast(XMLQuery ('$i/Root/TextID' PASSING xdt.OBJECT_VALUE as "i" RETURNING content) as VARCHAR2(10))); SQL> CREATE INDEX function_based_again_idx ON xml_data_table (CAST("XMLDATA". "TEXTID“ as VARCHAR2(10)));
  • 20. Oracle Text Index • Unstructured Data in XML – CLOB storage XML part in Object Relational XML – Secondary index on XMLIndex • Can only index XML data TEXT nodes • Result Set Interface (new in 11.2.0.2) – Specify Query request and hit list requirements in XML SQL> CREATE INDEX oracle_text_index ON xml_data_table (OBJECT_VALUE) INDEXTYPE IS CTXSYS.CONTEXT;
  • 21. Index Methods (11.1) Unstructured XMLIndex paragraph book title author author whitepaper title author id content bookstore chapter content Function based Index (XPath) Secondary Oracle Text Index BTBTre e I BTre e Index
  • 22. Simple: Unstructured XMLIndex SQL> CREATE INDEX xmlindex_idx ON “XMLTYPE_COLUMN"(xdata) INDEXTYPE IS XDB.XMLINDEX; Index created. SQL> CREATE INDEX xmlindex_idx ON “XMLTYPE_TABLE"(object_value) INDEXTYPE IS XDB.XMLINDEX; Index created.
  • 23. • XML Document contains: – Semi Structured Data and Structured Data – Supports searching and fragment extraction – When XPath queried is not known beforehand • XMLType CLOB or Binary XML content • If you use an XMLIndex and/or combine it with Structured XMLIndex(es) Usage: Unstructured XMLIndex
  • 25. Unstructured XMLIndex (UXI)  One Path Table  Use Path Subsetting  Full Blown XMLIndex can be BIG  Token Tables (XDB.X$......)  Query re-write on Tokens  Fuzzy Searches, //  Optimizer Statistics  Can be maintained Manually  Recorded in Pending Table  Secondary indexes possible Path Table Unstructured XMLIndex f (x)
  • 26. Creating Unstructured XMLIndex CREATE INDEX XMLIDX ON XMLBINARY_TAB (object_value) INDEXTYPE IS XDB.XMLIndex PARAMETERS ('PATHS (INCLUDE (/ROOT/ID /ROOT/INFO/INFO_ID ) NAMESPACE MAPPING (xmlns="http://localhost/xmlschema_bin.xsd") ) PATH TABLE path_table (TABLESPACE XML_DATA) PATH ID INDEX pathid_idx (TABLESPACE XML_INDX) ORDER KEY INDEX orderkey_idx (TABLESPACE XML_INDX) VALUE INDEX value_idx (TABLESPACE XML_INDX) ASYNC (SYNC ALWAYS) STALE (FALSE) ') PARALLEL LOGGING;
  • 27. Index Methods (11.2) Structured XMLIndex Unstructured XMLIndex paragraph book title author author whitepaper title author id content bookstore chapter content Function based Index (XPath) Secondary Oracle Text Index Highly Structured Islands of Data BTBTre e I BTre e Index
  • 28. Simple: Structured XMLIndex • “XMLTABLE” Driven Syntax SQL> CREATE INDEX xmlindex_sxi on xmldata_table (doc) indextype is xdb.xmlindex parameters ('GROUP elementinfo_group XMLTABLE xml_cnt_tab_elementinfo ' '/root/element' ' COLUMNS infocol VARCHAR2(4000) PATH ' 'info' ' '); Be aware ' '
  • 29. • With highly Structured Data • Likely candidates: ComplexTypes • Structured Islands of Data – Can be nested, but only one level – XMLTABLE “virtual” nested column hint • Multiple “content tables” – Multiple XPath defined same columns with different purpose They deliver relational performance…! Usage: Structured XMLIndex
  • 30. Content Table(s) KEY INDEX  (KEY)  Unique BTREE Index  Primary Key RID INDEX  (RID)  NON Unique BTREE Index Your Columns CONTENT TABLE(s) RID rowid Key RAW Not null RID rowid Key RAW Not null YOUR column s X YOUR column s X RID rowid YOUR column X Key RAW Not null
  • 31. Structured XMLIndex (SXI) • Content Table(s) • Based on XMLTABLE syntax • XMLTable construct can be nested but: “Only ONE XMLType column allowed”  VIRTUAL column • Can be maintained Manually • Secondary indexes possible • LOCAL parameter (partitioning) Content Tables Structured XMLIndex f (x)
  • 32. Adding Structured Indexes SQL> ALTER INDEX xmlindex_sxi parameters ('ADD_GROUP GROUP my_new_group XMLTABLE xml_content_tab_new ' '/root/extra' ' COLUMNS extracol VARCHAR2(35) PATH ' 'new_element' ' ');
  • 33. Mixed XMLIndex Options Unstructured XMLIndex Structured XMLIndex Structured XMLIndex paragraph book title author author whitepaper title author id content bookstore chapter content Secondary (text) Index
  • 34. Mixed XMLIndex structures CREATE INDEX xmlindex on TEST_RANGE_XML (doc) indextype is xdb.xmlindex PARAMETERS (' PATH TABLE path_table PATHS (EXCLUDE(/root/ElementInfo)) '); BEGIN DBMS_XMLINDEX.registerParameter ('StructuredXML', 'ADD_GROUP GROUP ElementInfo XMLTABLE xml_cnttable_valueinfo ' '/root/ElementInfo' ' COLUMNS ValueInfo VARCHAR2(100) PATH ' 'ValueInfo' '); END; / ALTER INDEX xmlindex PARAMETERS('PARAM StructuredXML');
  • 35. XMLIndex Maintenance • ALTER INDEX • XMLIndex Parameter Changes – DBMS_XMLINDEX.DROPPARAMETER – DBMS_XMLINDEX.MODIFYPARAMETER – DBMS_XMLINDEX.REGISTERPARAMETER • Manual Synchronizing an XMLIndex – DBMS_XMLINDEX.SYNCINDEX – Pending Tables
  • 36. “There Can Be Only One…”
  • 37. Syntax Awareness • SYNC=ALWAYS – Mandatory when Combined XMLIndex • SYNC=MANUAL – Locking • STALE=FALSE | TRUE – Hmmm… • Empty XMLIndex tables – OOPS  I got my “XMLTABLE” Syntax etc. “wrong”
  • 38. Notes on XMLIndex (1) • Only ONE XMLIndex is allowed in a user schema – Add extra XMLIndex structures (structured or unstructured) via ADD_GROUP syntax – Only SYNC=ALWAYS is allowed while using mixed XMLIndex structures or add more than one
  • 39. Notes on XMLIndex (2) • You need the LOCAL parameter to create local partitioned XMLIndexes • An XMLIndex on a HASH partitioned XMLType column or XMLType table, is not (yet) allowed – But you can create an Oracle Text Index on such structures
  • 40. Recap • True understanding of Storage and Index options will provide: – Optimal performance – Out perform XML (Java based) • A lot of choice: – Problems are Complex – Also provides Solutions • Good design beforehand is the path to success
  • 41.
  • 42. References (1) Oracle Whitepapers – Oracle XML DB : Choosing the Best XMLType Storage Option for Your Use Case (PDF) – Oracle XML DB : Best Practices to Get Optimal Performance out of XML Queries (PDF) Blog – http://blog.gralike.com • (Dedicated XMLDB blog) • Semi-Structured XMLIndex section • Structured XMLIndex section
  • 43. References (2) • Oracle Open World Presentation on XML DB – S317428: Building Really Scalable XML Applications with Oracle XML DB and Oracle Text • XML DB OTN / FAQ Thread – http://forums.oracle.com/forums/forum.jspa?foru mID=34 – http://forums.oracle.com/forums/thread.jspa?thr eadID=410714

Editor's Notes

  1. It all comes down to packaging
  2. Definitions of Structured, Semi-Structured and Unstructured data
  3. Emp/Dept tables, Foreign/Primary Keys…Showing here ONLY 1 XML document…
  4. See also OOW 2010, S317428: Building Really Scalable XML Applications with Oracle XML DB and Oracle Text – Nipun Agarwal, Oracle