Speicheroptionen des Oracle Datentypen XMLType
Oracle XMLTypes können mittels verschiedener Speicheroptionen in der Oracle Datenbank in einer Tabelle abgelegt werden.
Speicheroptionen
- CLOB XMLType – CLOBs
- (O-R) XMLType oder auch Object Relational XMLType genannt
- Binary XMLType – ab Oracle 11g definierter Oracle Standard – Pre-Parsed binary format
Vorteile von Binary XMLType
- komprimierte Speicherung – XML-Elemente werden in separaten Indextabelle abgelegt und durch jeweilige ID ersetzt
- optimierte Zugriffspfade auf XML-Elemente – u.a. schnellere Suche in der abgespeicherten XML-Struktur
XMLTypes können, müssen jedoch nicht, einem XML-Schema zugewiesen werden. Hier sprechen wir von Schema-based XMLTypes bzw. non-Schema-based XMLTypes (Default).
Die folgenden Beispiele verdeutlichen die Erstellung einer Tabelle im Zusammenhang mit XMLTypes.
non-Schema-based CLOB XMLType
1 2 3 4 5 |
CREATE TABLE besserdich_CLOB_nsb ( id NUMBER , xml XMLType , Erstelldatum date) XMLType COLUMN "XML" STORE AS CLOB; |
Schema-based CLOB XMLType
Voraussetzung für die Erstellung der Tabelle ist eine Registrierung des XML-Schemas.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
begin dbms_xmlschema.registerSchema( 'http://www.besserdich.com/bestellung_besserdich_V01_00.xsd', '' ,genTypes => FALSE ,genTables =>FALSE); END; CREATE TABLE besserdich_CLOB_sb ( id NUMBER , xml XMLType , Erstelldatum date) XMLType COLUMN "XML" STORE AS CLOB XMLSCHEMA "http://www.besserdich.com/bestellung_besserdich_V01_00.xsd" ELEMENT "Bestellung"; |
non-Schema-based (O-R) XMLType
1 2 |
CREATE TABLE besserdich_or_nsb OF XMLTYPE; |
Schema-based (O-R) XMLType
1 2 3 4 5 6 7 8 9 10 |
begin dbms_xmlschema.registerSchema( 'http://www.besserdich.com/bestellung_besserdich_V01_00.xsd', '' ,genTypes => FALSE ,genTables =>FALSE); END; CREATE TABLE besserdich_or_sb OF XMLTYPE XMLSCHEMA "http://www.besserdich.com/bestellung_besserdich_V01_00.xsd" ELEMENT "Bestellung"; |
non-Schema-based Binary XMLType
1 2 3 4 5 |
CREATE TABLE besserdich_BINARY_nsb ( id NUMBER , xml XMLType , Erstelldatum date) XMLType COLUMN "XML" STORE AS BINARY XML; |
Schema-based Binary XMLType
Wichtig in diesem Beispiel ist, dass das XML-Schema ebenfalls als binary xml in der Oracle XML-DB registriert wird. Hierzu muss der Parameter option mit dem Wert dbms_xmlschema.register_binaryxml belegt werden.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
begin dbms_xmlschema.registerSchema( 'http://www.besserdich.com/bestellung_besserdich_V02_00.xsd', '' ,genTypes => FALSE ,genTables =>FALSE ,options => dbms_xmlschema.register_binaryxml); END; CREATE TABLE besserdich_BINARY_sb ( id NUMBER , xml XMLType , Erstelldatum date) XMLType COLUMN "XML" STORE AS BINARY XML XMLSCHEMA "http://www.besserdich.com/bestellung_besserdich_V02_00.xsd" ELEMENT "Bestellung"; |
Empfehlung
Ich habe sehr gute Erfahrungen mit dem Binary XMLType und anschliessender flexiblen XML-Validierung gemacht. Ein kleines Tutorial finden Sie in meinem Artikel Tutorial XML-Validierung in Oracle XML-DB.
SCHREIBEN SIE EINEN KOMMENTAR