XML (lenguaje de marcado extensible) se ha convertido en el estándar para la representación y el intercambio de datos en aplicaciones web. Con el rápido desarrollo de Internet, especialmente el uso generalizado del comercio electrónico, los servicios web y otras aplicaciones, los datos de tipo XML se han convertido en los actuales. formulario de datos convencional. Por lo tanto, la tecnología de gestión de datos XML, especialmente la tecnología de consulta de datos XML, se ha convertido en un punto de investigación actual.
En comparación con los datos relacionales, XML tiene varias ventajas, pero su mayor inconveniente es su eficiencia. Porque en los archivos de datos relacionales, los nombres de los campos de datos solo necesitan aparecer una vez, mientras que en los archivos de datos XML, los nombres de los elementos aparecerán repetidamente, lo que sin duda afectará la eficiencia de la consulta. Para mejorar la eficiencia de las consultas de XML tanto como sea posible, es necesario proporcionar una función de indexación para el tipo XML.
El World Wide Web Consortium identificó XPath 2.0 y XQuery 1.0 como estándares recomendados el 23 de enero de 2007, poniendo fin a la situación anterior en la que varios lenguajes de consulta competían por el dominio. A partir de este estándar, además de los fabricantes tradicionales, diversas instituciones de investigación científica han propuesto implementaciones de XPath y XQuery (hay más de una docena mencionadas en la literatura), con diferentes modelos de almacenamiento, diferentes algoritmos de consulta y métodos de optimización. En este contexto, Dameng Database Company también propuso su propio modelo de motor de consulta XML basado en su propia estrategia de desarrollo. Actualmente, el motor de consulta XML de Dameng se encuentra en intenso desarrollo y el establecimiento de índices efectivos para datos XML es un factor importante que afecta a XML. rendimiento de la consulta de datos. Sobre la base de un análisis en profundidad de la tecnología de indexación de los productos de bases de datos existentes, se diseña una estructura de índice más razonable para el motor de consultas XML de Dameng para que el motor pueda lograr un rendimiento óptimo.
Introducción a la tecnología de índice XML
Actualmente, la investigación popular sobre XML se divide principalmente en dos aspectos. Una es una base de datos nativa para el almacenamiento, consulta y gestión de datos semiestructurados como XML. Los datos y metadatos se expresan completamente en estructuras XML y no tienen nada que ver con su formato de almacenamiento de datos subyacente (como modelo de objetos, modelo relacional). , etc.). El otro es la conversión mutua entre esta y la base de datos relacional, utilizando la tecnología madura de la base de datos relacional para procesar datos XML. Dado que esta última dirección tiene un significado más práctico, se ha convertido en el foco de la investigación XML.
Además de las soluciones de almacenamiento, la tecnología de índices también es uno de los factores más importantes a la hora de determinar un sistema de base de datos. Si no se crea una estructura de índice para documentos XML, es probable que cualquier consulta de datos XML tenga como resultado atravesar todo el árbol del documento. A medida que aumenta el conjunto de datos XML, esta sobrecarga es intolerable. Por tanto, la investigación sobre la tecnología de índice XML tiene un alto valor teórico y práctico.
Aunque la tecnología de indexación tradicional ha sido relativamente madura después de una acumulación a largo plazo, este tipo de tecnología de indexación se centra principalmente en la función de localizar registros de datos basados en valores (en lugar de patrones con ciertas relaciones) y no presta mucha atención a la relaciones lógicas entre registros de datos; La característica básica de la consulta de datos XML es extraer datos que se ajusten al patrón en función de la entrada de características del patrón (relaciones estructurales descritas en forma de expresiones de ruta regulares). Por lo tanto, el contenido principal de XML. El índice es diseñar tecnología adecuada para la combinación de patrones.
Clasificación de índice XML
Índice XML basado en rutas
El índice basado en rutas se basa en la información de ruta de los nodos en la estructura de árbol XML y adopta un cierto método de reducción para que la estructura de árbol reducida solo mantenga información de ruta diferente y no exista Dos nodos con el mismo camino. Los índices que se han propuesto incluyen: índice DataGuides, índice Index Fabric, índice de ruta adaptable para datos XML (APEX)
El índice Dataguides es un resumen estructural de la ruta refinada que comienza desde el nodo raíz. La ruta de cadena formada por la concatenación de etiquetas de borde se describe solo una vez en las Guías de datos. Las guías de datos reducen la cantidad de nodos necesarios al recorrer consultas de ruta y son eficientes para atravesar documentos XML desde la raíz. Sin embargo, las consultas de ruta que contienen caracteres comodín o consultas de ruta con el eje descendiente o propio definido en el estándar XPath requieren múltiples operaciones de conexión, lo que resulta en una baja eficiencia de consulta y redundancia de datos.
Luego escriba el archivo de objetos Java TestLob.java sobre estos dos campos grandes y defina los tipos como campos de atributos CLOB y BLOB como tipos String y byte[] respectivamente. Dado que CLOB es un tipo de texto grande, corresponde al tipo String en Java. , BLOB es para procesar algunos archivos grandes que no están estrictamente definidos y se almacenan en forma de secuencias binarias, así que use el tipo byte [] y luego defina los métodos Getter y Setter de estas dos propiedades respectivamente. El código es el siguiente:
El índice de Dataguides proviene del nodo raíz. Un resumen estructural de la ruta de refinamiento inicial. La ruta de cadena formada por la concatenación de etiquetas de borde se describe solo una vez en las Guías de datos. Las guías de datos reducen la cantidad de nodos necesarios al recorrer consultas de ruta y son eficientes para atravesar documentos XML desde la raíz. Sin embargo, las consultas de ruta que contienen caracteres comodín o consultas de ruta con el eje descendiente o propio definido en el estándar XPath requieren múltiples operaciones de conexión, lo que resulta en una baja eficiencia de consulta y redundancia de datos.
Index Fabric es una estructura de índice desarrollada en el árbol de Patricia Trie. Codifica cada ruta marcada a cada nodo de elemento con una cadena y luego inserta estos valores codificados en el árbol de Patricia Trie, convirtiendo así la consulta de datos XML de acuerdo con el. ruta a la consulta de la cadena. Al realizar una consulta, primero codifique la ruta de consulta en forma de cadena y luego búsquela en el árbol de índice. La ventaja del índice Index Fabric es que almacena la información de la estructura jerárquica de los datos XML, maneja de manera uniforme la recuperación de datos XML con información esquemática y sin esquema, y toma el tiempo necesario para consultar y actualizar datos XML relacionados con la jerarquía en lugar de con la La longitud de la clave de índice está relacionada. La desventaja del índice Index Fabric es que pierde la relación estructural entre los nodos de elementos, porque solo retiene la información de los nodos de elementos con valores de texto. Por lo tanto, al igual que los índices DataGuides, los índices Index Fabric no son eficientes en el manejo de expresiones de consulta parcialmente coincidentes con ejes descendientes o propios definidos en el estándar XPath.
Con este fin, APEX [14] introdujo información que se basa en la distribución de datos XML
.consultas.: Guarde previamente los nodos de etiqueta correspondientes a declaraciones de consulta XML que ocurren con frecuencia en una estructura hash. Su función es similar a la función de caché: cuando una nueva consulta requiere procesamiento, primero busca en la tabla hash para ver si hay un conjunto de nodos satisfactorio. Pero es menos eficiente para expresiones de consulta con valores de elementos o valores de atributos.
Índice basado en nodos
El índice basado en nodos esencialmente descompone los datos XML en un conjunto de registros de unidades de datos y, al mismo tiempo, guarda la información de ubicación de la unidad en los datos XML del registro. A diferencia de los índices basados en rutas, los índices basados en nodos rompen la restricción de que los nodos deben encontrarse a través de rutas de etiquetas y descomponen los datos XML en registros de nodos en una forma canónica. Debido a que guarda la información de ubicación de los nodos y puede integrarse bien en sistemas maduros de administración de bases de datos relacionales, actualmente es el índice más utilizado.
Según los diferentes métodos de codificación de la información de ubicación, los índices basados en nodos generalmente se pueden dividir en las siguientes categorías:
1. Índices basados en prefijos
Los índices basados en prefijos son principalmente índices generados en función de la codificación Dewey [12] y la codificación ORDPATH. de la literatura [13] Se adopta un método similar y se proporciona un método para comprimir ORDPATH, que se ha aplicado a la organización de índices de SQL Server 2005.
La idea básica de la codificación de prefijo es utilizar directamente la codificación del nodo padre de un nodo como prefijo de la codificación del nodo. Para la codificación de prefijo, para determinar si un nodo v es descendiente de otro nodo u, solo necesita determinar. si la codificación de u es el prefijo de la codificación de v. Una propiedad importante de los índices de codificación de prefijos es su orden en el diccionario: para cualquier nodo u en el subárbol enraizado en el nodo r, su codificación de prefijo c(u) es mayor (menor que) su subárbol hermano izquierdo (subárbol hermano derecho). La codificación de prefijo de todos los nodos en . Por lo tanto, los índices basados en prefijos no solo pueden respaldar eficazmente el cálculo de las relaciones de inclusión, sino también el cálculo de las relaciones de posición de los documentos.
2. Índice basado en codificación de intervalo
Para el índice de codificación de intervalo, a cada nodo en el árbol T se le asigna un código de intervalo [inicio, fin], que satisface: el código de intervalo de un nodo incluye el código de intervalo de sus nodos descendientes. es decir, el nodo u en el árbol T es el ancestro del nodo v, si y solo si
el esquema de codificación del primer intervalo de start(u) es codificación Dietz, a cada nodo en el árbol T se le asigna un número de secuencia transversal de preorden y Post- Tupla de número de secuencia de recorrido de orden Dado que un nodo ancestro u en el árbol T debe aparecer antes (después) de su nodo descendiente v en el recorrido de preorden (recorrido de postorden), por lo tanto, los nodos u y v son una relación de antepasado/descendiente. , si y solo si pre(u)
Otro ejemplo típico de índice de codificación de intervalo es el índice XISS, que asigna un par de números a cada nodo, donde el orden es la codificación de preorden extendida y el tamaño son los descendientes del alcance. Para cualquier nodo X e Y en un árbol de documentos, si y solo si
el índice order(x) XISS descompone la declaración de consulta original en subexpresiones. Luego implemente la consulta para estas subexpresiones respectivamente y finalmente una estos resultados intermedios para obtener el conjunto de resultados de la consulta. Esto puede admitir mejor declaraciones de consulta que contengan caracteres comodín. Sin embargo, obtiene el resultado final de la consulta después de concatenar cada resultado intermedio. Aunque un método de este tipo puede resolver todos los problemas de comodines, es probable que la concatenación de dichos resultados intermedios lleve mucho tiempo, especialmente para expresiones simples con rutas largas.
Comparación de dos mecanismos de indexación
La indexación basada en rutas se basa principalmente en la estrategia de fusión de nodos. A través de técnicas como la equivalencia de nodos y la equivalencia de rutas, se obtiene una estructura de índice que es mucho más pequeña que el documento original. , por lo que al procesar una consulta, básicamente aún debe recorrer todo el árbol de índice para obtener el resultado. Los índices basados en rutas pueden admitir muy bien consultas de expresiones de rutas simples, pero para expresiones de rutas regulares, no funcionan muy bien.
El índice basado en nodos indexa cada nodo mediante tecnología de codificación. La relación estructural entre nodos se puede determinar en tiempo constante mediante la codificación. Puede admitir expresiones de ruta regulares, pero para expresiones de ruta largas, especialmente cuando se generan consultas. la operación de unión del índice de nodos es costosa.
La indexación basada en rutas y la indexación basada en nodos tienen cada una sus propias ventajas y desventajas, pero pueden complementarse entre sí. En la actualidad, en aplicaciones prácticas, la indexación basada en nodos se usa más ampliamente y la investigación es relativamente madura. Por lo tanto, la investigación de Dameng Company sobre la estructura del índice XML se centra principalmente en la indexación basada en nodos y realiza mejoras apropiadas con referencia a la indexación basada en rutas. .