Category: Binary-, CLOB-, Object Relational Storage

October 16

Just to start off the 11gR2 series, here the first small “HOWTO” post regarding the new features in Oracle 11gR2. The 11gR2 database supports now 3 binary XML partitioning options. Partitioning has great advantages, if you are dealing with huge volumes of XML data. Those advantages are mainly regarding maintenance, for instance updating/refreshing data, or the local partitioning index that belongs to the specific partition that you want to alter. You can use this form of partitioning on XMLType Columns and XMLType Tables, XML Schema based or Schema-less.

Binary XML XMLType should be used, most of the time, if you are dealing with content/data driven environments (XML Schema based) or document driven (if XML Schema less). The following 3 options are now available:

  1. range
  2. list
  3. hash

XML Partitioning is based on a column or a virtual column and is defined via the XMLTABLE function/syntax. You are allowed to pass on a XML resultset/fragment into the next nested XMLTABLE syntax, but only once. See the Oracle XMLDB Developers Guides for more information.

September 9

There is a Metalink note (563802.1) that has a very good example how XML data storage, partitioning can be achieved in Oracle version 9.2.0.3.0 (the first officially supported XMLDB database functionality) and onwards. Partitioning can be used in such XML situations to spread the I/O load and it also supports, if done correctly, the XMLDB functionality / Oracle database, to use query re-writes during XPath or XQuery statements. See for more information about Query Rewrite support the Oracle XMLDB Developers Guide.

The “new” equi-partitioning functionality, supported from 11.1.0.7.0, but now described in more detail in the 11gR2 XMLDB Developers Manual, also propagates / partitions all underlying structures. As described in the Metalink note:

“In Oracle release 11g the partitioning model is equi-partitioning which means that the underlying storage tables are partitioned too along with the default table partitioning structure. In previous releases only the default table is partitioned, but the underlying storage tables for the types are not.”

So explained in more detail, before 11.1.0.7.0 only the “xdb:defaultTable”, in the following example table “TESTELEMENT”, is partitioned by range. In Oracle 11.1.0.7.0 and onwards also all referred XML structures underneath this entry point are equally partitioned based on this defined range.

July 13

Today I discovered a web page that has some cool whitepapers and thesis of Mr. Martin Necasky. Besides the work he is doing regarding conceptual modeling for XML, he also wrote a book about this topic called “Conceptual Modeling for XML” in which he, among others, discusses his own conceptual model for XML called XSEM that extends the Entity-Relationship model, he and Ms Irena Mlynkova, wrote a 13 page brief discussion on “The Current Support of XML by the ‘Big Three'” (March 2009 – Oracle 11g, IBM DB2 9, and Microsoft SQL Server 2008).

Some remarks (about Oracle only of course) on this brave attempt (no seriously you can read that it isn’t copy paste work – so a lot of work in testing was probably involved in putting this to paper)…