Bases de Datos Andrea Rodrı́guez Introducción Acceso a Bases de Datos Modelo Fı́sico M. Andrea Rodrı́guez-Tastets Universidad de Concepción,Chile www.inf.udec.cl\ ∼andrea andrea@udec.cl II Semestre - 2014 Grabación de Registros de un Fichero de Disco Organización de Archivos Otras Organizaciones Índices Índices de un solo Nivel Índices Multinivel Bases de Datos Andrea Rodrı́guez Introducción Acceso a Bases de Datos Grabación de Registros de un Fichero de Disco Organización de Archivos Introducción Acceso a Bases de Datos Grabación de Registros de un Fichero de Disco Organización de Archivos Otras Organizaciones Índices Otras Organizaciones Índices Índices de un solo Nivel Índices Multinivel Índices de un solo Nivel Índices Multinivel Bases de Datos Andrea Rodrı́guez Introducción Acceso a Bases de Datos Grabación de Registros de un Fichero de Disco Objetivos de la Unidad Entender el modelo fı́sico y sus consecuencias en el rendimiento de un motor de base de datos relacional Organización de Archivos Otras Organizaciones Índices Índices de un solo Nivel Índices Multinivel Bases de Datos Andrea Rodrı́guez Modelo Fı́sico Introducción Acceso a Bases de Datos I Define conceptos para implementar el modelo lógico I Implementación integrado de un modelo de datos con procesamiento de consulta. I Considera aspectos de eficiencia y tolerancia a fallas I ¿Por qué aprender un Modelo Fı́sico? I I Para poder escoger entre DBMS Para usar las facilidades de un DBMS para mejoras de perfeccionamiento. Por ejemplo, una consulta está corriendo muy lento, uno puede crear un ı́ndice. Si la actualización es muy lenta uno elimina el ı́ndice y lo reconstruye después de las actualizaciones. Grabación de Registros de un Fichero de Disco Organización de Archivos Otras Organizaciones Índices Índices de un solo Nivel Índices Multinivel Bases de Datos Almacenamiento Externo Andrea Rodrı́guez Introducción I Discos: Pueden recuperar páginas aleatorias con un costo fijo, pero leer muchas páginas consecutivas es más lento que leerlas en forma aleatoria. Acceso a Bases de Datos Grabación de Registros de un Fichero de Disco I Cintas: Pueden recuperar páginas sólo en forma secuencial. Organización de Archivos I Organización de archivo: Método de ordenar archivos de registros en almacenamiento externo. Otras Organizaciones Índices I I I Record id (rid) es suficiente para localizar fı́sicamente un registro ı́ndices, son estructuras de datos que permiten encontrar los id de registros con valores dados en campos de llaves de búsqueda de ı́ndices Arquitectura: El administrador de buffer mueve páginas de memoria secundaria a principal. Índices de un solo Nivel Índices Multinivel Bases de Datos Andrea Rodrı́guez Introducción Acceso a Bases de Datos Enfoque Básico Dado que las operaciones de E/S son consumidoras de tiempo, la idea es reducir al mı́nimo el número de accesos a disco. Grabación de Registros de un Fichero de Disco Organización de Archivos Otras Organizaciones Índices Índices de un solo Nivel Índices Multinivel Bases de Datos Andrea Rodrı́guez Acceso a Bases de Datos I I I El DBMS (SGBD) decide cuál registro necesita y solicita al manejador de archivos que extraiga dicho registro. El manejador de archivos decide cuál página contiene el registro buscado y le solicita al manejador de disco que lea esa página. (Recordar que una página es la unidad de E/S, es decir, es la cantidad de datos transferidos entre el disco y la memoria principal en un solo acceso al disco). El manejador de disco determina la localización fı́sica de la página en el disco y realiza la operación de E/S necesaria. Introducción Acceso a Bases de Datos Grabación de Registros de un Fichero de Disco Organización de Archivos Otras Organizaciones Índices Índices de un solo Nivel Índices Multinivel Bases de Datos Andrea Rodrı́guez Acceso a Bases de Datos Introducción Acceso a Bases de Datos DBMS Solicita registro almacenado Solicita página almacenada Devuelve registro almacenado Manejador de archivos Organización de Archivos Devuelve página almacenada Manejador de disco Operación de E/S en disco Otras Organizaciones Índices Datos leídos del disco Base de Datos Almacenada Grabación de Registros de un Fichero de Disco Índices de un solo Nivel Índices Multinivel Bases de Datos Andrea Rodrı́guez Manejador de Disco (1/2) Introducción Acceso a Bases de Datos I Es un componente del sistema operativo subyacente. Se encarga de todas las operaciones fı́sicas de E/S. I Cuando el manejador de archivos necesita la lectura de una página p, el manejador de disco necesita saber dónde está situada esa página en el disco fı́sico. Por lo tanto, maneja la correspondencia entre páginas p y direcciones fı́sicas en el disco. I El conjunto de páginas del disco se divide en un subconjunto de páginas ocupadas, con intersección vacı́a y un conjunto de páginas libres (disponibles). I Cada uno de estos conjuntos tiene un identificador, ası́ como también cada página del disco. Grabación de Registros de un Fichero de Disco Organización de Archivos Otras Organizaciones Índices Índices de un solo Nivel Índices Multinivel Bases de Datos Andrea Rodrı́guez Manejador de Disco (2/2) Introducción Acceso a Bases de Datos I Las operaciones que realiza el manejador de disco son las siguientes: I I I I I Leer la página p del conjunto de páginas c Reemplazar la página p dentro del conjunto c Agregar una nueva página p dentro c (obtener una página vacı́a del conjunto de páginas de espacio libre y devolver el número de página p) Eliminar de c (volver a p al conjunto de páginas de espacio libre). La función principal del manejador de disco es conocida como administración de páginas. Grabación de Registros de un Fichero de Disco Organización de Archivos Otras Organizaciones Índices Índices de un solo Nivel Índices Multinivel Bases de Datos Andrea Rodrı́guez Manejador de Archivos Introducción Acceso a Bases de Datos I I Cada conjunto de páginas contendrá uno o más archivos y cada archivo almacenado tiene un identificador, al igual que los registros. Un archivo es un conjunto de registros Las operaciones que realiza el manejador de archivos son las siguientes: I I I I I I Leer el registro almacenado r del archivo almacenado a Reemplazar r por otro en a Agregar un registro r (devuelve el identificador de registro) Eliminar r de a Crear a Eliminar a Grabación de Registros de un Fichero de Disco Organización de Archivos Otras Organizaciones Índices Índices de un solo Nivel Índices Multinivel Bases de Datos Andrea Rodrı́guez Registros y tipos de Registros Introducción I Los datos se almacenan casi siempre en forma de registros. Acceso a Bases de Datos I Los registros son un conjunto de valores o elementos de datos relacionados y donde cada uno ocupa uno o más bytes y corresponde a un campo. Grabación de Registros de un Fichero de Disco I I Una colección de tipos de campos y sus tipos de datos correspondientes constituye una definición de tipo de registro o formato de registro. En aplicaciones recientes de bases de datos, puede ser necesario almacenar datos que consisten en objetos grandes no estructurados, que corresponden a imágenes, flujos de video o audio digitalizado, o texto libro. Estos se denominan BLOB (binary large objects). Por lo general un BLOB se almacenan aparte del registro. Organización de Archivos Otras Organizaciones Índices Índices de un solo Nivel Índices Multinivel Bases de Datos Andrea Rodrı́guez Introducción Tipos de Registros I Los registros de un archivo son del mismo tipo, pero uno más campos pueden tener tamaño variable. I Los registros de largo fijo facilitan su manipulación, ya que se la localización de campos se determina a partir de esta longitud fija. I Para registros de longitud variable, se utilizan caracteres separadores o una secuencian de pares < nombre de campo, valor de campo >. Acceso a Bases de Datos Grabación de Registros de un Fichero de Disco Organización de Archivos Otras Organizaciones Índices Índices de un solo Nivel Índices Multinivel Bases de Datos Andrea Rodrı́guez Proceso de Carga Introducción Acceso a Bases de Datos I Base de datos vacı́a I Insertar proveedores P1 , P2 , P3 , P4 y P5 . Se crea el conjunto de páginas de Proveedores I Insertar Productos pr1 , pr2 , pr3 , pr4 , pr5 , pr6 . Se crea el conjunto de páginas de Productos. I Insertar un nuevo proveedor P6 . I Eliminar el Proveedor P2 I Insertar un nuevo producto pr7 . I Eliminar el Proveedor P4 . Grabación de Registros de un Fichero de Disco Organización de Archivos Otras Organizaciones Índices Índices de un solo Nivel Índices Multinivel Bases de Datos Andrea Rodrı́guez Introducción Acceso a Bases de Datos Proceso de Carga 0 1 6 7 pr1 P1 pr2 2 8 P2 pr3 3 9 P3 pr4 4 10 P4 pr5 5 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 Después de la inserción de P1 , P2 , P3 , P4 , P5 , pr1 , pr2 , pr3 , pr4 , pr5 , pr6 . Grabación de Registros de un Fichero de Disco P5 pr6 Organización de Archivos Otras Organizaciones Índices Índices de un solo Nivel Índices Multinivel Bases de Datos Andrea Rodrı́guez Introducción Acceso a Bases de Datos Proceso de Carga 0 1 6 pr1 12 P6 7 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 P1 pr2 2 Grabación de Registros de un Fichero de Disco 8 pr7 pr3 3 9 P3 pr4 4 10 5 pr5 11 P5 pr6 Después de la inserción P6 , eliminar P2 , insertar pr7 y eliminar P4 . Organización de Archivos Otras Organizaciones Índices Índices de un solo Nivel Índices Multinivel Bases de Datos Andrea Rodrı́guez Introducción Proceso de Carga I I Si la carga inicial de la base de datos considera un buen agrupamiento, ¿qué pasa después de sucesivas inserciones y eliminaciones? Para garantizar que páginas lógicamente adyacentes lo sean fı́sicamente se utilizan punteros. Ası́, cada página tendrá un encabezado, que se utiliza como información de control. Este encabezado incluye la dirección fı́sica en el disco de la página que sigue a esa página dentro de la secuencia lógica. Acceso a Bases de Datos Grabación de Registros de un Fichero de Disco Organización de Archivos Otras Organizaciones Índices Índices de un solo Nivel Índices Multinivel Bases de Datos Andrea Rodrı́guez Introducción Acceso a Bases de Datos Grabación de Registros de un Fichero de Disco Proceso de Carga 0 x 1 6 7 pr1 P6 P1 3 pr2 8 2 8 pr7 pr3 6 3 9 9 P3 5 pr4 10 4 10 5 pr5 11 11 P5 12 pr6 12 Organización de Archivos 13 14 15 16 17 Otras Organizaciones 18 19 20 21 22 23 Índices 24 25 26 27 28 29 12 x Índices de un solo Nivel Índices Multinivel Bases de Datos Andrea Rodrı́guez Proceso de Carga Introducción Acceso a Bases de Datos I La pregunta es entonces, ¿Cómo sabe el manejador de disco dónde están situados los diversos conjuntos de páginas?, ¿Cómo localiza la primera página? Se define en página cero del disco un directorio: Páginas Dirección de inicio Espacio libre 4 Proveedores 1 Productos 6 Ası́, la función principal del manejador de archivos es la administración de registros almacenados. Los registros almacenados se sitúan en la parte superior de la página. Grabación de Registros de un Fichero de Disco Organización de Archivos Otras Organizaciones Índices Índices de un solo Nivel Índices Multinivel Bases de Datos Organización de archivos Andrea Rodrı́guez Introducción I I Existen varias estructuras de almacenamiento, con diferentes niveles de desempeño, unas más adecuadas que otras, dependiendo del tipo de aplicaciones. Un SGBD, debe manejar varias de estas estructuras, con el objeto de almacenar diferentes porciones de la base de datos en diferentes formas. Acceso a Bases de Datos Grabación de Registros de un Fichero de Disco Organización de Archivos Otras Organizaciones Índices I Alternativas: I I Archivos de pila (orden aleatoria), el cual es adecuado para accesos de barrido (scan) que recuperan todos los registros. Archivos ordenados, útil para registros que deben ser recuperados en cierto orden usando ı́ndices que aceleran la búsqueda para algunos tipos de registros Índices de un solo Nivel Índices Multinivel Bases de Datos Andrea Rodrı́guez Introducción Direccionamiento Calculado I I Otro tipo de organización primaria de archivos se basa en el direccionamiento calculado o hashing que proporciona un acceso muy rápido a los registros con ciertas condiciones de búsqueda. Consiste en establecer una función de direccionamiento calculado o función de aleatorización que se aplica al valor de direccionamiento calculado o clave y produce la dirección de bloque en disco en el está almacenado el registro. Acceso a Bases de Datos Grabación de Registros de un Fichero de Disco Organización de Archivos Otras Organizaciones Índices Índices de un solo Nivel Índices Multinivel Bases de Datos Andrea Rodrı́guez Introducción Acceso a Bases de Datos Direccionamiento Calculado Interno I Se implementa como una tabla hash a través del uso de un array de registros. Supongamos que el intervalo del ı́ndice del array va de 0 a M − 1, entonces tenemos M casillas cuyas direcciones corresponden a ı́ndices del array. Grabación de Registros de un Fichero de Disco Organización de Archivos Otras Organizaciones Índices Índices de un solo Nivel Índices Multinivel Direccionamiento Calculado Externo para Ficheros de Disco (1/3) Bases de Datos Andrea Rodrı́guez Introducción I I I El direccionamiento calculado en ficheros de disco se denomina direccionamiento calculado externo. El espacio de direccionamiento de destino se divide en cubetas, cada una de las cuales contiene varios registros. Cada cubeta es un bloque en disco o bien un grupo de bloques contiguos. La función hash establece una correspondencia entre la clave y el número de cubeta relativo, en vez de asignar una dirección absoluta de bloque a la cubeta. I Una tabla que se encuentra en la cabecera del fichero convierte el número de cubeta en la dirección de bloque de disco correspondiente. I El problema de colisiones en menos grave cuando se usan cubetas porque podrán asignarse a la misma cubeta tantos registros como quepan en la misma, sin causar problemas. Acceso a Bases de Datos Grabación de Registros de un Fichero de Disco Organización de Archivos Otras Organizaciones Índices Índices de un solo Nivel Índices Multinivel Direccionamiento Calculado Externo para Ficheros de Disco (2/3) Bases de Datos Andrea Rodrı́guez Introducción I I I Para cuando el problema de colisiones con cubetas persista, se puede emplear una variante del encadenamiento en la que mantenemos en cada cubeta un puntero a una lista enlazada de registros de desbordamiento para esa cubeta. Los punteros de la lista enlazada deberán ser punteros a registros (dirección de bloque y posición relativa). El direccionamiento hashing ofrece el acceso más rápido posible para recuperar registros arbitrarios, dado el valor de su campo de direccionamiento. Aunque la mayor parte de las funciones hash buenas no mantienen el orden de los registros de los valores de campo, algunas de ellas lo hacen. Un ejemplo de una función hash que preserva el orden es tomar los tres dı́gitos del campo número de factura como función hash y mantener los registros ordenados por factura dentro de cada cubeta. Acceso a Bases de Datos Grabación de Registros de un Fichero de Disco Organización de Archivos Otras Organizaciones Índices Índices de un solo Nivel Índices Multinivel Bases de Datos Andrea Rodrı́guez Introducción Direccionamiento Calculado Externo para Ficheros de Disco (3/3) I El esquema descrito anteriormente se denomina hashing estático, porque se asigna un número fijo de cubetas, lo que es limitante al instante de manejar en forma óptima el espacio ya que limita la espansión o contracción de archivos dinámicamente. Dos opciones a eso son: direccionamiento hash extensible o lineal. Acceso a Bases de Datos Grabación de Registros de un Fichero de Disco Organización de Archivos Otras Organizaciones Índices Índices de un solo Nivel Índices Multinivel Bases de Datos Andrea Rodrı́guez Direccionamiento Calculado Externo Extensible (1/2) Introducción I I I d Se mantinen un tipo de directorio (array de 2 direcciones de cubeta) donde d es a profundidad global del directorio. El valor entero que corresponde a los primeros d bits (los más significativos) de un valor hash se usan como ı́ndice de array para determinar una entrada del directorio, y la dirección contenida en esa entrada determinará la cubeta en la se almacena el registro. 0 Varias posiciones del directorio que tengan los mismo d bits en sus valores hash pueden contener la misma dirección de cubeta si todos los registros que se direccionan en esas posiciones caben en una sola cubeta. Una profundidad local d 0 especifica el número de bits en el que se basa el contenido de la cubeta. Acceso a Bases de Datos Grabación de Registros de un Fichero de Disco Organización de Archivos Otras Organizaciones Índices Índices de un solo Nivel Índices Multinivel Bases de Datos Andrea Rodrı́guez Introducción Direccionamiento Calculado Externo Extensible (2/2) I I I El valor d se puede aumentar o reducir en uno cada vez, con lo cual se duplicará o reducirá a la mitad el número de entradas de array de directorio. Se duplicará si se desborda una cubeta con profundidad local d 0 que es igual a la profundidad global d. Se podrá reducir después de varias eliminaciones. La recuperación de un registro requerirá dos accesos, uno al directorio y otro a la cubeta. Acceso a Bases de Datos Grabación de Registros de un Fichero de Disco Organización de Archivos Otras Organizaciones Índices Índices de un solo Nivel Índices Multinivel Bases de Datos Andrea Rodrı́guez Direccionamiento Calculado Lineal(2/2) I La idea es permitir que el fichero aumente o disminuya dinámicamente sin necesidad de un directorio. I Supongamos que el fichero comienza con M cubetas e utiliza la función h(K ) = KmodM, la cual se denomina función hash inicial. I El uso de cadenas de desbordamiento es necesario. Pero cuando se produce un desborde, la primera cubeta del fichero (cuberta 0) se divide en dos: la cubeta original 0 y una nueva cubeta M al final del fichero. Los registros que originalmente estaban en la cubeta 0 se distribuyen en las dos cubetas basada en hi+1 (K ) = Kmod2M. En forma general, se definen hashing sucesivas: hi+j (K ) = Kmod(2j M). I La división se puede controlar monitoreando el factor de carga en vez de sólo cuando se produce desbordamiento. El factor de carga de un fichero se determina: c = r /(fbl ∗ N), donde r el número actual de registros, fbl el número máximo de registros en una cubeta y N el número actual de cubetas. La división se produce cuando la carga excede un umbral. Introducción Acceso a Bases de Datos Grabación de Registros de un Fichero de Disco Organización de Archivos Otras Organizaciones Índices Índices de un solo Nivel Índices Multinivel Bases de Datos Agrupamiento Andrea Rodrı́guez Introducción I Consiste en almacenar juntos fı́sicamente los registros que tienen una relación lógica entre sı́ y no necesariamente que sean del mismo tipo. Acceso a Bases de Datos I Por ejemplo, si se quiere leer dos registros r1 y r2 , almacenados en las páginas p1 y p2 , respectivamente, se tiene que: Grabación de Registros de un Fichero de Disco I I Si p1 y p2 son la misma página, el acceso a r2 no requerirá E/S fı́sica alguna. Si p1 y p2 son distintas, pero cercanas fı́sicamente, r2 requerirá una operación de E/S fı́sica, pero el tiempo será pequeño, ya que las cabezas de lectura/escritura estarán cerca. I Agrupamiento intra archivo: Dentro de un archivo. Por ejemplo, la lectura secuencial de todos los proveedores. Cada registro está cerca de otro. I Agrupamiento inter archivos: Varios archivos. Registros alternados, por ejemplo los archivos proveedor y archivos de productos. I Un SGBD debe permitir especificar diferentes clases de agrupamiento para un archivo determinado. Organización de Archivos Otras Organizaciones Índices Índices de un solo Nivel Índices Multinivel Bases de Datos Andrea Rodrı́guez Índices Introducción I Índices son estructuras adicionales al archivo que aceleran la selección sobre los campos de la clave de búsqueda. I Cualquier subconjunto de los campos de la relación pueden ser una clave (llave) para el ı́ndice sobre un relación I La clave de búsqueda no es lo mismo que la clave de un relación. I Un ı́ndice contiene una colección de entradas de datos y soporta la recuperación eficiente de todas las entradas de datos k ∗ con un valor de clave dado k. I La ventaja principal de los ı́ndices es que agilizan la obtención de datos, reduciendo el número de operaciones de E /S. La desventaja es que la actualización de los archivos se hace más lenta. I Los tipos de ı́ndices más usados se basan en ficheros ordenados, es decir, se pueden hacer búsquedas binarias sobre archivo de ı́ndice (ı́ndices de un sólo nivel) y estructuras en árbol ( ı́ndices multiniveles , árboles B + ). I Los ı́ndices se pueden construir basándose en hashing o otra estructuras de datos de búsqueda. Acceso a Bases de Datos Grabación de Registros de un Fichero de Disco Organización de Archivos Otras Organizaciones Índices Índices de un solo Nivel Índices Multinivel Bases de Datos Andrea Rodrı́guez Introducción Tipos de Índices de un Nivel Acceso a Bases de Datos Grabación de Registros de un Fichero de Disco I Índices primarios: está especificado sobre el campo clave de ordenación de un archivo de registros ordenados. I Índices de agrupación: está especificado sobre un campo de ordenación que no es clave (se pueden repetir). Cabe destacar que un archivo puede tener como máximo un campo de ordenación fı́sica, ası́ que puede tener un ı́ndice primario o de agrupación pero no ambos. I Índices secundario: se puede especificar sobre cualquier campo que no sea el de ordenación. Organización de Archivos Otras Organizaciones Índices Índices de un solo Nivel Índices Multinivel Bases de Datos Andrea Rodrı́guez Introducción Índices Primarios I Es un archivo de registros de largo fijo con dos campos: clave y una dirección de bloque. I Hay una entrada de ı́ndice en el archivo de ı́ndice por cada bloque de datos. Esta entrada tiene la clave del primer registro de un bloque y un puntero a ese bloque < Ki , Pi >. I Estos ı́ndices se dicen densos si es que tienen una entrada de ı́ndice por cada cada valor de la clave de búsqueda; de lo contrario, se llaman dispersos. I Un problema importante de estos ı́ndices son la eliminación e inserción, ya que requiere de reordenación del archivo y la actualización de las entradas de ı́ndices. Una solución a este problema radica en el uso de archivos o listas de desbordamiento. Acceso a Bases de Datos Grabación de Registros de un Fichero de Disco Organización de Archivos Otras Organizaciones Índices Índices de un solo Nivel Índices Multinivel Bases de Datos Andrea Rodrı́guez Introducción Índices de Agrupamiento Acceso a Bases de Datos Grabación de Registros de un Fichero de Disco I Es un archivo odenado con dos campos: campo del mismo tipo del campo de agrupación y una dirección de bloque. I Hay una entrada de ı́ndice en el archivo de ı́ndice por cada valor distinto del campo de agrupación y un puntero al primer bloque del archivo que tenga un registro con ese valor en el campo de agrupación. I Estos ı́ndices son un ejemplo de ı́ndices no densos. I La inserción y eliminación siguen causando problemas. Organización de Archivos Otras Organizaciones Índices Índices de un solo Nivel Índices Multinivel Bases de Datos Andrea Rodrı́guez Índices Secundario I Es también un archivo odenado con dos campos: campo del mismo tipo del campo de indexación (que no es el de ordenación) y una dirección de bloque o puntero a registro. I En el caso que la clave de indexación sea una clave alternativa, existe una entrada en el ı́ndice por cada registro (osea, es un ı́ndice denso). I Para campos no claves, existen varias opciones: - Incluir varias entradas en el ı́ndice con el mismo valor de clave de indexación, una por cada registro - Usar un campo multivaluado para el puntero asociado a una clave de indexación - Manejar un nivel de indirección adicional, donde el campo puntero de una entrada, apunte a un bloque de punteros a registros, cada uno de ellos a puntando a un registro de tenga esa misma clave de indexación (osea usa una estructura adicional) - Un ı́ndice secundario proporciona una ordenación lógica. Introducción Acceso a Bases de Datos Grabación de Registros de un Fichero de Disco Organización de Archivos Otras Organizaciones Índices Índices de un solo Nivel Índices Multinivel Bases de Datos Andrea Rodrı́guez Índices Multinivel Introducción I Estos ı́ndices se basan en la idea de reducir la parte del ı́ndice que se recorre con factor de fbli (factor de bloques del ı́ndices), el cual se conoce con el nombre de fan-out (abanico) (fo). Una búsqueda en un ı́ndice multinivel requiere aproximadamente logfo bi para un ı́ndice con bi bloques, lo que es menos que log2 bi , si el fo es mayor que 2. I El ı́ndice multinivel considera el fichero ı́ndice como un fichero ordenado al que se llama primer nivel o nivel base y que tiene un valor distinto para cada clave. I El segundo nivel crea un ı́ndice primario para el primer nivel, el cual tiene entradas por cada bloque del primer nivel. I El proceso se repite para el segundo nivel, y ası́ sucesivamente hasta que todas las entradas de un nivel t del ı́ndice quepan en un sólo bloque. I Para resolver el problema de inserción y eliminación que ocurre al manejar los niveles ordenados, se crean los ı́ndices multinivel dinámicos, los que a menuda se implementan con las estructuras de datos llamadas árboles B y B + . Acceso a Bases de Datos Grabación de Registros de un Fichero de Disco Organización de Archivos Otras Organizaciones Índices Índices de un solo Nivel Índices Multinivel Bases de Datos Andrea Rodrı́guez Introducción Índices Multinivel I El esquema multinivel se puede usar para cualquier tipo de ı́ndice, ya sea primario, secundario o de agrupación, siempre que el ı́ndice de primer nivel tenga valores distintos de Ki y entradas de longitud fija. I Una organización de archivos que se usa mucho en procesamientos de datos de negocios es la secuencial indexada (ISAM). Este es un archivo ordenado con un ı́ndice primario multinivel sobre un campo de ordenación. La organzación ISAM de IBM usa un ı́ndice de dos niveles que está estrechamente ligado a la organización del disco. El primer nivel es el ı́ndice del cilindro y el segundo nivel es un ı́ndice de pistas. Acceso a Bases de Datos Grabación de Registros de un Fichero de Disco Organización de Archivos Otras Organizaciones Índices Índices de un solo Nivel Índices Multinivel Bases de Datos Andrea Rodrı́guez Introducción Árboles de búsqueda I Un árbol de búsqueda de orden p es un árbol tal que cada nodo contiene como máximo p − 1 valores de un puntero a un nodo hijo ( o un puntero nulo), y cada clave Ki es un valor de búsqueda proveniente de un conjunto ordenado de valores. Se supone que los valores de búsqueda son únicos. I Las dos siguientes restricciones siempre deben cumplirse en un árbol de búsqueda: 1. Dentro de cada nodo K1 < K2 < · · · < Kq−1 2. Para todos los valores X del subárbol al cual apunta Pi , tenemos Ki−1 < X < Ki , para 1 < i < q; X < Ki para i = 1; y Ki−1 < X para i = q. Acceso a Bases de Datos Grabación de Registros de un Fichero de Disco Organización de Archivos Otras Organizaciones Índices Índices de un solo Nivel Índices Multinivel Bases de Datos Andrea Rodrı́guez Introducción Árboles B I Cada nodo x tiene: N[x] número de claves, las claves están ordenadas de menor a mayor k1 [x] < · · · < kn [x] y una variable Boolean hoja[x] que es verdadera cuando el nodo x es una hoja. I Si el nodo es interno, tiene n[x] + 1 punteros a hijos I ki [x] separa los rangos que se almacenan I las hojas están a la misma altura I dado un t ≥ 2, nodos excepto la raı́z tiene t − 1 claves como mı́nimo y 2t − 1 claves como máximo. Acceso a Bases de Datos Grabación de Registros de un Fichero de Disco Organización de Archivos Otras Organizaciones Índices Índices de un solo Nivel Índices Multinivel Bases de Datos Andrea Rodrı́guez Introducción Árboles B Acceso a Bases de Datos Grabación de Registros de un Fichero de Disco P C G Organización de Archivos T M Otras Organizaciones X Índices A B D E F J K L N O Q R S U V Y Z Índices de un solo Nivel Índices Multinivel Árboles B Bases de Datos Andrea Rodrı́guez Dado n ≥ 1, entonces cualquier n-key B-Tree de altura h y mı́nimo grado t ≥ 2 satisface que Introducción Acceso a Bases de Datos #nodos 1 1 t-1 t-1 t-1 ...... t-1 ..... t-1 ..... t-1 2 t-1 t-1 t-1 2t Grabación de Registros de un Fichero de Disco Organización de Archivos Otras Organizaciones Índices Índices de un solo Nivel Índices Multinivel n+1 2 h ≤ logt n ≥ 1 + (t − 1) h X 2t i−1 i=1 ≥ 1 + (t − 1) ≥ 2t h − 1 th − 1 t −1 Bases de Datos Andrea Rodrı́guez Introducción Ejercicio Btree Acceso a Bases de Datos I Suponga que el campo de búsqueda tiene V = 9 bytes de longitud, que el tamaño de la página de disco es B = 512 bytes, que un puntero de registro de datos tiene Pr = 7 bytes y que un puntero de bloque tiene P = 6 bytes. Cada nodo del Btree tiene como máximo p punteros. Si queremos que cada nodo de un árbol quepa en un bloque, entonces derive la expresión que define p. Grabación de Registros de un Fichero de Disco Organización de Archivos Otras Organizaciones Índices (p ∗ P) + ((p − 1) ∗ (Pr + V )) ≤ B (p ∗ 6) + ((p − 1) ∗ (7 + 9) ≤ 512 (22 ∗ p) ≤ 528 Índices de un solo Nivel Índices Multinivel Bases de Datos Andrea Rodrı́guez Introducción Árboles B + I La mayorı́a de los esquema de indexación multinivel dinámicos emplean una variación del Btree llamado B + . I En un B + los punteros a datos se almacenan sólo en los nodos hoja del árbol, por lo que la estructura de las hojas difiere de los nodos internos del árbol. I Si el campo de búsqueda es clave, entonces los punteros de datos apuntan a un registro. I Si el campo de búsqueda no es clave, el puntero apunta a un bloque que contiene punteros a los registros del archivo de datos. I Los nodos hojas del B + suelen estar enlazados para ofrecer un acceso ordenado a los registros según sea el campo de búsqueda. Acceso a Bases de Datos Grabación de Registros de un Fichero de Disco Organización de Archivos Otras Organizaciones Índices Índices de un solo Nivel Índices Multinivel Bases de Datos Andrea Rodrı́guez Árboles B + La estructura de los nodos interno de un árbol B + de orden p se definen de la siguiente forma: I Todo nodo interno es de la siguiente forma: < P1 , K1 , P2 , K2 , . . . , Kq−1 , Pq >, donde q ≤ p y cada Pi es un puntero de árbol. I Dentro de cada nodo interno K1 < K2 < · · · < Kq−1 . I Para todos los valores X del campo de búsqueda en el subárbol al que apunta Pi tenemos Ki−1 < X ≤ Ki para 1 < i < q; X ≤ Ki para i = 1; y Ki−1 < X para i = q. I Cada nodo interno tiene como máximo p punteros de árbol. I Cada nodo interno, excepto la raı́z, tiene por lo menos d(p/2)e punteros de árbol. El nodo raı́z como mı́nimo dos dos punteros de árbol si es un nodo interno. I Un nodo con q punteros, q ≤ p, tiene q − 1 valores de campo de búsqueda. Introducción Acceso a Bases de Datos Grabación de Registros de un Fichero de Disco Organización de Archivos Otras Organizaciones Índices Índices de un solo Nivel Índices Multinivel Bases de Datos Andrea Rodrı́guez Árboles B + Introducción Acceso a Bases de Datos La estructura de los nodos hoja de un árbol B + de orden p se definen de la siguiente forma: I Todo nodo hoja es de la siguiente forma: << K1 , Pr1 >, < K2 , Pr2 >, . . . , < Kq−1 , Prq−1 >, Psiguiente >, donde q ≤ p, Pr es un puntero a datos y Psiguiente es un puntero al siguiente nodo hoja del árbol. I Dentro de cada nodo interno K1 < K2 < · · · < Kq−1 . I Cada Pri es un puntero a datos que apunta al registro cuyo valor de campo de búsqueda es Ki o a un bloque del archivo que contiene dicho registro ( o a un bloque de punteros que apuntan a registros cuyo valor del campo de búsqueda es Ki si el campo de búsqueda no es clave). I Cada nodo hoja tiene por lo menos d(p/2)e valores de clave. I Todos los nodos hojas están al mismo nivel. Grabación de Registros de un Fichero de Disco Organización de Archivos Otras Organizaciones Índices Índices de un solo Nivel Índices Multinivel Ejercicio B + Bases de Datos Andrea Rodrı́guez I Suponga que el campo de búsqueda tiene V = 9 bytes de longitud, que el tamaño del bloque de disco es B = 512 bytes, que un puntero de registro de datos tiene Pr = 7 bytes y que un puntero de bloque tiene P = 6 bytes. Un nodo interno del B + puede tener hasta p punteros de árbol y p − 1 valores de campo de búsqueda; éstos deben caber en un solo bloque. Entonces p con respecto a los nodos internos del árbol es determinado por: Introducción Acceso a Bases de Datos Grabación de Registros de un Fichero de Disco Organización de Archivos (p ∗ P) + ((p − 1) ∗ (V )) ≤ B Otras Organizaciones (p ∗ 6) + ((p − 1) ∗ (9) ≤ 512 Índices (15 ∗ p) ≤ 521 I El número de nodos hojas se calcula: (phoja ∗ (Pr + V )) + P ≤ B (phoja ∗ (7 + 9)) + 6 ≤ 512 (16 ∗ phoja ) ≤ 506 I Al igual que para el B tree, esta estructura puede requerir mas campos en cada nodo para la implementación de los algoritmos de inserción y eliminación. Por ejemplo, tipo de nodo, número de entradas en el nodo, punteros a padres, etc. Índices de un solo Nivel Índices Multinivel Bases de Datos Andrea Rodrı́guez Algoritmo de Búsqueda Introducción Acceso a Bases de Datos n ← bloque que contiene el nodo raı́z del árbol B+ ; leer bloque; mientras (n no sea nodo hoja del árbol B+ ) hacer principio q ← número de punteros de árbol del nodo n; si K ≤ n.K1 (*n.K1 se refiere al i-ésimo valor del campo de búsqueda en el nodo n*); entonces n ← n.P1 (*n.P1 se refiere al i-ésimo puntero de árbol en el nodo n*); el nodo n*); si no si K > n.Kq−1 ; entonces n ← n.Pq ; si no principio; buscar en el nodo n una entrada i tal que n.Ki−1 < K ≤ n.Ki ; n ← n.Pi ; fin ; leer bloque n ; fin ; buscar en el bloque n la entrada (Ki , pri ) con K = Ki ; (*buscar nodo hoja*) ; si se encuentra entonces leer el bloque del fichero de datos con dirección Pri , y recuperar el registro si no el registro con valor de campo de búsqueda K no está enn el fichero de datos; Grabación de Registros de un Fichero de Disco Organización de Archivos Otras Organizaciones Índices Índices de un solo Nivel Índices Multinivel Bases de Datos Andrea Rodrı́guez Introducción Índices sobre Claves Múltiples I En general se considera una estructura de acceso que proporcione un acceso eficiente mediante un valor de clave que sea una combinación de esos atributos. I Múltiples atributos también pueden ser ordenados lexicográficamente y se pueden usar los ı́ndices ya descritos. I Un direccionamiento partido usa una función hash por cada uno de los n componentes de la clave y los resultados de las funciones son concatenados para formar la dirección donde se encuentra la dirección del registro. I Otra forma es usar un registro rejilla, donde el registro se organiza como un arreglo donde una celda i, j, corresponde a un valor de clave i y al otro valor j. Acceso a Bases de Datos Grabación de Registros de un Fichero de Disco Organización de Archivos Otras Organizaciones Índices Índices de un solo Nivel Índices Multinivel