Вы находитесь на странице: 1из 43

Estructuras de Almacenamiento

de Datos

Clase 2.1:
Índices

Facultad de Ciencias Exactas Universidad Nac.


Nac. Centro de la Pcia.
Pcia. de Bs. As.
Laura Rivero Cursada 2012

1
Índices-- motivación
Índices

IdAsign nombreAsign régimen año #legajo

111 Programación A 1 22344


112 Arquitectura C 1 22333
114 Estructura de AP 3 22322 Búsqueda por
datos nombreAsign?
115 Algoritmos CP 2 22322
Costo lineal
Búsqueda por IdAsign? Costo binario en archivo ordenado por IdAsign
(considerar altas/bajas)

Claves de búsqueda alternativas: procesos lentos


sobre los archivos ordenados
Búsqueda sobre archivo desordenado?

2
Índices
• Estructura auxiliar que permite localizar registros de
un archivo por caminos de acceso alternativos según
el campo de indexación y sin importar el
ordenamiento físico del archivo.

• Almacenado en archivos

Una entrada de índice contiene:


(Campo de indexación, Dirección)
• campo de indexación: dato que identifica cierta
información con respecto a uno (o más) registros de un
archivo de datos (cualquier campo de un archivo puede
ser campo de indexación)
• dirección (puntero físico, relativo o lógico) del registro
en el archivo de datos, asociado al campo de
indexación

3
Tipo de puntero para entradas del índice
(Campo de indexación, Puntero)

• Puntero: indica la localización.

• Los punteros físicos son rápidos, pero dependientes del


dispositivo de almacenamiento.

•Los punteros relativos (dir. del bloque: cilindro,


pista, sector), son los más comunes (ISAM)

• Los punteros lógicos son independientes, pero más


lentos (el costo de búsqueda es el costo de búsqueda de
la estructura que soporta el archivo)

4
Índices: punteros físicos

IdAsign nombreAsign régimen año #legajo


nombreAsign Puntero
111 Programación A 1 22344
Algoritmos
Arquitectura 112 Arquitectura C 1 22333

Estructura de
datos 114 Estructura de AP 3 22322
datos
Programación

115 Algoritmos CP 2 22322


Índice por nombreAsign

Archivo principal ordenado por IdAsign

5
Índices: punteros físicos

IdAsign nombreAsign régimen año #legajo


nombreAsign Puntero
115 Algoritmos CP 2 22322

Algoritmos 112 Arquitectura C 1 22333


Arquitectura 111 Programación A 1 22344
Estructura de
114 Estructura de AP 3 22322
datos
datos
Programación

Índice por nombreAsign

Archivo desordenado

6
Índices: punteros lógicos

Estructura de entrada del índice:


(Campo de indexación, Puntero)

nombreAsign Puntero IdAsign nombreAsign régimen año #legajo

111 Programación A 1 22344


Algoritmos 115

Arquitectura 112 112 Arquitectura C 1 22333


Estructura de 114
datos 114 Estructura de AP 3 22322
datos
Programación 111

115 Algoritmos CP 2 22322


Índice por
nombreAsign
(puntero lógico) Archivo principal ordenado por IdAsign

7
Índices: operaciones de actualización

 Alta o baja de un registro en el archivo  el


índice puede requerir un alta o baja
respectivamente, o bien quedar tácitamente
actualizado
 Modificación de un registro en el archivo 
puede requerir una baja y un alta en el
índice, o bien quedar tácitamente
actualizado

8
Clasificación de Índices
Por su conformación:
 Denso
 No denso o ralo
Por campo de indexación
 Primarios
 De agrupamiento
 Secundarios
Por su estructura
 Único nivel
 Multinivel
Por su operatoria
 Estáticos
 Dinámicos
Por la estructura del dominio estructurante
 Único atributo
 Múltiples atributos (multiclave)

Clasificación ortogonal: pueden compartir características de


diferentes clasificaciones. Algunas combinaciones no son válidas

9
Por su conformación

 Índice denso Existe una entrada en el índice por


cada registro del archivo principal

 Índice no denso o ralo Entradas en el índice sólo


para algunos valores de búsqueda.
◦ Varios registros del archivo principal indexados
por una misma entrada del índice

10
Índice Denso: Ejemplo
Número
Por código Número De registro
de bloque relativo
10 0 10 Cedro 10.99 0

20 8 40 Pino Azul 25.99 1

40 1 0 90 Acacia 25.99 2

50 4 60 Arce plateado 15.99 3

60 3 50 Fresno 22.99 4

70 7
81 Ceibo 25.99 5
80 9
95 Cerezo 15.99 6
81 5
1 70 Álamo 10.99 7
90 2
20 Abedul 12.99 8
95 6
80 Eucalipto 26.99 9

Archivo principal desordenado

11
Índice Denso: mantenimiento

Añadir un nuevo registro al archivo


Implica
• añadir una nueva entrada al archivo
manteniéndolo ordenado
• ingresar la entrada correspondiente en el
índice, manteniendo el orden del mismo

Alternativas:
• Archivo de desborde de índice
• Espacio libre en bloques para índice

12
Índice Denso: mantenimiento

Eliminar un registro del archivo

Implica
• Eliminar el registro del archivo
manteniéndolo ordenado
• Eliminar la entrada correspondiente del
índice, manteniendo el orden del mismo

Alternativa:
• Borrado lógico

13
Índice Denso: mantenimiento

Modificar un registro del archivo


Si cambia el valor del campo de indexación
 cambia su posición en el índice denso
borrado + inserción, manteniendo el orden

Si la actualización no afecta al campo de indexación


 el índice no se modifica

En ambos casos el archivo se actualiza de manera


que se mantenga el orden.

14
Índices Ralos (o no densos)

 Entradas en el índice sólo para algunos


valores de búsqueda.

 Varios registros del archivo principal


indexados por una misma entrada del índice.

15
Índice Ralo

Valor ancla
Número
Registro ancla Número
De registro
de bloque relativo
10 0 10 Cedro 10.99 0

70 1 20 Abedul 12.99 1

40 Pino azul 25.99 2

0 50 Fresno 22.99 3
Índice Ralo 60 Arce plateado 15.99 4

ordenado 70 Alamo 10.99 5


por código 80 Eucalipto 26.99 6

81 Ceibo 25.99 7
1
90 Acacia 25.00 8

¿Operaciones de actualización? 95 Cerezo 15.99 9

Depende si se modifica el ancla….

Archivo principal ordenado por código

16
Características de índices ralos y densos

Índice Denso Índice Ralo


El archivo principal no Ordenado según orden
precisa organización físico del archivo principal
Ocupa espacio (acceso más Ocupa menos espacio
lento) (acceso más rápido)
Operaciones de inserción y Operaciones de inserción y
borrado implican actualizar borrado no siempre se
el índice reflejan en el índice
Aptos para hacer test de No aptos para hacer test de
existencia existencia

17
Índices Ordenados (de un solo nivel)

 Estructura similar a la de un índice de


palabras en un libro de texto:
 Término ordenado con algún criterio
 Nro. de página en donde aparece el término

AMALIA
 Tipos
 Primario ANA
 De agrupamiento BEATRIZ
 Secundario …………..

18
Índice primario
Cada entrada (Ki, Pi)

◦ Ki es el campo de indexación del Índice  es


la clave de ordenamiento del archivo principal,
y a su vez identifica cada registro !!

◦ Pi apunta al bloque de disco que contiene el


registro asociado a Ki
◦ Ki es la clave del primer registro del bloque:
registro ancla o ancla de bloque
◦ # de entradas (Ki, Pi) = nro. de bloques de
disco que almacenan el archivo principal
 Índice ralo

19
Índice primario

Clave de ordenación Registro ancla


IdAsign nombreAsign régimen año
Campo de indexación 111 Programación A 1
112 Arquitectura C 1
114 Estructura de AP 3
111 datos

115 115 Algoritmos A


118 Metodologías C
120 Ciencias 1 AP
Índice Primario
(2 entradas) Archivo de datos ordenado por clave de
relación (2 bloques)

1 único índice primario

20
Índices Ordenados (de un solo nivel): de
agrupamiento

El archivo principal está ordenado por


un campo no clave (no identificatorio)

◦ se pueden repetir los valores de ese


campo en los registros  Campo de
agrupación

◦ La entrada ( Ki,Pi) en el índice  Ki es el


campo de indexación que coincide con
el campo de agrupamiento.

21
Índice de agrupamiento

IdAsign nombreAsign régimen año


RALO 112 1
110 1
115 1
1
2
122 2
3 119 2

Índice de 121 2
Agrupamiento
por año
Archivo de datos
ordenado por campo de ordenamiento
( año no es clave para identificación)

22
Índice de agrupamiento

Asignación en bloques
◦ Los bloques del archivo principal puede contener
registros con diferentes campos de agrupación.
◦ Cada entrada del índice apunta al primer bloque
que contiene registros con ese campo de agrupación

Archivo Principal
1
1
1 2

2
2
3 2
3
Índice

23
Índice de agrupamiento

Asignación en bloques
- Se reserva un bloque o conjunto de bloques para los
registros coincidentes con el campo de agrupación

1
1
1

2 null
2
1 2
2
2
3
desbordes 2

Índice
null

24
Índice Ordenados (de un solo nivel):
secundarios

El campo de indexación es cualquier campo


de archivo principal que NO es campo de
ordenamiento

◦ Puede haber varios índices secundarios


para un mismo archivo principal

◦ Representa un diferente ordenamiento


lógico de los registros del archivo

Entrada del Índice (Ki, Pi)

25
Índice secundario
IdAsign puntero
111
Archivo principal desordenado
112
IdAsign nombreAsign régimen año
114
115 115 Algoritmos CP 2
112 Arquitectura C 1
Índice por IdAsign 111 Programación A 1
114 Estructura de AP 3
datos

nombreAsign puntero IdAsign nombreAsign régimen año


Algoritmos 111 Programación A 1

Arquitectura 112 Arquitectura C 1

Estructura de datos 114 Estructura de AP 3


datos
Programación
115 Algoritmos CP 2

Índice por nombreAsign


Archivo principal ordenado por IdAsign

26
Índice secundario

◦ SIEMPRE Campo indexación <> campo


de ordenamiento del archivo principal

 Dos alternativas:

◦ Campo indexación ES identificatorio


◦ Campo indexación NO ES identificatorio

27
Índices Ordenados de un solo Nivel:
secundarios

Alternativa I
◦ Campo indexación es identificatorio
( <> campo de ordenación del archivo principal)

 Índice denso: Una entrada en el índice para


cada registro del archivo principal con la clave
de indexación y un puntero a registro o bloque

 Las entradas del índice están ordenadas por


el campo de indexación  Búsqueda binaria

28
Índice secundario

Sobre campo NO identificatorio


 Varios registros del archivo principal pueden
tener el mismo valor en el campo de indexación
◦ Repetición de entradas en el índice (denso)

◦ Índice con registros variables ( Ki, P(i,1)…..P(i,k))

◦ Factoreo o indirección (Índice ralo)

- Estrategias válidas para


almacenamiento de información cuando a cada
instancia del dominio estructurante se asocian varias de
la información asociada (volveremos a este punto más
adelante)

29
Índice secundario

Sobre campo NO identificatorio

–Índice con registros variables ( Ki, P(i,1)…..P(i,k))


115 Algoritmos CP 2 22322
Año Puntero
114 Estructura de AP 3 22322
1 datos

2 112 Arquitectura C 1 22333

3
111 Programación A 1 22344

Archivo Principal

30
Índice secundario

Sobre campo NO identificatorio

– Factoreo o indirección (Índice ralo)

Año Puntero 115 Algoritmos CP 2 22322


1 114 Estructura de AP 3 22322
datos
2
112 Arquitectura C 1 22333
3

111 Programación A 1 22344

Archivo Principal

31
Índices Ordenados de un solo Nivel

Campo Campo no
( Campo, puntero)
identificatorio identificatorio

Campo de Índice Índice de


ordenación del primario agrupamiento
archivo
principal
Campo que no Índice Índice secundario
es clave de secundario (sobre no identif.)
ordenación (sobre identif.)

32
Propiedades de Tipos de Índices de un solo Nivel

# de entradas del índice Denso o Ancla de


ralo bloque a
archivo
principal
Primario # de bloques del archivo ralo si
principal
Agrupamiento # de valores distintos del ralo Si /
campo de indexación No

Secundario # de valores distintos del denso no


(identif.) campo de indexación = #
de registros
Secundario 1)# registros del archivo 1) denso no
(no identif.) 2)# de valores distintos 2) ralo
de la campo de indexación
(factoreo)

33
Ventajas e Inconvenientes de los Índices de
un nivel
 Permiten un acceso rápido y eficiente a los datos en
disco por distintos campos de búsqueda,
independientemente de la organización física del
archivo de datos

 Su estructura es relativamente sencilla y fácil de


mantener

 Sin embargo …… 
◦ agrega complejidad al proceso de mantenimiento
◦ requiere almacenamiento auxiliar (archivos)
◦ Puede ser demasiado grande para albergarse totalmente en
memoria principal para manipularlo ( índices multinivel)

34
Índices Multinivel

 Estáticos:
◦ Índices de índices

◦ En cada nivel reduce el espacio de


búsqueda

◦ Se puede transferir parcialmente a


memoria

35
Índices Multinivel Estáticos
Archivo

110

111
112
110
115 115

110 120 116


119
130
130
210
170 120
122
190
126

210
130

132
139

Índice

36
Índices Multinivel Estáticos
Estáticos-- Conceptos

• Primer nivel o nivel base: archivo ordenado con un


valor distinto para cada campo de indexación. Sus
registros apuntan a los bloques o registros del archivo
principal.
• Segundo nivel: índice primario del nivel base con
punteros a los bloques del nivel base
• Sigue hasta que el índice entre en un solo bloque
 Nivel superior o raíz
• Abanico o fan –out: número de punteros a bloques
que sale de cada nivel.

37
Índices Multinivel

110

FAN OUT=3 Nivel Base 111

112
110
Segundo Nivel 115 115

Raíz o Superior 110 120 116

119
130
110 130
210
170
350 120
122
190
700 126

350
……..
210
130
……
132

139

El fo podría ser variable, según el nivel

38
Índices Multinivel

• La búsqueda de un registro para archivo de datos


almacenado en bl bloques de datos con un índice de
fan-out fo es: log fo(bl)

• Si se desprecia búsqueda en memoria principal, un


costo es el nivel del índice multinivel (un acceso a
cada bloque del nivel hasta llegar al base) + acceso
al bloque de datos

• Esquema multinivel puede ser usado para cualquier


índice (primario, secundario, agrupamiento) siempre
que el nivel base tenga distintos valores de claves de
indexación

39
Índices Multinivel

Búsquedas rápidas
Problemas
- El índice puede crecer creando problemas
relacionados a la insuficiencia de espacio
- Puede menguar su tamaño, creando situaciones de
subniveles con componentes vacíos.
- El número de accesos puede hacerse muy elevado
- Mantener el índice ordenado y equilibrado
(balanceado) es muy costoso  reorganización
‘sofisticada’

Índices multinivel dinámicos 


familia de árboles B
(veremos este tema más adelante)

40
Índices por campo de indexación de único
atributo
Archivo de datos ordenado / desordenado
Campo de indexación
IdAsign nombreAsign régimen año
111 Programación A 1
112 Arquitectura C 1
114 Estructura de AP 3
111 datos

115 115 Algoritmos A ….


118 Metodologías C
120 Ciencias 1 AP
?

Campo de indexación 2

41
Índices por campo de indexación de varios
atributos
Archivo de datos desordenado/ordenado

IdAsign nombreAsign régimen año

111 Programación A 1
112 Arquitectura C 1
114 Estructura de AP 3
1 111 datos

1 112 115 Algoritmos A 2


118 Metodologías C …..
2 115
120 Ciencias 1 AP …..
3 114
…. …..

Campo de indexación de más de un atributo  búsqueda por el par


simultáneamente … y sólo por año??... o sólo por IdAsign??
 estructuras específicas para estos casos se verán más adelante

42
Lectura obligatoria:
Database system concepts
por Abraham Silberschatz, Henry F Korth y S Sudarshan.
Boston, 1999
Biblioteca Central. Buscar 001.64, Si582 en sala de acceso directo
Capítulo 11, secciones 11.1 y 11.2

Fundamentos de bases de datos


por Abraham Silberschatz, Henry F Korth y S Sudarshan.
Madrid : McGraw Hill, 1998
Biblioteca Central. Buscar 001.64, Si582-1 en sala de acceso directo
Capítulo 12, secciones 12.1 y 12.2

Database Management Systems


Raghu Ramakrishnan, Johannes Gehrke
McGraw-Hill Science, 1999
Capítulo 8, secciones 8.3 y 8.4

Fundamentals of Database Systems


Ramez Elmasri, Shamkant Navathe
Addison Wesley, 2000
Biblioteca Central. Buscar 001.64, El48-2 en sala de acceso directo
Capítulo 6, secciones 6.1 y 6.2

43