Está en la página 1de 33

INGENIERÍA DE SISTEMAS

CIENCIAS DE LA COMPUTACIÓN II

ÍNDICES

MAICOL A. GARZÓN, DIEGO A. VELEZ & BRAYAN S. PARRA


OCTUBRE 2020
Índic
e
Índice...................................................................................................................................... 2
1. Definición de Índices.......................................................................................................4
Según Silberschatz......................................................................................................... 4
Según Rafael Menéndez Barzanallana...........................................................................4
Según Wenceslao Palma M............................................................................................4
Según Theira Sampeiro..................................................................................................5
2. Características y Propiedades.........................................................................................5
Según Todd J. Green......................................................................................................5
Según Barzanallana........................................................................................................6
Según Rafael Camps Paré..............................................................................................6
3. Usos................................................................................................................................ 6
Según Mercedes Marqués..............................................................................................6
Según Rafael Camps Paré..............................................................................................6
Según Todd J. Green......................................................................................................7
4. Ventajas.......................................................................................................................... 7
Según UKEssays............................................................................................................ 7
Según FAEDIS................................................................................................................ 7
Según Rafael Camps Paré..............................................................................................7
5. Desventajas.................................................................................................................... 8
Según UKEssays............................................................................................................ 8
Según FAEDIS................................................................................................................ 8
Según Rafael Camps Paré..............................................................................................9
6. Tipos de Índices Según su Numero de Registros............................................................9
6.1. Densos..................................................................................................................... 9
Según R. Elmasri y B. Navathe.......................................................................................9
Según Silberschatz.......................................................................................................10
Según Merche Marqués................................................................................................12
6.2. No Densos o Dispersos..........................................................................................13
Según R. Elmasri y B. Navathe.....................................................................................13
Según Silberschatz.......................................................................................................14
Según Merche Marqués................................................................................................16
7. Tipos de Índices Según su Campo de Indexación.........................................................17
7.1. De un solo Nivel.....................................................................................................17
7.1.1. Primarios............................................................................................................17
Según Silberschatz.......................................................................................................17
Según R. Elmasri y B. Navathe.....................................................................................18
Según José Paramá Gabía...........................................................................................19
7.1.2. Secundarios........................................................................................................20
Según Silberschatz.......................................................................................................20
Según R. Elmasri y B. Navathe.....................................................................................22
7.1.3. Agrupamiento.....................................................................................................25
Según R. Elmasri y B. Navzthe.....................................................................................25
Según Silberschatz.......................................................................................................27
7.2. Multinivel................................................................................................................27
Según Silberschatz.......................................................................................................27
Según R. Elmasri y B. Navathe.....................................................................................29
8. Accesos al Disco...........................................................................................................31
8.1. Índices Densos.......................................................................................................32
Según R. Elmasri y B. Navathe.....................................................................................32
Según Silberschatz.......................................................................................................32
Según Merche Marqués................................................................................................32
8.2. Índices No Densos o Dispersos.............................................................................32
Según R. Elmasri y B. Navathe.....................................................................................32
Según Silberschatz.......................................................................................................33
Según Merche Marqués................................................................................................33
8.3. Índices Multinivel....................................................................................................33
Según Silberschatz.......................................................................................................33
Según R. Elmasri y B. Navathe.....................................................................................33
Bibliografía........................................................................................................................... 34
1. Definición de Índices
Según Silberschatz
Silberschatz compara los índices para los archivos del sistema como los índices
para los libros. Por ejemplo, al buscar un tema en un libro, este primero se busca en
el índice para saber en qué página se encuentra y entonces se va a la página
correspondiente donde está la información. Como el índice del libro esta ordenado
alfabéticamente o de alguna otra forma y además este es mucho más pequeño que
el libro completo, la búsqueda se hace mucho más fácil y rápida. Lo mismo sucede
con los archivos del sistema.

“Los índices de los sistemas de bases de datos juegan el mismo papel que los
índices de los libros o los catálogos de fichas de las bibliotecas. Por ejemplo, para
recuperar un registro cuenta dado su número de cuenta, el sistema de bases de
datos buscaría en un índice para encontrar el bloque de disco en que se encuentra
el registro correspondiente, y entonces extraería ese bloque de disco para obtener
el registro cuenta.”1 (Silberschatz, 2002).

Según Rafael Menéndez Barzanallana


Este profesor de la universidad de Murcia (España) dice básicamente que un índice
es un fichero que acompaña a otro fichero que es el que contiene las claves.

“En este modo de organización [organización indexada], al fichero le acompaña un


fichero de índice que tiene la función de permitir el acceso directo a los registros del
fichero de datos.

El índice se puede organizar de diversas formas, las más típicas son: secuencial,
multinivel y árbol.”2 (Barzanallana, 2006).

Además, dice que el índice debe estar organizado en función de alguno de los
campos de los registros de datos y se pueden tener tantos índices como se quiera
variando la clave (o campo) que se emplee.

Según Wenceslao Palma M.


Este profesor de la universidad técnica Federico Santa María (Chile) nos dice que
un índice es un archivo con entradas que contienen referencias a un archivo y que
su utilidad es permitirnos acceder rápidamente a los registros de ese archivo.

“Un índice es un archivo usado para agilizar la recuperación de los registros. Es


redundante puesto que la información que almacena se encuentra en el archivo al

1
Abraham Silberschatz (2002). Fundamentos de Bases de Datos. Cap. 12.1 Pág. 283
2
Rafael Menéndez Barzanallana (2006). “Organización de Ficheros y Métodos de Acceso”.
(https://www.um.es/docencia/barzana/IAGP/Iagp7.html). (Consultado el 12 de noviembre de 2020).
cual indexa. La ventaja, sin duda, viene por la vía de recuperar los registros de
manera más rápida.”3 (W. Palma, 2005).
También dice que podemos clasificar los índices según varios criterios como:

 Campo de Indexación
 Numero de referencias
 Tipo de referencias
 Estructura de las referencias

Según Theira Sampeiro


Este autor indica que en el método de archivos indexados cada archivo tiene otro
archivo asociado que un archivo índice y que este proporciona una capacidad de
búsqueda para llegar rápidamente al archivo deseado.

“La estructura más simple tiene como índice un archivo secuencial simple, cada
registro del archivo índice tiene dos campos, un campo clave igual al del archivo
principal y un puntero al archivo principal. Para encontrar un campo especifico se
busca en el índice hasta encontrar el valor mayor de la clave que es iguale o
precede al valor deseado de la clave, la búsqueda continua en el archivo principal a
partir de la posición que indique el puntero.” 4 (Sampeiro, 2005).

2.Características y Propiedades
Según Todd J. Green
Green, proporciona las siguientes propiedades de los índices:

“•Clave de búsqueda: atributo o combinación de atributos que se utilizan


para buscar registros en un archivo.
• Un archivo de índice consta de registros (llamados entradas de índice) del
medio de almacenamiento.
•Los archivos de índice suelen ser mucho más pequeños que el archivo
original porque solo se almacenan los valores para la clave de búsqueda y el
puntero.” 5(Green, 2011)

Según indican estas propiedades, los índices son más livianos que los archivos y a
estos se les asocia un apuntador, que indica la ubicación del archivo, como se
presenta a continuación:

Clave de búsqueda Puntero al bloque de información del archivo

3
Wenecslao Palma M. (2005). “Almacenamiento y Recuperación de la Información”.
(https://www.inf.utfsm.cl/~wpalma/ari/indices.pdf ). (Consultado el 12 de noviembre de 2020).
4
Theira Irasema Sampeiro Monroy (2005). “Sistemas Operativos, Apuntes Digitales”. Universidad
Autónoma del Estado de Hidalgo (México). Área Académica de Computación y Electrónica.
(https://web.archive.org/web/20200307080607/http://cidecame.uaeh.edu.mx/lcc/mapa/PROYECTO/lib
ro26/archivos_indexados.html). (Consultado el 13 de noviembre de 2020).
5
Todd. J. Green (2011), “Indexes”, University College of Davis, Dept. of computer science.
(https://web.cs.ucdavis.edu/~green/courses/ecs165a-w11/7-indexes.pdf)
Según Barzanallana
Este autor dice que los índices están formados por registros que contienen una
clave de organización y un puntero al fichero de datos (o claves), en concreto al
registro que corresponda.

También menciona que los índices se pueden separar en dos grupos según si cada
entrada del índice apunta a una o varias entradas.

“Los índices se pueden clasificar en dos tipos, según cada entrada señale a la
dirección de un registro del fichero de datos (índice total o denso), o bien apunte a
un grupo de registros del fichero de datos que debe estar ordenado (índice escaso o
no denso). En el caso de índices totales, el fichero puede estar desordenado. Con el
segundo tipo se podría procesar directamente el fichero de datos de forma
secuencial.”6

Según Rafael Camps Paré


Este autor afirma que en el ámbito de las bases de datos un índice ideal debe tener
dos características fundamentales: Los registros deben ser lo más pequeños posible
y solo deben indexar valores únicos.

“Cuanto más pequeña sea la columna indexada mayor velocidad se tendrá en el


acceso a la tabla. (…) Cuanto menor sea la repetición de valores en una columna
indexada, menor será la necesidad de acceder a la tabla y más eficiente será el
índice.”7

3. Usos
Según Mercedes Marqués
Este autor menciona que los índices en las bases de datos se usan para tener un
acceso mas rápido a los registros de una tabla.

“Los índices son estructuras adicionales que se utilizan para acelerar el acceso a
las tablas en respuesta a ciertas condiciones de búsqueda.” 8 (Marqués, 2011).

Según Rafael Camps Paré


Este autor menciona que los índices se usan para optimizar el rendimiento en una
base de datos.

“La indexación es la principal herramienta para optimizar el rendimiento general de


cualquier base de datos.”9 (Paré, 2005)

6
Rafael Menéndez Barzanallana (2006). “Organización de Ficheros y Métodos de Acceso”.
(https://www.um.es/docencia/barzana/IAGP/Iagp7.html). (Consultado el 12 de noviembre de 2020).
7
Rafael Camps Paré (2005). Bases de Datos. Cap. 5.1.1 Pág. 58
8
Mercedes Marqués (2011). Bases de Datos. Cap. 8.1.2 Pág. 159
9
Rafael Camps Paré. Op. Cit., Pág. 55
Según Todd J. Green
Profesor emérito de la universidad de Davis, afirma que los mecanismos de índices
son usados para acceder más rápido a datos principales que estén asociados con
él, en palabras de Green:

“Se utilizan mecanismos de indexación para optimizar determinados accesos a los


datos (registros) gestionados en archivos. Por ejemplo, el autor El catálogo de una
biblioteca es un tipo de índice.”10(Green, 2011)

Green, comparte el poder que tienen los indicies permitiendo relacionar varios tipos
de archivos para optimizar la búsqueda de estos y aligerar el uso de la memoria
principal.

“… Usados como motores de búsqueda, lo índices se centran en la indexación de


texto, y otros tipos de archivos como audio, video, y documentos…” 11(Green, 2011)

4. Ventajas
Según UKEssays
La página ofrece las siguientes ventajas de los índices en bases de datos:

 Los índices de la base de datos ayudan a acelerar la recuperación de datos.


 La computadora no tiene que trabajar tanto para obtener los datos. Son muy
parecidos a los índices de libros, proporcionando a la base de datos puntos
de salto rápido sobre dónde encontrar la referencia completa (o encontrar la
fila de la base de datos).

Según FAEDIS
La página menciona que la principal ventaja de utilizar índices, es que ayudan a
acelerar la recuperación de datos, y que otro gran beneficio de los índices es que el
servidor donde está alojada la base de datos no debe realizar tanto procesamiento
para obtener los datos. Pero en otro apartado menciona 4 ventajas adicionales.

● Ordenamiento por varios criterios


● La ordenación de un archivo por índices es más simple y menos costosa
● Facilita la inserción y eliminación de datos
● Es más eficiente la aplicación de ciertos algoritmos al estar ordenadas en
tuplas

Según Rafael Camps Paré


Este autor menciona varias ventajas del uso de índices en bases de datos:
 Permite ordenar las tablas por varios criterios simultáneamente.
10
Todd. J. Green (2011), “Indexes”, University College of Davis, Dept. of computer science.
(https://web.cs.ucdavis.edu/~green/courses/ecs165a-w11/7-indexes.pdf)
11
Ibid.
 Es menos costoso ordenar un archivo índice, porque incluye sólo referencias
a la información y no la información en sí.
 El coste de inserción y eliminación es menor.
 Con los registros siempre ordenados se utilizarán algoritmos mucho más
eficientes que el simple recorrido secuencial en las consultas.

5. Desventajas
Según UKEssays
La página menciona las siguientes desventajas de los índices:

 Los índices pueden llegar a ocupar bastante espacio, como ejemplo, revise
un libro de texto o una guía de referencia y verá que se necesitan bastantes
páginas para incluir esas referencias de página.
 Otra desventaja es que usar demasiados índices puede ralentizar su base de
datos.
 Además de eso, cada vez que se actualiza o elimina una página o fila de la
base de datos, la referencia o índice también debe actualizarse.

Según FAEDIS
Los índices se almacenan en el disco y la cantidad de espacio requerido dependerá
del tamaño de la tabla y del número y tipo de columnas utilizados en el índice. El
espacio en disco generalmente es lo suficientemente barato como para
intercambiarlo por el rendimiento de la aplicación, particularmente cuando una base
de datos sirve a una gran cantidad de usuarios.

Si los datos se modifican en intervalos regulares, entonces el motor de base de


datos requiere actualizar todos los índices, por lo tanto, demasiados índices
ralentizarán el rendimiento.

Otra consideración es que, si actualizamos un registro y cambiamos el valor de una


columna indexada en un índice agrupado, la base de datos podría necesitar mover
toda la fila a una nueva posición para mantener las filas ordenadas. Este
comportamiento esencialmente convierte una consulta de actualización en un
DELETE seguido de un INSERT, con una evidente disminución en el rendimiento.
La desventaja de un índice no agrupado es que es un poco más lento que un índice
agrupado y puede ocupar bastante espacio en el disco.

En resumen:
● Disminuyen rendimiento
● Toman espacio en disco (esto aumenta con el numero de campos usados y
la longitud de los campos)
● Solo se deben crear índices cuando realmente sea necesario
Según Rafael Camps Paré
Este autor menciona un par de desventajas del uso de índices en bases de datos:
 Los índices ocupan espacio en disco.
 Aun teniendo registros pequeños, el mantener en orden un índice disminuye
la velocidad de las operaciones de escritura sobre la tabla.

6.Tipos de Índices Según su Numero de


Registros

6.1. Densos

Según R. Elmasri y B. Navathe


Afirman que los índices densos son aquellos que tienen una entrada de índice para
cada valor de la clave de búsqueda.

“Los índices también se pueden caracterizar como densos o dispersos. Un índice


denso tiene una entrada de índice para cada valor de clave de búsqueda (y por lo
tanto cada registro) en el archivo de datos.”12 (Elmasri, Navathe, 1999)

Ejemplo:
Supongamos que tenemos un archivo con 100 registros:

Ahora, un índice denso para este archivo tendría una entrada por cada uno de los
registros del archivo:

12
R. Elmasri, B. Navathe (1999). Fundamentals of Database Systems, Cap 18, Pág. 139
Según Silberschatz
Dice que los índices densos son índices primarios en los cuales aparece un registro
por cada valor individual de la clave de búsqueda en el archivo principal y este
contiene el valor de la clave y un apuntador al primer registro con ese valor de la
clave en el archivo principal.

“El registro índice contiene el valor de la clave y un puntero al primer registro con
ese valor de la clave de búsqueda. El resto de registros con el mismo valor de la
clave de búsqueda se almacenan consecutivamente después del primer registro,
dado que, ya que el índice es primario, los registros se ordenan sobre la misma
clave de búsqueda.”13 (Silberschatz, 2002).

Ejemplo:
Si se tiene el siguiente archivo de cuentas (en el que cada fila es un registro que
contiene número de cuenta, ciudad y saldo):

c-217 Barcelona 750


c-101 Daimiel 500
c-110 Daimiel 600
c-215 Madrid 700
c-102 Pamplona 400
c-201 Pamplona 900
c-218 Pamplona 700
c-222 Reus 700
c-305 Ronda 350

Vemos que los registros están organizados alfabéticamente según la clave ciudad.
Ahora, el índice primario denso según la clave ciudad (que también debe estar
organizado alfabéticamente) para este archivo debe ser el siguiente archivo:

13
Abraham Silberschatz (2002). Fundamentos de Bases de Datos. Cap. 12.2.1.1 Pág. 285
Barcelona
Daimiel
Madrid
Pamplona
Reus
Ronda

Vemos que en cada registro del índice tenemos dos campos, el primero es una
clave y el segundo un apuntador que indica el registro donde se encuentra esa clave
en el archivo principal.

También vemos que en el índice aparecen cada uno de los valores de la clave que
aparecen en el archivo principal con la diferencia de que aquí aparecen de manera
única.

Supongamos que buscamos un registro que tiene la clave Pamplona, entonces


primero hacemos una búsqueda secuencial en el índice:
 Vemos que Pamplona es mayor que Barcelona entonces comparamos con el
siguiente registro del índice
 Vemos que Pamplona es mayor que Daimiel entonces comparamos el
siguiente
 Vemos que Pamplona es mayor que Madrid entonces comparamos el
siguiente
 Encontramos a Pamplona en el índice
 Con el apuntador de este registro nos vamos al registro correspondiente del
archivo principal
 Desde este registro buscamos secuencialmente en el archivo principal el
registro que estamos buscando.

Esto es más optimo que buscar secuencialmente sobre el archivo principal


directamente ya que el archivo índice es mucho más pequeño y contiene valores de
la clave únicos lo que hace la búsqueda sobre el mucho más rápida y luego nos
deja muy cerca del registro que buscamos en el archivo principal.

Según Merche Marqués


Sobre los índices densos este autor dice:

“Es un índice que tiene una entrada por cada registro del fichero de datos. Si el
fichero de datos tiene, por ejemplo, 10.000 registros, en el índice hay 10.000
registros, es decir, una entrada por cada uno de ellos.” 14 (Marqués, 2002).

Ejemplo:
Según este autor, si tenemos por ejemplo el siguiente archivo de cuentas (en el que
cada fila es un registro que contiene número de cuenta, ciudad y saldo):

c-217 Barcelona 750


c-101 Daimiel 500
c-110 Daimiel 600
c-215 Madrid 700
c-102 Pamplona 400
c-201 Pamplona 900
c-218 Pamplona 700
c-222 Reus 700
c-305 Ronda 350

Entonces un índice denso según el campo de indexación número de cuenta para


este archivo seria:

c-101
c-102
c-110
c-201
c-215
c-217
c-218
c-222
c-305

Vemos que cada registro del índice tiene dos campos, el primero para un clave
número de cuenta y el segundo para un apuntador a esa clave en el archivo
principal. Vemos que, al ser índice denso, tiene la misma cantidad de registros que
el archivo principal.

14
Merche Marqués (2002). “Tema 2. Organizaciones de ficheros y estructuras de acceso”. Cap. 2.1.,
Pág. 1., (http://www3.uji.es/~mmarques/f47/teoria/preg_tema2.pdf). (Consultado el 15 de noviembre
de 2020).
6.2. No Densos o Dispersos

Según R. Elmasri y B. Navathe


Dicen que los índices no densos son los que tienen menos entradas que el numero
total de registros del archivo principal.

“Un índice disperso tiene menos entradas que el número de registros del archivo.
Por lo tanto, un índice primario es un índice no denso (disperso), ya que incluye una
entrada para cada bloque de disco del archivo de datos y las claves de su registro
de anclaje en lugar de para cada valor de búsqueda (o cada registro).” 15 (Elmasri,
Navathe, 1999).

Ejemplo:
Supongamos que tenemos un archivo con 100 registros:

Ahora, un índice no denso para este archivo tendrá menos entradas que los
registros del archivo, es decir solo tendrá algunos valores de la clave de búsqueda:

15
R. Elmasri, B. Navathe (1999). Fundamentals of Database Systems, Cap 18, Pág. 139
Según Silberschatz
Dice que los índices dispersos son índices primarios que al igual que en los índices
densos cada registro tiene un valor de la clave y un apuntador al primer registro con
ese valor de la clave en el archivo principal, pero en lugar de tener todos los valores
de la clave estos solo tienen un registro indicé para algunos valores.

“Para localizar un registro se busca la entrada del índice con el valor más grande
que sea menor o igual que el valor que se está buscando. Se empieza por el
registro apuntado por esa entrada del índice y se continúa con los punteros del
archivo hasta encontrar el registro deseado.”16 (Silberschatz, 2002).

Ejemplo:
Si se tiene el siguiente archivo (en el que cada fila es un registro):

c-217 Barcelona 750


c-101 Daimiel 500
c-110 Daimiel 600
c-215 Madrid 700
c-102 Pamplona 400
c-201 Pamplona 900
c-218 Pamplona 700
c-222 Reus 700
c-305 Ronda 350

Vemos que los registros están organizados alfabéticamente según la clave ciudad.
Ahora, el índice primario disperso según la clave ciudad (que también debe estar
organizado alfabéticamente) para este archivo puede ser el siguiente archivo:

Barcelona
Madrid
Reus

Vemos que en cada registro del índice tenemos dos campos, el primero es una
clave y el segundo un apuntador que indica el registro donde se encuentra esa clave
en el archivo principal.

También vemos que en el índice no aparecen todos los valores de la clave sino solo
algunos. Aun así, todos los valores que aparecen solo lo hacen una vez.

16
Abraham Silberschatz (2002). Fundamentos de Bases de Datos. Cap. 12.2.1.1 Pág. 285
Supongamos que buscamos un registro que tiene la clave Pamplona, entonces
primero hacemos una búsqueda secuencial en el índice:
 Vemos que Pamplona es mayor que Barcelona entonces comparamos con el
siguiente registro del índice
 Vemos que Pamplona es mayor que Madrid entonces comparamos el
siguiente
 Vemos que Pamplona es menor que Reus entonces tenemos que volver al
anterior registro
 Con el apuntador de este registro nos vamos al registro correspondiente del
archivo principal
 Desde este registro buscamos secuencialmente en el archivo principal el
registro que estamos buscando.

Igual que con el índice denso esto es más optimo que buscar secuencialmente
sobre el archivo principal directamente, la diferencia aquí es que el archivo índice
disperso es incluso más pequeño que el índice denso, sin embargo, este índice
puede que no nos deje tan cerca del registro que buscamos.

Según Merche Marqués


Sobre los índices no densos este autor dice:

“Un índice no denso es un índice que no tiene una entrada por cada registro del fichero de
datos, sino que tiene menos entradas. Dependiendo del tipo de fichero y del tipo de índice,
puede tener una entrada por cada valor distinto del campo de indexación o bien una
entrada por cada bloque del fichero de datos (en un bloque caben, normalmente, varios
registros de datos).”17 (Marqués, 2002).

17
Merche Marqués (2002). “Tema 2. Organizaciones de ficheros y estructuras de acceso”. Cap. 2.1.,
Pág. 1., (http://www3.uji.es/~mmarques/f47/teoria/preg_tema2.pdf). (Consultado el 15 de noviembre
de 2020).
Ejemplo:
Según este autor, si tenemos por ejemplo el siguiente archivo de cuentas (en el que
cada fila es un registro que contiene número de cuenta, ciudad y saldo):

c-217 Barcelona 750


c-101 Daimiel 500
c-110 Daimiel 600
c-215 Madrid 700
c-102 Pamplona 400
c-201 Pamplona 900
c-218 Pamplona 700
c-222 Reus 700
c-305 Ronda 350

Entonces un índice no denso según el campo de indexación ciudad para este


archivo podría ser:

Barcelona
Daimiel
Madrid
Pamplona
Reus
Ronda

Vemos que cada registro del índice tiene dos campos, el primero para una clave
ciudad y el segundo para un apuntador a esa clave en el archivo principal. Vemos
que, al ser índice no denso, no tiene la misma cantidad de registros que el archivo
principal, sino que tiene uno por cada valor distinto del campo de indexación (en
este caso ciudad).

7.Tipos de Índices Según su Campo de


Indexación

7.1. De un solo Nivel

7.1.1. Primarios

Según Silberschatz
Este autor nos dice que el índice primario de un archivo es aquel que trabaja con la
clave según la cual está organizado secuencialmente el archivo principal.
“Si el archivo que contiene los registros está ordenado secuencialmente, el índice
cuya clave de búsqueda especifica el orden secuencial del archivo es el índice
primario.”18 (Silberschatz, 2002).

Para los índices primarios Silberschatz asume que todos los archivos están
ordenados según alguna clave de búsqueda.

“Estos archivos con índice primario según una clave de búsqueda se llaman
archivos secuenciales indexados. Representan uno de los esquemas de índices
más antiguos usados por los sistemas de bases de datos. Se emplean en aquellas
aplicaciones que demandan un procesamiento secuencial del archivo completo, así
como un acceso directo a sus registros.” 19 (Silberschatz, 2002).

Ejemplo:
Si se tiene el siguiente archivo de cuentas (en el que cada fila es un registro que
contiene número de cuenta, ciudad y saldo):

c-217 Barcelona 750


c-101 Daimiel 500
c-110 Daimiel 600
c-215 Madrid 700
c-102 Pamplona 400
c-201 Pamplona 900
c-218 Pamplona 700
c-222 Reus 700
c-305 Ronda 350

Vemos que los registros están organizados alfabéticamente según la clave ciudad.
Ahora, el índice primario para este archivo será el cual cuyos registros contengan de
forma ordenada (alfabéticamente) algunos o todos los valores de la clave ciudad y
de manera única, es decir que cada valor solo aparece una vez. Además, estos
registros contendrán un apuntador al primer registro del archivo principal que
concuerde con esa clave.

Según R. Elmasri y B. Navathe

“Un índice primario es un archivo ordenado cuyos registros son de longitud fija con
dos campos, y actúa como una estructura de acceso para buscar y acceder de
manera eficiente a los registros de datos en un archivo de datos… Hay un registro
de índice en el archivo de índice para cada bloque en el archivo de datos. Cada
entrada de índice tiene el valor del campo de clave principal para el primer registro
de un bloque y un puntero a ese bloque como sus dos valores de campo.” 20(Elmasri,
Navathe, 1999)

Los autores indican también, que el primer campo es del mismo tipo de dato que el
campo de la clave pedida (llamada clave principal) del archivo de datos, y el
18
Abraham Silberschatz (2002). Fundamentos de Bases de Datos. Cap. 12.2 Pág. 284
19
Ibid. Cap. 12.2.1
20
R. Elmasri, B. Navathe (1999). Fundamentals of Database Systems, Cap 18, Pág. 135
segundo campo es un puntero a un bloque de disco. La siguiente figura ilustra este
índice primario. El número total de entradas en el índice es el mismo que el número
de bloques de disco en el archivo de datos ordenado. El primer registro de cada
bloque del archivo de datos se denomina registro de anclaje del bloque, o
simplemente bloque

Índice Primario (Elmasri, Navathe, 1999)

Según José Paramá Gabía


Este autor lleva el concepto de índices primario de un solo nivel, como como índices
ordenados
“La idea en la que se basa una estructura de acceso de índice ordenada es similar a la que
subyace en la usada en un libro de texto, que enumera los términos importantes al final del
libro en orden alfabético junto con una lista de los números de página en los que aparecen
los términos en el libro.”

Si utilizamos este índice, podemos localizar directamente la palabra buscada por su página,
que es mucho más fácil que tomar la alternativa es leer todo el libro.

“el índice suele definirse sobre un solo campo del fichero, lo que denominaremos el campo
de indexación. Por lo general, el índice almacena todos los valores del campo de
indexación junto con una lista de punteros a todos los bloques del disco que contienen
registros con cada valor del campo de indexación. Los valores en el índice están ordenados
para que podamos efectuar búsquedas binarias en el índice.” 21 (Parama Gabia, n.d., 1-2).

Como el fichero del índice es mucho más pequeño que el de datos, una búsqueda binaria
en un índice es bastante eficiente, sobre todo si cabe en memoria principal

Índice de un solo nivel

7.1.2. Secundarios

Según Silberschatz
Este autor nos dice que el índice primario de un archivo es cualquiera que trabaje
con una clave que no sea según la cual está organizado secuencialmente el archivo
principal.

“Los índices cuyas claves de búsqueda especifican un orden diferente del orden
secuencial del archivo se llaman índices secundarios” 22 (Silberschatz, 2002).

21
Parama Gabia, J. R. (n.d.). Indices. Bases de datos, 1(1), 20.
http://quegrande.org/apuntes/EI/2/BD1/teoria/07-08/indices.pdf. Pag 1-2
22
Abraham Silberschatz (2002). Fundamentos de Bases de Datos. Cap. 12.2 Pág. 284
Nos dice que, ya que trabajan con una clave que no esta organizada en el archivo
principal, estos índices no pueden ser dispersos, es decir deben ser densos y
contener todos los valores de la clave de búsqueda. El índice primario puede ser
disperso ya que, aunque este no contenga la clave que estamos buscando nos
puede dejar cerca en una clave menor que la que estamos buscando en el archivo
principal y a partir de ahí es posible hacer una búsqueda secuencial del registro que
necesitamos; pero con un índice secundario no es posible ya que como el archivo
no está organizado según la clave que buscamos no podemos asegurar que
haciendo una búsqueda secuencial desde donde nos deja el índice vamos a
encontrar lo que estamos buscando.

En cuanto a los punteros del índice secundario, cada registro debe tener
apuntadores a todos los registros del archivo principal donde aparezca la clave
correspondiente y no solo al primer registro con esta clave, esto ya que dichos
registros pueden estar en cualquier parte del archivo y no ordenados justo después
del primero como con el índice primario.

Silberschatz indica que el indica que se puede usar un nivel adicional de punteros
para que un registro tenga todos los punteros correspondientes:

“Los punteros en estos índices secundarios no apuntan directamente al archivo. En


vez de eso, cada puntero apunta a un cajón que contiene punteros al archivo.” 23
(Silberschatz, 2002).

Ejemplo:
Si se tiene el siguiente archivo de cuentas (en el que cada fila es un registro que
contiene número de cuenta, ciudad y saldo):

c-217 Barcelona 750


c-101 Daimiel 500
c-110 Daimiel 600
c-215 Madrid 700
c-102 Pamplona 400
c-201 Pamplona 900
c-218 Pamplona 700
c-222 Reus 700
c-305 Ronda 350

Vemos que los registros están organizados alfabéticamente según la clave ciudad.
Ahora, un índice secundario para este archivo puede ser el que trabaja con la clave
saldo. El archivo no está ordenado según la clave saldo sino según la clave ciudad,
por eso es un índice secundario. Este índice es el siguiente:

350
400
500
600

23
Ibid. Cap. 12.2.2 Pág. 288
700
900

Vemos que esta ordenado, con lo cual se puede hacer una búsqueda secuencial
sobre él. Vemos también que es denso, dado que contiene todos los valores de la
clave saldo que aparecen en el archivo principal; no puede ser disperso porque si
fuéramos a buscar por ejemplo la clave 500 y esta no estuviera usaríamos el
apuntador del registro de la clave 400 y este nos dejaría varios registros por debajo
del registro que contiene la clave 500 con lo cual la búsqueda secuencial desde aquí
es inútil.

Aplicando lo que dice Silberschatz acerca del “cajón” de punteros, el índice


secundario del ejemplo puede quedar así:

Vemos que los punteros del índice no apuntan directamente al archivo principal,
sino que apuntan a otra estructura donde están organizados secuencialmente los
punteros a los registros del archivo principal correspondientes a cada clave. Esto se
aprecia mas claro con la clave 700 que aparece tres veces en el archivo principal
por ende el “cajón de punteros” al que apunta el registro 700 del índice tiene tres
espacios.

Según R. Elmasri y B. Navathe

“Un índice secundario proporciona un medio secundario de acceder a un archivo de


datos para el que ya existe algún acceso primario. Los registros del archivo de
datos pueden estar ordenados, desordenados o con hash. El índice secundario se
puede crear en un campo que es una clave candidata y tiene un valor único en cada
registro, o en un campo sin clave con valores duplicados. .” 24 (Elmasri, Navathe,
1999)
24
R. Elmasri, B. Navathe (1999). Fundamentals of Database Systems, Cap 18, Pág. 139
El índice es nuevamente un archivo ordenado con dos campos. El primer campo es
del mismo tipo de datos que algún campo no ordenado del archivo de datos que es
un campo de indexación. El segundo campo es un puntero de bloque o un puntero
de registro.

“Se pueden crear muchos índices secundarios (y, por lo tanto, campos de
indexación) para el mismo archivo; cada uno representa un medio adicional de
acceder a ese archivo en función de algún campo específico.” 25 (Elmasri, Navathe,
1999)

En el ejemplo que proponen los autores, hay una entrada de índice para cada
registro en el archivo de datos, que contiene el valor del campo para el registro y un
puntero al bloque en el que se almacena el registro o al registro en sí.

Índice Secundario Denso (Elmasri, Navathe, 1999)

25
R. Elmasri, B. Navathe (1999). Fundamentals of Database Systems, Cap 18, Pág. 140
La figura anterior ilustra un índice secundario en el que los punteros P (i) en las
entradas del índice son punteros de bloque, no de registro. Una vez que el bloque
de disco apropiado se transfiere a un búfer de memoria principal, se puede realizar
una búsqueda del registro deseado dentro del bloque.

Debido a que los registros del archivo de datos no están ordenados físicamente por
valores del campo de clave secundario, no podemos usar anclajes de bloque. Es
por eso que se crea una entrada de índice para cada registro en los datos

“Un índice secundario normalmente necesita más espacio de almacenamiento y un


tiempo de búsqueda más prolongado que un índice primario, debido a su mayor
número de entradas. Sin embargo, la mejora en el tiempo de búsqueda para un
registro arbitrario es mucho mayor para un índice secundario que para un índice
primario”26 (Elmasri, Navathe, 1999)

Según Nerin Erin


Según el autor un índice secundario proporciona un medio secundario para acceder
a un archivo para el que ya existe algún acceso primario.

"El índice secundario puede estar en un campo que es una clave candidata y tiene
un valor único en cada registro, o una no clave con valores duplicados". 27

Se asume que el índice es un archivo ordenado con dos campos, el primer campo
es un campo de indexación, es decir, contiene un valor índice, y el segundo campo
es un puntero que tiene la dirección a uno o más índices

Ejemplo de asignación a índice secundario

26
R. Elmasri, B. Navathe (1999). Fundamentals of Database Systems, Cap 18, Pág. 140
27
Nerin, Erin (2016) Single Level Indexing, Primera edición. Pag 89
7.1.3. Agrupamiento

Según R. Elmasri y B. Navzthe

“Si los registros de archivo están ordenados físicamente en un campo que no es


clave, que no tiene un valor distinto para cada registro, ese campo se denomina
campo de agrupación y el archivo de datos se denomina archivo agrupado.
Podemos crear un tipo diferente de índice, llamado índice de agrupamiento, para
acelerar la recuperación de todos los registros que tienen el mismo valor para el
campo de agrupamiento. Esto difiere de un índice primario, que requiere que el
campo de orden del archivo de datos tenga un valor distinto para cada registro.” 28
(Elmasri, Navathe, 1999)

Los autores describen el índice de agrupación como un archivo ordenado con dos
campos; el primer campo es del mismo tipo que el campo de agrupación del archivo
de datos y el segundo campo es un puntero de bloque de disco. Hay una entrada en
el índice de agrupamiento para cada valor distinto del campo de agrupamiento, y
contiene el valor y un puntero al primer bloque en el archivo

“Un índice de agrupamiento es un ejemplo de un índice no denso porque tiene una


entrada para cada valor distinto del campo de indexación, que no es clave por
definición y, por lo tanto, tiene valores duplicados en lugar de un valor único para
cada registro del archivo.”29 (Elmasri, Navathe, 1999)

28
R. Elmasri, B. Navathe (1999). Fundamentals of Database Systems, Cap 18, Pág. 136
29
Ibid, Pág. 137
Índice de Agrupamiento (Elmasri, Navathe, 1999)

Según Nerin Erin


Segun este autor un índice de agrupación también es un archivo ordenado con dos campos:
El primer campo es del mismo tipo que el campo de agrupación del archivo
de datos, y el segundo campo es un puntero de bloque.
“Hay una entrada en el índice de agrupación para cada valor distinto del campo de
agrupación, que contiene, el valor y un puntero al primer bloque en el archivo de datos que
tiene un registro con ese valor para su campo de agrupamiento.”30

Según Silberschatz
Según este autor los índices con agrupación son los mismos índices primarios, el no
hace ninguna diferencia entre ellos y afirma que son exactamente iguales.

“Los índices primarios también se llaman índices con agrupación (clustering


indices.) La clave de búsqueda de un índice primario es normalmente la clave
primaria, aunque no es así necesariamente. Los índices cuyas claves de búsqueda
especifican un orden diferente del orden secuencial del archivo se llaman índices
secundarios o índices sin agrupación (non clustering indices).” 31 (Silberschatz,
2002).

7.2. Multinivel

Según Silberschatz
“Incluso si se usan índices dispersos, el propio índice podría ser demasiado grande
para un procesamiento eficiente. (…) Para resolver este problema se trata el índice

30
Nerin, Erin (2016) Single Level Indexing, Primera edición. Pag 90
31
Abraham Silberschatz (2002). Fundamentos de Bases de Datos. Cap. 12.2 Pág. 284
como si fuese un archivo secuencial y se construye un índice disperso sobre el
índice primario, (…) De hecho, se podría repetir este proceso tantas veces como
fuese necesario. Los índices con dos o más niveles se llaman índices multinivel.” 32

Básicamente lo que dice Silberschatz es que si tenemos un archivo tan grande que
su índice es también demasiado grande podemos hacer un índice para buscar en el
índice y si este resulta muy grande también entonces podemos repetir ese proceso
cuanto sea necesario y a esto se le llama índices multinivel.

Por Ejemplo:
Supongamos que tenemos un archivo increíblemente extenso:

Para facilitar la búsqueda en este archivo hacemos un archivo índice, pero este
resulta ser demasiado grande también como para hacer una búsqueda eficiente:

Entonces hacemos otro índice disperso pero que en lugar de tener apuntadores al
archivo principal tendrá apuntadores al otro índice:

32
Abraham Silberschatz (2002). Fundamentos de Bases de Datos. Cap. 12.2.1.2 Pág. 286
Ahora tenemos un índice mas pequeño sobre el cual podemos hacer una búsqueda
más eficiente. Este ultimo índice nos sirve para buscar en el primer índice y con ese
entonces buscamos en el archivo principal.

Si este ultimo índice fuera aun muy grande se podría seguir haciendo índices sobre
índices hasta tener un índice de un tamaño aceptable.

Según R. Elmasri y B. Navathe

Los autores describen los índices de multinivel como una construcción de varios
índices donde unos conducen a otros índices de menor nivel.

“Un índice multinivel considera el archivo de índice, al que ahora nos referiremos
como el primer nivel (o base) de un índice multinivel, como un archivo ordenado con
un valor distinto para cada K (i). Por lo tanto, al considerar el archivo de índice de
primer nivel como un archivo de datos ordenados, podemos crear un índice primario
para el primer nivel; este índice del primer nivel se denomina segundo nivel del
índice multinivel.” ”33 (Elmasri, Navathe, 1999)

Cabe aclarar que solo se requiere de un segundo nivel solo si el primer nivel
necesita más de un bloque de almacenamiento en disco y, de manera similar,
requerimos un tercer nivel solo si el segundo nivel necesita más de un bloque. El
esquema multinivel descrito aquí se puede utilizar en cualquier tipo de índice, ya sea
33
R. Elmasri, B. Navathe (1999). Fundamentals of Database Systems, Cap 18, Pág. 144
primario, de agrupamiento o secundario, siempre que el índice de primer nivel tenga
valores distintos para K (i) y entradas de longitud fija.

La figura 18.6 muestra un índice multinivel construido sobre un índice primario.

Figura 18.6 (Elmasri, Navathe, 1999)

La idea aquí es que el segundo nivel es un índice primario, podemos usar anclajes
de bloque para que el segundo nivel tenga una entrada para cada bloque del primer
nivel, y para todos los niveles posteriores; cada uno tiene un valor de clave y una
dirección de bloque. Podemos repetir este proceso para el segundo nivel. El tercer
nivel, que es un índice primario para el segundo nivel, tiene una entrada para cada
bloque de segundo nivel.
Una organización de archivos común utilizada en el procesamiento de datos
comerciales es un archivo ordenado con un índice primario multinivel en su campo
de clave de pedido. Esta organización se denomina archivo secuencial indexado y
se utilizó en una gran cantidad de los primeros sistemas de IBM.

Según Wenceslao Palma

“permiten reducir la parte del índice que se requiere acceder en un valor equivalente
al factor de bloqueo del índice. La principal desventaja es su naturaleza estática, es
preferible usar un índice multinivel dinámico (árbol B/B+)” 34 (W. Palma, 2005).

8.Accesos al Disco
Los índices son una herramienta para facilitar las búsquedas en la memoria
secundaria y por tanto al hacer uso de estos eventualmente haremos accesos al
disco, accesos que tienen un costo de procesamiento ahora veremos cuantos
accesos a disco se requieren utilizando cada uno de los tipos de índices que vimos.
Antes de eso hay que decir que el uso de índices conlleva una desventaja en cuanto
a procesamiento y es que se requieren accesos adicionales al disco para acceder a
los registros del índice si el índice es demasiado grande para estar en la memoria
principal.

“Índices, la parte mala: se requiere I/O adicional para acceder a las paginas de los
índices (excepto si el índice es lo suficientemente pequeño como para entrar en la

34
Palma, W. (2005). Técnicas de Indexación. En Almacenamiento y Recuperación de la Información
(p. 12). inf.utfsm.cl. https://www.inf.utfsm.cl/~wpalma/ari/indices.pdf Pag 12
memoria principal). (…) El índice debe ser actualizado cuando la tabla es
modificada”35 (Smolka, 2020).

8.1. Índices Densos

Según R. Elmasri y B. Navathe


Para estos autores los índices densos tienen una entrada por cada registro del
archivo, por lo cual habrá una entrada en el índice para cualquier archivo que se
pretenda buscar así que si el índice es demasiado grande para estar en memoria
principal las entradas a disco que se harán son las necesarias para buscar la clave
en el índice y una mas para acceder al archivo principal. Si el índice es lo
suficientemente pequeño para entrar en memoria principal entonces solo será un
acceso al disco.

Según Silberschatz
Para este autor los índices densos son los que tienen una entrada por cada valor
individual de la clave (no contiene una entrada para cada registro del archivo)
entonces los accesos al disco serán los necesarios para buscar la clave que
necesitamos en el índice y luego los necesarios para encontrar el registro que
buscamos en el archivo principal. Si el índice es lo suficientemente pequeño para
entrar en memoria principal entonces solo serán los accesos necesarios para
encontrar el registro buscado en el archivo principal.

Según Merche Marqués


Este autor tiene la misma visión de los índices densos que R. Elmasri y B. Navathe
por lo que los accesos a disco serán los mismos que se mencionaron antes: son las
necesarias para buscar la clave en el índice y una más para acceder al archivo
principal.

8.2. Índices No Densos o Dispersos

Según R. Elmasri y B. Navathe


Según estos autores los índices dispersos no tienen una entrada por cada registro
del archivo, pero si podrían tener o no una entrada por cada valor individual de la
clave de búsqueda. Si este ultimo fuera el caso entonces los accesos al disco serán
los necesarios para buscar la clave que necesitamos en el índice y luego los
necesarios para encontrar el registro que buscamos en el archivo principal. Si el
índice es lo suficientemente pequeño para entrar en memoria principal entonces
35
Scott A. Smolka (2020). “Physical Data Organization and Indexing”. Pág. 6.
(https://www3.cs.stonybrook.edu/~sas/courses/cse305/lectures/ch9.pdf). (Consultado el 15 de
noviembre de 2020).
solo serán los accesos necesarios para encontrar el registro buscado en el archivo
principal.

Según Silberschatz
Este autor dice que los índices dispersos solo tienen algunos valores de la clave de
búsqueda así que se harán accesos al índice hasta que se encuentre una clave
mayor (entonces se toma el puntero de la entrada anterior) o igual a la clave de
búsqueda y luego los accesos necesarios para encontrar el registro buscado en el
archivo principal mediante una búsqueda secuencial. Si el índice es lo
suficientemente pequeño para entrar en memoria principal entonces solo serán los
accesos necesarios para encontrar el registro buscado en el archivo principal.

Según Merche Marqués


Este autor tiene la misma visión de los índices dispersos que R. Elmasri y B.
Navathe por lo que los accesos a disco serán los mismos que se mencionaron
antes: los necesarios para buscar la clave que necesitamos en el índice y luego los
necesarios para encontrar el registro que buscamos en el archivo principal si en el
índice hubiera una entrada por cada valor de la clave y si no entonces se harán
accesos al índice hasta que se encuentre una clave mayor (entonces se toma el
puntero de la entrada anterior) o igual a la clave de búsqueda y luego los accesos
necesarios para encontrar el registro buscado en el archivo principal mediante una
búsqueda secuencial.

8.3. Índices Multinivel

Según Silberschatz
Aquí, primero se hacen los accesos necesarios para buscar la clave que queremos
en el índice mas externo, luego los necesarios para buscar en el índice interno
siguiente y así todos los necesarios para buscar en los índices internos hasta el mas
interno y luego un acceso mas para acceder al registro correspondiente en el
archivo principal. De nuevo, si el índice es lo suficientemente pequeño para entrar
en memoria principal entonces solo será un acceso al disco.

Según R. Elmasri y B. Navathe


La visión de los índices multinivel es muy parecida a la de Silberschatz con la
diferencia de que aquí el índice más interno puede ser disperso y por lo tanto aparte
de todos los accesos necesarios para buscar en cada nivel del índice también se
requieren los necesarios para buscar el registro en el archivo desde el registro en el
que nos deja el índice.
Bibliografía
Abraham Silberschatz (2002). Fundamentos de Bases de Datos. McGraw Inc.
Cuarta Edición.

FAEDIS. (2010). INDEXACIÓN Y ASOCIACIÓN. Odin. Retrieved noviembre 12,


2020, de http://virtual.umng.edu.co/distancia/ecosistema/odin/odin_desktop.php?
path=Li4vb3Zhcy9pbmdlbmllcmlhX2luZm9ybWF0aWNhL2Jhc2VzX2RlX2RhdG9zX2
F2YW56YWRhcy91bmlkYWRfMy8=#slide_1 Consultado el 12 de noviembre de
2020

Merche Marqués (2002). “Tema 2. Organizaciones de ficheros y estructuras de


acceso”. (http://www3.uji.es/~mmarques/f47/teoria/preg_tema2.pdf). (Consultado el
15 de noviembre de 2020).

Nerin, Erin (2016) Single Level Indexing, Primera edición.

Parama Gabia, J. R. (n.d.). Indices. Bases de datos, 1(1), 20.


http://quegrande.org/apuntes/EI/2/BD1/teoria/07-08/indices.pdf Consultado el 12 de
noviembre de 2020

Rafael Menéndez Barzanallana (2006). “Organización de Ficheros y Métodos de


Acceso”. (https://www.um.es/docencia/barzana/IAGP/Iagp7.html). (Consultado el 12
de noviembre de 2020).

Ramez Elmasri, Shamkant B. Navathe (1999). Fundamentals of Database Systems.


Pearson. Segunda Edición.

Theira Irasema Sampeiro Monroy (2005). “Sistemas Operativos, Apuntes Digitales”.


Universidad Autónoma del Estado de Hidalgo (México). Área Académica de
Computación y Electrónica.
(https://web.archive.org/web/20200307080607/http://cidecame.uaeh.edu.mx/lcc/map
a/PROYECTO/libro26/archivos_indexados.html). (Consultado el 13 de noviembre de
2020).

Todd. J. Green (2011), “Indexes”, University College of Davis, Dept. of computer


science. (https://web.cs.ucdavis.edu/~green/courses/ecs165a-w11/7-indexes.pdf).
(Consultado el 12 de noviembre de 2020).

UKEssays. (November 2018). “Advantages and Disadvantages to Using Indexes


Computer Science Essay”. (https://www.ukessays.com/essays/computer-
science/advantages-and-disadvantages-to-using-indexes-computer-science-
essay.php?vref=1). (Consultado el 12 de noviembre de 2020).

Wenecslao Palma M. (2005). “Almacenamiento y Recuperación de la Información”.


(https://www.inf.utfsm.cl/~wpalma/ari/indices.pdf ). (Consultado el 12 de noviembre
de 2020).

También podría gustarte