Escolar Documentos
Profissional Documentos
Cultura Documentos
2.2
2.2.1 2.2.2 2.2.3 2.2.4
Ejercicios ___________________________________________________________________ 19
Bases de Datos
Bases de Datos
Inconsistencia de datos. Vamos a imaginar que un proveedor del sistema anterior cambia de direccin y se lo comunica slo al departamento de Compras y que a nadie de compras se le ocurre la feliz idea de comunicrselo al personal responsable de Ventas y Contabilidad. En este caso ya no slo tendremos los valores duplicados sino que para un mismo proveedor tendremos dos direcciones distintas en dos ficheros diferentes. Fiabilidad de datos. Muy relacionado con lo anterior, cuando no hay manera de saber si los datos que tenemos en un fichero son reales (al tener datos distintos del mismo cliente) no se puede saber cul de los datos es el ms fiable. Adems se deben introducir mecanismos para comprobar que los datos sean reales, por ejemplo que no existan clientes que realicen compras y que nacieron en 1855. Limitacin al acceso de los ficheros. La informacin contenida en los ficheros slo es accesible mediante las aplicaciones desarrolladas para los distintos departamentos. Estas cubren las necesidades de informacin de la organizacin en la mayora de las ocasiones, pero frecuentemente se requiere la emisin de un listado o la ejecucin de un proceso no contemplado en el anlisis del sistema de la informacin y, por tanto, no incluido en la aplicacin. De esta manera, el responsable Ventas puede tener necesidad de un listado de existencias ordenado por precios, cuando la aplicacin slo lo proporciona por cdigo de referencia. La nica opcin es la de pedir al departamento de desarrollo o a la empresa que desarroll el software que incluya esta opcin, con el consiguiente coste econmico y esperando que el listado no corriera prisa. Error con los accesos concurrentes. Almacn posee un terminal que decepciona las entradas de materiales recibidos y otro que controla la salida de los mismos. En un momento determinado, las existencias de cable coaxial de banda base son de 500 metros y se produce una entrada al almacn de 300 metros ms y una salida de 200 metros, al mismo tiempo. Estos dos accesos concurrentes al fichero podran ocasionar un error en la actualizacin, pudiendo perder el acceso relativo a la entrada de material (por lo que tendramos ms cable del computado) o en la salida de material (por lo que tendras computado ms material del que en realidad existe en el almacn) Problemas con la privacidad de datos. Algunos datos no deben ser accesibles por la totalidad de los usuarios del sistema. La informacin del departamento de Contabilidad, por contener datos sensibles (nmeros de cuentas de clientes y proveedores, valores de la empresa), no debe ser conocida por los usuarios de Ventas o de Compras. Seguridad en los datos. Est muy relacionada con la privacidad de los datos. En los archivos tradicionales, existen importantes dificultades para la modificacin y la eliminacin de registros. Integridad de los datos. La existencia de un fichero de clientes en Ventas y otro en Compras no significa que ambos tengan la misma descripcin de registro, ni la misma informacin cualitativa o cuantitativa. Ambos tendrn datos comunes (CIF, nombre, direccin, telfono) y datos no comunes que afectarn exclusivamente al departamento en que se encuentra. La informacin tiene que estar almacenada sujeta a unas restricciones de formato que facilite el desarrollo de aplicaciones sobre los ficheros existentes. As, se deberan de establecer mecanismos para evitar encontrarnos con datos numricos en campos como el nombre del cliente o valores negativos en el campo que indica las existencias de un determinado material.
Bases de Datos
Desde entonces, la tecnologa de bases no ha dejado de actualizarse. Los primeros sistemas estaban basados en una serie de ficheros relacionados a base de sndices o punteros y almacenados de forma secuencial, que era la forma de acceso ms fcil cuando se trabajaba con cintas magnticas. Surgen as ISAM (Indexed Sequential Access Method - Mtodo de Acceso Secuencial Indexado) y, posteriormente, VSAM (Virtual Storage Access Method Mtodo de Acceso a Almacenamiento Virtual) de IBM, con una tecnologa fcil y barata de implementar que an hoy se usa en sistemas gestores de bases de datos relacionales. Poco despus aparecen los primeros SGBD, que son sistemas centralizados o distribuidos que facilitan la definicin de bases de datos, la seleccin de las estructuras de datos y la bsqueda de datos, bien de forma interactiva bien mediante el empleo de un lenguaje de programacin (acceso a datos empotrado). Los primeros SGBD, como IMS de IBM, estaban basados en el modelo jerrquico. Les siguieron los modelos en red, como IDMS (Integrated Data Management System Sistema de Gestin de Datos Integrado) desarrollado para mainframes por B. F. Goodrich. Finalmente, la tecnologa sigui las ideas de Edgar Frank Ted Codd y sus bases de datos relacionales, que se han ido implantando paulatinamente gracias, sobre todo, a su sencillez conceptual. Una base de datos se puede definir como un conjunto de datos interrelacionados, almacenados con la mnima redundancia y fcilmente accesibles para aplicaciones y usuarios de la forma ms eficaz posible. Una base de datos es vista como un gran repositorio de informacin disponible para cualquier elemento de una organizacin que podr acceder a este almacn con independencia de dnde se encuentre almacenada y de cul vaya a ser su uso. La funcin de un SGBD es mantener la informacin de una base de datos y hacerla disponible para el usuario (o aplicaciones).
Bases de Datos
2 Los ficheros
En un fichero, la informacin se organiza en registros y, en cada registro, a cada dato individual que compone un registro se denomina campo.
Si consideramos, por ejemplo, el da que viniste a completar tu matrcula tuviste que rellenar un formulario, pues ese formulario es un registro y, cada dato que escribiste en l, un campo.
Lo ms fcil, para tardar menos en encontrar un registro en un fichero, es realizar algn tipo de ordenacin. El campo que permite diferenciar un registro de otro (por el que sera ms fcil ordenar el archivo) se denomina clave primaria o principal. Al resto de campos que permiten una ordenacin se les llama clave secundaria.
Si pensamos en un archivador, las fichas de los empleados se pueden ordenar alfabticamente por el primer apellido, junto con el segundo y con el nombre. Este conjunto de campos no es una buena clave principal, sobre todo si se tiene en cuenta que dos empleados pueden tener el mismo nombre. Sin embargo, una buena clave principal puede ser el DNI o el nmero de la Segundad Social.
Para poder utilizar un archivo, sea de datos, ejecutable, librera, etc. tiene que estar en memoria principal, que, adems, ya est parcialmente ocupada por el sistema operativo. Cuando se trabaja con ficheros, el volumen de informacin contenida en un archivo puede excesivamente grande como para mantenerlo en memoria principal. Es normal, incluso suele ser funcin del sistema operativo (memoria virtual), que la informacin de un fichero que est en memoria principal es slo la que hace falta en un momento determinado. Si hiciera falta algn dato que no est cargado, habr que realizar un acceso al dispositivo en el que se encuentra alojado el fichero. A la cantidad mnima de informacin que transfiere de/hacia el dispositivo se denomina registro fsico o bloque. El registro fsico no tiene porqu coincidir con el registro lgico, de hecho lo ms normal es que no ocupen lo mismo y que en un bloque se alojen varios registros lgicos. A la cantidad de registros lgicos que caben en un bloque se denomina factor de blocaje, siendo el bloqueo de registros a la accin de agrupar en un bloque los registros lgicos que en l se pueden almacenar.
El sistema operativo puede proporcionar al sistema algunos servicios bsicos que el SGBD puede aprovechar como base. Alguno de esos componentes son: Gestor de archivos. Se encarga de asignar el espacio en disco y la estructura de datos que se usa para representar la informacin almacenada en el disco. FAT, FAT32 y NTFS son los sistemas de gestores de archivos clsicos de Windows, mientras que los i-nodos se usan en sistemas basados en Unix. Gestor del buffer. Transfiere la informacin del disco a la memoria principal. Algunos SGBD poseen su propio gestor de archivos, como por ejemplo Oracle.
Bases de Datos
secuencia que siguen los registros dentro del fichero puede estar determinada por el valor de algn campo del registro o simplemente por el momento en que este fue inscrito en el fichero. Las operaciones que se pueden realizar son: Aadir. La adicin de datos slo se puede realizar al final de fichero, justo detrs del ltimo registro, como si fuera una cola. Consulta / recuperacin. Se realiza de forma secuencial, es decir, para leer un registro que ocupa la posicin N es necesario leer previamente los N 1 registros anteriores. Operaciones de actualizacin del fichero (insercin, modificacin y eliminacin). Estas acciones no son fciles en un fichero secuencial. La actualizacin de un fichero secuencial obliga a escribirlo de nuevo totalmente, ya que no puede haber espacios entre los registros y la adicin siempre se hace al final del fichero. La actualizacin se realiza por medio del programa que usa el fichero, que usar como entrada el fichero que se va a actualizar y un fichero temporal intermedio denominado fichero de movimientos. El resultado final es un nuevo fichero con las actualizaciones. El fichero de movimientos es tambin secuencial y almacenar las modificaciones a realizar en el fichero.
2) Si el bloque est completamente ocupado y no cabe un nuevo registro, este habr que repartirlo en dos bloques, de manera que para acceder al registro deberemos llevar a memoria principal dos bloques, con la consiguiente prdida de tiempo.
Bases de Datos
1) El tipo de registros contenidos en un fichero pueden ser distintos. Esto no ocurre en las bases de datos relacionales, pero es normal para las bases de datos jerrquicas y en red. 2) la longitud de los campos es variable (no ocupa el nombre de una persona que el nombre de otra). 3) Existen campos con valores repetidos (dos personas que vivan en el mismo domicilio). Para conseguir solucionar estos problemas podemos elegir entre varias alternativas: A) Cadena de bytes. Fsicamente se implementa de varias formas: a. La ms habitual es aadir a cada registro, al principio, un campo que indique el tamao del registro, de forma que primero se accede a este campo y, despus, para acceder a los datos, a los bytes indicados en el primer campo. Tiene el gran problema del espacio utilizado, ya que para aprovechar el espacio liberado por un registro se necesita otro de igual o menor tamao, provocando una gran fragmentacin de la informacin.
b. Marca de final de de registro. Consiste en colocar una marca especial (un carcter o una sucesin de bits) que determina el final de cualquier registro del archivo.
Los principales problemas que presenta la tcnica de cadena de bytes es la dificultad de reutilizacin el especio libre dejado por un registro borrado y la falta de espacio que pueden tener los registros que no paran de crecer, provocando su continua reubicacin en disco. B) Utilizar registros de longitud fija para representar registros de longitud variable. En este caso podemos encontrar varias opciones: a. Espacio reservado. Hay que decidir de antemano cul va a ser la longitud mxima que va a tener cada registro (N) y se dispone la estructura de archivo con registros de longitud fija N. Si al registro le sobran bytes, se sitan al final del registro y se marcan como no usados. El sistema funciona si todos los registros tienen un tamao prximo a N. b. A base de punteros. Se utilizan punteros para cuando la informacin es superior al tamao del registro de longitud fija. Veamos dos posibilidades: i. Los registros de longitud fija tienen un campo adicional que sirve como puntero. Si algn registro necesita otro campo adicional, su puntero indicar cul es la posicin del siguiente registro de longitud fija que contiene datos adicionales. Este sistema supone que existen unos campos bsicos que se dan en todos los registros y campos que pueden aparecer repetidos, como se puede observar en la siguiente figura:
Ilustracin 6. Longitud variable con longitud fija a base de punteros (opcin 1).
Bases de Datos
Como se puede observar, existe un desperdicio claro de espacio y abre la posibilidad a la duplicidad innecesaria de informacin. ii. Bloque ancla y bloque de desborde. El bloque ancla tiene la primera secuencia de cada tipo de registro. Si hay algn registro con un campo de varios valores, el resto irn al bloque de desborde y se encadenarn, tanto el registro del bloque ancla con el correspondiente primero del bloque de desborde, como entre s los posibles registros del bloque de desborde correspondientes al mismo registro del bloque ancla. Esta estructura es ms difcil de gestionar, pero se desperdicia slo el espacio de los punteros.
Ilustracin 7. Longitud variable con longitud fija a base de punteros (opcin 2).
Bases de Datos
El problema se plantea cuando se desea realizar la insercin de un nuevo registro, ya que hay que conservar el orden. Una solucin sera reorganizar el archivo, copiando en un archivo auxiliar la parte de fichero que queda por debajo del nuevo registro, insertar el nuevo registro y aadir, posteriormente, los registros del fichero auxiliar. Sin embargo, esta solucin es muy costosa, tanto en tiempo como en espacio de memoria principal. Otra solucin consiste en aprovechar el puntero para implementar una zona de desbordamiento que mantenga la secuencia lgica marcada por la llave. Esta estrategia de insercin se expone en la siguiente figura:
Para esta estructura, hay que intentar que los bloques de desdoble estn prximos al archivo secuencial en disco, para que las lecturas de datos sean ms eficientes, evitando, en la medida de lo posible, varios accesos a disco. Si se realizan muchas inserciones en un disco, es posible que la mayor parte del fichero se encuentre en la zona de desbordamiento, en cuyo caso se debe de incluir algn mecanismo para reestructurar el archivo. El archivo ndice sirve para acceder de forma directa a la informacin que interesa. Bsicamente existen dos tipos de ndices: 9
Bases de Datos
ndice denso. En el archivo ndice va a existir un registro por cada valor diferente de la llave de bsqueda en el archivo de datos. Este registro ndice contiene el valor de la llave de bsqueda y un puntero al registro del archivo que la contiene. La bsqueda del valor de la clave en el fichero ndice se realiza de forma secuencial y ser especialmente costoso si el conjunto de valores de la llave es grande. De igual manera, una vez encontrada la llave, el acceso al valor concreto en el fichero de datos se hace de forma secuencial. ndice escaso. En el archivo ndice existen menos registros que valores distintos de la llave de bsqueda. Por tanto, no todos los valores de la llave de bsqueda estn en el archivo ndice. Para buscar un registro, localizamos secuencialmente el primer registro ndice con el valor de llave de bsqueda mayor o igual que el valor de la llave de bsqueda que estamos localizando. Se empieza por el registro al que apunta el registro ndice y se siguen los punteros secuencialmente del archivo de datos hasta encontrar el registro deseado.
Como se puede apreciar, el ndice denso es ms rpido pero ocupa ms espacio en disco y exige un mantenimiento adicional para inserciones y borrados.
Para mejorar el rendimiento de la base de datos se pueden montar estructuras donde el archivo ndice (escaso) se construye de firma que existe un registro ndice por cada bloque de informacin, de esta forma, una vez que el bloque requerido est en memoria, el tiempo que se necesita para examinar el bloque completo es insignificante. Interesa mantener todo el ndice en memoria principal mientras se estn realizando las consultas sobre el archivo. Esto es slo posible para ndices que ocupen poco espacio, mientras que los vistos anteriormente crecen en la misma medida en que crezca el archivo que indexan. La solucin consiste en montar ndices escasos en ms de un nivel, es decir, se trata el ndice como si fuera otro archivo y se construye un ndice escaso sobre l, como se aprecia en la figura 12.
10
Bases de Datos
La forma de localizar un dato es repetir el proceso para ndices escasos pero para dos niveles. Si el archivo es muy grande, puede que el ndice exterior no quepa en memoria. En este caso se aade otro nivel ms a la estructura y as sucesivamente.
Un rbol B+ se define por su orden (N), que es el nmero mnimo de llaves referenciadas en cada nodo, es decir nmero ms pequeo de hijos que puede tener un nodo. En funcin del orden del rbol podemos decir que: Cada nodo puede contener entre n y 2n valores llave, siendo una excepcin el nodo raz que puede tener menos de n valores de llave. Cada nodo slo puede ser una hoja (nodo sin hijos) o es un nodo con m+1 hijos, donde m es el nmero de valores llave que contiene el nodo padre. Los valores de disco son referenciados slo por los nodos hoja.
11
Bases de Datos
La estructura de un nodo hoja en un rbol B+, como se puede apreciar en la figura 14, es un vector como el siguiente:
Los valores de la llave de bsqueda dentro de un nodo se guardan en un determinado orden, de modo que si i < j, entonces Ki < Kj. En un nodo hoja, Pi apunta a cualquier registro del archivo con un valor de llave de bsqueda Ki, o a una cubeta de punteros cada uno de los cuales apunta a un registro del archivo con valor de llave de bsquda Ki (aunque esto se utiliza si la llave de bsqueda no es la llave primaria del archivo y no est ordenado por el orden de la llave de bsqueda) o bien al primer registro de una lista (como en los ndices escasos). Los nodos del rbol B+ que no son hojas forman un ndice escaso de varios niveles para los nodos hoja. La estructura de los nodos que no son hoja es la misma que la de los nodos hoja, excepto que todos los punteros apuntan a nodos del rbol (en lugar de al registro correspondiente al archivo). Esta estructura de los nodos que no son hoja es:
Cada Bi apunta a otro nodo que puede ser hoja o no hoja (entonces ser otro subndice). Si un nodo no hoja contiene m punteros y 1 < i < m, entonces el puntero Bi apunta a la estructura que contiene los valores de la llave de bsqueda menores que Ki y mayores o iguales que Ki-1. El puntero Bm apunta a la parte del subrbol que contiene aquellos valores de la llave de bsqueda mayores o iguales a Km-1. Finalmente, el puntero B1 apunta a la parte del subrbol que contiene aquellos valores de la llave de bsqueda menores que K1. Para realizar una consulta en los registros cuyo valor de llave es K se examen los nodos no hoja empezando por la raz del rbol B+: 12
Tema 1. Diseo de bases de Datos Si K < K1, se sigue la bsqueda por B1. Si K K2n, se sigue la bsqueda por B2n+1. Si Ki-1 K Ki, se sigue la bsqueda por Bi.
Bases de Datos
Busquemos en el rbol de la Ilustracin 14. Ejemplo de rbol B+. el registro cuya llave de bsqueda es 18:
Al llegar a un nodo hoja el puntero Pi no seala el registro buscado, donde Ki = K. Al procesar una consulta se atraviesa un camino en el rbol desde la raz hasta un nodo hoja. Si hay K valores de la llave de bsqueda en el archivo, el camino no es ms largo que logn(K). En la prctica, significa que slo se necesita tener acceso a unos pocos nodos aunque el archivo sea muy grande. En la mayora de los casos, un nodo se hace para que tenga el mismo tamao que un bloque de disco. As, aunque tengamos un milln de valores de la llave de bsqueda en el archivo, una bsqueda requerir el acceso a entre 3 y 6 nodos. Para la insercin y el borrado de registros son un poco ms cuidadosas porque no se puede olvidar que el rbol tiene que estar, en todo momento, balanceado, lo que significa que se tendr que reestructurar en el caso que se pierda el equilibrio. Para insertar un nuevo registro, suponiendo que la llave no existe, se sigue el siguiente algoritmo: Se determina el nodo hoja L en el que se debe hacer la insercin. Si cabe en el nodo (es decir ni hay como mximo 2n-1 registros), se inserta en el punto que corresponda. Si no cabe en el nodo (si en el nodo ya existen 2n registros): o Se crea un nuevo nodo a la derecha de L. o Se redistribuyen las 2n+1 llaves de bsqueda (incluida la que se va a insertar), de manera que las n primeras se dejan en el nodo L y las dems en el nuevo nodo que se acaba de crear. o El nuevo nodo se pone como hijo del mismo padre que el nodo L, insertando la primera llave de bsqueda del nuevo nodo en el nodo padre. Esta insercin puede ocasionar una nueva particin, en este caso del nodo padre, y seguir recursivamente hasta llegar hasta la raz.
Ejemplo. Vamos a construir un rbol B+ de orden 2 en el que se van a insertar el siguiente conjunto de valores de llave de bsqueda, respetando siempre el orden de entrada: 8, 18, 4, 14, 6, 16, 2, 12, 7, 9, 1, 19, 5, 21, 13, 3, 15, 17, 10, 20 y 11. Completamos el nodo raz con los primero cuatro valores (ordenados, claro est): El siguiente dato provoca la particin (insertamos 6, 16 y 2):
13
Bases de Datos
Para borrar, suponiendo que la llave corresponde a un nico registro, se sigue el siguiente mtodo: Se localiza el nodo hoja L donde se encuentra la llave que se desea borrar y se elimina. Si el nodo L queda con menos de n llaves (el orden del rbol): o Consideramos el nodo hermano (hijo del mismo nodo padre) de la derecha, salvo si el nodo L es el hijo de la derecha del nodo padre, en cuyo caso se considera el nodo hermano de la izquierda (tambin se puede seguir la estrategia inversa, tratando, en este caso, los hechos de modo similar). o Si en el hermano cabe todas la llaves del nodo L, se almacenan en l y se elimina el nodo L y se ajustan las llaves de los subndices superiores. o Si en ese hermano no caben todas las llaves del nodo L, se redistribuyen las m llaves (las n-1 llaves del nodo L junto a las de su hermano), de forma que las m/2 primeras llaves se ponen a la izquierda y, las dems, en el nodo de la derecha. Por ltimo se arreglan los valores de las llaves de los nodos superiores. 14
Bases de Datos
Siguiendo con el ejemplo anterior, vamos a borrar las llaves de bsqueda 8, 2 y 3. Borramos la llave 8, provocando la fusin con el hermano de la izquierda (por la excepcin), y 2:
Una cubeta es un conjunto de bloques que estn encadenados a base de una cabecera de bloque, con la particularidad de que cada bloque slo puede aparecer en una cubeta.
15
Bases de Datos
Se va a disponer de una llave de acceso al archivo, a la que se le aplicar una funcin de direccionamiento y se transformar en una direccin de M bits. Estos M bits se irn utilizando de izquierda a derecha segn se necesite en cada momento. En el momento de creacin del archivo, slo se utilizar un bit. Cuando se crea el archivo se crea una tabla, llamada tabla de direcciones o directorio, que ser la forma de acceder al archivo. El esquema general de esta organizacin se expone en la Ilustracin 18. Esquema general del clculo de direccin extensible. La letra i indica que se requieren i bits de la asociacin H(K) para determinar la cubeta concreta para K. este nmero cambiar segn el archivo vaya creciendo o disminuyendo. Aunque se requieren i bits para encontrar la entrada correcta en el directorio, varias entradas consecutivas de la tabla pueden apuntar a la misma cubeta. Todas esas entradas tendrn un prefijo comn de asociacin, pero la longitud de este prefijo puede ser menor que i. Por tanto, a cada cubeta se le asocia un entero que indica la longitud del prefijo comn de asociacin. En la figura anterior, el entero asociado a la cubeta j se representa como ij. El nmero de entradas del directorio que apunta a la cubeta es 2i-ij. La forma de localizar la cubeta correspondiente al valor de la llave de bsqueda K es mirar en la entrada del directorio correspondiente a los i bits (empezando por la izquierda) de H(K) y seguir el puntero. Para insertar un nuevo registro con valor de la clave de bsqueda K, en primer lugar se sigue el proceso explicado anteriormente para localizar la cubeta j que le corresponde. Si la cubeta no est llena, entonces se puede insertar la informacin en esa cubeta. Si la cubeta est llena, habr que partirla y redistribuir los registros ya existentes ms el nuevo. Hay determinar si el directorio debe o no crecer, es decir, si se necesita o no aumentar el nmero de bits que se usan en la asociacin. Esto se va a determinar en funcin de los valores de i e ij: Si i = ij entonces slo una entrada en el directorio apunta a la cubeta j, por tanto es necesario aumentar el tamao del directorio, de forma que pueda incluir punteros a las dos cubetas que resulta de la particin de la cubeta j. Esto se hace considerando el siguiente bit de la funcin de asociacin, con lo que se incrementa en un el valor de i y, por tanto, se duplica el tamao del directorio. Cada entrada del directorio se divide en dos, manteniendo ambas el puntero de la entrada original. En este momento hay dos entradas apuntando a la cubeta j. Se crea una nueva cubeta z y se hace que la segunda entrada que apunta a j apunte ahora a z. Los valores de ij e iz pasan a valer i. se vuelve a insertar (reasociar) todos los registros de la cubera j (con el nuevo valor de i), que podrn ir tanto a j como a z y se intenta de nuevo insertar el registro de valor K. Generalmente este nuevo intento tendr xito, pero si todos los registros de la antigua j han ido a parar a la misma cubeta nueva y a esa precisamente va a parar tambin el nuevo registro (es decir, todos los registros tienen el mismo prefijo de asociacin), entonces no se podr insertar y habr que volver a partir la cubeta como se ha descrito. Si i > ij entonces hay ms de una entrada del directorio que apunta a j y, por tanto, no es necesario aumentar el tamao del directorio. Se asigna una nueva cubeta z y se actualizan los valores ij e iz al original ms uno. Es necesario reajustar las entradas del directorio que apuntaban antes a j, para ello se dejan la primera mitad apuntando a j y la segunda mitad se hace que apunten a z. se vuelven a insertar (reasociar) todos los registros de la antigua j y se intenta de nuevo la insercin del nuevo registro y, si falla, se vuelve a aplicar el caso anterior (i = ij) o este (i > j) de nuevo. 16
Bases de Datos
Ejemplo. Si H(x) = x mod 7 con M = 3 y el tamao de la cubeta es 4 (N = 4), inserta en el orden dato los siguientes valores de clave: 15, 30, 14, 32, 45, 8, 28, 7, 21, 72, 75 y 9. Tabla de asociacin (x mod 7)
X 15 30 14 32 45 8 28 7 21 72 75 9 H(X) 1 2 0 4 3 1 0 0 0 2 5 2 Binario 001 010 000 100 011 001 000 000 000 010 101 010
Insertamos los primeros 4 valores (hasta llegar a N), insertamos 15, 30, 14 y 32:
Insertamos el valor 45, aumentando el valor del directorio y los bits de prefijo usados en las cubetas:
Al insertar otro valor que empiece por 0 tenemos que crear una nueva cubeta (valores 8 y 28):
17
Bases de Datos
Para borrar se sigue un procedimiento similar, pero teniendo en cuenta que al eliminar el registro de la cubeta puede que esta se quede vaca, implicando la fusin de cubetas y la reduccin del directorio.
Por ejemplo, vamos a pensar que eliminamos el valor marcado con una flecha de la siguiente figura:
18
Bases de Datos
El problema principal que presenta esta tcnica es que se debe realizar una estimacin previa del nmero N. Si una vez implementado el sistema, existen ms de N registros con el mismo valor de direccionamiento, habra que crear cubetas de desbordamiento, con la prdida de rendimiento que supone, o bien cambiar los valores de N y M y reorganizar la estructura. La ventaja principal de esta tcnica es que el rendimiento no disminuye conforme crece el archivo, adems, se requiere un espacio extra adicional mnimo, ya que la tabla de direcciones contiene punteros y las cubetas se van asignando de forma dinmica.
3 Ejercicios
1. Existen otras arquitecturas de ficheros, busca informacin acerca de estructuras como: a. Archivos de registros organizados en bloques. b. Tcnicas de almacenamiento para los SGBD relacionales. c. Estructura de la informacin en Oracle. 2. Explica la forma en que se borran registros en ficheros secuenciales indexados (no tengas en cuenta los ndices). 3. Busca estrategias de insercin y borrado para archivos secuenciales indexados con ndice denso. 4. Construye un ndice de rbol B+ para el siguiente conjunto de valores llave de bsqueda: 5, 10, 15, 20, 25, 30, 35, 40, 45 y 50, suponiendo que el orden del rbol es N = 2. 5. Inserta, en el rbol del ejercicio anterior, las llaves de bsqueda 22, 24 y 21. Borra, del rbol final, las llaves de bsqueda 40 y 35. 6. Inserta en un ndice de rbol B+ las llaves de bsqueda 99, 18, 10, 20, 5, 65, 12, 9, 25, 92, 52 y 68. Elimina las llaves de bsqueda 65, 20, 12 y 5. Considera que el rbol B+ es de orden 2. 7. Determina la estructura de clculo de direccin extensible para un archivo en el que se utiliza la funcin de clculo de direccin H(x) = x mod 9, el tamao de la cubeta es de 4 registros y los valores de bsqueda son: 15, 10, 11, 17, 6, 13, 2, 16, 14, 0, 9, 7, 4, 1, 12, 24, 20, 33 y 8.
19