IEEE LATIN AMERICA TRANSACTIONS, VOL. 3, NO. 1, MARCH 2005 9 Mecanismos de Concurrencia y Recuperación en el Árbol Q. Enfoque para la Orientación Transaccional de un Índice Multidimensional en una Aplicación Web José Fernando López, Manuel Barrena, Francisco Javier Rufo, Elena Jurado y Simeón Barroso Departamento de Informática de la Universidad de Extremadura y Diana Teknologia Resumen-- La expansión generalizada en el uso de Internet, el desarrollo de la tecnología Java y la consideración de los navegadores Web como interfaces naturales para muchas de las aplicaciones y sistemas que se desarrollan hoy en día, convierten en insoslayable la necesidad de dotar de un encapsulamiento transaccional a las aplicaciones que pretendan servirse de esta evolución. Es por ello que subsistemas de almacenamiento y métodos de acceso deben proporcionar capacidades de concurrencia y fiabilidad para su incorporación en este tipo de aplicaciones. A pesar de ello, muy pocas propuestas de estructuras de indexación abordan este importante aspecto. En este artículo presentamos los mecanismos de concurrencia y recuperación instaurados en el árbol Q, índice multidimensional constituido en núcleo del motor de búsqueda multitemática en Xerka.net, una aplicación concebida como soporte para la gestión del conocimiento. Las ideas originales que sustentan nuestra propuesta suponen una contribución novedosa en el panorama actual de los métodos de acceso y, en particular, de las estructuras de indexación multidimensional. Palabras clave: Gestión del Conocimiento, Multidimensional, Control de Concurrencia, Transaccional. Indexación Paradigma dispersión de la información textual se incide también en las técnicas de captura de esa información con subsistemas que rastrean la Web de forma autónoma para alimentar el espacio temático construido. Uno de los aspectos novedosos de Xerka.net como herramienta de catalogación multitemática es la utilización del árbol Q [1] como núcleo de su motor de búsqueda. Para la recuperación de información la estructura provee varios tipos de búsquedas: exactas de un punto, en ventana (puntos circunscritos a un hipercubo dentro del espacio), en rango (los puntos más cercanos a uno dado con un algoritmo de búsqueda por similitud muy eficiente para el árbol Q [6]) y parciales (puntos que cumplen un patrón dado). Para realizar consultas, en Xerka.net se ha diseñado un interfaz gráfico denominado rosa de los temas que, de forma análoga a la rosa de los vientos, permite especificar en una consulta características deseadas en varios temas, asociando cada uno a una dirección de la rosa (ver figura 1). Una consulta sobre la rosa de los temas se traduce en una búsqueda en ventana, pudiendo obtener, con búsquedas en rango, los documentos similares a los resultados que más satisfacen al usuario. I. INTRODUCCIÓN L os sistemas de gestión del conocimiento surgen de la necesidad que existe de equilibrar la velocidad con que aumenta el volumen de información y el crecimiento de las prestaciones en los mecanismos de búsqueda y acceso a esa información. En este ámbito presentamos Xerka.net, un catalogador multitemático de documentos textuales orientado a dar soporte en la búsqueda de información para la toma de decisiones. Este sistema pretende superar el plano relacional en la gestión de documentos mediante la incorporación de tecnología multidimensional, desarrollando algoritmos para la categorización multilingüe de espacios multitemáticos mediante la identificación de términos y desambiguación del sentido de las palabras. Para superar la abundancia y la J. F. López, M. Barrena, F. J. Rufo y E. Jurado pertenecen al Departamento de Informática de la Universidad de Extremadura, 10071 Cáceres, Spain. E-mails: {jflopez,barrena,javirufo,[email protected]}. S. Barroso es responsable del Departamento de I+D de Diana Teknologia, 20180 Oiartzun, Spain. E-mail: {[email protected]} Fig. 1. Rosa de los temas Aunque son muchos los aspectos técnico-científicos de interés sobre los que hemos trabajado intensamente en el desarrollo de Xerka.net, en este artículo nos centramos en los mecanismos de concurrencia y recuperación implantados sobre el árbol Q, con objeto de dotar al sistema en su conjunto de las propiedades transaccionales básicas (universalmente 10 IEEE LATIN AMERICA TRANSACTIONS, VOL. 3, NO. 1, MARCH 2005 conocidas bajo el acrónimo ACID) [4]. En el proceso de implantación de los mencionados mecanismos hemos antepuesto el objetivo de minimización de tiempos de respuesta a consultas emitidas por el usuario (el tiempo del usuario como recurso más valioso) frente a cualesquiera otros criterios de rendimiento del sistema, tales como tiempos de actualización principalmente provenientes de automatismos de rastreo transparentes al usuario. La organización del artículo a partir de este punto es como sigue. En la sección 2 delimitamos el contexto de nuestra aplicación y presentamos los trabajos más estrechamente relacionados con el nuestro. La sección 3 describe los principios básicos de la concurrencia en índices multinivel. La parte central donde se detalla el mecanismo de concurrencia implantado sobre el árbol Q se enmarca en la sección 4 y, a continuación, en la sección 5 se describen los mecanismos de recuperación ante errores. Terminamos con la sección 6, en la que exponemos las principales conclusiones de este trabajo. II. CONTEXTO Y TRABAJOS RELACIONADOS Es ampliamente admitido que información y conocimiento son entidades distintas. La información dentro de un documento no es portadora esencial de la interpretación humana subjetiva que permite un tratamiento adecuado. Ese contexto subjetivo es donde se encuentra realmente el conocimiento que promueve una acción basándose en la interpretación de la información, siendo la organización subjetiva de esa información el principal rasgo diferenciador de las diferentes aportaciones en el ámbito de los sistemas de gestión del conocimiento [2]. En este panorama encontramos por una parte sistemas que optan por definir una jerarquía de temas. Destacados ejemplos son KnowCat y Sintagma, sistemas para la gestión y catalogación de información documental. KowNet es una iniciativa internacional, dentro del proyecto ESPIRIT, para el desarrollo de la sociedad de la información en su conjunto. Un enfoque alternativo estriba en organizar la información mediante ontologías. En el ámbito de los negocios WebCADET es un sistema basado en la Web para dar soporte a la toma de decisiones, aplicando un motor de inferencia a bases de datos estructuradas ontológicamente. También se han utilizado las ontologías para soportar sistemas de búsqueda automática de conocimiento y gestores de consultas sobre la Web, como es el caso de Ontobroker. Existe un tercer camino, de momento el menos explotado y que representa el marco de este trabajo, la utilización de múltiples dimensiones para organizar un espacio temático en el que no prevalece ningún eje sobre otro. En la última década se ha puesto de manifiesto las soluciones eficientes que proporciona la indexación multidimensional al problema de la búsqueda por contenido en bases de datos multimedia [10]. Esta es la alternativa que hemos elegido para el desarrollo de Xerka.net, utilizando el árbol Q como subsistema organizador y motor de búsqueda para documentos textuales. En el ámbito más específico de los mecanismos de indexación multidimensional, son básicamente dos las categorías que agrupan la mayoría de las propuestas: índices basados en distancia e índices basados en características (denominados así por la existencia de un vector de valores que caracteriza el objeto a representar). La primera de las categorías engloba propuestas conducentes primordialmente a optimizar consultas de vecindad en un espacio normado, con un coste ciertamente inasequible ante variaciones de este escenario (otro tipo de consultas, distancias alternativas, etc.), que los hace descartables para un sistema como Xerka.net. Contrariamente, un índice basado en características no tiene como principal objetivo de diseño las consultas por similitud. Estos últimos soportan, con diferente grado de eficiencia, cualquier clase de consulta, en particular nuestro árbol Q ha demostrado un comportamiento satisfactorio ante diferentes escenarios [5], lo que fue determinante en su elección como motor de búsqueda para Xerka.net. Sin embargo, la implantación de un método de acceso dentro de un sistema de información conlleva adicionalmente el establecimiento de mecanismos de concurrencia y recuperación para permitir el uso colaborativo del sistema y dotar de seguridad a las operaciones sobre la información almacenada. Quizás debido al carácter innovador de la tecnología relacionada, muy pocos ejemplos existen en la literatura de sistemas de información que integren mecanismos de indexación multidimensional como parte integral del motor de búsqueda. Esta carencia favorece sin duda la escasez de propuestas que incorporen técnicas de concurrencia y recuperación en los mecanismos de indexación multidimensional. Entre estos pocos trabajos se encuentra el árbol hB3 [3], que por su proximidad a nuestra propuesta será tratado con mayor detalle en el siguiente apartado. III. MECANISMOS DE CONCURRENCIA EN ÍNDICES Un rasgo común en las operaciones de actualización en un índice multinivel es el tratamiento de las sobrecargas o infracargas de sus nodos (páginas de disco en el método de acceso). Cuando un nodo se encuentra en una de estas situaciones particulares, se divide en dos o se fusiona con un nodo hermano al tiempo que su nodo padre se actualiza para reflejar la nueva situación. Este nodo padre es, a su vez, susceptible de dividirse o fusionarse igual que el nodo hijo que inició el proceso. Este fenómeno, denominado actualización ascendente de un índice, precisa reglas de sincronización cuando se pretende soportar ejecución concurrente de operaciones sobre la estructura. Una primera aproximación a este problema consiste en sincronizar las operaciones haciendo que adquieran cierres sobre los nodos por los que pasan en su recorrido. Cuando se trata de una actualización, la operación puede comprobar si un nodo está a salvo de una posible división (en cuyo caso se habla de nodo seguro), liberando en este caso el cierre adquirido sobre el nodo padre. Esta técnica de cierres emparejados consigue que una actualización sea propietaria en exclusividad del camino que contiene los nodos que van a ser modificados. Algoritmos basados en esta técnica aportan enfoques diferentes sobre la utilización en las operaciones de LÓPEZ et al.: CONCURRENCY AND RECOVERY IN THE distintos tipos de cierre [11]. Las posibilidades de utilizar una técnica similar a ésta en nuestro árbol Q son escasas, debido a la dificultad que entraña decidir si un nodo es o no seguro, ya que la información que se añade a un nodo como resultado de la división de un hijo no tiene un tamaño predecible, resultando en ocasiones imposible determinar cuánto espacio libre debe albergar un nodo para considerarlo seguro. Una alternativa bastante extendida para soportar concurrencia en índices multinivel es la utilización de árboles enlazados, propuesta por primera vez por Lehman y Yao sobre el árbol B [8] y extendida posteriormente a otros tipos de índices. Esta técnica aboga por utilizar enlaces horizontales entre nodos de un mismo nivel con objeto de localizar datos posiblemente trasladados por otros procesos concurrentes a nodos hermanos (producto de una división o una fusión de nodos). El árbol hB3 [3], un método de acceso multidimensional basado en árboles k-d, apuesta por esta técnica para conseguir un funcionamiento transaccional de la estructura. Su similitud con el árbol Q sugiere un tratamiento más detallado. 11 tener utilidad, siendo una información redundante que va a incrementar el tamaño del árbol k-d con efectos perniciosos. Una de las diferencias que caracterizan nuestro árbol Q respecto del árbol hB3 es la optimización en el espacio de las páginas índice. Mientras que en el árbol hB3 se mantiene un grado considerable de redundancia entre los árboles k-d locales a una página y todas sus descendientes, en el árbol Q esta redundancia se optimiza al mínimo. Esta limitación en la redundancia supone la ausencia en el árbol k-d local de nodos que representan fronteras exteriores de la región correspondiente a una página y, por tanto, la imposibilidad de apuntar de forma expresa y directa a páginas hermanas. Si bien la ausencia de este tipo de nodos descarta la posibilidad de usar esta técnica para dotar de concurrencia a la estructura, consigue importantes beneficios, ya que el apropiado uso del espacio en el árbol Q garantiza mucha menor propensión a la división. Sirva como ejemplo la figura 2, en la que el árbol k-d de la misma región R es en el árbol Q de menor tamaño que en el hB3. y6 y5 A. Concurrencia en el Árbol hB3 3 El árbol hB soporta la concurrencia de procesos enlazando un nodo con todos los del mismo nivel que han sido extraídos de él. Cada página índice de un árbol hB3 contiene un árbol k-d local. Mientras que la mayoría de los nodos hoja de este árbol apuntan a páginas índice de nivel inferior, algunos apuntan a páginas del mismo nivel. La figura 2 sirve para ilustrar este mecanismo de enlace. El nodo R es del mismo nivel que los nodos A y B, los cuales fueron en el pasado extraídos de R, mientras que los nodos 1, 2, 3, 4 y 5 son descendientes del nodo R. En este tipo de estructuras, el recorrido seguido por cualquier operación no tiene por qué ir bajando niveles siempre de padre a hijo, sino que en alguna ocasión se puede desplazar horizontalmente en el mismo nivel hacia un nodo hermano. Tanto las operaciones de consulta como las de actualización siguen inicialmente un recorrido descendente. Mientras que las consultas finalizan en el nivel hoja del árbol, las de actualización continúan, si es necesario, con un proceso de actualización ascendente. Este camino en orden inverso no tiene por qué coincidir con el que se siguió en el descenso. Para ilustrar el uso de los enlaces horizontales, imaginemos, sobre la figura 2, que una operación Oi realiza un recorrido descendente que va en dirección al espacio de datos que representa el nodo B. Supongamos también que B está siendo extraído de R en este momento por una actualización concurrente Oj. Oj ya ha creado y añadido B al índice, al tiempo que ha modificado R, pero aún no ha trasladado la necesaria información al padre de R. El recorrido descendente que lleva a cabo Oi lee el nodo padre en esta situación, de forma que decide continuar hacia R. Al procesar R Oi llega a la hoja que apunta al nodo hermano B y continúa en este caso desplazándose horizontalmente hacia este nodo. Sin embargo, cuando el nodo padre de R sea actualizado, para reflejar la nueva situación, ese enlace desde R hacia el nodo B deja de 4 3 5 2 x0 x1 x2 Región R en árbol Q x4 y1 2 B A y4 y3 y2 y1 y0 3 x4 Región R en árbol hB3 x4 p p x1 1 x3 1 y1 p x4 x1 y4 4 B 3 X2 y4 5 1 2 4 A 5 Fig. 2. Árbol k-d en árboles Q y hB3 Una de las diferencias que caracterizan nuestro árbol Q respecto del árbol hB3 es la optimización en el espacio de las páginas índice. Mientras que en el árbol hB3 se mantiene un grado considerable de redundancia entre los árboles k-d locales a una página y todas sus descendientes, en el árbol Q esta redundancia se optimiza al mínimo. Esta limitación en la redundancia supone la ausencia en el árbol k-d local de nodos que representan fronteras exteriores de la región correspondiente a una página y, por tanto, la imposibilidad de apuntar de forma expresa y directa a páginas hermanas. Si bien la ausencia de este tipo de nodos descarta la posibilidad de usar esta técnica para dotar de concurrencia a la estructura, consigue importantes beneficios, ya que el apropiado uso del espacio en el árbol Q garantiza mucha menor propensión a la división. Sirva como ejemplo la figura 2, en la que el árbol k-d de la misma región R es en el árbol Q de menor tamaño que en el hB3. Un segundo argumento para descartar la utilización de esta técnica de concurrencia en nuestro árbol Q estriba en la 12 IEEE LATIN AMERICA TRANSACTIONS, VOL. 3, NO. 1, MARCH 2005 penalización que supone el seguimiento de enlaces horizontales durante el proceso de búsqueda (se alarga la lista de nodos visitados), operación cuyo rendimiento optimo representa el objetivo central de nuestras decisiones. El mecanismo de concurrencia que proponemos para el árbol Q está a salvo de “errores” en los recorridos (en el sentido de descender a un nodo equivocado y tener que seguir un enlace horizontal para resolver el problema), favoreciendo así el tiempo de ejecución de consultas. IV. CONCURRENCIA EN EL ÁRBOL Q Para describir con detalle nuestra propuesta sobre la concurrencia en el árbol Q precisamos introducir una breve clasificación de las operaciones en virtud de las cuales establecemos diferentes tipos de candados. Tenemos dos grupos principales: o Lectura: Actualmente son cuatro, a saber, búsquedas exactas de un elemento, búsquedas en ventana, búsquedas parciales y búsquedas en rango Una operación de escritura no necesita obligatoriamente adquirir el candado BD. Para sincronizarse entre sí las escrituras adquieren un cierre X sobre el nodo raíz del árbol y no lo liberan hasta que terminan su ejecución. De este modo las operaciones de escritura nunca se ejecutan simultáneamente entre ellas, pero sí con un número ilimitado de operaciones de lectura. Escrituras Nodo Raíz Árbol Q (Cierre X) Ejecución y generación de lista de páginas modificadas Lecturas No Si ¿Multiescritura? Candado BD Multiescrituras (Cierre X) Lecturas (Cierre S) Aperturas y CopiasBD Candado SR (Cierre X) Actualización de Páginas Liberación de candados y nodos o Escritura: Tenemos tres, que son inserción de puntos, borrado de puntos y modificación de puntos. Una inserción llega hasta el contenedor donde se añade el nuevo punto y, en caso de sobrecarga, propaga el proceso de división de forma ascendente. Un borrado llega al contenedor donde elimina el punto y, en caso de infracarga, propaga el proceso de reordenación que sólo afecta a la región padre. La modificación mueve un punto de sitio en el espacio. Esta operación puede iniciar tanto procesos de división ascendente como procesos de reordenación en la región padre. Las operaciones de escritura, a su vez, tienen una clasificación adicional: o Operaciones Monoescritoras. contenedor del nivel de Datos. Actualizan un solo o Operaciones Multiescritoras. Modifican más de una página. En general son operaciones que necesitan hacer actualizaciones en Qnodos índice, pero en esta clase también se incluyen operaciones de modificación que realizan dos actualizaciones de página en Qnodos de datos. Como es sobradamente conocido, el tamaño de los gránulos sobre los que se aplican los cierres es inversamente proporcional al rendimiento de la concurrencia y directamente proporcional a la complejidad de la gestión de esos cierres [9]. Nuestro modelo se inclina hacia una granularidad gruesa, definiendo un único gránulo que representa a toda la estructura al que denominamos Candado BD, sobre el que se pueden aplicar dos tipos de cierre, uno compartido (S), que es compatible con más cierres de su mismo tipo pero con ningún otro, y uno exclusivo (X), que no es compatible con ningún otro tipo de cierre, aunque sea de su mismo tipo. Cuando un proceso adquiere un cierre S del Candado BD puede coincidir simultáneamente con otros procesos que adquieren el mismo tipo de cierre. Todas las operaciones de lectura necesitan adquirir un cierre S del candado como se aprecia en la figura 3. Fig. 3. Modelo de sincronización de operaciones en Árbol Q El mecanismo de sincronización entre las operaciones de lectura y escritura depende directamente de la anterior clasificación. Como se ve en la figura 3, las operaciones monoescritoras no necesitan sincronizarse con las lecturas. Son las operaciones multiescritoras las que sí necesitan de un mecanismo de sincronización, debido a que modifican varios Qnodos y, por tanto, la estructura no vuelve a ser consistente hasta que no se hayan actualizado todos. Las operaciones de escritura trabajarán con copias de las páginas modificadas realizando su trabajo de forma concurrente a las operaciones de lectura y realizando una actualización en bloque al final, ésta técnica de escrituras diferidas ya se menciona en [7]. Justo en el momento de iniciar ese volcado físico de las páginas es cuando las operaciones multiescritoras necesitan el cierre X del candado BD para impedir que ningún otro proceso recorra el índice en ese intervalo de tiempo. Línea de Tiempo Ti Tv Tf Estado A Estado B Operación de Escritura Fase de ejecución Ejecución lógica Volcado físico de páginas Estado A Inconsistente Errores Inocuos Perniciosos B Fig. 4. Escritura diferida de páginas en transacciones de escritura Además de las operaciones de lectura y de escritura existen otras operaciones con un carácter administrativo que también precisan de sincronización. Por ejemplo, en la apertura de una base de datos se necesita comprobar si ésta es consistente y, LÓPEZ et al.: CONCURRENCY AND RECOVERY IN THE por tanto, es necesaria la sincronización con las operaciones de escritura. Para esta clase de operaciones, disponemos de un gránulo denominado Candado SR (figura 3), utilizado para la sincronización de las escrituras con operaciones que, o bien necesiten comprobar la consistencia de la base de datos, o bien necesitan impedir durante un intervalo de tiempo la modificación de ésta, como al hacer una copia de seguridad de la base de datos, por ejemplo. Este mecanismo de concurrencia favorece notablemente a las consultas, las cuales sólo pueden quedar bloqueadas en un candado, y además, sólo el tiempo justo que dure el volcado físico de las páginas modificadas por una operación multiescritora, las cuales, además, son minoría dentro del conjunto de las escrituras. La política de escrituras diferidas favorece el mantenimiento de la base de datos en un estado consistente frente a errores que puedan surgir antes del volcado físico de las páginas modificadas. La figura 4 ilustra las situaciones de riesgo potencial respecto a la consistencia que aparecen durante la ejecución de una operación de escritura sobre la base de datos. En el periodo [Ti,Tv) la operación de escritura lleva a cabo modificaciones en el buffer, de modo que la base de datos física se mantiene durante dicho periodo en el estado consistente A, incluso ante la aparición de cualquier error. El periodo [Tv, Tf) es crítico respecto a la consistencia porque durante el mismo la base de datos física se encuentra en un estado inconsistente y cualquier interrupción provocada por un error puede dejarla en éste estado. Se deduce de la figura que para evitar una situación anómala de inconsistencia basta con conseguir que la fase de volcado físico de páginas se comporte como una operación atómica que, o bien se ejecute en su totalidad (llevando la base de datos al estado B) o bien no se ejecute en absoluto (dejándola en su estado original A). En aquellas estructuras índice que siguen un enfoque de enlaces horizontales para dotar de concurrencia al método de acceso (tal como sucede con el árbol hB3), la consideración de “estado consistente” se limita a cada nivel del índice. Esto significa que una página padre puede no reflejar correctamente la organización de los datos en sus páginas descendientes y no por ello tildar a la estructura en su conjunto de inconsistente, dado que los enlaces horizontales permiten acceder a aquellos datos ocultos para la página padre. Esta característica permite implementar una operación de escritura como una sucesión de transacciones atómicas igual a la altura del árbol. En nuestro caso, la consideración de “estado consistente” supone una garantía sobre el estado de la estructura en su conjunto, asegurando en todo momento que el contenido del índice cumple con las propiedades fundamentales que definen la estructura. La figura 5 ilustra las diferencias de nuestro enfoque respecto al que siguen estructuras basadas en enlaces horizontales para conseguir atomicidad en operaciones virtualmente perniciosas para la consistencia del sistema. V. RECUPERACIÓN EN EL ÁRBOL Q Una vez justificada la necesidad de instaurar la fase de 13 ejecución del volcado físico de páginas como una operación atómica (transacción), vamos a describir qué mecanismos de recuperación utilizamos para evitar que la operación se detenga prematuramente provocando un estado inconsistente de la base de datos. Si la fase del volcado físico de páginas se interrumpe a causa de un error incontrolado, necesitamos recuperar el último estado consistente de la base de datos. Con tal fin implementamos otros mecanismos de recuperación: (a) basados en técnicas de recuperación de un estado previo (“undo”) y (b) basados en técnicas de reconstrucción de estados posteriores (“redo”). El primer enfoque basa su funcionalidad en la existencia de un archivo de log que registra temporalmente las versiones originales de las páginas modificadas, las cuales serán restauradas en caso de error. La segunda técnica precisa mantener por una parte copias de seguridad de la base de datos y por otra un archivo de transacciones secuenciado en el tiempo, las cuales podrán ser relanzadas contra la copia de seguridad a fin de obtener estados posteriores de la base de datos. Operación de escritura en árbol hB3 Ti = Actualización de nodos de nivel i Nivel 1 = Nivel más bajo T1 A Si error en Ti , deshacer (“undo”) T2 B1 Tn B2 … Bn-1 Bn Estados CONSISTENTES Intermedios Operación de escritura en árbol Q T = Actualización de todos los nodos modificados del árbol T B A Copia Si error en T, deshacer (“undo”) Si error en operación deshacer ( ), rehacer (“redo”) Fig. 5. Atomicidad en árbol hB3 y árbol Q Durante la fase de volcado físico, son dos las principales fuentes de problemas: errores de E/S y caídas abruptas de un proceso. Ambos precisan de tratamientos distintos para su resolución. En el primer caso podremos aplicar un mecanismo undo, para restablecer el estado previo de la base de datos, durante el curso mismo de la operación. En el segundo caso se puede interrumpir el curso de una operación que haya iniciado el volcado de nodos modificados. Deshacer esos cambios queda fuera de las posibilidades de la operación por lo que es necesario identificar el problema cuando posteriormente se intente reabrir la base. Las aperturas se sincronizan con las escrituras adquiriendo un cierre X sobre el Candado SR (figura 3) recuperando el último estado consistente de la base de datos antes de liberarlo. El mecanismo de undo utilizado para recuperar el último estado consistente de una base de datos está sujeto a su vez a errores que pueden provocar un estado irrecuperable de la base de datos. Ante esta situación se recurre al mecanismo de redo que relanza las transacciones registradas a partir de la última copia de seguridad disponible para reconstruir la base 14 IEEE LATIN AMERICA TRANSACTIONS, VOL. 3, NO. 1, MARCH 2005 (ver figura 5). Esta técnica es útil tanto para recuperar un último estado consistente de una base de datos como para restaurar estados anteriores que interese recuperar. VI. CONCLUSIONES Y TRABAJO FUTURO En este artículo hemos descrito los mecanismos de concurrencia y recuperación que hemos implantado en el árbol Q para dotar de robustez y seguridad a una estructura que actualmente se constituye como núcleo operativo del motor de búsqueda en Xerka.net, una herramienta concebida como sistema soporte a la gestión del conocimiento. El modelo de concurrencia que fundamenta nuestra propuesta huye de esquemas convencionales (principalmente basados en el uso de enlaces horizontales) para concentrar toda su potencia en favorecer las operaciones de búsqueda frente a los procesos de instanciación de la base de datos u operaciones con mayor grado de excepcionalidad como modificaciones o borrados de documentos de la colección. Respecto a la originalidad de nuestra propuesta, a lo largo del artículo hemos justificado convenientemente las decisiones de diseño en los mecanismos instaurados confrontando nuestro enfoque con posibles alternativas, tales como las que se siguen en el árbol hB3. La propuesta que aquí presentamos no se ciñe a un planteamiento específicamente teórico, sino que su viabilidad ha sido contrastada a través de un conveniente desarrollo experimental. En el momento en que escribimos este artículo nos encontramos en plena fase de evaluación del sistema global (Xerka.net) de la que sin duda obtendremos valiosa información para mejorar la calidad de los mecanismos implantados. La implantación del árbol Q en Xerka.net no se ha reducido a conseguir el funcionamiento transaccional de la estructura. Hemos llevado adelante otras líneas de trabajo no menos importantes, tales como desarrollar los algoritmos de reordenación de la estructura para hacer frente a operaciones de borrado y modificación, la consecución de una total portabilidad de los datos o la optimización de la búsqueda de vecinos más próximos. Algunas de estas tareas, como es el caso de los algoritmos de reordenación, han finalizado cumpliendo sus objetivos iniciales pero, a la vez han ido destapando nuevas posibilidades que se han convertido en retos que ya estamos afrontando. VII. REFERENCIAS [1] [2] [3] [4] [5] M. Barrena, “Técnicas de Particionamiento Multidimensional Basadas en Índices Multiatributo para Bases de Datos Paralelas”. Tesis Doctoral. Facultad de Informática de la Universidad Politécnica de Madrid, 1995 R. Cobos, J. A. Esquivel y X. Alamán, “Herramientas Informáticas para la Gestión del Conocimiento. Un Estudio de la Situación Actual”, Novótica nº 155. Enero/Febrero 2002. G. Evangelidis, D. Lomet, B. Salzberg, “The hB3-tree: A Modified hBtree Supporting Concurrency, Recovery and Node Consolidation”, 21st Internacional Conference on Very Large Databases (VLDB), September 1995, pp. 551-561. J. Gray and A. Reuter, “Transaction Processing: Concepts and Techniques”, Morgan Kaufmann Publishers, 1993. E. Jurado, “Una Aproximación Eficiente a la Búsqueda de Vecinos en Espacios Multidimensionales a través del Árbol Q”. Tesis Doctoral. Departamento de Informática de la Escuela Politécnica. Universidad de Extremadura 2003. [6] E. Jurado and M. Barrena, “Efficient Similarity Search in Feature Spaces with the Q-Tree”, International Conference on Advances in Databases and Information Systems (ADBIS), September 2002, pp. 177-190. [7] H. T. Kung and P. L. Lehman, “Concurrent Manipulation on Binary Search Trees”, ACM Transactions on Database Systems, 5(3):354-382, September 1980. [8] P. L. Lehman and S. B. Yao, “Efficient Locking for Concurrent Operations on B-Trees”, ACM Transactions on Database Systems, 6(4):650-670, December 1981. [9] D. R. Ries and M. Stonebraker, “Effects of Locking Granularity in a Database Management System”, ACM Transactions on Database Systems, 2(3):233-246, September 1977. [10] Y. Rui, T. S. Huang and S. F. Chang, “Image Retrieval: Current Techniques, Promising Directions and Open Issues”, Journal of Visual Communication and Image Representation, 10:39-62, March 1999. [11] V. Srinivasan and M. J. Carey, “Performance of B-Tree Concurrency Control Algorithms”, 1991 ACM SIGMOD Conf., pp. 416-425. VIII. BIOGRAFÍAS José Fernando López nació en Huertas de Ánimas (Cáceres), España, en 1978. Obtuvo el título de Ingeniero en Informática por la Universidad de Extremadura (Uex) en 2003. Es alumno de doctorado en el Departamento de Informática de la Uex y becario de investigación en el proyecto SYGE. Sus áreas de investigación actuales son las Bases de Datos y estructuras de Indexación Multidimensional, los sistemas CBIR e IR. Manuel Barrena nació en Zafra (Badajoz), España, en 1961. Obtuvo su Licenciatura en Ciencias Matemáticas por la Universidad de Extremadura (Uex) en 1984, y el grado de Doctor en Informática por la Universidad Politécnica de Madrid en 1995. Es Profesor Titular de Universidad en la Uex por el área de Lenguajes y Sistemas Informáticos. Investigador principal del proyecto SYGE. Sus áreas de investigación son las estructuras de Indexación Multidimensional y Temporal, los sistemas CBIR e IR y las Bases de Datos Multimedia. Francisco Javier Rufo nació en Alicante, España, en 1979. Obtuvo el título de Ingeniero en Informática por la Universidad de Extremadura (Uex) en 2003. Es alumno de doctorado en el Departamento de Informática de la Uex y becario de investigación en el proyecto SYGE. Sus áreas de investigación actuales son las Bases de Datos y estructuras de Indexación Multidimensional. Elena Jurado nació en Cáceres, España, en 1962. Obtuvo la Licenciatura en Matemáticas en 1985 y el grado de Doctora en Informática en 2003, ambos en la Universidad de Extremadura (Uex). Es Profesora en la Uex por el área de Lenguajes y Sistemas Informáticos. Investigadora en el proyecto SYGE. Sus áreas de investigación están dentro del campo de las Bases de Datos, concretamente en el ámbito de las Búsquedas por Similitud en Índices Multidimensionales para la recuperación de información por contenido. Simeón Barroso nació en Aceuche (Cáceres), España, en 1955. Obtuvo su licenciatura en Ciencias Físicas por la Universidad de Navarra en 1982. Socio y promotor de Diana Teknologia, empresa vasca dedicada a la innovación y desarrollo de software original de calidad. Investigador principal del departamento de I+D de Diana Teknologia y responsable de productos como DIB y Xerka. Sus áreas de Investigación son los sistemas de backup, la Gestión del Conocimiento y el Procesamiento Multilingüe del Lenguaje Natural (castellano, euskera, francés e inglés).