Manuali IBM

XML Extender - Gestione e programmazione


Operazioni con le colonne XML

Per impostare le colonne XML, è necessario definire il file DAD per accedere ai dati XML e per abilitare le colonne per questi dati in una tabella XML. Un importante concetto nella creazione della DAD è la comprensione della sintassi del percorso di ubicazione, in quanto viene utilizzata per associare i valori dell'elemento e dell'attributo alle tabelle DB2. Per ulteriori informazioni sulla sintassi del percorso di ubicazione, consultare la sezione Percorso di ubicazione.

Creazione o editazione del file DAD

Quando si specifica un file DAD, vengono definiti gli attributi e gli elementi chiave dei dati che si desidera ricercare. XML Extender utilizza queste informazioni per creare le tabelle laterali in cui vengono ordinati i dati per poterli richiamare velocemente. Per ulteriori informazioni sulla pianificazione della creazione del file DAD, consultare la sezione File DAD.

Informazioni preliminari

Utilizzo del wizard di gestione

Eseguire i passi riportati di seguito per creare un file DAD:

  1. Installare e avviare il wizard di gestione. Per ulteriori dettagli, consultare Avvio del wizard di gestione.
  2. Fare clic su Operazioni con i file DAD dalla finestra LaunchPad per editare o creare un file DAD XML. Viene visualizzata la finestra Specificare una DAD.
  3. Scegliere se editare un file DAD esistente oppure creare un nuovo file DAD.
  4. Nella finestra Selezionare convalida, scegliere se convalidare i documenti XML con una DTD.
  5. Fare clic su Avanti.
  6. Nella finestra Tabelle laterali scegliere se aggiungere una nuova tabella laterale, editare oppure eliminare una tabella laterale esistente.
  7. Immettere un nome file di output per il file DAD modificato nel campo Nome file della finestra Specificare una DAD.
  8. Fare clic su Fine per salvare il file DAD e ritornare alla finestra LaunchPad.

Shell dei comandi DB2

Il file DAD è un file XML che può essere creato in qualsiasi editor di testo.

Eseguire i passi riportati di seguito per creare un file DAD:

  1. Aprire un editor di testo.
  2. Creare un'intestazione del file DAD utilizzando la seguente sintassi:
    <?xml version="1.0"?>
    <!DOCTYPE DAD SYSTEM "path\dtd\dad.dtd"> --> il percorso
    e il nome file della
    DTD per il file DAD
     
    
  3. Inserire le tag <DAD></DAD>.
  4. Nella tag <DAD>, specificare facoltativamente l'identificativo DTD che associa il file DAD alla DTD del documento XML per la convalida.
    <dtdid>path\dtd_name.dtd</dtdid> --> il percorso e il nome file della DTD
                                         per l'applicazione 
    

    L'ID DTD è richiesto per la convalida e deve corrispondere al valore dell'ID DTD utilizzato per l'inserimento della DTD nella tabella di riferimento DTD (db2xml.DTD_REF).

  5. Specificare se si desidera utilizzare una DTD per accertarsi che il documento XML è un documento valido. Ad esempio:
    <validation>YES</validation>   --> specificare Sì o No
    

    Se si specifica Sì, è necessario che nel passo precedente sia stato specificato un ID DTD e che una DTD sia stata inserita nella tabella DTD_REF.

  6. Utilizzare l'elemento <Xcolumn> per definire il metodo di memorizzazione e accesso come colonna XML.
    <Xcolumn>
    </Xcolumn>
    
  7. Definire ogni tabella laterale e i principali elementi e attributi da indicizzare per la ricerca strutturale. Ripetere i seguenti passi per ciascuna tabella. Questi passi utilizzano gli esempi riportati nel file DAD campione illustrato nella sezione File DAD: colonna XML:
    1. Inserire le tag <TABLE></TABLE> e l'attributo nome.
      <table name="order_tab">
      </table>
      
    2. Dopo la tag <TABLE>, inserire una tag <COLUMN> e i relativi attributi per ciascuna colonna della tabella:
      • name: il nome della colonna
      • type: il tipo di colonna
      • path: il percorso di ubicazione dell'elemento o attributo. Per informazioni sulla sintassi del percorso di ubicazione, consultare la sezione Percorso di ubicazione.
      • multi_occurrence: indica se questo elemento o attributo può essere utilizzato più volte all'interno di un documento
      <table ...>
         <column name="order_key"
                 type="integer"
                 path="/Order/@key"
                 multi_occurrence="NO"/>
         <column name="customer"
                 type="varchar(50)"
                 path="/Order/Customer/Name"
                 multi_occurrence="NO"/>
      </table>
      
  8. Verificare se viene posizionata una tag </TABLE> dopo l'ultima definizione di colonna.
  9. Verificare se viene posizionata una tag </Xcolumn> dopo l'ultima tag </TABLE>.
  10. Verificare se viene posizionata una tag </DAD> dopo la tag </Xcolumn>.

Creazione o modifica di una tabella XML

Per memorizzare documenti XML intatti in una tabella, è necessario creare o modificare una tabella in modo da contenere una colonna con un UDT XML. La tabella è nota come tabella XML contenente documenti XML. La tabella non può essere una tabella modificata o nuova. Quando una tabella contiene una colonna di tipo XML, è possibile abilitare la colonna per XML.

E' possibile modificare una tabella esistente con una colonna di tipo XML utilizzando il wizard di gestione o la shell dei comandi DB2.

Utilizzo del wizard di gestione

  1. Installare e avviare il wizard di gestione. Per ulteriori dettagli, consultare Avvio del wizard di gestione.
  2. Fare clic su Operazioni con le colonne XML dalla finestra LaunchPad. Viene visualizzata la finestra Selezionare un'attività.
  3. Fare clic su Aggiungere una colonna XML. Viene visualizzata la finestra Aggiungere una colonna XML.
  4. Selezionare il nome della tabella dal menu a discesa Nome tabella oppure immettere il nome della tabella che si desidera modificare. Ad esempio:
    SALES_DB
    
  5. Immettere il nome della colonna da aggiungere alla tabella nel campo Nome colonna. Ad esempio:
    ORDER
    
  6. Selezionare l'UDT per la colonna dal menu a discesa Tipo colonna. Ad esempio:
    XMLVARCHAR
    
  7. Fare clic su Fine per aggiungere la colonna di tipo XML.

Shell dei comandi DB2

Creare o modificare una tabella con una colonna di tipo XML nella clausola dell'istruzione CREATE TABLE o ALTER TABLE.

Esempio: Nell'applicazione sales, è possibile memorizzare un ordine di righe formattate da XML nella colonna ORDER di una tabella applicativa denominata SALES_TAB. Questa tabella contiene anche le colonne INVOICE_NUM e SALES_PERSON. Poiché si tratta di un ordine di piccole dimensioni, memorizzarlo utilizzando il tipo XMLVARCHAR. La chiave primaria è INVOICE_NUM. La seguente istruzione CREATE TABLE crea la tabella con una colonna di tipo XML:

CREATE TABLE sales_tab( 
              invoice_num  char(6) NOT NULL PRIMARY KEY,
              sales_person     varchar(20),
              order            XMLVarchar);               

Abilitazione delle colonne XML

Per memorizzare un documento XML in un database DB2, occorre abilitare una colonna per XML. L'abilitazione di una colonna comporta la creazione di un indice in modo da eseguire ricerche più veloci. E' possibile abilitare una colonna utilizzando il wizard di gestione XML Extender o la shell dei comandi DB2. La colonna deve essere di tipo XML.

Per abilitare una colonna XML, XML Extender:

Dopo aver abilitato la colonna XML, sarà possibile:

Informazioni preliminari

Creare una tabella XML generando o modificando una tabella DB2 con una colonna UDT XML.

Utilizzo del wizard di gestione

Eseguire i passi riportati di seguito per abilitare le colonne XML:

  1. Installare e avviare il wizard di gestione. Per ulteriori dettagli, consultare Avvio del wizard di gestione.
  2. Fare clic su Operazioni con le colonne XML dalla finestra LaunchPad per visualizzare le attività relative alle colonne XML Extender. Viene visualizzata la finestra Selezionare un'attività.
  3. Fare clic su Abilitare una colonna e quindi su Avanti per abilitare una colonna di tabella esistente nel database.
  4. Selezionare la tabella contenente la colonna XML dal campo Nome tabella. Ad esempio
    SALES_TAB
    
  5. Selezionare la colonna da abilitare dal campo Nome colonna. Ad esempio:
    ORDER
    
    La colonna deve esistere ed essere di tipo XML.
  6. Immettere il il nome file DAD ed il percorso nel campo Nome file DAD oppure fare clic su ... per selezionare un file DAD esistente. Ad esempio:
    c:\dxx\samples\dad\getstart.dad
    
  7. Facoltativamente, immettere il nome di un table space esistente nel campo Table space.

    Il table space contiene tabelle laterali create da XML Extender. Se si specifica un table space, le tabelle laterali vengono create nel table space specificato. Se non si specifica un table space, le tabelle laterali vengono create nel table space predefinito.

  8. Facoltativamente, immettere il nome della vista predefinita nel campo Vista predefinita.

    Quando specificato, la vista predefinita viene creata automaticamente quando la colonna viene abilitata e unisce la tabella XML e tutte le relative tabelle laterali.

  9. Facoltativamente, immettere il nome colonna della chiave primaria nella tabella applicativa nel campo ID root. Questa operazione è consigliata.

    XML Extender utilizza il valore ID ROOT come identificativo univoco per associare tutte le tabelle laterali alla tabella applicativa. Se non è specificato, XML Extender aggiunge la colonna DXXROOT_ID alla tabella applicativa e genera un identificativo.

  10. Fare clic su Fine per abilitare la colonna XML, creare le tabelle laterali e ritornare alla finestra LaunchPad.

Shell dei comandi DB2

Per abilitare una colonna XML, immettere il seguente comando:

Sintassi:
dxxadm enable_column
>>-dxxadm---enable_column---dbName---tbName---colName----------->
 
>----DAD_file----+-----------------+---+-------------------+---->
                 '--t--tablespace--'   '--v--default_view--'
 
>-----+--------------+-----------------------------------------><
      '--r--root_id--'
 

Parametri:

dbName
Il nome del database.

tbName
Il nome della tabella che contiene la colonna che deve essere abilitata.

colName
Il nome della colonna XML abilitata.

DAD_file
Il nome del file che contiene la DAD (document access definition).

tablespace
Un table space creato in precedenza che contiene le tabelle laterali create da XML Extender. Se non viene specificato, viene utilizzato il table space predefinito.

default_view
Facoltativo. Il nome della vista predefinita creata da XML Extender per associare una tabella applicativa a tutte le tabelle laterali correlate.

root_id
Facoltativo. Il nome colonna della chiave primaria nella tabella applicativa e un identificativo univoco utilizzati per associare tutte le tabelle laterali alla tabella applicativa. XML Extender utilizza il valore root_id come identificativo univoco per associare tutte le tabelle laterali alla tabella applicativa. Si consiglia di specificare l'ID ROOT. Se l'ID ROOT non è specificato, XML Extender aggiunge la colonna DXXROOT_ID alla tabella applicativa e genera un identificativo.

Limitazione: Se la tabella applicativa contiene il nome colonna DXXROOT_ID, ma questa colonna non presenta alcun valore per root_id, è necessario specificare il parametro root_id, altrimenti si verificherà un errore.

Esempio: Il seguente esempio consente di abilitare una colonna utilizzando la shell dei comandi DB2. Il file DAD e il documento XML possono essere trovati nell'Appendice B, Esempi.

dxxadm enable_column SALES_DB sales_tab order getstart.dad
            -v sales_order_view -r invoice_num
 
 

In questo esempio, la colonna ORDER è abilitata nella tabella SALES_DB.SALES_TAB. Il file DAD è getstart.dad, la vista predefinita è sales_order_view e l'ID ROOT è INVOICE_NUM.

In questo esempio la tabella SALES_TAB presenta il seguente schema:
Nome colonna INVOICE_NUM SALES_PERSON ORDER
Tipo di dati CHAR(6) VARCHAR(20) XMLVARCHAR

Le seguenti tabelle laterali vengono create in base alla specifica DAD:

ORDER_SIDE_TAB:
Nome colonna ORDER_KEY CUSTOMER INVOICE_NUM
Tipo di dati INTEGER VARCHAR(50) CHAR(6)
Espressione percorso /Order/@key /Order/Customer/Name N/D

PART_SIDE_TAB:
Nome colonna PART_KEY PRICE INVOICE_NUM
Tipo di dati INTEGER DOUBLE CHAR(6)
Espressione percorso /Order/Part/@key /Order/Part/ExtendedPrice N/D

SHIP_SIDE_TAB:
Nome colonna DATE INVOICE_NUM
Tipo di dati DATE CHAR(6)
Espressione percorso /Order/Part/Shipment/ShipDate N/D

Tutte le tabelle laterali hanno lo stesso tipo di colonna INVOICE_NUM, perché l'ID ROOT è stato specificato dalla chiave primaria INVOICE_NUM nella tabella applicativa. Dopo aver abilitato la colonna, il valore INVOICE_NUM viene inserito nelle tabelle laterali. Se si specifica il parametro default_view durante l'abilitazione della colonna XML, ORDER, viene creata la vista predefinita sales_order_view. Questa vita associa le tabelle precedenti utilizzando la seguente istruzione:

CREATE VIEW sales_order_view(invoice_num, sales_person, order,
                                  order_key, customer, part_key, price, date) 
AS
     SELECT sales_tab.invoice_num, sales_tab.sales_person, sales_tab.order,
            order_tab.order_key, order_tab.customer, 
            part_tab.part_key, part_tab.price, 
            ship_tab.date
     FROM sales_tab, order_tab, part_tab, ship_tab
     WHERE sales_tab.invoice_num = order_tab.invoice_num 
                AND sales_tab.invoice_num = part_tab.invoice_num
                AND sales_tab.invoice_num = ship_tab.invoice_num
Se il table space viene specificato nel comando enable_column, le tabelle laterali vengono create nel table space specificato. Se non viene specificato alcun table space, le tabelle laterali vengono create nel table space predefinito.

Indicizzazione delle tabelle laterali

Dopo aver abilitato una colonna XML e creato le tabelle laterali, è possibile creare un indice per le tabelle laterali. Le tabelle laterali contengono dati XML nelle colonne specificate durante la creazione del file DAD. L'indicizzazione di queste tabelle ottimizza le prestazioni delle interrogazioni per i documenti XML.

Informazioni preliminari

Comando DB2 CREATE INDEX

Utilizzare il comando DB2 CREATE INDEX.

Esempio:

Il seguente esempio consente di creare gli indici in quattro tabelle laterali:

DB2 CREATE INDEX KEY_IDX
      ON ORDER_SIDE_TAB(ORDER_KEY)
 
DB2 CREATE INDEX CUSTOMER_IDX
      ON ORDER_SIDE_TAB(CUSTOMER)
 
DB2 CREATE INDEX PRICE_IDX
      ON PART_SIDE_TAB(PRICE)
 
DB2 CREATE INDEX DATE_IDX
      ON SHIP_SIDE_TAB(DATE)

Disabilitazione delle colonne XML

Disabilitare una colonna se occorre aggiornare un file DAD per la colonna XML o se si desidera cancellare la colonna XML o la tabella che contiene la colonna. Dopo aver disabilitato la colonna, è possibile riabilitarla con il file DAD aggiornato, cancellarla o eseguire altre attività. E' possibile disabilitare una colonna utilizzando il wizard di gestione XML Extender o la shell dei comandi DB2.

Per abilitare una colonna XML, XML Extender:

Importante: Se si cancella una tabella con una colonna XML, senza disabilitare la colonna, XML Extender non può cancellare le tabelle laterali associate alla colonna XML, altrimenti potrebbero verificarsi risultati non previsti.

Informazioni preliminari

Verificare se la colonna che si desidera disabilitare esiste nel database DB2 corrente.

Utilizzo del wizard di gestione

Eseguire i passi riportati di seguito per disabilitare le colonne XML:

  1. Installare e avviare il wizard di gestione. Per ulteriori dettagli, consultare Avvio del wizard di gestione.
  2. Fare clic su Operazioni con le colonne XML dalla finestra LaunchPad per visualizzare le attività relative alle colonne XML Extender. Viene visualizzata la finestra Selezionare un'attività.
  3. Fare clic su Disabilitare una colonna e quindi su Avanti per disabilitare una colonna di tabella esistente nel database.
  4. Selezionare la tabella contenente la colonna XML dal campo Nome tabella.
  5. Selezionare la colonna da disabilitare nel campo Nome colonna.
  6. Fare clic su Fine.

Shell dei comandi DB2

Per disabilitare una colonna XML, immettere il seguente comando:

Sintassi:
dxxadm disable_column
>>-dxxadm---disable_column---dbName---tbName---colName---------><
 

Parametri:

dbName
Il nome del database.

tbName
Il nome della tabella che contiene la colonna che si desidera disabilitare.

colName
Il nome della colonna XML che viene disabilitata.

Esempio: Il seguente esempio consente di disabilitare una colonna utilizzando la shell dei comandi DB2. Il file DAD e il documento XML possono essere trovati nell'Appendice B, Esempi.

dxxadm disable_column SALES_DB sales_tab order
 

In questo esempio, la colonna ORDER viene disabilitata nella tabella SALES_DB.SALES_TAB.

Quando la colonna viene disabilitata, vengono cancellate le tabelle laterali.


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