Wednesday 12 July 2017

Oracle Xmltype Store As Binary Optionen


16 Wahl des XMLType-Speichers und der Indexierung. Einführung in die Auswahl eines XMLType-Speichermodells und Indizierungsansätze. XMLType ist ein abstrakter SQL-Datentyp, der verschiedene Speicher - und Indizierungsmodelle zur Verfügung stellt, um am besten zu Ihren XML-Daten und deren Verwendung zu passen. Da es sich um abstrakte Daten handelt Typ, Ihre Anwendungen und Datenbank-Abfragen gewinnen Flexibilität die gleiche Schnittstelle ist für alle XMLType-Operationen. Different Anwendungen verwenden XML-Daten auf unterschiedliche Weise Manchmal ist es aus relationalen Datenquellen aufgebaut, so ist es relativ strukturiert Manchmal ist es für die Extraktion, Transformation verwendet , Und Laden von ETL-Operationen, in diesem Fall ist es auch ziemlich strukturiert Manchmal wird es für Freiform-Dokumente unstrukturiert oder halb-strukturiert wie Bücher und Artikel verwendet. Retrieval Ansätze können auch für verschiedene Arten von Daten Data-Centric Use Cases Oft mit einem festen Satz von Abfragen, während dokument-centric Use Cases oft mit willkürlichen Ad-hoc-Abfragen verbunden sind. Weil es eine Breites Spektrum an XML-Nutzung gibt es kein One-Size-Fits-All-Speichermodell, das für jeden Anwendungsfall optimale Performance und Flexibilität bietet. Oracle XML DB bietet zwei Speichermodelle für XMLType und mehrere Indizierungsmethoden, die für diese unterschiedlichen Speichermodelle geeignet sind Leistung und Funktionalität, um am besten an die Art der XML-Daten, die Sie haben, und die Art und Weise, wie Sie es verwenden. Daher ist eine Schlüsselentscheidung zu machen, welches XMLType-Speichermodell für welche XML-Daten verwendet werden. Dieses Kapitel hilft Ihnen, die beste Speicheroption für eine gegebene zu wählen Use case. XMLType Tabellen und Spalten können auf folgende Weise gespeichert werden. Binärer XML-Speicher Dies wird auch als Post-Parse-Persistenz bezeichnet. Es ist das Standard-Speichermodell für Oracle XML DB Es ist ein Post-Parse, Binärformat speziell für entworfen XML-Daten Binäres XML ist kompakt und XML-Schema-bewusst Der größte Vorteil von Binary XML-Speicher ist die Flexibilität, die Sie für XML-Schema-basierte Dokumente oder für Dokumente verwenden können, die nicht auf einem XML-Schema Y basieren Ou kann es mit einem XML-Schema verwenden, das eine hohe Datenvariabilität ermöglicht oder sich erheblich oder unerwartet entwickelt. Dieses Speichermodell bietet auch eine effiziente partielle Aktualisierung und eine stromable Abfrageauswertung. Object-relationaler Speicherplatz Dies wird auch als strukturierte Speicher - und Objekt-basierte Persistenz bezeichnet Dieses Speichermodell stellt eine Entity-Beziehung dar. ER-Zerlegung der XML-Daten Es bietet die beste Leistung für hochstrukturierte Daten mit einem bekannten und mehr oder weniger festen Satz von Abfragen Die Abfrage-Performance stimmt mit der von relationalen Daten überein und Updates können durchgeführt werden. Beginnend mit Oracle Database 12 c Release 1 12 1 0 1 wird das unstrukturierte CLOB-Speichermodell für XMLType abgelehnt Verwenden Sie stattdessen binären XML-Speicher. Wenn Sie XMLType-Daten, die als CLOB-Daten gespeichert sind, überschreiten, dann übernehmen Sie es mit dem Binär-XML-Speicherformat Oracle GoldenGate Wenn die Dokumententreue für ein bestimmtes XML-Dokument wichtig ist, dann speichern Sie eine Kopie davon in einer relationalen CLOB-Spalte Racle XML DB unterstützt die folgenden Arten von Indizes auf XMLType data. B-Tree Funktionsindizes auf Objekt-relationalen storage. XML Suchindex auf binäre XML storage. XMLIndex mit strukturierten und unstrukturierten Komponenten auf binäre XML-Speicher. B-Tree-Indizes auf der sekundären Tabellen, die automatisch für XMLIndex erstellt wurden, sowohl strukturierte als auch unstrukturierte Komponenten auf binärem XML-Speicher. Verschiedene Anwendungsfälle fordern unterschiedliche Kombinationen von XMLType-Speichermodell und indexes. XMLType Use Case Spectrum Data-Centric zu Document-Centric. Wenn Sie ein XMLType-Speichermodell auswählen, Art Ihrer XML-Daten und die Art und Weise, wie Sie es verwenden Es gibt ein Spektrum von Anwendungsfällen, von den meisten datenzentrischen bis zum meisten Dokument-centric. Dies ist in Abbildung 16-1 dargestellt, die die meisten datenzentrischen Fälle auf der linken Seite zeigt Und die meisten dokument-centric Fälle auf der rechten Seite. Figure 16-1 XML Use Cases und XMLType Storage Models. Description of Figure 16-1 XML Use Cases und XMLType Storage Models. Daten-centric Daten sind highl Y strukturiert, mit relativ statischen und vorhersagbaren Struktur, und Ihre Anwendungen nutzen diese Struktur Die Daten entsprechen einem XML-Schema. Dokument-centric Daten können in zwei Fälle aufgeteilt werden. Die Daten sind in der Regel ohne Struktur oder ist von variabler Struktur Dies beinhaltet Der Fall von Dokumenten, die sowohl strukturierte als auch unstrukturierte Teile haben Dokumentstruktur kann über die Zeitentwicklung variieren und der Inhalt kann halbstrukturiert gemischt werden, wobei viele Elemente sowohl Textknoten als auch untergeordnete Elemente enthalten. Viele XML-Elemente können nicht vorhanden sein oder können unterschiedlich aussehen Bestellungen Dokumente können oder nicht mit einem XML-Schema übereinstimmen. Die Daten sind relativ strukturiert, aber Ihre Anwendungen nicht nutzen, diese Struktur sie behandeln die Daten, als ob es ohne strukturelle Use Cases für XML-Daten als XMLType gespeichert. Empfehlungen werden zur Verfügung gestellt Für Anwendungsgebrauch Fälle, die den üblichen Anwendungsfällen für XML-Daten entsprechen, die als XMLType gespeichert sind. Wenn Ihr Anwendungsfall ein allgemeiner ist, also tha Wenn es hier nicht abgedeckt ist, dann verweisen wir auf den Rest dieses Kapitels auf Informationen über spezielle Fälle. In diesem Abschnitt geht es um die Verwendung von XML-Daten, die als XMLType beibehalten wird. Ein gemeinsamer Anwendungsfall für XML-Daten beinhaltet die Erzeugung von XML-Daten aus relationalen Daten Dieser Fall wird hier nicht behandelt, da es sich um relationale Speicherung handelt und die generierten XML-Daten nicht unbedingt bestehen bleiben. Für Fälle, in denen generierte XML-Daten als XMLType persistiert werden, sehen Sie XMLType Use Case Staged XML Data für ETL. In diesem Anwendungsfall gibt es keine Voraussetzung für die Aktualisierung oder Abfrage von Fragmenten von XML-Daten, die in der Datenbank gespeichert sind. Sie haben diese Optionen für diese Verwendung Case. Store es als XMLType mit binärem XML-Speicher. Speichern Sie es in einer relationalen BLOB - oder CLOB-Spalte, vorzugsweise ein SecureFiles LOB. Wenn Sie die XML-Daten in einer relationalen LOB-Spalte speichern, nicht als XMLType Oracle Database analysiert die Daten und es nicht Kann nicht garantieren, seine Gültigkeit Und Sie können nicht durchführen XMLType-Operationen auf der data. XMLType Use Case Datenintegration aus verschiedenen Quellen mit verschiedenen XML-Schemas. Wenn Ihre XML-Daten stammen aus mehreren Datenquellen, die verschiedene XML-Schemata verwenden, dann verwenden binäre XML-Speicher. This Use Case Hat drei subcases. If die XML-Daten enthält Inseln von strukturierten, vorhersagbaren Daten und Ihre Abfragen bekannt sind, dann verwenden Sie XMLIndex mit einer strukturierten Komponente, um die strukturierten Inseln zu indizieren, auch wenn die Daten umgeben Ng diese Inseln ist unstrukturiert Eine strukturierte Indexkomponente spiegelt die Abfragen wider, die Sie verwenden Ein RSS-News-Aggregator ist ein Beispiel für einen solchen Anwendungsfall. Wenn es keine solchen strukturierten Inseln gibt oder Ihre Abfragen unbekannt sind, dann sind Sie bei der Verwendung von HTMLIndex mit einem unstrukturierten Komponente. Wenn Sie Abfragen verwenden, die Volltextsuche verwenden, dann verwenden Sie einen XML-Suchindex, zusammen mit XQuery pragma ora noschema. XMLType Use Case Staged XML Daten für ETL. In diesem Anwendungsfall werden Daten aus externen Quellen extrahiert, umgewandelt zu passen Operative Bedürfnisse in der Regel relational, und dann in die Datenbank extrahiert Transformation Last ETL geladen. Insbesondere Transformation unterscheidet diese Verwendung case. ETL verwenden Fälle oft integrieren Daten aus mehreren Anwendungen, die gepflegt oder gehostet werden von mehreren Parteien mit verschiedenen Software-und Hardware-Systeme Die Daten, die Ist extrahiert ist oft die Verantwortung der Parteien außer denen, die es verwandeln oder verwenden sie nach Transformation. Die XML-Daten beteiligt ist typ Ically hoch strukturiert und entspricht einem XML-Schema Dieser Anwendungsfall umfasst sowohl die Erstellung von relationalen Daten aus XML-Daten als auch die Erstellung von XML-Daten aus relationalen Daten. Eine Teilmenge von ETL-Anwendungsfällen beinhaltet die Notwendigkeit, die XML-Daten effizient zu aktualisieren. Die Aktualisierung kann einen Ersatz durchführen XML-Dokument oder Änderungen an nur Fragmenten eines Dokuments partielle Aktualisierung. Object-relationalen Speicherung von XMLType-Daten ist in der Regel für diese Verwendung case. XMLType Use Case Semi-Structured XML-Daten. In diesem Anwendungsfall, entweder Ihre XML-Daten ist von variablen Form Oder große Teile davon sind nicht gut definiert Es kann kein assoziiertes XML-Schema vorhanden sein, oder das XML-Schema kann eine hohe Datenvariabilität ermöglichen oder sich erheblich oder in unerwarteten Weisen entwickeln. Die Binär-XML-Speicherung von XMLType-Daten ist in der Regel für diesen Anwendungsfall geeignet. Verwenden Sie die XMLIndex-Indizierung von strukturierten Komponenten, wenn Abfragepfade bekannt sind, und verwenden Sie die Pfad-untergeordnete unstrukturierte XMLIndex-Indizierung, wenn Pfade vorher nicht ad hoc quer bekannt sind Ies Verwenden Sie einen XML-Suchindex für XQuery Volltext-Abfragen. XMLType Verwenden Sie Case Business Intelligence-Abfragen. Um Business-Intelligence-BI-Abfragen über XML-Daten zu ermöglichen, können Sie die SQL XML-Funktion XMLTable verwenden, um die in den Daten enthaltenen Werte als Spalten eines virtuellen Projekts zu projizieren Tabelle Dann verwenden Sie analytische Funktion Fenster, zusammen mit SQL ORDER BY und GROUP BY, um auf Spalten der virtuellen table. For Business-Intelligence-Abfragen zu betreiben, werden Sie in der Regel alle folgenden tun. Store Ihre XMLType-Daten als binäre XML. Use an XMLIndex-Index mit einer strukturierten Komponente. Erstellen Sie relationale Ansichten über die Daten mit SQL XML-Funktion XMLTable, wo die Sichten alle Spalten von Interesse für die BI-Anwendung. Schreiben Sie Ihre Anwendungsabfragen gegen diese relationalen Ansichten. Wenn der XMLIndex-Index in one-to erstellt wird - eine Korrespondenz zu diesen Ansichten, Oracle Database übersetzt automatisch Abfragen über die Ansichten auf Abfragen über die relationalen Tabellen der strukturierten XMLIndex-Komponente, die relationalen perf Ormance. Wenn Sie analytische Funktionsfenster, ORDER BY oder GROUP BY auf einer Spalte der virtuellen Tabelle verwenden, werden diese Operationen in Windows, ORDER BY und GROUP BY Operationen auf den entsprechenden physikalischen Spalten der XML-Index-XML-Tabellen übersetzt Oracle-Dokumentation behauptet, dass es XMLType kompakter als BINARY XML als als CLOB speichert. Aber wie finde ich heraus, wie viel Platz von der binären xml. So genommen wird, scheint vsize die Größe einer Art von Zeiger oder LOB-Locator und getclobval zu sein Entpackt die binäre XML in Text Aber was ist mit der Speichergröße der binären XML selbst. Bitte helfen, die Tabelle Größe ist 340GB, so ist es lohnt sich in Storage options. asked Jul 15 14 bei 17 41.Well, ein Segment hat nichts Mit einer Zeile als solches zu tun Ein Segment ist entweder eine Tabelle, Tabellenpartition, Index, LOB Das Wichtigste ist, mehr als 4k darin zu speichern, so dass dein Lob gewann t in Zeile gespeichert werden, was bedeutet, innerhalb des eigentlichen Datenbankblocks von Die reihe selbst ist aber in einem auslauf lin gespeichert E LOB Segment gvenzl Jul 22 14 um 13 00. Rep-Ausgabe, nicht erlaubt, Kommentare zu schreiben, die Sie zwischen Fragen sagen wollten, wie ich die einzige Ähnlichkeit verstanden habe, ist Speicherplatz-Problem, dachte, es könnte hilfreich sein für Vermutung Schätzung Sie didn t erwähnen, welche Art Von Daten, die du als bXML. unpacks speichern sollst, das binäre XML in Text. Wenn es reines XML ist, dann hängt es davon ab, welchen Kompressor du benutzt hast. Normalerweise wird lzma gzip für die binäre Komprimierung verwendet. Vielleicht schreibe ich über zu offensichtliche Dinge, aber das S alles, was ich kenne.4 Mit XMLType. This Kapitel beschreibt, wie man den XMLType-Datentyp verwendet, erstellen und manipulieren XMLType-Tabellen und Spalten und Abfrage auf sie Es enthält die folgenden Abschnitte. Non-Schema-basierte XMLType Tabellen und Spalten in diesem Kapitel beschrieben Basieren nicht auf XML-Schema Sie können jedoch die in diesem Kapitel enthaltenen Techniken und Beispiele verwenden, unabhängig davon, welche Speicheroption Sie für Ihre XMLType-Tabellen und - Spalten wählen. Siehe Kapitel 3, Verwenden von Oracle XML DB für weitere Speicherrekorder Mmendations. XML schema-basierte Anhang B, XML-Schema-Primer und Kapitel 5, strukturierte Mapping von XMLType beschreiben, wie man mit XML-Schema-basierten XMLType-Tabellen und Spalten arbeitet. Was ist XMLType. Oracle9 i Release 1 9 0 1 führte einen neuen Datentyp ein, XMLType zur Erleichterung der nativen Handhabung von XML-Daten in der Datenbank Folgende Zusammenfassungen von XMLType. XMLType können in PL SQL gespeicherten Prozeduren als Parameter, Rückgabewerte und Variablen verwendet werden. XMLType kann ein XML-Dokument als eine Instanz von XMLType in SQL. XMLType darstellen Integrierte Mitgliedsfunktionen, die auf XML-Inhalt arbeiten Zum Beispiel können Sie XMLType-Funktionen verwenden, um XML-Daten zu erstellen, zu extrahieren und zu indexieren, die in der Oracle9 i-Datenbank gespeichert sind. Die Funktionalität ist auch über einen Satz von Anwendungsprogramm-Schnittstellen-APIs verfügbar, die in PL SQL und Java. With XMLType und diese Fähigkeiten können SQL-Entwickler die Macht der relationalen Datenbank nutzen, während sie im Kontext von XML arbeiten. Ebenso können XML-Entwickler die Macht der XML-Standards nutzen Ile Arbeit im Kontext einer relationalen Datenbank. XMLType Datentyp kann als Datentyp von Spalten in Tabellen und Ansichten verwendet werden Variablen von XMLType können in PL SQL gespeicherte Prozeduren als Parameter verwendet werden, Rückgabewerte und so weiter Sie können auch XMLType in verwenden SQL, PL SQL und Java über JDBC. In Oracle9 i Release 1 9 0 1 wurde XMLType nur auf dem Server in SQL, PL SQL und Java unterstützt. In Oracle9 i Release 2 9 2 wird XMLType auch auf der Client-Seite unterstützt Durch SQL, Java und Protokolle wie FTP und. A Anzahl nützlicher Funktionen, die auf XML-Inhalte betrieben werden Viele davon werden als SQL - und Member-Funktionen von XMLType bereitgestellt. Beispielsweise extrahiert die Extraktfunktion einen bestimmten Knoten s aus einem XMLType-Instanz. Sie können XMLType in SQL-Abfragen in der gleichen Weise wie alle anderen benutzerdefinierten Datentypen in der system. Benefits des XMLType-Datentyps und API verwenden. Der XMLType-Datentyp und API bietet erhebliche Vorteile Es ermöglicht SQL-Operationen auf XML-Inhalte, Sowie XML Operationen auf SQL-Inhalt. Versatile API XMLType verfügt über eine vielseitige API für die Anwendungsentwicklung, da es integrierte Funktionen, Indizierungsunterstützung, Navigation und so weiter enthält. XMLType und SQL Sie können XMLType in SQL-Anweisungen verwenden, kombiniert mit anderen Spalten und Datentypen für Beispielsweise können Sie XMLType-Spalten abfragen und dem Ergebnis der Extraktion mit einer relationalen Spalte beitreten, und dann kann Oracle einen optimalen Weg zur Ausführung dieser Abfragen festlegen. Die optimierte Auswertung mit XMLType XMLType ist optimiert, um die XML-Daten nicht in eine Baumstruktur zu materialisieren Benötigt daher, wenn SQL XMLType-Instanzen in Abfragen auswählt, wird nur ein serialisiertes Formular über Funktionsgrenzen ausgetauscht. Diese werden nur dann in Baumformat explodiert, wenn Operationen wie Extrakt und e xistsNode ausgeführt werden. Die interne Struktur von XMLType ist auch eine optimierte DOM-ähnliche Baumstruktur. Indexing Oracle Text-Index wurde erweitert, um XMLType-Spalten zu unterstützen Sie können auch funktionsbasierte Indizes auf ExistsN erstellen Ode und extrahieren Sie Funktionen, um die Abfrageauswertung zu beschleunigen. Wenn Sie XMLType. Use XMLType verwenden, wenn Sie die folgenden ausführen müssen. SQL-Abfragen auf einem Teil des oder des gesamten XML-Dokuments Die Funktionen existiertNode und extrahieren die erforderlichen SQL-Abfragefunktionen über XML-Dokumente. Starke Eingabe in SQL-Anweisungen und PL-SQL-Funktionen Starke Eingabe bedeutet, dass Sie sicherstellen, dass die eingegebenen Werte XML-Werte und nicht beliebige Textzeichenfolge sind. XPath-Funktionalität, die von extract und existsNode-Funktionen bereitgestellt wird Beachten Sie, dass XMLType den integrierten C XML-Parser und Prozessor und bietet somit eine bessere Leistung und Skalierbarkeit, wenn sie innerhalb des Servers verwendet wird. Indexing auf XPath sucht auf Dokumenten XMLType verfügt über Mitgliedsfunktionen, mit denen Sie funktionsbasierte Indizes erstellen können, um Suchvorgänge zu optimieren. Um Dateien von Speichermodellen zu schützen, verwenden Sie XMLType anstelle von CLOBs oder Relationale Speicherung ermöglicht es Anwendungen, sich anmutig zu verschiedenen Speicheralternativen später zu bewegen, ohne irgendeine der Abfrage zu beeinträchtigen Oder DML-Anweisungen in der Anwendung. Um zukünftige Optimierungen vorzubereiten Neue XML-Funktionalität wird XMLType unterstützen Da Oracle9 i-Datenbank nativ bewusst ist, dass XMLType XML-Daten speichern kann, können bessere Optimierungen und Indizierungstechniken durchgeführt werden. Durch das Schreiben von Anwendungen, um XMLType diese Optimierungen und Erweiterungen zu verwenden Kann problemlos erreicht und in zukünftigen Versionen aufbewahrt werden, ohne dass Sie Applikationen umschreiben müssen. Speichern von XMLType-Daten in Oracle XML DB. XMLType-Daten können auf zwei Arten oder in einer Kombination davon gespeichert werden. In großen Objekten LOBs LOB-Speicher pflegt die Inhaltsgenauigkeit des ursprünglichen XML Whitespaces und all Hier werden die XML-Dokumente als ganze Dokumente wie Dateien gespeichert. In dieser Version für die nicht-schema-basierte Speicherung bietet XMLType eine CLOB-Speicheroption In zukünftigen Releases kann Oracle weitere Speicheroptionen wie BLOBs, NCLOBS, Und so weiter Sie können auch einen CLOB-basierten Speicher für XML-Schema-basierte Speicher erstellen. Wenn Sie eine XMLType-Spalte ohne XM erstellen L Schemaspezifikation wird automatisch eine versteckte CLOB-Spalte erstellt, um die XML-Daten zu speichern. Die XMLType-Spalte selbst wird zu einer virtuellen Spalte über diese versteckte CLOB-Spalte. Es ist jedoch nicht möglich, direkt auf die CLOB-Spalte zuzugreifen. Sie können jedoch die Speichermerkmale für die Spalte festlegen Verwenden der XMLType-Speicherklausel. Strukturierte Speicherung in Tabellen und Sichten Strukturierter Speicher pflegt DOM-Dokumentobjekt-Modell-Treue Hier werden die XML-Dokumente in objektrelationstische Tabellen oder Ansichten zerlegt. XMLType erreicht DOM-Treue, indem sie Informationen beibehält, die SQL - oder Java-Objekte normalerweise tun Nicht vorsehen, wie z. B..Ordering von untergeordneten Elementen und Attributen. Unterscheidung zwischen Elementen und Attributen. Unstrukturierter Inhalt, der im Schema deklariert wird Zum Beispiel Inhalt gemischt oder irgendwelche Deklarationen. Undeclared Daten in Instanz Dokumente wie Verarbeitung Anweisungen, Kommentare und Namespace Deklarationen. Support für grundlegende XML-Datentypen nicht verfügbar in SQL Boolean, QName, und so On. Support für XML-Constraints-Facetten, die nicht direkt von SQL unterstützt werden, z. B. aufgelistete Listen. Native XMLType-Instanzen enthalten versteckte Spalten, die diese zusätzlichen Informationen speichern, die nicht ganz in das SQL-Objektmodell passen. Diese Informationen können über APIs in SQL oder Java aufgerufen werden , Mit Element-Funktionen wie extractNode. Changing XMLType-Speicher von strukturierten Speicher auf LOB, oder umgekehrt, ist möglich mit der Datenbank IMPORT und EXPORT Ihr Anwendungscode muss nicht ändern Sie können dann ändern XML-Speicher-Optionen, wenn Sie Ihre Anwendung, da Jede Speicheroption hat ihre eigenen Vorteile. Pros und Nachteile von XML-Speicheroptionen in Oracle XML DB. Table 4-1 fasst einige Vorteile und Nachteile zusammen, die bei der Auswahl Ihrer Oracle XML DB-Speicheroption berücksichtigt werden sollen. Tabelle 4-1 XML-Speicheroptionen in Oracle XML DB. Example 4-12 Festlegen von Constraints auf XMLType Columns. prevents Einfügungen wie. Example 4-13 Verwenden von ALTER TABLE, um NICHT NULL von XMLType Columns zu ändern. Sie können auch die AL verwenden TER TABLE-Anweisung, um NULL-Informationen einer XMLType-Spalte zu ändern, genauso wie bei anderen Spaltentypen. Sie können auch Check-Constraints für XMLType-Spalten definieren. Andere Standardwerte werden auf diesem Datentyp nicht unterstützt. Manipulieren von XML-Daten in XMLType-Spalten Tabellen. Wenn XMLType ein benutzerdefinierter Datentyp mit darauf definierten Funktionen ist, können Sie Funktionen auf XMLType aufrufen und Ergebnisse abrufen. Sie können XMLType überall verwenden, wo Sie einen benutzerdefinierten Typ verwenden, auch für Tabellenspalten, Ansichten, Auslösekörper und Typ Definitionen. Sie können die folgenden Manipulationen oder Data Manipulation Language DML auf XML-Daten in XMLType Spalten und Tabellen. Inserting XML-Daten in XMLType Spalten Tables. You können Daten in XMLType Spalten in den folgenden ways. XMLType Spalten können nur speichern gut geformt XML-Dokumente Fragmente und andere nicht gut geformte XML können nicht in XMLType-Spalten gespeichert werden. Verwenden von INSERT Statements. Um die INSERT-Anweisung zu verwenden, um XML-Daten in XMLType einzufügen, müssen Sie Erstellen Sie zuerst XML-Dokumente, um die Einfügung durchzuführen. Sie können die einfügbaren XML-Dokumente wie folgt erstellen. Mit Hilfe von XMLType-Konstruktoren kann dies in SQL, PL SQL und Java. By unter Verwendung von SQL-Funktionen wie XMLElement XMLConcat und XMLAGG durchgeführt werden SQL, PL SQL und Java. Example 4-14 Einfügen von XML-Daten mithilfe von createXML mit CLOB. In den folgenden Beispielen verwenden Sie INSERT SELECT und den XMLType-Konstruktor, um zunächst ein XML-Dokument zu erstellen und dann das Dokument in die XMLType-Spalten einzufügen. Betrachten Sie die Tabelle poclobtab, die enthält Ein CLOB, poClob zum Speichern eines XML-Dokuments. Beispiel 4-15 Einfügen von XML-Daten mit einer XMLType-Instanz. Sie können ein Bestell-XML-Dokument in die Tabelle poxmltab einfügen, indem einfach eine XML-Instanz aus den im anderen Poclobtab gespeicherten CLOB-Daten erstellt wird. Sie können auch den CLOB-Wert aus jedem beliebigen Ausdruck erhalten, einschließlich Funktionen, die temporäre CLOBs erstellen oder CLOBs aus anderen Tabellen oder Sichten auswählen können. Beispiel 4-16 XML-Daten mit XMLType mit String einfügen Beispiel fügt eine Bestellung in Tabellen-Potab mit dem XMLType-Konstruktor ein. Example 4-17 Einfügen von XML-Daten mit XMLElement. This Beispiel fügt eine Bestellung in die Tabelle poxmltab ein, indem sie es mit der XMLElement SQL-Funktion generiert. Angenommen, dass die Bestellung eine Objektansicht ist Enthält ein Bestellobjekt Die gesamte Definition der Bestellsicht wird in DBMSXMLGEN bei der Erstellung einer Bestellung aus der Datenbank in XML format. XMLElement erstellt aus dem Bestellobjekt einen XMLType, der dann in die Tabelle poxmltab eingefügt wird. Sie können auch SYSXMLGEN verwenden In der INSERT-Anweisung. Wählen und Abfragen von XML-Daten. Sie können XML-Daten aus XMLType-Spalten auf die folgenden Weisen abfragen. Mit der Auswahl von XMLType-Spalten über SQL, PL SQL oder Java. By Abfrage von XMLType-Spalten direkt und mit Auszug und ExistsNode. By verwenden Oracle Text-Operatoren, um den XML-Inhalt abzufragen Siehe Indexing XMLType-Spalten und Kapitel 7, Suchen von XML-Daten mit Oracle Text. SQL-Funktionen für Manipula Ting XML-Daten. SQL-Funktionen wie ExistsNode-Extrakt XMLTransform und updateXML auf XML-Daten in SQL-XMLType-Datentyp unterstützen die meisten von ihnen als Mitgliedsfunktionen Sie können entweder die egoistische Art des Aufrufs oder die SQL-Funktionen. Wählen Sie XML-Daten. Sie können XMLType auswählen Daten mit PL SQL oder Java Sie können auch die Funktionen getClobVal, getStringVal oder getNumberVal verwenden, um XML als CLOB, VARCHAR oder NUMBER abzurufen. Beispiel 4-18 Auswahl von XMLType-Spalten mit getClobVal. This Beispiel zeigt, wie eine XMLType-Spalte ausgewählt wird Mit SQL Plus. Querying XML Data. You können XMLType-Daten abfragen und Teile davon extrahieren mit den ExistsNode und extrahieren Funktionen Beide Funktionen verwenden eine Untermenge der W3C XPath Empfehlung, um das Dokument zu navigieren. Mit XPath Ausdrücke für die Suche nach XML-Dokumente. XPath ist Eine W3C-Empfehlung für das Navigieren von XML-Dokumenten XPath-Modelle das XML-Dokument als Baum der Knoten Es bietet eine reiche Reihe von Operationen, um den Baum zu gehen und zu bewerben Prädikate und Knoten-Test-Funktionen Die Anwendung eines XPath-Ausdrucks auf ein XML-Dokument kann zu einem Satz von Knoten führen. Beispielsweise wählt PO PONO alle PONO-untergeordneten Elemente unter dem PO-Root-Element des Dokuments aus. Tabelle 4-2 listet einige gängige Konstrukte auf, die verwendet werden XPath. Table 4-2 Einige Common XPath Constructs. Querying XML Daten mit XMLType Member Functions. You können XMLType Daten über PL SQL, OCI oder Java auswählen Sie können auch die getClobVal getStringVal oder getNumberVal Funktionen verwenden, um das XML als CLOB abzurufen, VARCHAR oder eine Nummer. Beispiel 4-19 Abrufen eines XML-Dokuments als CLOB Verwenden von getClobVal und existsNode. This Beispiel zeigt, wie eine XMLType-Spalte mit getClobVal und existsNode. existsNode-Funktion ausgewählt wird. Die Syntax für die ExistsNode-Funktion ist in Abbildung beschrieben 4-2 und auch wie folgt. Figure 4-2 existsNode Syntax. Text Beschreibung der illustration. existsNode-Funktion auf XMLType prüft, ob die gegebene XPath-Auswertung mindestens ein einzelnes XML-Element oder Text enthält Node Wenn ja, gibt es den numerischen Wert 1 zurück, andernfalls gibt es einen 0 Namespace kann verwendet werden, um die Zuordnung der im XPathstring angegebenen Präfix zu dem entsprechenden Namespace zu identifizieren. Beispiel 4-20 Verwenden von existsNode auf XMLType. For Beispiel, Betrachte ein XML-Dokument wie. Ein XPath-Ausdruck wie PO PNAME führt zu einem einzelnen Knoten dar. Daher existiert node 1 für diesen XPath. Dies ist das gleiche mit PO-PNAME-Text, der zu einem einzelnen Textknoten führt. Ein XPath-Ausdruck wie PO POTYPE gibt keine Knoten zurück. Daher wird ein ExistsNode auf diesem Wert den Wert 0 zurückgeben. Um zusammenzufassen, existiert die Funktion noodeNode in Abfragen und um funktionsbasierte Indizes zu erstellen, um die Auswertung von Abfragen zu beschleunigen. Beispiel 4-21 Verwenden von ExistsNode to Finden Sie einen Knoten. Das folgende Beispiel testet auf die Existenz des Warehouse-Dock-Knotens in der Warehousespec-Spalte XML-Pfad der Beispieltabelle. Using Indexes to Evaluate existiertNode. Sie können funktionale Indizes mit ExistsNode erstellen, um zu beschleunigen Die Ausführung Sie können auch einen CTXXPATH-Index erstellen, um zu beschleunigen beliebige XPath searching. extract Funktion. Der Extrakt f unction ist ähnlich wie die e xistsNode-Funktion Es wendet eine VARCHAR2 XPath-Zeichenfolge mit einem optionalen Namespace-Parameter und gibt eine XMLType-Instanz mit einem XML zurück Fragment Die Syntax ist in Abbildung 4-3 und wie folgt beschrieben. Figur 4-3 extrahieren Syntax. Text Beschreibung der Abbildung. extract auf XMLType extrahiert den Knoten oder einen Satz von Knoten aus dem Dokument identifiziert durch den XPath-Ausdruck Die extrahierten Knoten können Seien Elemente, Attribute oder Textknoten Wenn extrahiert, werden alle Textknoten zu einem einzigen Textknotenwert zusammengefasst. Namespace kann verwendet werden, um Namespace-Informationen für Präfixe in der XPath-Zeichenfolge zu liefern. Der XMLType, der sich aus der Anwendung eines XPath durch Extrakt ergibt, muss nicht sein Ein gut geformtes XML-Dokument, kann aber in einigen Fällen einen Satz von Knoten oder einfache Skalardaten enthalten. Sie können die Methoden getStringVal oder getNumberVal auf XMLType verwenden, um th zu extrahieren Ist skalare Daten. Zum Beispiel identifiziert der XPath-Ausdruck PO PNAME das PNAME-Element innerhalb des zuvor gezeigten XML-Dokuments. Der Ausdruck PO PNAME-Text bezieht sich andererseits auf den Textknoten des PNAME-Elements. Der letztere gilt weiterhin als XMLType In Mit anderen Worten extrahieren Sie poDoc, PO PNAME Text gibt immer noch eine XML-Typ-Instanz zurück, obwohl die Instanz tatsächlich nur Text enthalten kann. Sie können getStringVal verwenden, um den Textwert als VARCHAR2-Ergebnis zu erhalten. Verwenden Sie Textknoten-Testfunktion, um Textknoten in Elementen zu identifizieren, bevor Sie sie verwenden Das getStringVal oder getNumberVal, um sie in SQL-Daten zu konvertieren Nicht mit dem Textknoten würde ein XML-Fragment erzeugen. Zum Beispiel, XPath-Ausdrücke. PO PNAME identifiziert das Fragment PNAME PO1 PNAME. PO PNAME Text identifiziert den Textwert PO1.Sie können den Indexmechanismus verwenden, um einzelne Elemente bei wiederholten Elementen in einem XML-Dokument zu identifizieren Wenn Sie beispielsweise ein XML-Dokument haben. PONO 1, um das erste PONO-Element mit dem Wert 100 zu identifizieren. PONO 2, um das zweite PONO-Element mit dem Wert 200 zu identifizieren. Das Ergebnis des Extrakts ist immer ein XMLType Wenn das Anwenden des XPath einen leeren Satz erzeugt, gibt der Auszug einen NULL-Wert zurück. Extrakt-Member-Funktion kann in einer Reihe von Möglichkeiten verwendet werden, einschließlich der folgenden. Extrahieren von numerischen Werten, auf denen funktionsbasierte Indizes erstellt werden können, um die Verarbeitung zu beschleunigen. Extraktion von Sammlungsausdrücken, die in der FROM-Klausel von SQL-Anweisungen verwendet werden sollen Werden später aggregiert, um verschiedene Dokumente zu erzeugen. Beispiel 4-22 Verwenden von Extrakt, um den Wert eines Knotens zu extrahieren. Dieses Beispiel extrahiert den Wert des Knotens, Warehouse Docks der Spalte, Warehousespec in table. extractValue Funktion. Die extractValue-Funktion nimmt als Argumente einen XMLType Instanz und ein XPath-Ausdruck Es gibt einen Skalarwert zurück, der dem Ergebnis der XPath-Auswertung auf der XMLType-Instanz entspricht. ExtractValue-Syntax ist auch in Abbildung 4-4.XML beschrieben Chema-basierte Dokumente Für Dokumente, die auf XML-Schemata basieren, kann Oracle9 den Typ des Rückgabewertes abschließen, dann wird ein Skalarwert des entsprechenden Typs zurückgegeben. Andernfalls ergibt sich das Ergebnis vom Typ VARCHAR2.Nonschema-basierte Dokumente Für Dokumente Nicht auf XML-Schemata basiert, ist der Rückgabetyp immer VARCHAR2.extractValue versucht, den richtigen Rückgabetyp aus dem XML-Schema des Dokuments zu schließen Wenn der XMLType nicht schema-basiert oder der richtige Rückgabetyp nicht ermittelt werden kann, gibt Oracle XML DB zurück A VARCHAR2.Figure 4-4 extractValue Syntax. Text Beschreibung der Abbildung. Eine Shortcut Function. extractValue erlaubt Ihnen, den gewünschten Wert leichter zu extrahieren, als wenn Sie die äquivalente Extraktfunktion verwenden. Es ist eine Benutzerfreundlichkeit und eine Shortcut-Funktion Von use. you kann ersetzen oder mit extractValue wie folgt. Mit extractValue können Sie den Text verlassen, aber nur, wenn der Knoten, auf den der Pfadteil hingewiesen hat, nur ein Kind hat und dieses Kind ein Textknoten ist. Andernfalls wird ein Fehler ausgelöst. extractValue Syntax ist das gleiche wie extract. extractValue Characteristics. extractValue hat die folgenden Eigenschaften. Es gibt immer nur Skalar Inhalt, wie z. B. NUMBER VARCHAR2, und so weiter. Es kann nicht zurückgeben XML-Knoten oder gemischte Inhalte Es wirft einen Fehler beim Kompilieren oder Ausführen Zeit, wenn es XML-Knoten als Ergebnis bekommt. Es gibt immer VARCHAR2 standardmäßig Wenn der Knoten s Wert größer als 4K ist, würde ein Laufzeitfehler auftreten. In der Gegenwart von XML-Schema-Informationen, zur Kompilierzeit, kann extractValue automatisch die entsprechenden zurückgeben Datentyp, der auf der XML-Schema-Information basiert, wenn er so zur Kompilierzeit der Abfrage erkennen kann Wenn beispielsweise die XML-Schema-Information für den Pfad PO POID anzeigt, dass dies ein numerischer Wert ist, gibt extractValue eine NUMBER zurück. Wenn der XPath identifiziert Ein Knoten, bekommt es automatisch den skalaren Inhalt aus seinem Text Kind Der Knoten muss genau ein Text Kind haben Zum Beispiel. Extracts aus dem Text Kind von PNAME Dies ist gleichbedeutend mit. Example 4-23 Extrahieren Der skalare Wert eines XML-Fragments mit extractValue. Das folgende Beispiel nimmt als Eingabe dieselben Argumente wie das Beispiel für die Extraktfunktion an. Anstatt ein XML-Fragment zurückzugeben, gibt es als Extrakt den Skalarwert des XML-Fragments zurück. ExtractValue wird automatisch extrahiert Das Textkind des Docks-Elements und hat diesen Wert zurückgegeben Du kannst das auch mit dem Extrakt wie folgt schreiben. Mehr SQL-Beispiele, die XML abfragen. Die folgenden SQL-Beispiele veranschaulichen, wie du XML durchsuchen kannst. Beispiel 4-24 XMLType abfragen Mit extract und existsNode. Assume abfragen Die poxmltab-Tabelle, die die Bestellnummer und die Bestell-XML-Spalten enthält und davon ausgehen, dass die folgenden Werte in die Tabelle eingefügt werden. Jetzt können Sie die Zahlenwerte für die Bestellnummern mit extract extrahieren. Hier extrahiert den Inhalt von Tag, Bestellnummer, PONO existsNode findet Knoten, wo PONO als Kind von PO existiert. Nur Textfunktion dient nur zur Rückgabe der Textknoten g EtNumberVal Funktion kann nur Textwerte in numerische Menge umwandeln. Manejando XMLType de Oracle Database 11gR2 ein trav s del comente XDB. Por Francisco Riccio Publicado en abril 2013.XML es un lenguaje krank ado para estructurar documentos con la finalidad de intercambiar informaci n entre diferentes plataformas. Oracle Database desde la versi n 9iR2 nos proporciona un tipo de dato nativo llamado XMLTYPE el cual nos permite albergar informaci n en formato XML con soporte a XSD esquema de validaci n , XSLT transformaciones de documentos , XPATH, XQUERY, indexamiento y particionamiento a documentos XML En las versiones Oracle Database 9i y 10g los documentos XML se almacenan como CLOB internamente pero a partir de la versi n Oracle Database 11g se ha creado una nueva forma de almacenar los documentos XML, dicho almacenamiento es en formato binario Binary XML Este nuevo modo de almacenar es ms eficiente en el consumo de espacio y en el tiempo de respuesta en el acceso a los datos Bi nary XML es el modo de almacenar por default a partir de la versi n 11 2 0 2.Debemos tener presente que albergar informaci n en formato XML en nuestra base de datos da la posibilidad de romper modelos altamente relacionales en modelos relacionales jer rquicos disminuyendo una serie de tablas normalizadas en nuestro dise o. En el ejemplo a implementar se crear una tabla llamada RESERVA que almacenar los pedidos de un cliente, dichos pedidos ser n almacenados en un campo XML con almacenamiento binario sobre una base de datos versi n 11 2 0 3.a Validaci n del componente XDB. El trabajo en XML con Oracle Database se hace a trav s del componente XDB Este componente permite albergar informaci n de tipo XMLType tipo de dato nativo para XML. Asimismo el componente XDB mantiene un repositorio llamado XML DB Repository que permite organizar y manejar los documentos XML en forma de archivos y carpetas, los cuales son llamados recursos Debemos pensar en este repositorio como si fuera un filesystem qu e se encuentra internamente en nuestra base de datos. Se adjunta un gr fico mostrando los 2 sub-componentes explicados que conforman el componente XDB de la base de datos. Para validar el status de este componente consultamos el siguiente query. SQL select compname, status from dbaregistry where compname Oracle XML Database El status debe devolver el valor de VALID Ejemplo. b Creando el Esquema de Validaci n. Para dicha implementaci n, primero crearemos un esquema de validaci n de documentos XML XSD con la finalidad de que todo documento XML ingresado cumpla cierta estructura y condiciones. Acorde a nuestro ejemplo, necesitar amos crear un esquema de validaci n que solo permita el ingreso de pedidos que se compongan de 5 elementos fecha, precio unitario pu , cantidad, descripci n y tipo de pedido Donde el elemento Pedido tiene un atributo de tipo entero Cada elemento tiene su propio tipo de dato y algunas reglas de negocio por ejemplo el atributo tipo solo puede albergar los valores A, B y C asimismo el elemento cantidad solo puede albergar valores enteros comprendidos de 0 a 50.Cualquier documento XML debe cumplir con dicha especificaci n y ser validado al momento de ser insertado en la tabla RESERVA que crearemos m s adelante. Se presenta el documento XSD que registraremos en la base de datos. Para registrar el documento XSD en la base de datos lo hacemos a trav s del procedure. Se detallan algunos de los par metros. a Local, si el valor es true el documento XSD se guardar dentro del componente XDB en la carpeta sys schemas owner En caso contrario se guardar en la carpeta sys schemas PUBLIC. b Gentypes, al crear el archivo XSD se crear un tipo de Object Table que se basar en las reglas del esquema cuando se le asigne el valor de true En nuestro caso posteriormente crearemos la tabla de forma manual, por dicha raz n se ha colocado el valor de false. c Genbeans, si su valor es true se crear Java Beans al crear el archivo XSD. d Gentables, al crear el archivo XSD se crear una ta bla que se basar en las reglas del esquema si se le asigna el valor de true. e Force, si se coloca el valor de true no dar error en caso exista problemas en registrar el archivo XSD. Es importante colocar la opci n si es que pensamos almacenar los documentos en Binary XML Si no agregamos est opci n y queremos crear una tabla que use almacenamiento en Binary XML tendremos el siguiente error. Asimismo podemos ver como el archivo XSD ha sido creado dentro del XML DB Repository despu s de ser registrado. Debemos configurar los puertos de XDB para acceso FTP o si deseamos visualizar o manipular los archivos dentro de XML DB Repository por dichos protocolos. Esto lo realizamos mediante el paquete dbmsxdb, ejemplo. Se adjunta un ejemplo de c mo deben ser los documentos XML que se ingresar n en la tabla RESERVA cumpliendo con el esquema de validaci n. Nota Debemos recordar que otra manera de poder validar documentos XML es mediante DTD, pero a diferencia de los esquemas de validaci n, los DTD no sigu en una sintaxis XML nacieron basado en el ISO 8879 para el lenguaje SGML y no para XML y adem s no permite especificar los tipos de datos de los elementos, por dicha raz n la recomendaci n es usar esquemas de validaci n. c Creando la tabla Reserva. Hemos creado una tabla llamada RESERVA que se compone de un campo llamado pedido de tipo XMLTYPE el cual le estamos especificando que ser almacenado como Binary XML Recordemos que a partir de la versi n 11 2 0 2 hacia delante, ste ser el default Tambi n indicamos que el campo pedido ser validado por el esquema que previamente lo hemos creado. Nota El tipo de dato XMLTYPE almacenado como Binary XML se guarda internamente como un SecureFile LOB autom ticamente en versi n Oracle Database 11 2 0 2 En caso no pueda crearse de esa manera lo har como Basic LOB Recordemos que no ser posible la creaci n de objetos SecureFile LOB cuando el tablespace no est configurado como ASSM el par metro DBSECUREFILE est en FALSE. Ingresaremos un documento XML que no cumpla la especificaci n del esquema XSD definido para ese campo. En este ejemplo vemos que la operaci n de INSERT falla porque el documento XML no cumple con la especificaci n definida en el archivo XSD En este caso falt el atributo cod de cada elemento Pedido, donde el atributo lo hemos configurado como requerido. Lo corregimos y veremos que ahora si se registra. Nota Es posible insertar un documento a partir de un archivo XML existente en el Sistema Operativo o en el XML DB Repository, ejemplo. d Creaci n de ndices. Para indexar columnas cuyo almacenamiento es Binary XMLType lo podemos hacer mediante ndices basado en funciones ndices de tipo XML Index. En My Oracle Support MOS Nota 742192 1 Indexing Binary XML Columns , se espec fica que no est asegurado el uso de ndices basado en funciones en campos almacenados como Binary XML, por lo cual la recomendaci n es crearlo como XML Index. XML Index es un nuevo tipo de ndice a partir de la versi n Oracle Database 11g. Ejemplo de su creaci n. El pr oblema con este tipo de creaci n por default es que crear ndices por cada elemento que tenga el documento XML de modo que podr a perjudicarnos en espacio. Para nuestro ejemplo solo indexar el elemento pu precio unitario. Podemos apreciar que para crear el ndice de manera m s espec fica debemos apoyarnos del uso de XPATH para seleccionar el elemento que queremos indexar. Si ejecutamos una consulta mediante XPATH podemos apreciar que el ndice es utilizado. e Actualizaciones sobre el campo Binary XML. Existen algunas funciones que nos ayudan a dar mantenimiento a los elementos de un documento XML ya registrado Haremos la demostraci n de tres de ellos. e 1 Agregaremos un nuevo elemento pedido sobre el documento XML. e 2 Deseamos modificar el pu precio unitario del nuevo elemento pedido ingresado del valor de 30 a 20.e 3 Deseamos eliminar el ltimo elemento ingresado. f 1 Si deseamos obtener el documento XML como String. f 2 Si deseamos obtener el documento XML como CLOB. f 3 Crear un String o CLOB a partir de un contenido. XPath es un lenguaje que nos permite construir expresiones con la finalidad de recorrer un documento XML y entregarnos los nodos del documento que contienen la informaci n que deseamos. Ejemplo 1, deseamos obtener todos los pu precios unitarios de la reserva con id 1.Ejemplo 2, deseamos obtener aquellos pedidos que han superado un precio unitario de 48 de tipo A. En nuestro caso no existe filas devueltas porque no tenemos ning n pedido que tenga un precio unitario superior a 48 de tipo A. Ejemplo 3, deseamos obtener aquellos pedidos cuyo atributo cod sea diferente del valor de 3.XQuery es un lenguaje de consulta dise ado para trabajar con colecciones de datos XML, el cual proporciona los medios para extraer y manipular informaci n de documentos XML de cualquier fuente de datos que pueda ser representada mediante XML. Ejemplo 1, se desea obtener aquellos pu precios unitarios , si uno de ellos sobrepasa el valor de 40 debe aumentarse un costo de 18.a La funci n XMLQUER Y recibe de par metro una consulta XQuery y el documento XML el cual lo pasamos a trav s del comando PASSING y asimismo solicitamos el retorno del resultado del script XQuery. b El comando FOR nos permite recorrer todos los nodos a partir de una ruta, en este caso estamos recorriendo todos los elementos Pedido de la ra z pedidos. c El comando LET nos permite crear variables y asignarles un valor espec fico, en este caso se ha creado la variable pu. Ejemplo 2, a partir de una tabla o vista generar una salida XML. Tambi n le podemos colocar comandos de for, let, etc como se vio en el ejemplo 1.La opci n ora view crea una vista en tiempo de runtime, esta opci n est disponible desde la versi n Oracle Database 11g. g Vistas del Diccionario de Datos. Oracle Database nos ofrece algunas vistas tiles referente a nuestros objetos XML. Listar todos los schemas de la base de datos. Listar todos los Object Tables XML. En nuestro caso nos devuelve filas ya que hemos creado tablas que contienen columnas XML n o Object Tables XML. Listar todas las columnas que son de tipo XMLTYPE o XML INDEX. XML DOM es una interfaz de programaci n API que proporciona un conjunto de objetos para representar documentos XML y asimismo acceder y modificar el contenido, estructura y estilo de un documento XML La implementaci n de DOM sobre Oracle Database est dado sobre el paquete XMLDOM. Sobre nuestro escenario se recorrer cada atributo y elemento de cada documento XML. Concluimos que Oracle Database nos provee un soporte completo y herramientas para poder trabajar con documentos XML y sus tecnolog as relacionadas como XPATH, XQuery, Esquemas de validaci n, etc Podemos asimismo aprovechar XML en ventaja de generar modelos relacionales jer rquicos en pro de eliminar un nivel detallado de normalizaciones en nuestro dise o y as eliminar una serie de joins en nuestras consultas SQL generando un mejor tiempo de respuesta en nuestros programas. Publicado por Ing Francisco Riccio Es un IT Specialist en IBM Per e instructor de cursos oficiales de certificaci n Oracle Est reconocido por Oracle como un Oracle ACE y certificado en productos de Oracle Application Base de Datos. Binary XML Data Storage in 11g. Oracle 11g New Features Tips. In previous versions of Oracle, two Extensible Markup Language XML storage options were available unstructured, or CLOB, and storage and structured, or schema-based In Oracle 11g, binary XML has been added as a new storage option. Unstructured storage treats an XML document as a large object and stores the file in the database without being aware of the content This option has the best insertion and deletion performance, but the worst relational access and consumption of disk space. Structured storage requires prior registration of the XML schema and inserts an XML document into an object-relational structure This storage option has the best query performance and disk space consumption, but the highest cost during initial insertion This high cost is caused because during inserti on, the document is shredded and stored into database objects created during the registration of the XML schema. Binary XML, the new storage option introduced in 11g, stores the document in a post-parse binary format designed specifically for XML This option will likely be the best choice for most XML requirements The additional binary storage offers insertion performance comparable to unstructured storage, yet query and disk space performance that is comparable to structured storage Unlike structured storage, the benefits of binary XML are not dependent on schema registration This is due to the option of registering a binary XML schema to have schema based binary XML tables However, one limitation remains in that a registered XML schema cannot be shared between a binary XML and object relational table. The best strategy when choosing how to manage XML content is to first try the binary storage option and evaluate whether the performance is acceptable If the relational access performance is not acceptable, then try the structured storage option The reason that binary storage is preferred is that it is easy to use and requires the least amount of maintenance because schema registration is not required Binary XML type columns are also easier to use in non-XMLType tables since performance is not dependent on the creation of indexes. To use binary storage, the XML table must be created with the following syntax. SQL CREATE TABLE BINARYXMLTABLE OF XMLType XMLTYPE STORE AS BINARY XML 2.Consider the following XML document for order transactions. xml version 1 0 order customer name Customer ABC name ccNum 1234123412341234 ccNum customer orderLines item itemid 108 itemid itemname ORACLE 11G NEW FEATURES BOOK ED1 0 itemname quantity 1 quantity unitPrice 38 00 unitPrice item item itemid 109 itemid itemname ORACLE TUNING GUIDE ED1 0 itemname quantity 1 quantity unitPrice 22 00 unitPrice item orderLines receipt subtotal 60 00 subtotal salesTax 4 80 salesTax total 64 80 total receipt order. Insert this document into the binary XML table using the following syntax. SQL insert into BINARYXMLTABLE values XMLTYPE BFILENAME. After insertion, the document is immediately available for relational access. SELECT extractValue value b , order customer name customername, extractValue value d , item itemid itemid, extractValue value d , item quantity quantity, extractValue value d , item unitPrice unitprice, extractValue value b , order receipt subtotal subtotal, extractValue value b , order receipt salesTax salesTax, extractValue value b , order rec eipt total total from BINARYXMLTABLE a, TABLE XMLSequence Extract objectvalue, order b, TABLE XMLSequence Extract value b , order orderLines c, TABLE XMLSequence Extract value c , orderLines item d. CUSTOMERNAME ITEMID QUANTITY UNITPRICE SUBTOTAL SALESTAX TOTAL -------------- ------- -------- ---------- -------- -------- ------ Customer ABC 108 1 38 00 60 00 4 80 64 80 Customer ABC 109 1 22 00 60 00 4 80 64 80.As demonstrated above, the syntax for relational access to a binary XML table does not change from other storage options. This is an excerpt from the new book Oracle 11g New Features Expert Guide to the Important New Features by John Garmany, Steve Karam, Lutz Hartmann, V J Jain, Brian Carr You can buy it direct from the publisher for 30 off. Burleson is the American Team. Note This Oracle documentation was created as a support and Oracle training reference for use by our DBA performance tuning consulting professionals Feel free to ask questions on our Oracle forum. Verify experience Anyone considering using the services of an Oracle support expert should independently investigate their credentials and experience, and not rely on advertisements and self-proclaimed expertise All legitimate Oracle experts publish their Oracle qualifications. Errata Oracle technology is changing and we strive to update our BC Oracle support information If you find an error or have a suggestion for improving our content, we would appreciate your feedback Just e-mail and include the URL for the page. The Oracle of Database Support. Copyright 1996 - 2016.All rights reserved by Burleson. Oracle is the registered trademark of Oracle Corporation.

No comments:

Post a Comment