Documentos de Académico
Documentos de Profesional
Documentos de Cultura
CIENCIAS DE LA COMPUTACIÓN II
ÍNDICES
“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).
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.
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
“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:
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:
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
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).
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:
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.
4. Ventajas
Según UKEssays
La página ofrece las siguientes ventajas de los índices en bases 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.
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.
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.1. Densos
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):
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.
“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-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
“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):
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.
“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):
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.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):
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.
“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
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
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:
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):
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.
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.
“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í.
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
"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
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
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
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 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.
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.
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 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.
“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).
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 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 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.