Modelo Físico

Anuncio
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
[email protected]
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
Descargar