IBM Books

Administración y programación


Utilización con columnas XML

Para configurar columnas XML, debe definir el archivo DAD para acceder a los datos XML y habilitar columnas para datos XML en una tabla XML. Un concepto importante en la creación de la DAD es la comprensión de la sintaxis de la vía de acceso a la ubicación puesto que se utiliza para correlacionar el elemento y los valores de atributo que desea indexar a las tablas DB2. Vea Vía de ubicación para obtener más información sobre la vía de acceso a la ubicación y su sintaxis.

Creación o edición del archivo DAD

Cuando especifica un archivo DAD, define los atributos y elementos esenciales de los datos que deben buscarse. El XML Extender utiliza esta información para crear tablas secundarias, que permiten al usuario indexar los datos para acceder a ellos con rapidez. Vea El archivo DAD para conocer cuestiones de planificación referentes a la creación del archivo DAD.

Antes de comenzar

Utilización del asistente de administración

Siga los pasos siguientes para crear un archivo DAD:

  1. Ponga a punto y arranque el asistente de administración. Vea Arranque del asistente de administración para obtener detalles.
  2. Pulse Utilización de archivos DAD desde la ventana Área de ejecución para editar o crear un archivo XML de DAD. Se abrirá la ventana Especificar un archivo DAD.
  3. Elija si desea editar un archivo DAD existente o crear uno nuevo.
  4. En la ventana Seleccionar validación, elija si desea validar o no los documentos XML.
  5. Pulse Siguiente.
  6. En la ventana Tablas secundarias, elija si desea añadir una nueva tabla secundaria, editar una tabla secundaria existente o suprimirla.
  7. En el campo Nombre de archivo de la ventana Especificar DAD, escriba un nombre de archivo de salida para el archivo DAD modificado.
  8. Pulse Finalizar para guardar el archivo DAD y volver a la ventana Área de ejecución.

Desde el shell de mandatos de DB2

El archivo DAD es un archivo XML que se puede crear en un editor de texto cualquiera.

Siga los pasos siguientes para crear un archivo DAD:

  1. Abra un editor de texto.
  2. Cree la cabecera del archivo DAD, utilizando la sintaxis siguiente:
    <?xml versión="1.0"?>
    <!DOCTYPE DAD SYSTEM "path\dtd\dad.dtd"> --> vía de acceso y nombre
           de archivo de la DTD para el archivo DAD
     
    
  3. Inserte los códigos <DAD></DAD>.
  4. Dentro del código <DAD>, opcionalmente puede especificar el identificador DTDID, que sirve para asociar el archivo DAD con la DTD del documento XML para la validación:
    <dtdid>vía\nombre_dtd.dtd</dtdid> --> vía de acceso y
    nombre de archivo de la DTD
                                         para la aplicación
    

    El ID de DTD es necesario para la validación y debe coincidir con el valor de ID de DTD que se utiliza cuando se inserta la DTD en la tabla de referencia de DTD (db2xml.DTD_REF).

  5. Especifique si desea realizar la validación (es decir, utilizar una DTD para asegurarse de que el documento XML es válido). Por ejemplo:
    <validation>SÍ</validation>   --> especifique YES o NO
    

    Si especifica SÍ, es necesario que haya especificado un DTDID en el paso anterior y que haya insertado una DTD en la tabla DTD_REF.

  6. Utilice el elemento <Xcolumn> para definir el método de acceso y de almacenamiento como columna XML.
    <Xcolumn>
    </Xcolumn>
    
  7. Define cada tabla secundaria y los elementos y atributos importantes que se deben indexar para realizar búsquedas estructurales. Siga los pasos siguientes para cada tabla. Estas instrucciones utilizan ejemplos procedentes de un archivo DAD de muestra, que aparece en Archivo DAD: columna XML:
    1. Inserte los códigos <TABLE></TABLE> y el nombre del atributo.

      <table name="order_tab">
      </table>
      
    2. A continuación del código <TABLE>, inserte un código <COLUMN> y sus atributos para cada columna de la tabla.
      • name: el nombre de la columna
      • type: el tipo de columna
      • path: la vía de acceso a la ubicación del elemento o atributo. Vea Vía de ubicación para obtener la sintaxis de la vía de acceso a la ubicación.
      • multi_occurrence: indicación de si el elemento o atributo se puede utilizar más de una vez en 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. Compruebe que hay un código </TABLE> a continuación de la última columna de la definición.
  9. Compruebe que hay un código </Xcolumn> a continuación del último código </TABLE>.
  10. Compruebe que hay un código </DAD> a continuación del código </Xcolumn>.

Creación o alteración de una tabla XML

Para guardar documentos XML inalterados en una tabla, debe crear o modificar una tabla que contiene una columna con un tipo definido por el usuario (UDT) XML. Esta tabla se denomina tabla XML, y es una tabla que contiene documentos XML. La tabla puede ser una tabla alterada o una tabla nueva. Cuando una tabla contiene una columna de tipo XML, puede habilitar la columna para XML.

Puede modificar una tabla existente con una columna de tipo XML utilizando el asistente de administración o utilizando el shell de mandatos de DB2.

Utilización del asistente de administración

  1. Ponga a punto y arranque el asistente de administración. Vea Arranque del asistente de administración para obtener detalles.
  2. Pulse Trabajar con columnas XML desde la ventana Área de ejecución. Se abrirá la ventana Seleccionar tarea.
  3. Pulse Añadir columna XML. Se abrirá la ventana Añadir columna XML.
  4. Seleccione el nombre de la tabla desde el menú desplegable Nombre de tabla o escriba el nombre de la tabla que desee modificar. Por ejemplo:
    SALES_DB
    
  5. Escriba el nombre de la columna que debe añadirse a la tabla en el campo Nombre de columna. Por ejemplo:
    ORDER
    
  6. Seccione el UDT para la columna desde el menú desplegable Tipo de columna. Por ejemplo:
    XMLVARCHAR
    
  7. Pulse Finalizar para añadir la columna de tipo XML.

Desde el shell de mandatos de DB2

Cree o modifique una tabla con una columna de tipo XML en la cláusula de columna de la sentencia CREATE TABLE o ALTER TABLE.

Ejemplo: En la aplicación ventas, puede almacenar un pedido, utilizando un formato de línea XML, en una columna llamada ORDER de una tabla de aplicación llamada SALES_TAB. Esta tabla también tiene las columnas INVOICE_NUM y SALES_PERSON. Debido a que es un pedido pequeño, para almacenarlo puede utilizar el tipo XMLVARCHAR. La clave primaria es INVOICE_NUM. La siguiente sentencia CREATE TABLE crea la tabla con una columna de tipo XML:

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

Habilitación de columnas XML

Para guardar un documento XML en una base de datos DB2, debe habilitar una columna para XML. La habilitación de una columna permite indexarla para poder buscarla con rapidez. Puede habilitar una columna mediante el asistente de administración del XML Extender o utilizando el shell de mandatos de DB2. La columna debe ser de tipo XML.

Cuando el XML Extender habilita una columna XML, realiza estas acciones:

Después de habilitar la columna XML, puede

Antes de comenzar

Puede crear una tabla XML creando o alterando una tabla DB2 que contenga una columna que sea un UDT de XML.

Utilización del asistente de administración

Siga los pasos siguientes para habilitar columnas XML:

  1. Ponga a punto y arranque el asistente de administración. Vea Arranque del asistente de administración para obtener detalles.
  2. Pulse Trabajar con columnas XML desde la ventana Área de ejecución para ver las tareas relacionadas con columnas del XML Extender. Se abrirá la ventana Seleccionar tarea.
  3. Pulse Habilitar columna y, a continuación, Siguiente para habilitar una columna de una tabla existente de la base de datos.
  4. En el campo Nombre de tabla, seleccione la tabla donde reside la columna XML.Por ejemplo
    SALES_TAB
    
  5. En el campo Nombre de columna, seleccione la columna que desea habilitar. Por ejemplo:
    ORDER
    
    La columna debe existir y ser de tipo XML.
  6. Escriba la vía de acceso y el nombre de archivo DAD en el campo Nombre de archivo DAD o pulse ... para localizar un archivo DAD existente. Por ejemplo:
    c:\dxx\samples\dad\getstart.dad
    
  7. Opcionalmente, escriba en el campo Espacio de tablas el nombre de un espacio de tablas existente.

    El espacio de tablas contiene las tablas secundarias que el XML Extender creó. Si especifica un espacio de tablas, las tablas secundarias se crean en el espacio de tablas especificado. Si no especifica ningún espacio de tablas, las tablas secundarias se crean en el espacio de tablas por omisión.

  8. Opcionalmente, escriba en el campo Vista predefinida el nombre de la vista predefinida.

    Si se especifica, la vista por omisión se crea automáticamente cuando se habilita la columna y se une la tabla XML y todas las tablas secundarias relacionadas.

  9. Opcionalmente, escriba en el campo ID raíz el nombre de columna correspondiente a la clave primaria de la aplicación. Es recomendable hacer esto.

    El XML Extender utiliza el valor de ID RAÍZ como un identificador exclusivo para asociar todas las tablas secundarias con la tabla de aplicación. Si no se especifica el ID raíz, el XML Extender añade la columna DXXROOT_ID a la tabla de aplicación y genera un identificador.

  10. Pulse Finalizar para habilitar la columna XML, crear las tablas secundarias y volver a la ventana Área de ejecución.

Desde el shell de mandatos de DB2

Para habilitar una columna XML, entre el mandato siguiente:

Sintaxis:
dxxadm enable_column
>>-dxxadm---enable_column---nombreBd---nombreTb---nombreCol----->
 
>----archivo_DAD----+--------------------+---------------------->
                    '--t--espaciotablas--'
 
>-----+------------------------+---+--------------+------------><
      '--v--vista_predefinida--'   '--r--id_raíz--'
 

Parámetros:

nombreBd
Es el nombre de la base de datos.

nombreTb
Es el nombre de la base de datos donde reside la columna que se debe habilitar.

nombreCol
Es el nombre de la columna XML que se debe habilitar.

archivo_DAD
Es el nombre del archivo donde reside la definición de acceso a documento (DAD).

espaciotablas
Es un espacio de tablas creado previamente que contiene las tablas secundarias que creó el XML Extender. Si no se especifica este parámetro, se utiliza el espacio de tablas predefinido.

vista_predefinida
Opcional. Es el nombre de la vista predefinida que el XML Extender creó para unir una tabla de aplicación y todas las tablas secundarias relacionadas.

id_raíz
Opcional. El nombre de columna de la clave primaria en la tabla de aplicación y un identificador exclusivo que asocia todas las tablas secundarias con la tabla de aplicación. El XML Extender utiliza el valor de id_raíz como identificador exclusivo para unir todas las tablas secundarias con la tabla de aplicación. Es recomendable especificar el ID RAÍZ. Si no se especifica el ID RAÍZ, el XML Extender añade la columna DXXROOT_ID a la tabla de aplicación y genera un identificador.

Restricción: Si la tabla de aplicación tiene una columna llamada DXXROOT_ID, pero esta columna no contiene el valor de id_raíz, debe especificar este parámetro; de lo contrario se produce un error.

Ejemplo: El ejemplo siguiente habilita una columna utilizando el shell de mandatos de DB2. El archivo DAD y el documento XML se pueden encontrar en el Apéndice B, Ejemplos.

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

Este ejemplo habilita la columna ORDER de la tabla SALES_DB.SALES_TAB. El archivo DAD es getstart.dad, la vista por omisión es sales_order_view y el ID RAÍZ es INVOICE_NUM.

De acuerdo con este ejemplo, la tabla SALES_TAB tiene el esquema siguiente:
Nombre de columna INVOICE_NUM SALES_PERSON ORDER
Tipo de datos CHAR(6) VARCHAR(20) XMLVARCHAR

De acuerdo con la especificación DAD, se crean las tabla secundarias siguientes:

ORDER_SIDE_TAB:
Nombre de columna ORDER_KEY CUSTOMER INVOICE_NUM
Tipo de datos INTEGER VARCHAR(50) CHAR(6)
Vía de acceso /Pedido/@clave /Pedido/Cliente/Nombre N/D

TAB_SECUND_PIEZAS:
Nombre de columna PART_KEY PRICE INVOICE_NUM
Tipo de datos INTEGER DOUBLE CHAR(6)
Vía de acceso /Order/Part/@key /Order/Part/ExtendedPrice N/D

SHIP_SIDE_TAB:
Nombre de columna FECHA INVOICE_NUM
Tipo de datos FECHA CHAR(6)
Vía de acceso /Order/Part/Shipment/ShipDate N/D

Todas las tablas secundarias tienen la columna INVOICE_NUM del mismo tipo, pues la clave primaria INVOICE_NUM especifica el ID RAÍZ en la tabla de aplicación. Una vez habilitada la columna, el valor de INVOICE_NUM se inserta en las tablas secundarias. Si especifica el parámetro vista_predefinida al habilitar la columna XML, ORDER, se crea la vista predefinida sales_order_view. La vista asocia las tablas anteriores utilizando la sentencia siguiente:

CREATE VIEW sales_order_view(invoice_num, sales_person, order,
                                  order_key, customer, port_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
Si el espacio de tablas se especifica en el mandato enable_column, las tablas secundarias se crean en el espacio de tablas especificado. Si el espacio de tablas no se especifica, las tablas secundarias se crean en el espacio de tablas predefinido.

Indexación de tabla secundarias

Después de habilitar una columna XML y crear las tablas secundarias, puede indexar las tablas secundarias. Las tablas secundarias contienen los datos XML en las columnas que ha especificado cuando ha creado el archivo DAD. La indexación de estas tablas ayuda a mejorar el rendimiento de las consultas de documentos XML.

Antes de comenzar

Mandato DB2 CREATE INDEX

Utilice el mandato DB2 CREATE INDEX.

Ejemplo:

En el ejemplo siguiente se crean índices en cuatro tablas secundarias:

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)

Inhabilitación de columnas XML

Inhabilite una columna si necesita actualizar un archivo DAD para la columna XML o si desea suprimir la columna XML o la tabla que contiene la columna. Una vez inhabilitada la columna, puede volver a habilitar la columna con el archivo DAD actualizado, suprimir la columna o llevar a cabo otras tareas. Puede inhabilitar una columna utilizando el asistente de administración del XML Extender o utilizando el shell de mandatos de DB2.

Cuando el XML Extender habilita una columna XML, realiza estas acciones:

Importante: Si elimina una tabla con una columna XML, sin inhabilitar primero la columna, el XML Extender no puede eliminar ninguna tabla secundaria asociada con la columna XML, lo que podría generar resultados inesperados.

Antes de comenzar

Asegúrese de que la columna XML que debe inhabilitarse exista en la base de datos DB2 actual.

Utilización del asistente de administración

Realice los pasos siguientes para inhabilitar columnas XML:

  1. Ponga a punto y arranque el asistente de administración. Vea Arranque del asistente de administración para obtener detalles.
  2. Pulse Trabajar con columnas XML desde la ventana Área de ejecución para ver las tareas relacionadas con columnas del XML Extender. Se abrirá la ventana Seleccionar tarea.
  3. Pulse Inhabilitar columna y, a continuación, Siguiente para inhabilitar una columna existente de la base de datos.
  4. En el campo Nombre de tabla, seleccione la tabla donde reside la columna XML.
  5. Seleccione la columna que va a inhabilitar en el campo Nombre de columna.
  6. Pulse Finalizar.

Desde el shell de mandatos de DB2

Para inhabilitar una columna XML, entre el mandato siguiente:

Sintaxis:
dxxadm disable_column
>>-dxxadm---disable_column---nombreBd---nombreTb---nombreCol---><
 

Parámetros:

nombreBd
Es el nombre de la base de datos.

nombreTb
Es el nombre de la tabla que contiene la columna que debe inhabilitarse.

nombreCol
Es el nombre de la columna XML que se está inhabilitando.

Ejemplo: En el ejemplo siguiente se inhabilita una columna utilizando el shell de mandatos de DB2. El archivo DAD y el documento XML se pueden encontrar en el Apéndice B, Ejemplos.

dxxadm disable_column SALES_DB sales_tab order
 

En este ejemplo, se inhabilita la columna ORDER de la tabla SALES_DB.SALES_TAB.

Cuando la columna está inhabilitada, las tablas secundarias se eliminan.


[ Principio de página | Página anterior | Página siguiente | Contenido | Índice ]