ESTRUCTURA DE DATOS II “INDEXIÓN” SUPRESION INDICE - Introducción _______________________________________________3 - ¿Qué es un índice____________________________________________ 4 - Organización de archivo secuencial indexado_______________________4 -Ventajas y desventajas__________________________________________5 - Definición de organización de archivo secuencial indexado____________6 - Aplicación de organización de archivo secuencial indexado____________6 - Características de árboles B, B+ y B+ prefijo simple__________________6 - Declaración de Índices_________________________________________8 - Algoritmo Buscar (B)__________________________________________9 - Algoritmo Insertar (B)_________________________________________10 - Diagrama de flujo suprimir_____________________________________ 11 - Conclusión__________________________________________________12 - Bibliografía_________________________________________________ 13 2 INTRODUCCIÓN En el presente trabajo se hace una breve investigación de todo lo referente a Indexación, específicamente su estructuración. Se hace referencia a un método para superar las desventajas de los archivos secuenciales, además este procedimiento mantiene las características básicas de los archivos secuenciales ya que los registros están organizados en una secuencia basada en un campo, de igual forma utiliza una técnica basada en índices, ya que este provee una capacidad de búsqueda para llegar rápidamente a las proximidades de un registro deseado. En la actualidad existen varios métodos de indexación, nosotros escogimos el árbol-B, porque que este es la base de la que se derivan los demás métodos (B+, B+ prefijo simple), además de que es un índice relativamente sencillo y que por supuesto esta estructurado como árbol. ¿QUÉ ES UN INDICE? 3 Las ultimas páginas de un libro suelen contener un índice, es decir, un a tabla que contiene una lista de temas (llaves) y números de pagina en donde puedan encontrarse esos temas (campos de referencia). Todos los índices están basados en el mismo concepto básico de llaves y campos de referencia. Los índice simples se representan mediante arreglos simples de estructuras que contienen las llaves y los campos de referencia y también existen índices que usan estructuras de datos más complejas, especialmente árboles. Los índices pueden ser muy simples, pero aun así proporcionan herramientas poderosas de procesamiento de archivos. Un ejemplo claro de la indexación puede ser el índice de un libro, pues ofrece una forma de encontrar un tema rápidamente. Un índice es un recurso para encontrar información . Organización de archivos secuencial indexado Las estructuras de archivos secuenciales indexados permiten elegir entre dos formas alternativas de visualizar un archivo: Indexado: el archivo puede verse como un conjunto de registros indexado por llave. Secuencial: Se puede acceder secuencialmente el archivo(con registros físicamente contiguos, sin hacer desplazamientos), devolviendo los registros en el orden de la llave. La idea de tener un solo método organizacional que proporcione ambos puntos de vista es nueva; hasta ahora se había tenido que elegir alguno de ellos. Un archivo en organización secuencial indexada consta de las siguientes partes: o Área de datos o primaria: contiene los registros en forma secuencial y esta organizada en secuencia de claves sin dejar huecos intercalados. o Área de índices: es una tabla que contiene los niveles de índices, la existencia de varios índices enlazados se denomina nivel de indexación. 4 o Área de desbordamiento: utilizada, si fuese necesario, para las actualizaciones. El área de índices es equivalente, en su función, al índice de un libro. En ella se refleja el valor de la clave identificadora más alta de cada grupo de registros del archivo y la dirección de almacenamiento del grupo. ¿Qué sucede si una aplicación incluye tanto el acceso aleatorio interactivo (indexado) como el procesamiento secuencial coordinado? Existen muchos ejemplos de tales aplicaciones duales. Por ejemplo, los sistemas de registros de estudiantes en universidades requieren acceso por llave a registros individuales, pero también exigen gran cantidad de procesamiento por lotes, como cuando se obtiene listas de calificaciones o cuando se pagan colegiaturas durante las inscripciones. En forma similar, los sistemas de tarjetas de crédito requieren tanto el procesamiento por lotes de captura de cargos como revisiones interactivas de los estados de cuenta. Los métodos de acceso secuencial indexado se desarrollaron en respuesta a este tipo de necesidades. Los archivos secuenciales indexados presentan las siguientes ventajas: o Rápido acceso. o El sistema de gestión de archivos se encarga de relacionar la posición de cada registro con su contenido mediante la tabla de índices. Y los siguientes inconvenientes: o Desaprovechamiento del espacio por quedar huecos intermedio cada vez que se actualiza el archivo. o Se necesita espacio adicional para el área de índices. Los soportes que se utilizan para esta organización son los que permiten el acceso directo, los discos magnéticos. Los soportes de acceso secuencial no pueden utilizarse, ya que no dispone de direcciones para sus posiciones de almacenamiento 5 Definición de organización de archivo secuencial indexado Una manera efectiva de organizar una colección de registros, cuando existe la necesidad tanto de acceder los registros secuencialmente, por algún valor de llave, como de accesarlos individualmente , con esa misma llave, es la organización de archivos secuenciales indexados. Un archivo secuencial indexado proporciona la combinación de tipos de accesos que maneja un archivo secuencial y un archivo relativo. Existen algunos métodos para estructurar las porciones tanto de índices como de datos secuenciales, de un archivo secuencial indexado. El método más común es construir el índice como un árbol de valores de llaves. El árbol es normalmente una variante del árbol-B; ya que de este árbol se derivan el árbol B+ y el árbol B+ de prefijo simple. Los tres tienen amplia aplicabilidad, en particular en situaciones en que es necesario acceder a un archivo grande tanto en forma secuencial, en orden por llave, como a través de un índice Aplicaciones de organización de archivos secuenciales indexados Debido a su capacidad para manejar tanto acceso secuencial como directo, la organización secuencial indexada es utilizada frecuentemente para manejar archivos que son utilizados para procesamiento tanto por lote como interactivo . Características de los árboles B, B+ y B+ de prefijos simples Como ya mencionamos anteriormente el árbol B puede acoplarse con un conjunto de secuencias de bloques para proporcionar un acceso secuencial indexado efectivo, estos tres tipos de organización de archivos comparten las siguientes características: Todos son estructuras paginadas de índices, lo que significa que llevan bloques completos de información a la memoria RAM a la vez . Los tres métodos mantienen árboles de altura, o sea, los árboles no crecen en forma dispareja. 6 Los árboles crecen de abajo hacia arriba. Con las tres estructuras es posible obtener mayor eficiencia de almacenamiento. Los tres métodos pueden implantarse como estructuras de árbol virtuales. Cualquiera de estos métodos se puede adaptar para usarse con registros de longitud variable. Así como existen similitudes existen diferencias. Árboles B.- Contienen información que se agrupa como un conjunto de parejas. Un miembro de cada pareja es la llave y el otro es la información asociada. Estas parejas se distribuyen en todos los nodos del árbol B. En consecuencia, puede encontrarse la información que se busque en cualquier nivel del árbol B. Esto difiere de los árboles B+ y de los árboles B+ de prefijo simple, de los cuales se requiere que las búsquedas lleguen hasta abajo, al nivel inferior del conjunto de secuencias del árbol. Un árbol B ocupa menos espacio que un árbol B+, ya que contiene las llaves reales y la información asociada y no necesita espacio adicional para almacenar separadores. Los árboles B son más atractivos cuando la llave misma comprende gran parte de cada registro almacenado en el árbol. Cuando la llave es solo una pequeña parte de el registro, es posible construir un árbol más ancho y de menor altura usando los métodos de árboles B+ . Árboles B+.- Toda la información de las llaves y los registros esta contenida en un conjunto ligado de bloques conocidos como conjuntos de secuencias. La información de la llave y el registro no esta en la porción del nivel superior en forma de árbol del árbol B+. El acceso indexado de este conjunto de secuencias se proporciona por medio de una estructura conceptualmente separada llamada conjunto índice. El conjunto índice en este árbol consiste en copias de las llaves que representan los limites entre los bloques del conjunto de secuencias. A estas copias de llaves se les llama separadores porque separa un bloque del conjunto de secuencias de su predecesor. 7 Ventajas: El conjunto de secuencias puede procesarse en forma verdaderamente lineal y secuencial , proporcionando acceso eficiente a los registros en el orden de la llave. El uso de separadores en lugar de registros completos en el conjunto índice con frecuencia significa que el número de separadores que pueden colocarse en un solo bloque del conjunto índice en un árbol B+ excede en forma sustancial al número de registros que podrían colocarse en un bloque del mismo tamaño en un árbol B. El método de árbol B+ con frecuencia puede producir un árbol de menor altura. Árbol B+ de prefijo simple.- Aprovecha la altura de los árboles haciendo los separadores de conjuntos simples índice más pequeños que las llaves de conjunto de secuencias, en lugar de usar solo copias de estas llaves. Si los separadores son menores, entonces puede haber más en un bloque y obtener así un número aún más alto de ramas. Declaración de un archivo secuencial indexado TYPE PAGINAAB= RECORD CONT LLAVES : integer; LLAVE : array 1..MAXLLAVES of char; HIJO : array 1..MAXHIJOS of integer; END; VAR PAGINA : PAGINAB; 8 ALGORITMO SEARCH Found:= false; i:=1; While(i<=indxsze)and (not found) do if kindex(i)> key then found:=true else i:= i+1; If i=1 then lowlim :=1 e lse lowlim:=pindex (i-1); If found then bilim:=pindex(i)-1 else bilim :=n ; {buscar las tablas entre las posiciones lowlim y bilim} j:=lowlim; Found:=false; While(j<= bilim) and (not found) do if k (j)= key then found := true else j:= j+1; If found Then search:=j else search:= 0 9 FUNCION: inserta LLAVE_PROMO) (NRR_ACTUAL, LLAVE, HIJO_D_PROMO, Si NRR_ACTUAL = NULO entonces LLAVE_PROMO := LLAVE HIJO_D_PROMO :=NULO Devuelve PROMOCION Otro Leer la pagina de NRR_ACTUAL En PAGINA buscar la LLAVE en PAGINA POS:= la posición donde esta debería estar LLAVE Si se encuentra LLAVE entonces emitir mensaje de error indicando llave duplicada devuelve ERROR VALOR DEVUELTO := inserta(PAGINA.HIJO [POS], LLAVE, NRR_P_A LLAVE_P_A) Si VALOR_DEVUELTO = = NO PROMOCION o ERROR entonces Devuelve VALOR_DEVUELTO Otro si hay espacio en PAGINA para LLAVE_P_A entonces Insertar LLAVE_P_A y NRR_P_A Devuelve NO PROMOCION Otro Divide (LLAVE_P_A, NRR_P_A, PAGINA, LLAVE_PROMO, HIJO_D_PROMO, PAGINA NUEVA) Escribe PAGINA al archivo en el NRR_ACTUAL Escribe PAGINA _ NUEVA al archivo en el nrr HIJO_D_PROMO Devuelve promoción Fin si Fin FUNCION 10 SUPRIMIR Encontrar el nodo a suprimir Encontrar valor de llave Mas pequeño en el subárbol Apuntado por el apuntador A la derecha del nodo en Que se hará la supresión Intercambiarse valor de Llave a suprimir, moviendo De llave suprimir hacia la hoja NO ¿es nodo hoja? SI Suprimir valor llave de la hoja SI ¿Todavía tiene suFicientes llaves la Hoja? fin NO ¿Esta el Nodo Vacio? SI Combinar los Nodos y rotarlos Para distribución Correcta de llaves Fin NO ¿El nodo hermano de la izq. o der. Tiene tan pocas llaves que quepan En un nodo con esa Hoja? SI Combinar nodos hermanos En un nodo hoja Fin NO Promueva la llave con valor mas pequeño Del nodo hermano hacia el padre y mueva Una llave del padre hacia la hoja, dándole Su cuota de llaves Fin 11 CONCLUSION Podemos concluir que un archivo secuencial indexado maneja tanto el acceso secuencial por valor de llave, como el acceso directo a un registro en particular, dado su valor de llave. Este tipo de organización de archivo se logra mediante la construcción de un índice sobre un archivo de datos secuencial que reside en dispositivos de almacenamiento de acceso directo. Una buena implantación es a través del enfoque de árboles B, que sus operaciones básicas son la búsqueda, inserción y la supresión. Los árboles B han sido objeto de gran interés, tanto para profesionales como para investigadores . Son usados ampliamente como estructuras de datos para organizar índices, y como ya se demostró han sido desarrolladas numerosas y perfeccionadas variantes del árbol B básico (B+, B+ prefijo simple). Hay que tener presente que todas las estructuras de árboles pueden ser utilizadas para construir archivos indexados. 12 BIBLIOGRAFÍA -Estructuras de Archivos: Un conjunto de herramientas conceptuales. Michael J. Folk, Bill Zoellick Ed. Iberoamericana 1992. -Structures Using Pascal Aaron M. Tenenbbum, Moshe J. Augenspein. Ed. Prentice-Hall, Ink; Englewood Cliffs New Jersey. 1981 -Estructura de datos y organización de archivos Mary E. S. Loomis. Ed. Prentice-hall hispanoamericana Segunda edición 1991 -www.geocities.com/jgamezc -www.itlp.mx 13 14