Manuali IBM

XML Extender - Gestione e programmazione


Pianificazione della gestione

Quando si pianifica un'applicazione che utilizza i documenti XML, occorre innanzitutto stabilire:

Successivamente sarà possibile pianificare le altre attività di gestione:

Le modalità di utilizzo di XML Extender variano a seconda dell'applicazione richiesta. Come indicato nella sezione Introduzione a XML Extender, è possibile eseguire la composizione dei documenti XML dai dati DB2 esistenti e memorizzare questi documenti nel DB2 come documenti intatti o dati DB2. Ciascuno di questi metodi di accesso e memorizzazione presenta requisiti di pianificazione differenti. Le seguenti sezioni descrivono le considerazioni sulla pianificazione.

Metodi di accesso e memorizzazione

XML Extender fornisce due metodi di accesso e pianificazione per utilizzare DB2 come un magazzino XML: Colonna XML e Raccolta XML. Selezionare il metodo più adatto alle proprie esigenze.

Colonna XML
Memorizza e richiama i documenti XML come dati della colonna DB2. I dati XML vengono rappresentati da una colonna XML.

Raccolta XML
Esegue la composizione o la scomposizione dei documenti XML in una raccolta delle tabelle referenziali.

Il tipo di applicazione determina il metodo di accesso e memorizzazione da utilizzare e come strutturare i dati XML. I seguenti scenari descrivono le situazioni in cui viene utilizzato il metodo di accesso e memorizzazione appropriato.

Quando utilizzare le colonne XML

Utilizzare le colonne XML nei casi in cui:

Quando utilizzare le raccolte XML

Utilizzare le raccolte XML nei casi in cui:

Viene utilizzato il file DAD (document access definition) per associare i dati XML alle tabelle DB2 tramite questi due metodi di accesso e memorizzazione.La Figura 7 indica come DAD specifica i metodi di accesso e memorizzazione.

Figura 7. Il file DAD associa la struttura del documento XML al DB2 e specifica il metodo di accesso e memorizzazione.


Il file DAD associa la struttura del documento XML al DB2 e specifica il metodo di accesso e memorizzazione.

Il file DAD svolge un ruolo importante nella gestione di XML Extender. Definisce l'ubicazione dei file chiave, come DTD, e specifica come la struttura dei documenti XML viene associata ai dati DB2. Inoltre, definisce i metodi di accesso e memorizzazione da utilizzare nelle applicazioni.

Pianificazione per le colonne XML

Le seguenti sezioni descrivono le attività di pianificazione per le colonne XML.

Convalida

Dopo aver scelto il metodo di accesso e memorizzazione, è possibile specificare la DAD e determinare se convalidate i propri dati. Convalidare i dati XML utilizzando una DTD. L'utilizzo di una DTD verifica se il documento XML è valido e consente di eseguire le ricerche strutturali sui dati XML. La DTD viene memorizzata nel magazzino DTD.

Consiglio: Convalidare i dati XML utilizzando una DTD, a meno che i documenti XML non vengano memorizzati a scopo di archiviazione. Per eseguire la convalida, è necessario che il magazzino XML Extender contenga una DTD. Per informazioni su come memorizzazione una DTD nel magazzino, consultare la sezione Memorizzazione di DTD in un magazzino DTD.

E' possibile convalidare i documenti nella stessa colonna XML utilizzando DTD differenti. In altri termini, è possibile avere dei documenti che presentano la stessa struttura, con elementi e attributi simili, che richiamano DTD differenti. Per fare riferimento a più DTD, utilizzare le seguenti indicazioni:

Importante: Specificare se si desidera eseguire la convalida prima di inserire i dati XML nel DB2. XML Extender non supporta la convalida dei dati già inseriti nel DB2.

Considerazioni:

UDT XML

Memorizzare un documento XML in una colonna XML come DTD. Per informazioni sulle UDT disponibili, consultare la sezione Tabella 4.

Tabella 4. UDT XML Extender
Colonna UDT Tipo di dati origine Descrizione
XMLVARCHAR VARCHAR(varchar_len) Memorizza un intero documento XML come VARCHAR nel DB2.
XMLCLOB CLOB(clob_len) Memorizza un intero documento XML come CLOB nel DB2.
XMLFILE VARCHAR(1024) Memorizza il nome file di un documento XML nel DB2 e memorizza il documento XML in un file locale sul server DB2.

Tabelle laterali

Quando si esegue la pianificazione delle tabelle laterali, occorre stabilire le modalità in base alle quali si desidera organizzare le tabelle, il numero di tabelle da creare e se definire una vista predefinita per queste tabelle. Queste decisioni sono basate in parte su diverse condizioni: la ricorrenza degli elementi o attributi e i requisiti relativi alle prestazioni delle interrogazioni.

Ricorrenza multipla

Quando per un documento ricorrono più percorsi di ubicazione, XML Extender aggiungerà una colonna DXX_SEQNO di tipo INTEGER in ogni tabella per memorizzare una traccia dell'ordine degli elementi che ricorrono più volte. Con DXX_SEQNO, è possibile richiamare un elenco di elementi che utilizza lo stesso ordine del documento XML originale specificando ORDER BY DXX_SEQNO in un'interrogazione SQL.

Viste predefinite e prestazioni di interrogazione

Quando si abilita una colonna XML, è possibile specificare un valore predefinito, una vista di sola lettura che collega la tabella applicativa alle tabelle laterali utilizzando un ID univoco, denominato ROOT ID. Con la vista predefinita è possibile ricercare documenti XML interrogando le tabelle laterali. Ad esempio, se si specifica la tabella applicativa SALES_TAB e le tabelle laterali ORDER_TAB, PART_TAB e SHIP_TAB:

SELECT sales_person FROM sales_order_view
   WHERE price > 2500.00

L'istruzione SQL restituisce i nomi dei venditori in SALES_TAB i cui ordini sono memorizzati nella colonna ORDER con il valore PRICE superiore a 2500.00.

L'interrogazione della vista predefinita consente la visualizzazione di una singola vista virtuale della tabella applicativa e delle tabelle laterali. Tuttavia, tenere presente che la complessità di un'interrogazione è direttamente proporzionale al numero di tabelle laterali create. Quindi, la creazione della vista predefinita è consigliata solo se il numero totale di colonne delle tabelle laterali è ridotto. Le applicazioni possono creare delle proprie viste, unendo le principali colonne delle tabelle laterali.

Indici per i dati della colonna XML

Per la pianificazione è necessario stabilire se indicizzare i documenti delle colonne XML. Questa decisione deve essere valutata in base alla frequenza di accesso ai dati e allo stato delle prestazioni durante le ricerche strutturali.

Quando si utilizzano le colonne XML contenenti documenti XML interi, è possibile creare le tabelle laterali per includere le colonne dei valori degli attributi e degli elementi XML e gli indici in queste colonne. E' necessario specificare gli elementi e gli attributi per i quali si desidera creare l'indice.

L'indicizzazione delle colonne XML consente l'interrogazione frequente dei vari tipi di dati, come integer o decimal, e la creazione dell'indice utilizzando il supporto di indice DB2 nativo dall'engine del database. XML Extender richiama i valori degli elementi e degli attributi XML dai documenti XML e li memorizza nelle tabelle laterali, consentendo la creazione degli indici in queste tabelle.

E' possibile specificare ogni colonna di una tabella laterale con un percorso di ubicazione che identifica un elemento o attributo XML e un tipo di dati SQL. La Figura 8 illustra una colonna XML con le tabelle laterali.

Figura 8. Una colonna XML con le tabelle laterali.


Una colonna XML con le tabelle laterali

XML Extender compila automaticamente la tabella laterale durante la memorizzazione dei documenti XML nella colonna XML.

Per una ricerca veloce, creare gli indici in queste colonne utilizzando la tecnologia DB2 Indicizzazione strutturata B. I metodi utilizzati per creare un indice variano a seconda del sistema operativo e XML Extender supporta questi metodi differenti.

Considerazioni:

Percorso di ubicazione

Un percorso di ubicazione è una sequenza di tag XML che identifica un elemento o attributo XML. Il percorso di ubicazione XML Extender viene utilizzato per i seguenti scopi:

La Figura 9 mostra un esempio di percorso di ubicazione e delle relative relazioni alla struttura del documento XML.

Figura 9. Memorizzazione dei documenti come documenti XML strutturati in una colonna di tabella DB2


Memorizzazione dei documenti come documenti XML strutturati in una colonna di tabella DB2

Sintassi del percorso di ubicazione

Il seguente elenco descrive la sintassi del percorso di ubicazione supportata da XML Extender.

1. /
Rappresenta l'elemento root XML.

2. /tag1
Rappresenta l'elemento tag1 nella root.

3. /tag1/tag2/..../tagn
Rappresenta un elemento denominato tagn come elemento secondario di una catena discendente da root, tag1, tag2 fino a tagn-1.

4. //tagn
Rappresenta un qualsiasi elemento denominato tagn e le doppie barre (//) indicano zero o più tag arbitrarie.

5. /tag1//tagn
Rappresenta un qualsiasi elemento denominato tagn, un elemento secondario denominato tag1 nella root e le doppie barre (//) indicano zero o più tag arbitrarie.

6. /tag1/tag2/@attr1
Rappresenta l'attributo attr1 di un elemento denominato tag2, che è l'elemento secondario di tag1 nella root.

7. /tag1/tag2[@attr1="5"]
Rappresenta un elemento denominato tag2 il cui attributo attr1 ha come valore 5. tag2 è l'elemento secondario di tag1 nella root.

8. /tag1/tag2[@attr1="5"]/.../tagn
Rappresenta un elemento denominato tagn, che è un elemento secondario della catena decrescente, tag1, tag2, fino a tagn-1, dove il valore dell'attributo attr1 di tag2 è 5.

Caratteri jolly: E' possibile sostituire un asterisco per un elemento in un percorso di ubicazione per la corrispondenza con altre stringhe.

Percorso di ubicazione semplice

Percorso di ubicazione semplice è una sequenza di nomi dei tipi di elementi collegati da una barra (/). I valori degli attributi sono racchiusi tra parentesi quadre seguiti dal tipo di elemento. Le descrizioni della sintassi per 3 e 6 sono riportate nella sezione Sintassi del percorso di ubicazione relativa ai percorsi di ubicazione semplici. Tabella 5 fornisce informazioni sulla sintassi.

Tabella 5. Sintassi del percorso di ubicazione semplice
Argomento Percorso di ubicazione Descrizione
elemento XML /tag1/tag2/..../tagn-1/tagn Il contenuto di un elemento identificato dall'elemento denominato tagn e dai relativi elementi secondari
attributo XML /tag_1/tag_2/..../tag_n-1/tag_n/@attr1
Un attributo denominato attr1 dell'elemento identificato da tagn e dai relativi elementi secondari

XML Extender - Limitazioni

XML Extender presenta delle limitazioni nell'utilizzo del percorso di ubicazione quando viene definito un elemento o attributo nel file DAD. Poiché XML Extender utilizza l'associazione numericamente corrispondente tra un elemento o attributo e una colonna DB2, occorrono speciali regole per il percorso di ubicazione. La Tabella 6 descrive le limitazioni per il percorso di ubicazione. I numeri specificati nella colonna del percorso di ubicazione supportata fanno riferimenti agli esempi di sintassi riportati nella sezione Sintassi del percorso di ubicazione.

Tabella 6. Limitazioni di XML Extender nell'utilizzo del percorso di ubicazione
Utilizzo del percorso di ubicazione Percorso di ubicazione supportato
Elemento nella DAD 3, 6 (percorso di ubicazione semplice descritto nella Tabella 5)
UDF di estrazione 1-9
UDF di ricerca Text Extender 1-9

File DAD

Per le colonne XML, la DAD specifica innanzitutto il modo in cui indicizzare i documenti memorizzati in una colonna XML. La DAD è un documento formattato in XML che risiede sul client. Se i sceglie di convalidare i documenti XML con una DTD, è possibile associare il file DAD a questa DTD. Il tipo di dati del file DAD è CLOB.

Il file DAD per le colonne XML contiene un'intestazione XML, che specifica i percorsi di indirizzario sul client per il file DAD e la DTD, e fornisce associazioni per tutti i dati XML memorizzati nelle tabelle laterali per l'indicizzazione.

Per specificare il metodo di accesso e memorizzazione delle colonne XML, utilizzare la seguente tag nel file DAD.

<Xcolumn>
Specifica che i dati XML devono essere memorizzati e richiamati come documenti XML interi nelle colonne DB2 abilitate per i dati XML.

Una colonna abilitata per XML è di tipo UDF XML Extender. Le applicazioni possono includere la colonna in qualsiasi tabella utente. E' possibile accedere ai dati della colonna XML attraverso le istruzioni SQL e le UDF XML Extender.

E' possibile utilizzare il wizard di gestione XML Extender oppure un editor per creare e aggiornare la DAD.

Pianificazione per le raccolte XML

Durante la pianificazioni delle raccolte XML, è possibile scegliere di eseguire la composizione dei documenti dai dati DB2, la scomposizione di un documento XML nei dati DB2 o entrambe. Le seguenti sezioni forniscono informazioni sulla pianificazione delle raccolte XML e considerazioni sulla composizione e scomposizione.

Convalida

Dopo aver scelto il metodo di accesso e memorizzazione, è possibile determinare se convalidate i propri dati. Convalidare i dati XML utilizzando una DTD. L'utilizzo di una DTD verifica se il documento XML è valido e consente di eseguire le ricerche strutturali sui dati XML. La DTD viene memorizzata nel magazzino DTD.

Consiglio: Convalidare i dati XML utilizzando una DTD. Per eseguire la convalida, è necessario che il magazzino XML Extender contenga una DTD. Per informazioni su come memorizzazione una DTD nel magazzino, consultare la sezione Memorizzazione di DTD in un magazzino DTD. I requisiti DTD differiscono a seconda se si desidera eseguire la composizione o la scomposizione dei documenti XML.

Importante: Specificare se si desidera eseguire la convalida dei dati XML prima di inserire i dati XML nel DB2. XML Extender non supporta la convalida dei dati già inseriti nel DB2.

Considerazioni:

File DAD

Per le raccolte XML, il file DAD associa la struttura del documento XML alle tabelle DB2 da cui è possibile eseguire la composizione o la scomposizione del documento.

Ad esempio, se si specifica un elemento denominato <Tax> nel documento XML, sarà necessario associare <Tax> alla colonna TAX. Definire la relazione tra i dati XML e quelli relazionali nel file DAD.

Il file DAD è specificato durante l'abilitazione di una raccolta o quando viene utilizzato nelle procedure memorizzate della raccolta XML. La DAD è un documento formattato in XML che risiede sul client. Se i sceglie di convalidare i documenti XML con una DTD, è possibile associare il file DAD a questa DTD. Se viene utilizzato come parametro di input delle procedure memorizzate XML Extender, il tipo di dati del file DAD è CLOB.

Per specificare il metodo di accesso e memorizzazione delle raccolte XML, utilizzare la seguente tag nel file DAD:

<Xcollection>
Specifica che i dati XML devono essere composti o scomposti dai o nei documenti XML di una raccolta delle tabelle referenziali.

Una raccolta XML è un nome virtuale per una serie di tabelle relazionali che contengono i dati XML. Le applicazioni possono abilitare una raccolta XML delle tabelle di qualsiasi utente. Queste tabelle utente possono essere delle tabelle di dati aziendali esistenti o nuove tabelle create da XML Extender. E' possibile accedere ai dati delle raccolte XML tramite le procedure memorizzate fornite da XML Extender.

Il file DAD definisce la struttura ad albero dei documenti XML utilizzando i seguenti tipi di nodo:

root_node
Specifica l'elemento root del documento.

element_node
Identifica un elemento come elemento root o elemento secondario.

text_node
Indica il testo CDATA di un elemento.

attribute_node
Rappresenta un attributo di un elemento.

La Figura 10 mostra un esempio del tipo di associazione utilizzato in un file DAD. I nodi associano il contenuto del documento XML alle colonne di tabella in una tabella referenziale.

Figura 10. Definizioni di nodo

<?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">         --> Identifica l'elemento <Order>
     <attribute_node name="key">       --> Identifica l'attributo "key"
        <column name="order_key"/>     --> Definisce il nome della colonna, "order_key",
                                                a cui vengono associati l'elemento e l'attributo.
</attribute_node> 
     <element_node name="Customer">    --> Identifica un elemento secondario di <Order> come
        <Customer>
        <text_node>                    --> Specifica il testo CDATA per l'elemento
        <Customer>
          <column name="customer">     --> Definisce il nome della colonna, "customer",
                                                a cui viene associato l'elemento secondario.
   </text_node> 
</element_node> 
        ...
</element_node>
 
      ...
<root_node> 
</Xcollection>
</DAD>
 

In questo esempio, le prime due colonne nell'istruzione SQL presentano elementi e attributi ad esse associati.

E' possibile utilizzare il wizard di gestione XML Extender oppure un editor per creare e aggiornare il file DAD.

Schemi di associazione per le raccolte XML

Se si sta utilizzando una raccolta XML, occorre selezionare uno schema di associazione che definisce la rappresentazione dei dati XML in un database relazionale. Poiché le raccolte XML associano la struttura gerarchica utilizzata nei documenti XML a una struttura relazionale, è necessario comprendere le caratteristiche delle due strutture. La Figura 11 indica come la struttura gerarchica può essere associata alle colonne della tabella relazionale.

Figura 11. Documento XML strutturato associato alle colonne della tabella relazionale


Documento XML strutturato associato alle colonne della tabella relazionale

XML Extender utilizza lo schema di associazione durante la composizione o scomposizione dei documenti XML ubicati in più tabelle relazionali. XML Extender fornisce un wizard di supporto nella creazione del file DAD. Comunque, prima di creare il file DAD, stabilire il modo in cui si desidera associare i dati XML alla raccolta XML.

Tipi di schema di associazione

Lo schema di associazione è specificato nell'elemento <Xcollection> del file DAD. XML Extender fornisce due tipi di schemi di associazione: associazione SQL e associazione RDB_node. Entrambi i metodi utilizzano il modello XSLT per definire la gerarchia del documento XML.

Associazione SQL
Consente l'associazione semplice e diretta tra i dati relazionali e i documenti XML tramite una singola istruzione SQL e il modello di dati XSLT. L'associazione SQL viene utilizzata solo per la composizione e non per la scomposizione. L'associazione SQL è definita dall'elemento SQL_stmt nel file DAD. Il contenuto di SQL_stmt è un'istruzione SQL valida. SQL_stmt associa le colonne della clausola SELECT agli elementi o attributi XML utilizzati nel documento XML. Se l'associazione SQL viene definita per la composizione dei documenti XML, i nomi colonna nella clausola SELECT dell'istruzione SQL vengono utilizzati per definire il valore di attribute_node o il contenuto di text_node. La clausola FROM definisce le tabelle contenenti i dati; la clausola WHERE specifica le condizioni di ricerca e collegamento.

L'associazione SQL fornice agli utenti DB2 la possibilità di associare i dati utilizzando SQL. Quando si utilizza l'associazione SQL, occorre unire tutte le tabelle in un'istruzione SELECT per formare un'interrogazione. Se una sola istruzione SQL risulta insufficiente, utilizzare l'associazione RDB_node. Per raggruppare tutte le tabelle, si consiglia di eseguire l'associazione tra la chiave primaria e la chiave esterna di queste tabelle.

Associazione RDB_node
Definisce l'ubicazione del contenuto di un elemento XML o il valore di un attributo XML in modo che XML Extender possa determinare dove memorizzare o richiamare i dati XML.

RDB_node che contiene una o più definizione di nodo relative alle tabelle, alle colonne e alle condizioni facoltative. Le tabelle e le colonne vengono utilizzate per definire come i dati XML devono essere memorizzati nel database. La condizione specifica i criteri di selezione dei dati XML o le modalità di unione delle tabelle della raccolta XML.

Per definire uno schema di associazione, creare una DAD con un elemento <Xcollection>. La Figura 12 mostra un file DAD di esempio con l'associazione SQL delle raccolte XML che compone una serie di documenti XML dai dati di tre tabelle relazionali.

Figura 12. Schema di associazione SQL

<?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>
 

XML Extender fornice diverse procedure memorizzate che gestiscono i dati in una raccolta XML. Queste procedure memorizzate supportano entrambi i tipi di associazione, ma richiedono che il file DAD rispetti le regole descritte nella sezione Requisiti dello schema di associazione.

Requisiti dello schema di associazione

Le seguenti sezioni descrivono i requisiti per ogni tipo di schema di associazione delle raccolte XML.

Requisiti per l'associazione SQL

In questo schema di associazione, occorre specificare l'elemento SQL_stmt nell'elemento <Xcollection> DAD. SQL_stmt deve contenere una singola istruzione SQL che possa unire più tabelle relazionali al predicato dell'interrogazione. Inoltre, sono richieste le seguenti clausole:

Anche se SQL_stmt presenta tali caratteristiche, le relative funzionalità non risultano ridotte poiché è possibile specificare un qualsiasi predicato nella clausola WHERE. In tal caso, è però necessario che l'espressione del predicato utilizzi le colonne delle tabelle.

Requisiti per l'utilizzo dell'associazione RDB_node

Se si specifica questo metodo di associazione, non utilizzare SQL_stmt nell'elemento <Xcollection> del file DAD. Utilizzare invece l'elemento RDB_node in ciascun nodo iniziale per element_node e per ogni attribute_node e text_node.

Se si utilizza l'associazione RDB_node, non occorre specificare le istruzioni SQL. Tuttavia, l'inserimento di condizioni di collegamento complesse nell'elemento RDB_node può risultare molto difficile. Ad esempio, l'utilizzo di un'operazione o di un'espressione union risulta meno efficace di SQL per XML.

Requisiti per la scomposizione delle dimensioni della tabella

La scomposizione utilizza l'associazione RDB_node per specificare come un documento XML si scompone in tabelle DB2, estraendo i valori attributo ed elemento nelle righe della tabella. I valori di ciascun documento XML vengono memorizzati in uno o più tabelle DB2. Una tabella può presentare massimo 1024 righe scomposte da ciascun documento.

Ad esempio, se un documento XML si scompone in cinque tabelle, ogni tabella può presentare massimo 1024 righe per quel determinato documento. Se la tabella presenta righe per più documenti, è possibile che contenga massimo 1024 righe per ciascun documento. Se la tabella presenta 20 documenti, è possibile che contenga 20.480 righe, 1024 per ciascun documento.

L'utilizzo di elementi con ricorrenza multipla (elementi con percorsi di ubicazione multipla nella struttura XML) incide sul numero di righe. Ad esempio, un documento che contiene un elemento <Part> che ricorre 20 volte, è necessario che sia scomposto in 20 righe in una tabella. Quando si utilizzano elementi con ricorrenza multipla, considerare questa restrizione delle dimensioni di tabella.


[ Inizio pagina | Pagina precedente | Pagina successiva | Indice | Indice analitico ]