XML Extender Verwaltung und Programmierung

XML-Objektgruppen planen

Beim Planen der XML-Objektgruppen müssen Sie unterschiedliche Punkte bedenken, je nachdem, ob Sie Dokumente aus DB2-Daten zusammensetzen, XML-Dokumente in DB2-Daten zerlegen oder beides. In den folgenden Abschnitten werden Fragen zur Planung von XML-Objektgruppen, zur Zusammenstellung und zum Zerlegen von Adressen erläutert.

Gültigkeitsprüfung

Nachdem Sie eine Zugriffs- und Speichermethode ausgewählt haben, können Sie festlegen, ob Ihre Daten geprüft werden sollen. Für die Prüfung der XML-Daten verwenden Sie eine DTD. Die Verwendung einer DTD stellt sicher, daß das XML-Dokument gültig ist, und sie ermöglicht die Ausführung einer strukturellen Suche in Ihren XML-Daten. Die DTD wird im DTD-Repository gespeichert.

Empfehlung: Prüfen Sie XML-Daten mit einer DTD. Zur Prüfung müssen Sie eine DTD im XML Extender-Repository haben. Im Abschnitt Eine DTD im DTD-Repository speichern finden Sie Informationen dazu, wie Sie eine DTD in das Repository einfügen. Die DTD-Anforderungen sind unterschiedlich, je nachdem, ob Sie XML-Dokumente zusammensetzen oder zerlegen.

Wichtig: Entscheiden Sie vor dem Einfügen von XML-Daten in DB2, ob die Daten geprüft werden sollen. Der XML Extender unterstützt die Überprüfung von Daten nicht, die bereits in DB2 eingefügt wurden.

Überlegungen:

Die DAD-Datei

Für XML-Objektgruppen ordnet die DAD-Datei die Struktur des XML-Dokuments den DB2-Tabellen zu, aus denen Sie entweder das Dokument zusammensetzen oder in die Sie das Dokument zerlegen.

Wenn Sie beispielsweise ein Element mit dem Namen <Tax> in Ihrem XML-Dokument haben, müssen Sie <Tax> eventuell einer Spalte TAX zuordnen. Sie definieren die Beziehung zwischen den XML-Daten und den relationalen Daten in der DAD.

Die DAD-Datei wird entweder beim Aktivieren einer Objektgruppe oder beim Verwenden der DAD-Datei in den gespeicherten Prozeduren der XML-Objektgruppe angegeben. Die DAD ist ein XML-formatiertes Dokument, das auf dem Client gespeichert ist. Wenn Sie XML-Dokumente mit einer DTD prüfen wollen, kann die DAD-Datei dieser DTD zugeordnet werden. Wenn die DAD-Datei als Eingabeparameter der gespeicherten Prozeduren des XML Extender verwendet wird, hat sie den Datentyp CLOB.

Zum Angeben der Zugriffs- und Speichermethode "XML-Objektgruppen" verwenden Sie den folgenden Befehl in der DAD-Datei:

<Xcollection>
Gibt an, daß XML-Daten entweder aus XML-Dokumenten in eine Objektgruppe relationaler Tabellen zerlegt werden oder aus einer Objektgruppe relationaler Tabellen zu XML-Dokumenten zusammengesetzt werden sollen.

Eine XML-Objektgruppe ist ein virtueller Name für eine Gruppe relationaler Tabellen, die XML-Daten enthalten. Anwendungen können eine XML-Objektgruppe beliebiger Benutzertabellen aktivieren. Diese Benutzertabellen können vorhandene Tabellen mit unternehmensspezifischen Geschäftsdaten sein oder Tabellen, die der XML Extender vor kurzem erstellt hat. Sie greifen auf XML-Objektgruppendaten vor allem über die von XML Extender bereitgestellten gespeicherten Prozeduren zu.

Die DAD-Datei definiert die Baumstruktur der XML-Dokumente anhand der folgenden Knotenarten:

root_node
(Stammknoten) Gibt das Stammelement des Dokuments an.

element_node
(Elementknoten) Kennzeichnet ein Element, bei dem es sich um das Stammelement oder ein untergeordnetes Element handeln kann.

text_node
(Textknoten) Steht für den CDATA-Text eines Elements.

attribute_node
(Attributknoten) Steht für ein Attribut eines Elements.

Abbildung 10 zeigt ein Fragment der Zuordnung, die in einer DAD-Datei verwendet wird. Die Knoten ordnen den Inhalt des XML-Dokuments den Tabellenspalten in einer relationalen Tabelle zu.

Abbildung 10. Knotendefinitionen

<?xml version="1.0"?> 
<!DOCTYPE DAD SYSTEM "c:\dtd\dad.dtd"> 
<DAD> 
  ...
<Xcollection> 
<SQL_stmt> 
       ...
</SQL_stmt> 
<prolog>?xml version="1.0"?</prolog> 
<doctype>!DOCTYPE DAD SYSTEM "c:\dxx\sample\dtd\getstart.dtd"</doctype>
<root_node> 
   <element_node name="Order">         --> Kennzeichnet das Element <Order>
     <attribute_node name="key">       --> Kennzeichnet das Attribut "key"
        <column name="order_key"/>     --> Definiert den Namen der Spalte, "order_key",
                                                der Element und Attribut zugeordnet werden
     </attribute_node> 
     <element_node name="Customer">    --> Kennzeichnet ein untergeordnetes Element von <Order> als
                                                <Customer>
        <text_node>                    --> Gibt den CDATA-Text für das Element
                                                <Customer> an
          <column name="customer">     --> Definiert den Namen der Spalte, "customer",
                                                der das untergeordnete Element zugeordnet ist
        </text_node> 
     </element_node> 
        ...
   </element_node>
 
      ...
<root_node> 
</Xcollection>
</DAD>
 

In diesem Beispiel wurden den ersten beiden Spalten in der SQL-Anweisung Elemente und Attribute zugeordnet.

Sie können den XML Extender-Verwaltungsassistenten oder einen Editor zum Erstellen und Aktualisieren der DAD-Datei verwenden.

Schemata für die Zuordnung von XML-Objektgruppen

Wenn Sie eine XML-Objektgruppe verwenden, müssen Sie ein Zuordnungsschema auswählen, das festlegt, wie XML-Daten in einer relationalen Datenbank dargestellt werden. Da XML-Objektgruppen einer hierarchischen Struktur entsprechen müssen, die in XML-Dokumenten mit einer relationalen Struktur verwendet wird, müssen Sie die Gemeinsamkeiten und Unterschiede der beiden Strukturen kennen. Abbildung 11 zeigt, wie die hierarchische Struktur auf die relationalen Tabellenspalten abgebildet werden kann.

Abbildung 11. XML-Dokumentstruktur auf relationale Tabellenspalten abgebildet

XML-Dokumentstruktur auf relationale Tabellenspalten abgebildet

Der XML Extender verwendet das Zuordnungsschema beim Zusammensetzen oder Zerlegen von XML-Dokumenten in verschiedenen relationalen Tabellen. Der XML Extender enthält einen Assistenten, der das Erstellen der DAD-Datei unterstützt. Bevor Sie jedoch die DAD-Datei erstellen, müssen Sie darüber nachdenken, wie Ihre XML-Daten der XML-Objektgruppe zugeordnet werden sollen.

Arten von Zuordnungsschemata

Das Zuordnungsschema wird im Element <Xcollection> in der DAD-Datei angegeben. Der XML Extender bietet zwei Arten von Zuordnungsschemata: SQL-Zuordnung und Zuordnung über die relationale Datenbank (RDB_node). Beide Methoden verwenden das XSLT-Modell zum Definieren der Hierarchie des XML-Dokuments.

SQL-Zuordnung
Ermöglicht ein einfaches und direktes Zuordnen von relationalen Daten zu XML-Dokumenten über eine einzelne SQL-Anweisung und das XSLT-Datenmodell. Die SQL-Zuordnung wird für das Zusammensetzen verwendet, nicht jedoch beim Zerlegen. Die SQL-Zuordnung wird im Element SQL_stmt in der DAD-Datei definiert. Der Inhalt von SQL_stmt ist eine gültige SQL-Anweisung. SQL_stmt ordnet die Spalten in der SELECT-Klausel XML-Elementen oder Attributen zu, die in dem XML-Dokument verwendet werden. Sofern sie für das Zusammensetzen von XML-Dokumenten definiert sind, werden die Spaltennamen in der SELECT-Klausel der SQL-Anweisung verwendet, um den Wert eines attribute_node oder des Inhalts von text_node zu definieren. Die FROM-Klausel definiert die Tabellen mit den Daten; die WHERE-Klausel gibt die join- und Suchbedingung an.

Die SQL-Zuordnung gibt DB2-Benutzern die Möglichkeit, mit SQL Daten zuzuordnen. Bei Verwendung der SQL-Zuordnung müssen Sie in der Lage sein, alle Tabellen in einer SELECT-Anweisung zu verbinden und damit eine Abfrage zu bilden. Wenn eine SQL-Anweisung nicht ausreicht, sollten Sie eine RDB_node-Zuordnung in Betracht ziehen. Zum Verbinden aller Tabellen wird die Beziehung Primärschlüssel und Fremdschlüssel zwischen diesen Tabellen empfohlen.

RDB_node-Zuordnung
Definiert den Standort des Inhalts eines XML-Elements oder des Werts eines XML-Attributs, so daß der XML Extender feststellen kann, wo die XML-Daten gespeichert bzw. von wo sie abgerufen werden sollen.

Der RDB_node enthält eine oder mehrere Knotendefinitionen für Tabellen, wahlweise auszuführende Spalten und wahlfreie Bedingungen. Die Tabellen und Spalten werden verwendet, um festzulegen, wie die XML-Daten in der Datenbank gespeichert werden sollen. Die Bedingung gibt die Kriterien zur Auswahl der XML-Daten an oder dazu, wie die XML-Objektgruppentabelle verbunden werden soll.

Zum Definieren eines Zuordnungsschemas erstellen Sie eine DAD mit einem Element <Xcollection>. Abbildung 12 zeigt ein Fragment einer Muster-DAD-Datei mit einer SQL-Zuordnung "XML-Objektgruppe", die eine Gruppe von XML-Dokumenten aus Daten in drei relationalen Tabellen zusammensetzt.

Abbildung 12. SQL-Zuordnungsschema

<?xml version="1.0"?> 
<!DOCTYPE DAD SYSTEM "c:\dtd\dad.dtd"> 
<DAD> 
  <dtdid>c:\dxx\samples\dad\getstart.dtd</dtdid> 
<validation>YES</validation> 
<Xcollection> 
<SQL_stmt> 
       SELECT o.order_key, customer, p.part_key, quantity, price, tax, date, 
              mode, comment 
         FROM order_tab o, part_tab p, 
               table(select substr(char(timestamp(generate_unique())), 
               as ship_id, date, mode, from ship_tab) as s 
        WHERE p.price > 2500.00 and s.date > "1996-06-01" AND 
              p.order_key = o.order_key and s.part_key = p.part_key 
</SQL_stmt>
<prolog>?xml version="1.0"?</prolog>
    <doctype>!DOCTYPE DAD SYSTEM "c:\dxx\samples\dtd\getstart.dtd"</doctype>
<root_node>
	   <element_node name="Order">
		  <attribute_node name="key">
			<column_name="order_key"/>
		  </attribute_node>
		  <element_node name="Customer">
			  <text_node>
				  <column name="customer"/>
			  </text_node>
		  <element_node>
		
		...
 
		  </element_node><!-end Part->
	   </element_node><!-end Order->
</root_node>
</Xcollection>
</DAD>
 

Der XML Extender bietet verschiedene gespeicherte Prozeduren zur Verwaltung von Daten in einer XML-Objektgruppe. Diese gespeicherten Prozeduren unterstützen beide Arten der Zuordnung, erfordern jedoch, daß die DAD-Datei entsprechend den in Voraussetzung für das Zuordnungsschema definierten Regeln aufgebaut ist.

Voraussetzung für das Zuordnungsschema

In den folgenden Abschnitten werden die Voraussetzungen für die verschiedenen Arten der Zuordnungsschemata für XML-Objektgruppen beschrieben.

Voraussetzungen bei der Verwendung der SQL-Zuordnung

In diesem Zuordnungsschema müssen Sie das Element SQL_stmt im DAD-Element <Xcollection> angeben. SQL_stmt muß eine einzelne SQL-Anweisung enthalten, die mehrere relationale Tabellen über das Abfrageprädikat verbindet. Darüber hinaus sind die folgenden Klauseln erforderlich:

Auch wenn für SQL_stmt die oben angeführten Einschränkungen gelten, ist es doch eine sehr leistungsstarke Funktion, da Sie in Ihrer WHERE-Klausel ein beliebiges Prädikat angeben können, sofern der Ausdruck im Prädikat die Spalten in den Tabellen verwendet.

Voraussetzungen bei der Verwendung der RDB_node-Zuordnung

Verwenden Sie mit dieser Zuordnungsmethode nicht das Element SQL_stmt im Element <Xcollection> der DAD-Datei. Verwenden Sie statt dessen das Element RDB_node element in allen Knoten der Ausgangsebene für element_node und für jeden attribute_node und text_node.

Mit dem Ansatz über die RDB_node-Zuordnung brauchen Sie keine SQL-Anweisungen anzugeben. Das Aufstellen komplexer Abfragebedingungen im Element RDB_node ist jedoch unter Umständen schwieriger. Die Verwendung eines Ausdrucks bzw. einer Operation union ist beispielsweise weniger leistungsstark als der Ansatz SQL-zu-XML.

Anforderungen für die Tabellengröße beim Zerlegen

Beim Zerlegen wird die RDB_node-Zuordnung verwendet zur Angabe, wie ein XML-Dokument in DB2-Tabellen zerlegt werden soll durch Extrahieren der Element- und Attributwerte in Tabellenzeilen. Die Werte aus den einzelnen XML-Dokumenten werden in einer oder mehreren DB2-Tabellen gespeichert. Jede Tabelle kann maximal 1024 Zeilen aus jedem Dokument enthalten.

Wenn ein XML-Dokument beispielsweise in fünf Tabellen zerlegt wird, kann jede dieser fünf Tabellen bis zu 1024 Zeilen für ein bestimmtes Dokument haben. Wenn die Tabelle Zeilen für mehrere Dokumente enthält, kann sie bis zu 1024 Zeilen für jedes Dokument enthalten. Wenn die Tabelle 20 Dokumente enthält, kann sie also 20.480 Zeilen enthalten, 1024 pro Dokument.

Die Verwendung mehrfach vorkommender Elemente (Elemente mit Standortpfaden, die mehr als einmal in der XML-Struktur vorkommen) wirkt sich auf die Anzahl der Zeilen aus. Ein Dokument, das beispielsweise ein Element <Part> 20 mal enthält, kann als 20 Zeilen in eine Tabelle zerlegt werden. Beachten Sie bei Verwendung mehrfach vorkommender Elemente diese Einschränkung der Tabellengröße.


[ Seitenanfang | Vorherige Seite | Nächste Seite | Inhaltsverzeichnis | Index ]