IBM Books

Administración y programación


Planificación de la administración

Cuando planifique utilizar una aplicación que hace uso de documentos XML, primero debe determinar lo siguiente:

Una vez determinado lo anterior, puede planificar el resto de las tareas de administración:

La forma en que utiliza el XML Extender depende de las necesidades de su programa de aplicación. Tal como se indica en Nociones preliminares sobre el XML Extender, puede componer documentos XML a partir de datos DB2 existentes y almacenar documentos XML en DB2, en forma de documentos inalterados o como datos DB2. Cada uno de estos métodos de almacenamiento y acceso tiene unos requisitos de planificación distintos. Las secciones siguientes tratan sobre cada una de estas consideraciones de planificación.

Elección de un método de acceso y almacenamiento

El XML Extender proporciona dos métodos de acceso y almacenamiento para utilizar DB2 como depósito XML: la columna XML y la colección XML. Primero debe determinar cuál de estos métodos se ajusta mejor a las necesidades de su programa de aplicación para acceder y manejar datos XML.

columna XML
Almacena y recupera documentos XML completos en forma de datos de columnas DB2. Los datos XML se representan mediante una columna XML.

colección XML
Descompone documentos XML en una colección de tablas relacionales o compone documentos XML a partir de una colección de tablas relacionales.

La naturaleza de su programa de aplicación determina el tipo de acceso y método de almacenamiento que se debe utilizar y cómo estructurar los datos XML. Los casos siguientes describen las situaciones en las que es más apropiado cada uno de los métodos de acceso y almacenamiento.

Cuándo utilizar columnas XML

Utilice columnas XML en las situaciones siguientes:

Cuándo utilizar colecciones XML

Utilice colecciones XML en las situaciones siguientes:

Utilice el archivo de definición de acceso a documento (archivo DAD) para asociar datos XML con tablas DB2 mediante esos dos métodos de acceso y almacenamiento. La Figura 7 muestra cómo la DAD especifica los métodos de acceso y almacenamiento.

Figura 7. El archivo DAD correlaciona la estructura del documento XML con DB2 y especifica el método de acceso y almacenamiento.


El archivo DAD correlaciona la estructura del documento XML con DB2 y especifica el método de acceso y almacenamiento.

El archivo DAD es una parte importante de la administración del XML Extender. Este archivo define la ubicación de archivos clave, tales como la DTD, y especifica cómo la estructura del documento XML se correlaciona con los datos DB2. Y lo que es más importante, define los métodos de acceso y almacenamiento que el usuario utiliza en el programa de aplicación.

Planificación para utilizar columnas XML

Las secciones siguientes describen las tareas de planificación para columnas XML.

Validación

Una vez elegido un método de acceso y almacenamiento, puede decidir validar los datos y puede especificar la DAD. Para validar los datos XML utilice una DTD; esto asegura la validez del documento XML y le permite realizar búsquedas estructurales en los datos XML. La DTD se almacena en el depósito de DTD.

Recomendación: Valide los datos XML utilizando una DTD, a menos que almacene los documentos XML con fines de archivado. Para realizar la validación, es necesario que tenga una DTD en el depósito del XML Extender. Vea Almacenamiento de una DTD en el depósito de DTD para conocer cómo insertar una DTD en el depósito.

Puede validar documentos de una misma columna XML utilizando varias DTD diferentes. Es decir, puede tener documentos de estructura similar, con elementos y atributos similares, que invocan definiciones DTD que son diferentes. Para hacer referencia a varias DTD, siga estas directrices:

Importante: Si decide validar los datos XML, debe hacer la validación antes de insertar los datos en DB2. El XML Extender no permite validar datos que ya estén insertados en DB2.

Consideraciones:

Tipos XML definidos por el usuario

Los documentos XML se almacenan en una columna XML en forma de UDT (tipo definido por el usuario) . La Tabla 4 lista los UDT disponibles.

Tabla 4. Los UDT del XML Extender
Columna de tipo definido por el usuario Tipo de datos fuente Descripción
XMLVARCHAR VARCHAR(long_varchar) Almacena un documento XML completo, en forma de VARCHAR, dentro de DB2.
XMLCLOB CLOB(long_clob) Almacena un documento XML completo, en forma de CLOB, dentro de DB2.
XMLFILE VARCHAR(1024) Almacena el nombre de archivo de un documento XML en DB2 y guarda el documento XML en un archivo local del servidor DB2.

Tablas secundarias

Cuando se planifican tablas secundarias, debe tenerse en cuenta cómo organizar las tablas, cuántas tablas se van a crear y si se va a crear una vista por omisión para las tablas secundarias. Estas decisiones en parte se basan en varios puntos: si los elementos y atributos pueden aparecer varias veces y los requisitos para el rendimiento de las consultas.

Aparición múltiple

Cuando un documento tiene vías de ubicación de aparición múltiple, el XML Extender añade una columna DXX_SEQNO del tipo INTEGER a cada tabla secundaria para mantener un seguimiento del orden de los elementos que aparecen más de una vez. Con DXX_SEQNO, se puede recuperar una lista de los elementos utilizando el mismo orden que el documento XML original especificando ORDER BY DXX_SEQNO en una consulta SQL.

Vistas por omisión y rendimiento de la consulta

Cuando habilite una columna XML, puede especificar una vista de sólo lectura por omisión que una la tabla de aplicación con las tablas secundarias utilizando un ID exclusivo llamado ID RAÍZ. Con la vista por omisión, puede buscar en documentos XML consultando las tablas secundarias. Por ejemplo, si tiene la tabla de aplicación SALES_TAB y las tablas secundarias ORDER_TAB, PART_TAB y SHIP_TAB:

SELECT sales_person FROM sales_order_view
   WHERE price > 2500.00

La sentencia SQL devuelve los nombres de los vendedores de SALES_TAB que tienen pedidos guardados en la columna ORDER y en los que PRICE es mayor que 2500.00.

La ventaja de consultar la vista por omisión es que proporciona una única vista virtual de la tabla de aplicación y las tablas secundarias. Sin embargo, cuantas más tablas secundarias se creen, más costosa es la consulta. Por lo tanto, la creación de la vista por omisión sólo se recomienda cuando el número total de columnas de la tablas secundarias es pequeño. Las aplicaciones pueden crear sus propias vistas, uniendo las columnas de tablas secundarias importantes.

Índices para datos de columna XML

Una decisión importante de la planificación es si desea indexar el documento de columnas XML. Esta decisión debe tomarla basándose en la frecuencia con que necesita acceder a los datos y el grado de importancia que tiene el rendimiento en las búsquedas estructurales.

Cuando utiliza columnas XML, que contienen documentos XML completos, puede crear tabla secundarias para contener columnas de valores de elementos o atributos XML, y luego crear índices sobre estas columnas. Debe determinar para qué elementos y atributos necesita crear el índice.

La indexación de columnas XML permite utilizar el soporte nativo de DB2 para indexar datos de consulta frecuente de tipo general, tales como INTEGER, DECIMAL o DATE. El XML Extender obtiene los valores de elementos o atributos XML a partir de documentos XML y los almacena en las tablas secundarias, permitiendo al usuario crear índices sobre estas tablas secundarias.

Puede especificar cada columna de una tabla secundaria utilizando una vía de ubicación, la cual identifica un elemento o atributo XML y un tipo de datos de SQL. La Figura 8 muestra una columna XML con tablas secundarias.

Figura 8. Columna XML con tablas secundarias


Columna XML con tablas secundarias

El XML Extender llena automáticamente con datos la tabla secundaria cuando el usuario almacena documentos XML en la columna XML.

Para poder realizar búsquedas rápidas, cree índices sobre estas columnas utilizando la técnica de la indexación de árbol binario de DB2. Los métodos utilizados para crear un índice varían según el sistema operativo, y el XML Extender da soporte a estos métodos.

Consideraciones:

Vía de ubicación

Una vía de ubicación es una secuencia de códigos XML que identifican un elemento o atributo de XML. El XML Extender utiliza la vía de ubicación en las situaciones siguientes:

La Figura 9 muestra un ejemplo de una vía de ubicación y su relación con la estructura del documento XML.

Figura 9. Almacenamiento de documentos como documentos XML estructurados en una columna de una tabla DB2


Almacenamiento de documentos como documentos XML estructurados en una columna de una tabla DB2

Sintaxis de la vía de ubicación

La lista siguiente describe la sintaxis de la vía de ubicación soportada por el XML Extender.

1. /
Representa el elemento raíz de XML.

2. /tag1
Representa el elemento tag1 contenido en la raíz

3. /tag1/tag2/..../tagn
Representa un elemento llamado tagn que deriva de la cadena que comienza en la raíz y continua por tag1, tag2 hasta tagn-1.

4. //tagn
Representa cualquier elemento llamado tagn, donde la barra inclinada doble (//) representa un número cualquiera de elementos.

5. /tag1//tagn
Representa cualquier elemento llamado tagn, que deriva del elemento llamado tag1 contenido en la raíz, donde la barra inclinada doble (//) representa un número cualquiera de elementos.

6. /tag1/tag2/@attr1
Representa el atributo attr1 del elemento tag2, que a su vez deriva del elemento tag1 contenido en la raíz.

7. /tag1/tag2[@attr1="5"]
Representa un elemento llamado tag2 cuyo atributo attr1 tiene el valor 5. tag2 es hijo del elemento tag1 contenido en la raíz.

8. /tag1/tag2[@attr1="5"]/.../tagn
Representa un elemento llamado tagn que deriva de la cadena que comienza en la raíz y continua por tag1, tag2 hasta tagn-1, donde el atributo attr1 de tag2 tiene el valor 5.

Caracteres comodín: Se puede sustituir un asterisco por un elemento de una vía de ubicación para que coincida con cualquier serie de caracteres.

Vía de ubicación simple

La vía de ubicación simple es una secuencia de nombres de tipos de elementos que están conectados por una barra inclinada simple (/). Los valores de atributos están encerrados entre corchetes, a continuación del correspondiente tipo de elemento. Las descripciones de sintaxis de los puntos 3 y 6 en Sintaxis de la vía de ubicación describen vías de acceso de ubicación simples. La Tabla 5 describe la sintaxis.

Tabla 5. Sintaxis de la vía de ubicación simple
Sujeto Vía de ubicación Descripción
Elemento XML /tag1/tag2/..../tagn-1/tagn Representa un contenido de elemento identificado por el elemento llamado tagn y sus padres
Atributo XML /tag_1/tag_2/..../tag_n-1/tag_n/@attr1
Representa el atributo attr1 del elemento identificado por tagn y sus padres

Restricciones referentes al XML Extender

El XML Extender tiene restricciones respecto al uso de la vía de ubicación al definir un elemento o atributo en la DAD. Debido a que el XML Extender utiliza una correlación de "uno con uno" entre un elemento o atributo y una columna DB2, son necesarias reglas especiales para la vía de ubicación. La Tabla 6 describe las restricciones existentes para la vía de ubicación. Los números que figuran en la columna Vía de ubicación soportada remiten a las representaciones de sintaxis de Sintaxis de la vía de ubicación.

Tabla 6. Restricciones del XML Extender en la utilización de la vía de ubicación
Uso de la vía de ubicación Vía de ubicación soportada
Elemento de la DAD 3, 6 (vía de ubicación simple descrita en la Tabla 5)
Funciones UDF de extracción 1-9
UDF de búsqueda del Text Extender 1-9

El archivo DAD

Para las columnas XML, la DAD principalmente especifica cómo se deben indexar los documentos que están contenidos en una columna XML. La DAD es un documento formateado por XML y reside en el sistema cliente. Si elige validar los documentos XML utilizando una DTD, el archivo DAD se puede asociar a esa DTD. El tipo de datos del archivo DAD es CLOB.

El archivo DAD correspondiente a columnas XML contiene una cabecera XML, que especifica las vías de directorios del sistema cliente para acceder al archivo DAD y DTD, y proporciona un mapa de los datos XML que se deben almacenar en tablas secundarias para su indexación.

Para especificar el método de acceso y almacenamiento para columnas XML, utilice el código siguiente en el archivo DAD.

<Xcolumn>
Especifica que los datos XML se deben almacenar y recuperar como documentos XML completos en columnas DB2 que están habilitadas para datos XML.

Las columnas habilitadas para XML pertenecen al UDT de XML Extender. Los programas de aplicación pueden incluir la columna en cualquier tabla de usuario. El acceso a los datos de columnas XML se realiza principalmente mediante sentencias de SQL y las UDF del XML Extender.

Puede utilizar el asistente de administración del XML Extender o un editor para crear y actualizar la DAD.

Planificación para utilizar colecciones XML

Cuando se planifica para colecciones XML, existen distintas consideraciones a tener en cuenta para componer documentos a partir de datos de DB2, descomponer documentos XML en datos de DB2 o ambas cosas. La secciones siguientes tratan sobre temas de planificación para colecciones XML y sobre consideraciones para la composición y descomposición.

Validación

Una vez elegido un método de acceso y almacenamiento, puede decidir si desea validar los datos. Para validar los datos XML utilice una DTD; esto asegura la validez del documento XML y le permite realizar búsquedas estructurales en los datos XML. La DTD se almacena en el depósito de DTD.

Recomendación: Valide los datos XML utilizando una DTD. Para realizar la validación, es necesario que tenga una DTD en el depósito del XML Extender. Vea Almacenamiento de una DTD en el depósito de DTD para conocer cómo insertar una DTD en el depósito. Los requisitos de la DTD varían, dependiendo de si está componiendo o descomponiendo documentos XML.

Importante: Si decide validar los datos XML, debe hacer la validación antes de insertar los datos en DB2. El XML Extender no permite validar datos que ya estén insertados en DB2.

Consideraciones:

El archivo DAD

Para las colecciones XML, el archivo DAD correlaciona la estructura del documento XML con las tablas DB2 utilizadas para componer o descomponer el documento.

Por ejemplo, si tiene un elemento llamado <Tax> en el documento XML, puede necesitar correlacionar <Tax> con una columna llamada TAX. El usuario define la relación existente entre los datos XML y los datos relacionales especificados en la DAD.

El archivo DAD se especifica al habilitar una colección o cuando se utiliza el archivo DAD en procedimientos almacenados de colección XML. La DAD es un documento formateado por XML y reside en el sistema cliente. Si elige validar los documentos XML utilizando una DTD, el archivo DAD se puede asociar a esa DTD. Cuando se utiliza como parámetro de entrada de los procedimientos almacenados del XML Extender, el archivo DAD tiene el tipo de datos CLOB.

Para especificar el método de acceso y almacenamiento para colecciones XML, utilice el código siguiente en el archivo DAD:

<Xcollection>
Especifica que los datos XML se deben descomponer a partir de documentos XML para formar una colección de tablas relacionales o que se deben componer para crear documentos XML a partir de una colección de tablas relacionales.

Una colección XML es un nombre virtual que designa un conjunto de tablas relacionales que contienen datos XML. Los programas de aplicación pueden habilitar una colección XML de tablas de usuario cualesquiera. Estas tablas de usuario pueden ser tablas existentes de datos de negocio o tablas recién creadas por el XML Extender. El acceso a los datos de la colección XML se realiza principalmente mediante los procedimientos almacenados que proporciona el XML Extender.

El archivo DAD define la estructura arborescente del documento XML, utilizando las clases de nodos siguientes:

nodo_raíz (root_node)
Especifica el elemento raíz del documento.

nodo_de_elemento (element_node)
Identifica un elemento, que puede ser el elemento raíz o un elemento hijo.

nodo_de_texto (text_node)
Representa el texto CDATA de un elemento.

nodo_de_atributo (attribute_node)
Representa un atributo de un elemento.

La Figura 10 muestra parte de la correlación utilizada en un archivo DAD. Los nodos correlacionan el contenido del documento XML con columnas de una tabla relacional.

Figura 10. Definiciones de nodos

<?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 el elemento <Order>
     <attribute_node name="key">  --> Identifica el atributo "key"
     <column name="order_key"/>   --> Define el nombre de la columna,
                                          "order_key", con la que se
                                           correlacionan el elemento y
                                           el atributo
     </attribute_node> 
     <element_node name="Customer">    --> Identifica un elemento hijo de <Order> como
                                                <Customer>
        <text_node>                    --> Especifica el texto CDATA del
                                              elemento
        <Customer>
          <column name="customer">     --> Define el nombre de la columna,
                                                "customer", con la que se
                                                 correlaciona el elemento
                                                 hijo
    </text_node> 
</element_node> 
        ...
</element_node>
 
      ...
    <root_node> 
  </Xcollection>
</DAD>
 

En este ejemplo, las primeras dos columnas de la sentencia de SQL tienen elementos y atributos correlacionados con ellas.

Puede utilizar el asistente de administración del XML Extender o un editor para crear y actualizar el archivo DAD.

Esquemas de correlación para colecciones XML

Si está utilizando una colección XML, debe seleccionar un esquema de correlación que define cómo se representan los datos XML en una base de datos relacional. Debido a que las colecciones XML deben hacer corresponder la estructura jerárquica de los documentos XML con una estructura relacional, es conveniente que comprenda cómo se corresponden las dos estructuras. La Figura 11 muestra cómo la estructura jerárquica se puede correlacionar con columnas de una tabla relacional.

Figura 11. Documento XML estructurado correlacionado con columnas de una tabla relacional


Documento XML estructurado correlacionado con columnas de una tabla relacional

El XML Extender utiliza el esquema de correlación al componer o descomponer documentos XML que residen en diversas tablas relacionales. El XML Extender proporciona un asistente que ayuda al usuario a crear el archivo DAD. Sin embargo, antes de crear el archivo DAD, debe considerar cómo los datos XML se correlacionan con la colección XML.

Tipos de esquemas de correlación

El esquema de correlación se especifica en el elemento <Xcollection> del archivo DAD. El XML Extender proporciona dos tipos de esquemas de correlación: la correlación SQL y la correlación de base de datos relacional (correlación de nodo_RDB). Ambos métodos utilizan el modelo XSLT para definir la jerarquía del documento XML.

Correlación SQL
Permite una correlación simple y directa entre datos relacionales y documentos XML mediante una sola sentencia de SQL y el modelo de datos XSLT. La correlación SQL se utiliza para la composición de documentos; no se utiliza para la descomposición. La correlación SQL se define mediante el elemento SQL_stmt en el archivo DAD. El contenido de SQL_stmt es una sentencia de SQL válida. SQL_stmt correlaciona las columnas de la cláusula SELECT con elementos o atributos XML que se utilizan en el documento XML. Cuando se definen para componer documentos XML, los nombres de columna indicados en la cláusula SELECT de la sentencia de SQL se utilizan para definir el valor de un nodo_de_atributo o un contenido de nodo_de_texto. La cláusula FROM define las tablas donde residen los datos; la cláusula WHERE especifica la condición de unión y de búsqueda.

La correlación SQL proporciona a los usuarios de DB2 la capacidad para correlacionar los datos utilizando SQL. Si utiliza la correlación SQL, debe poder unir todas las tablas de una sola sentencia SELECT para formar una consulta. Si una sola sentencia de SQL no es suficiente, considere la posibilidad de utilizar la correlación de nodo_RDB. Para unir entre sí todas las tablas, es recomendable utilizar la relación clave primaria-clave foránea para estas tablas.

Correlación de nodo_RDB
Define la ubicación del contenido de un elemento XML o del valor de un atributo XML para que el XML Extender pueda determinar dónde almacenar o recuperar los datos XML.

El nodo_RDB contiene una o más definiciones de nodo para tablas, columnas opcionales y condiciones opcionales. Las tablas y columnas se utilizan para definir cómo deben almacenarse los datos XML en la base de datos. La condición especifica los criterios para seleccionar datos XML o la forma de unir las tablas de la colección XML.

Para definir un esquema de correlación, cree una DAD con un elemento <Xcollection>. La Figura 12 muestra parte de un archivo DAD de ejemplo que contiene una correlación SQL para colecciones XML, la cual compone un conjunto de documentos XML a partir de datos de tres tablas relacionales.

Figura 12. Esquema de correlación 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>
 

El XML Extender proporciona varios procedimientos almacenados que gestionan los datos de una colección XML. Estos procedimientos almacenados admiten la utilización de ambos tipos de correlación, pero exigen que el archivo DAD siga las directrices indicadas en Requisitos del esquema de correlación.

Requisitos del esquema de correlación

Las secciones siguientes describen los requisitos de cada tipo de esquema de correlación para colecciones XML.

Requisitos cuando se utiliza la correlación SQL

En este esquema de correlación, debe especificar el elemento SQL_stmt en el elemento <Xcollection> de la DAD. SQL_stmt debe contener una sola sentencia de SQL que pueda unir varias tablas relacionales con el predicado de la consulta. Además, son necesarias las cláusulas siguientes:

Aunque SQL_stmt tiene los requisitos indicados anteriormente, es una herramienta potente porque le permite especificar cualquier predicado en la cláusula WHERE, siempre que la expresión contenida en el predicado utilice las columnas de las tablas.

Requisitos cuando se utiliza la correlación de nodo_RDB

Cuando utilice este método de correlación, no utilice el elemento SQL_stmt en el elemento <Xcollection> del archivo DAD. En su lugar, utilice el elemento nodo_RDB para nodo_de_elemento y para cada nodo_de_atributo y nodo_de_texto.

Si utiliza la correlación de nodo_RDB, no es necesario que proporcione sentencias de SQL. Sin embargo, establecer condiciones de consulta complejas en el elemento de nodo_RDB puede ser más difícil. Por ejemplo, el utilizar una expresión u operación de unión es algo menos efectivo que el método que correlaciona SQL con XML.

Requisitos de tamaño de tabla de descomposición

La descomposición utiliza la correlación de nodo_RDB para especificar cómo un documento XML se descompone en tablas DB2 extrayendo los valores de elementos y de atributos en filas de tabla. Los valores para cada documento XML se almacenan en una o más tablas DB2. Cada tabla puede tener un máximo de 1.024 filas descompuestas de cada documento.

Por ejemplo, si un documento XML se descompone en cinco tablas, cada una de las cinco tablas puede tener un máximo de 1.024 filas para este documento concreto. Si la tabla tiene filas para varios documentos, puede tener un máximo de 1.024 filas para cada documento. Si la tabla tiene 20 documentos, puede tener 20.480 filas, 1.024 para cada documento.

La utilización de elementos de aparición múltiple (elementos con vías de ubicación que pueden aparecer más de una vez en la estructura XML) afecta el número de filas. Por ejemplo, un documento que contiene un elemento <Part> que aparece 20 veces, puede descomponerse como 20 filas en una tabla. Cuando utilice elementos de aparición múltiple, considere esta limitación del tamaño de tabla.


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