Archivos Secuenciales Indexados ING. YIM ISAIAS APESTEGUI FLORENTINO Organización de Archivos: Archivos Secuenciales Indexados ING. YIM ISAISA APESTEGUI FLORENTINO 1 Introducción: La mayor parte de las estructuras de organizaciones alternativas de archivos se encuentran dentro de estas cinco categorías: PILAS, ARCHIVOS SECUENCIALES, ARCHIVOS SECUENCIALES INDEXADOS ARCHIVOS INDEXADOS ARCHIVOS DIRECTOS O DE DISPERSION Organización de Archivos: Archivos Secuenciales Indexados ING. YIM ISAISA APESTEGUI FLORENTINO 2 Reg 1 Reg 2 CAMPOS Reg 3 Reg n Organización de Archivos: Archivos Secuenciales Indexados ING. YIM ISAISA APESTEGUI FLORENTINO 3 Es la forma más fácil de organizar un archivo. Los datos se recogen en el orden en que llegan. Su objetivo es simplemente acumular una masa de datos y guardarla. Los registros pueden tener campos diferentes o similares en un orden distinto. Cada campo debe ser autodescriptivo, incluyendo tanto un campo de nombre como el valor. La longitud de cada campo debe indicarse implícitamente con delimitadores, explícitamente incluidos como un subcampo más. Organización de Archivos: Archivos Secuenciales Indexados ING. YIM ISAISA APESTEGUI FLORENTINO 4 El acceso a los registros se hace por búsquedas exhaustiva y son fáciles de actualizar. Si se quiere encontrar un registro que contiene un campo particular y un valor determinado, es necesario examinar cada registro de la pila hasta encontrar el registro deseado. Si se quieren encontrar todos los registros que contienen un campo particular o que tienen un valor determinado para ese campo, debe buscarse el archivo entero. Organización de Archivos: Archivos Secuenciales Indexados ING. YIM ISAISA APESTEGUI FLORENTINO 5 Se aplica cuando los datos se recogen o almacenan antes de procesarlos o cuando no son fáciles de organizar. Esta clase de archivo aprovecha bien el espacio cuando los datos almacenados varían en tamaño y estructura. Fuera de estos usos limitados, este tipo de archivos no se adapta a la mayoría de las aplicaciones. Organización de Archivos: Archivos Secuenciales Indexados ING. YIM ISAISA APESTEGUI FLORENTINO 6 Es la forma más común de estructura de archivos. Se emplea un formato fijo para los registros, son de la misma longitud y constan del mismo número de campos de tamaño fijo con un orden determinado. Se necesita almacenar los valores de cada campo; el nombre del campo y la longitud de cada uno son atributos de la estructura del archivo. Cada registro tiene un campo clave que lo identifica (generalmente es el primero de cada registro). Los registros se almacenan en secuencia por la clave. Organización de Archivos: Archivos Secuenciales Indexados ING. YIM ISAISA APESTEGUI FLORENTINO 7 Se utilizan normalmente en aplicaciones de procesos por lotes, ya que es la única organización de archivos que se puede guardar tanto en cintas como en discos. Para las aplicaciones interactivas que incluyen peticiones o actualizaciones de registros individuales, los archivos secuenciales no son óptimos. El acceso requiere una búsqueda secuencial de correspondencias con la clave. Si el archivo entero o gran parte de él pueden traerse a la memoria principal de una sola vez, se podrán aplicar técnicas de búsquedas más eficientes. Al acceder un registro de un archivo secuencial grande, se produce un procesamiento extra y un retardo considerable. Organización de Archivos: Archivos Secuenciales Indexados ING. YIM ISAISA APESTEGUI FLORENTINO 8 La organización física del archivo en una cinta o disco se corresponde exactamente con la organización lógica del archivo, por lo tanto el procedimiento habitual es ubicar los nuevos registros en un archivo de pila separado, es llamado archivo de registro o archivo de transacciones. Una alternativa es organizar físicamente el archivo secuencial como una lista enlazada, en cada bloque físico se almacena uno o más registros y cada bloque del disco contiene un puntero al bloque siguiente. La inserción de un nuevo registro implica la manipulación de puntero, pero no requiere que el nuevo registro ocupe una posición particular del bloque físico. Organización de Archivos: Archivos Secuenciales Indexados ING. YIM ISAISA APESTEGUI FLORENTINO 9 Una de los puntos más complicados de la manipulación de archivos es la posibilidad de mantener ordenados los ficheros. Para ello, se utiliza un fichero auxiliar conocido como índice. Organización de Archivos: Archivos Secuenciales Indexados ING. YIM ISAISA APESTEGUI FLORENTINO 10 K C1 C2 C3 C4 Cada registro tiene que poseer una clave (K) que es la que permite ordenar el fichero. En base de esa clave se genera el orden de los registros. Si no dispusiéramos de índice, cada vez que se añade un registro más al archivo habría que regenerar el archivo entero (con el tiempo de proceso que consume esta operación). Organización de Archivos: Archivos Secuenciales Indexados ING. YIM ISAISA APESTEGUI FLORENTINO 11 Por ello se prepara un archivo separado donde aparece cada clave y la posición que ocupan en el archivo. Al añadir un registro se añade al final del archivo. El que sí habrá que reorganizar es el fichero de índices para que se actualicen, pero cuesta menos organizar dicho archivo ya que es más corto. Ver el siguiente ejemplo: Organización de Archivos: Archivos Secuenciales Indexados ING. YIM ISAISA APESTEGUI FLORENTINO 12 CODIGO 12051671520 10000000005 10027379350 10027380170 10027393140 10027428831 10027576945 10027584867 10028621715 10067671819 10068172204 10069842921 10073697994 10087161175 10089498568 10090993009 10096740447 10155888011 10155890661 10155892574 10155963315 10156027915 10165888907 10165915742 10165984302 RAZON_SOCIAL EMAIL RET POSICION PESQUERA LARIMETS [email protected] S.R.L SI 0 CLAN S.A [email protected] NO 1 FIESTAS MORALES FELIX [email protected] DAVID SI 2 MANUEL VIDAURE PURIZACA [email protected] NO 3 PAZO QUEREVALU JOSE [email protected] SI 4 GILBERTO PANTA PANTA. [email protected] NO 5 TEMOCHE ECHE SANTOS [email protected] LEONARDO SI 6 PANTA PANTA PATRICIO [email protected] NO 7 QUEREVALU PERICHE [email protected] MANUEL ANTONIO SI 8 RAMSEY VARON HIDALGO [email protected] MALPICA NO 9 PERU ROBLES PALACIOS [email protected] SI 10 JUANA MARTINEZ DE [email protected] YATACO NO 11 REYNALDO RAMOS RODRIGUEZ [email protected] SI 12 UBALDO EMMA SERNA [email protected] NO 13 LUIS EMILIO QUINTANA [email protected] VELIZ SI 14 VILCAPOMA CLEMENTE [email protected] MAXIMO NO 15 WASHINGTON NATAL [email protected] GRANDA MARES SI 16 PEREZ CARRILLO EDITH [email protected] NO 17 LUNA BAZALAR EUGENIO [email protected] CONSTANTINO SI 18 MANRIQUE MIRANDA [email protected] HECTOR NO 19 ZERILLO BAZALAR CARLOS [email protected] SI 20 ZERILLO PAZ ANTONIO [email protected] LORENZO NO 21 HUAMANCHUMO ZUÑE [email protected] MAX SI 22 ARTURO HUAMANCHUMO [email protected] ZUÑE. SI 23 JACINTO PALACIOS [email protected] ANTONIA NO 24 Organización de Archivos: Archivos Secuenciales Indexados ING. YIM ISAISA APESTEGUI FLORENTINO 10000000001 10000000002 10000000003 10000000004 10000000005 10016367564 10027379350 10027380170 10027393140 10027428831 10027576945 10027584867 10028621715 10029407878 10032795207 10032816779 10032820848 10032865358 10040614754 10067671819 10068172204 10069842921 10073697994 10087161175 10089498568 10090993009 521 522 523 524 1 146 2 3 4 5 6 7 8 515 516 517 518 519 520 9 10 11 12 13 14 15 13 En el índice las claves aparecen ordenadas, hay un segundo campo que permite indicar en qué posición del archivo de datos se encuentra el registro con esa clave. El problema es la reorganización del archivo de índices, que se tendría que hacer cada vez que se añade un registro para que aparezca ordenado. Organización de Archivos: Archivos Secuenciales Indexados ING. YIM ISAISA APESTEGUI FLORENTINO 14 Los registros se organizan en una secuencia basada en un campo clave presentando dos características, un índice del archivo para soportar los accesos aleatorios y un archivo de desbordamiento. El índice proporciona una capacidad de búsqueda para llagar rápidamente al registro deseado y el archivo de desbordamiento es similar al archivo de registros usado en un archivo secuencial, pero está integrado de forma que los archivos de desbordamiento se ubiquen siguiendo un puntero desde su registro predecesor. Organización de Archivos: Archivos Secuenciales Indexados ING. YIM ISAISA APESTEGUI FLORENTINO 15 La estructura más simple tiene como índice un archivo secuencial simple, cada registro del archivo índice tiene dos campos, un campo clave igual al del archivo principal y un puntero al archivo principal. Para encontrar un campo específico se busca en el índice hasta encontrar el valor mayor de la clave que es igual o precede al valor deseado de la clave, la búsqueda continua en el archivo principal a partir de la posición que indique el puntero. Organización de Archivos: Archivos Secuenciales Indexados ING. YIM ISAISA APESTEGUI FLORENTINO 16 Cada registro del archivo principal tiene un campo adicional que es un puntero al archivo de desbordamiento. Cuando se inserta un nuevo registro al archivo, también se añade al archivo de desbordamiento. El registro del archivo principal que precede inmediatamente al nuevo registro según la secuencia lógica se actualiza con un puntero del registro nuevo en el archivo de desbordamiento, si el registro inmediatamente anterior está también en el archivo de desbordamiento se actualizará el puntero en el registro. Organización de Archivos: Archivos Secuenciales Indexados ING. YIM ISAISA APESTEGUI FLORENTINO 17 Para procesar secuencialmente un archivo completo los registros del archivo principal se procesarán en secuencia hasta encontrar un puntero al archivo de desbordamiento, el acceso continua en el archivo de desbordamiento hasta que encuentra un puntero nulo, entonces renueva el acceso donde se abandonó en el archivo principal. Organización de Archivos: Archivos Secuenciales Indexados ING. YIM ISAISA APESTEGUI FLORENTINO 18 En las ciencias de la computación, los árboles-B ó Bárboles son estructuras de datos de árbol que se encuentran comúnmente en las implementaciones de bases de datos y sistemas de archivos. Los árboles B mantienen los datos ordenados y las inserciones y eliminaciones se realizan en tiempo logarítmico amortizado Organización de Archivos: Archivos Secuenciales Indexados ING. YIM ISAISA APESTEGUI FLORENTINO 19 La idea tras los árboles-B es que los nodos internos deben tener un número variable de nodos hijo dentro de un rango predefinido. Cuando se inserta o se elimina un dato de la estructura, la cantidad de nodos hijo varía dentro de un nodo. Para que siga manteniéndose el número de nodos dentro del rango predefinido, los nodos internos se juntan o se parten. Organización de Archivos: Archivos Secuenciales Indexados ING. YIM ISAISA APESTEGUI FLORENTINO 20 Dado que se permite un rango variable de nodos hijo, los árboles-B no necesitan rebalancearse tan frecuentemente como los árboles binarios de búsqueda auto-balanceables, pero por otro lado pueden desperdiciar memoria, porque los nodos no permanecen totalmente ocupados. Los límites superior e inferior en el número de nodos hijo son definidos para cada implementación en particular. Por ejemplo, en un árbol-B 2-3 (A menudo simplemente llamado árbol 2-3 ), cada nodo sólo puede tener 2 ó 3 nodos hijo. Organización de Archivos: Archivos Secuenciales Indexados ING. YIM ISAISA APESTEGUI FLORENTINO 21 Un árbol-B se mantiene balanceado porque requiere que todos los nodos hoja se encuentren a la misma altura. Organización de Archivos: Archivos Secuenciales Indexados ING. YIM ISAISA APESTEGUI FLORENTINO 22 Los árboles B tienen ventajas sustanciales sobre otras implementaciones cuando el tiempo de acceso a los nodos excede al tiempo de acceso entre nodos. Este caso se da usualmente cuando los nodos se encuentran en dispositivos de almacenamiento secundario como los discos rígidos. Al maximizar el número de nodos hijo de cada nodo interno, la altura del árbol decrece, las operaciones para balancearlo se reducen, y aumenta la eficiencia. Organización de Archivos: Archivos Secuenciales Indexados ING. YIM ISAISA APESTEGUI FLORENTINO 23 Los creadores del árbol B, Rudolf Bayer y Ed McCreight, no han explicado el significado de la letra B de su nombre. Se cree que la B es de balanceado, dado que todos los nodos hoja se mantienen al mismo nivel en el árbol. La B también puede referirse a Bayer, o a Boeing, porque sus creadores trabajaban en el Boeing Scientific Research Labs en ese entonces. Organización de Archivos: Archivos Secuenciales Indexados ING. YIM ISAISA APESTEGUI FLORENTINO 24 Organización de Archivos: Archivos Secuenciales Indexados ING. YIM ISAISA APESTEGUI FLORENTINO 25 B-árbol es un árbol de búsqueda que puede estar vacío o aquel cuyos nodos pueden tener varios hijos, existiendo una relación de orden entre ellos, tal como muestra el dibujo anterior. Un árbol-B de orden M (el máximo número de hijos que puede tener cada nodo) es un árbol que satisface las siguientes propiedades: 1. 2. 3. 4. 5. 6. Cada nodo tiene como máximo M hijos. Cada nodo (excepto raíz y hojas) tiene como mínimo M/2 hijos. La raíz tiene al menos 2 hijos si no es un nodo hoja. Todos los nodos hoja aparecen al mismo nivel. Un nodo no hoja con k hijos contiene k-1 elementos almacenados. Los hijos que cuelgan de la raíz (r1, ···, rm) tienen que cumplir ciertas condiciones: 6.1 El primero tiene valor menor que r1. 6.2 El segundo tiene valor mayor que r1 y menor que r2, etc. 6.3 El último hijo tiene valor mayor que rm. La profundidad (h) es el número máximo de consultas para encontrar una clave. Organización de Archivos: Archivos Secuenciales Indexados ING. YIM ISAISA APESTEGUI FLORENTINO 26 Organización de Archivos: Archivos Secuenciales Indexados ING. YIM ISAISA APESTEGUI FLORENTINO 27 Cuando se crean árboles-B para indexar ficheros de datos en disco, intervienen otras condiciones. En ese caso interesa que el número de accesos a disco sea lo más pequeño posible. Para calcular el ORDEN se usa como dato el tamaño del cluster. Un cluster es el bloque de disco más pequeño que se lee o se escribe en una operación de acceso a disco, su tamaño suele ser distinto según el tamaño de disco y el tipo de formato que tenga, puede variar entre 512 bytes y múltiplos de esa cantidad. El ORDEN se ajusta de modo que el tamaño del nodo sea lo más próximo posible, menor o igual, al tamaño del cluster. Las operaciones que se pueden realizar en un árbol-B son básicamente tres: Insertar una clave. Eliminar una clave. Buscar una clave. Organización de Archivos: Archivos Secuenciales Indexados ING. YIM ISAISA APESTEGUI FLORENTINO 28 Organización de Archivos: Archivos Secuenciales Indexados ING. YIM ISAISA APESTEGUI FLORENTINO 29 Veamos un ejemplo. Supongamos que queremos insertar la clave 52 en el árbol. Organización de Archivos: Archivos Secuenciales Indexados ING. YIM ISAISA APESTEGUI FLORENTINO 30 Organización de Archivos: Archivos Secuenciales Indexados ING. YIM ISAISA APESTEGUI FLORENTINO 31 No hay espacio para almacenar la clave en nodo, por lo tanto creamos un nuevo nodo: Organización de Archivos: Archivos Secuenciales Indexados ING. YIM ISAISA APESTEGUI FLORENTINO 32 Ahora tenemos que promocionar la clave intermedia, insertándola en el nodo padre. El proceso puede ser recursivo, aunque el algoritmo diseñado es iterativo. Organización de Archivos: Archivos Secuenciales Indexados ING. YIM ISAISA APESTEGUI FLORENTINO 33 Veamos un ejemplo. Supongamos que queremos insertar la clave 68 en el árbol . Organización de Archivos: Archivos Secuenciales Indexados ING. YIM ISAISA APESTEGUI FLORENTINO 34 Organización de Archivos: Archivos Secuenciales Indexados ING. YIM ISAISA APESTEGUI FLORENTINO 35 ¿Este problema que implicará que aumente la altura del árbol.?.... Organización de Archivos: Archivos Secuenciales Indexados ING. YIM ISAISA APESTEGUI FLORENTINO 36 En primer lugar, dividimos nodo en dos, repartimos las claves y promocionamos el valor intermedio, el 69: Organización de Archivos: Archivos Secuenciales Indexados ING. YIM ISAISA APESTEGUI FLORENTINO 37 Ahora estamos de nuevo en la misma situación, el anterior nodo pasa a ser el nodo padre, y el padre de éste es null. Ahora procedemos igual, dividimos nodo en dos, separamos las claves, y promocionamos el valor intermedio: Organización de Archivos: Archivos Secuenciales Indexados ING. YIM ISAISA APESTEGUI FLORENTINO 38 Y otra vez repetimos el proceso, el algoritmo funciona de forma recursiva, pero en este caso nodo es null, por lo tanto estamos en un caso diferente, según el algoritmo debemos crear un nuevo nodo, hacer que ese nodo sea el de entrada, insertar la clave y actualizar los punteros: Organización de Archivos: Archivos Secuenciales Indexados ING. YIM ISAISA APESTEGUI FLORENTINO 39