Está en la página 1de 20

1ndices

Abstract
En primera instancia buscamos definir acertadamente lo que son los ndices y as 2
posteriormente llegar a puntualizar toda su clasificacin y las diferencias entre cada una teniendo
como objetivo identificar y distinguir claramente cada uno de los tipos de ndices.Tabla de
Contenidos

Captulo 1 ndices............................................................................................................................1
Ventajas........................................................................................................................................2
Desventajas..................................................................................................................................2
Captulo 2 ndices Primarios..........................................................................................................4
Clculo de Nmero de Accesos al Disco.....................................................................................5
Ejemplo....................................................................................................................................6
Ejemplo....................................................................................................................................6
Captulo 3 ndices por Agrupacin.................................................................................................8
Clculo de Nmero de Accesos al Disco.....................................................................................9
Captulo 4 ndices Secundarios....................................................................................................10
Clculo de Nmero de Accesos al Disco...................................................................................11
Ejemplo..................................................................................................................................13
Captulo 5 ndices Multinivel.......................................................................................................15
Lista de referencias........................................................................................................................18
Captulo 1

ndices

Para poder hablar de tipos de ndices buscamos definir su significado claramente

llegando a decir que un ndice es un archivo usado para agilizar la recuperacin de los

registros. Es redundante puesto que la informacin que almacena se encuentra en el

archivo al cual indexa. La ventaja, sin duda, viene por la va de recuperar los registros de

manera ms rpida.

Una clara comparacin de ndices es la de un ndice de un libro donde tenemos

los captulos del libro y sus respectivas pginas. Un ndice es una estructura de datos que

permite recuperar las filas de una tabla de forma ms rpida adems de proporcionar una

ordenacin distinta a la natural de la tabla. Un ndice se define sobre una columna o sobre

un grupo de columnas, y las filas se ordenarn segn los valores contenidos en esas

columnas.1 Por ejemplo, si definimos un ndice sobre la columna poblacin de la tabla de

clientes, el ndice permitir recuperar los clientes ordenados por orden alfabtico de

poblacin.

Si el ndice se define sobre varias columnas, los registros se ordenarn por la

primera columna, dentro de un mismo valor de la primera columna se ordenarn por la

segunda columna, y as sucesivamente.2 Por ejemplo, si definimos un ndice sobre las

columnas provincia y poblacin se ordenarn los clientes por provincia y dentro de la

1
Definicin de ndices de Aula Clic
2
Descripcin del Comportamiento de ndices de Aula Clic
misma provincia por poblacin, aparecen los de ALICANTE Dnia, ALICANTE Xixona,

VALENCIA Benetsser, VALENCIA Oliva.

El orden de las columnas dentro de un ndice es importante, si retomamos el

ejemplo anterior y definimos el ndice sobre poblacin y provincia, aparecern los de

VALENCIA Benetusser, ALICANTE Denia, VALENCIA Oliva, ALICANTE Xixona.

Ahora se ordenan por poblacin y los clientes de la misma poblacin se ordenarn por el

campo provincia.

Ventajas

Si una tabla tiene definido un ndice sobre una columna se puede localizar mucho

ms rpidamente una fila que tenga un determinado valor en esa columna.

Recuperar las filas de una tabla de forma ordenada por la columna en cuestin

tambin ser mucho ms rpido.3

Desventajas

Al ser el ndice una estructura de datos adicional a la tabla, ocupa un poco ms de

espacio en disco.

Cuando se aaden, modifican o se borran filas de la tabla, el sistema debe actualizar

los ndices afectados por esos cambios lo que supone un tiempo de proceso mayor.

Los inconvenientes comentados en este punto no son nada comparados con las

ventajas si la columna sobre la cual se define el ndice es una columna que se va a utilizar

a menudo para buscar u ordenar las filas de la tabla. Por eso una regla bastante acertada

3
Ventajas de los ndices de Aula Clic
es definir ndices sobre columnas que se vayan a utilizar a menudo para recuperar u

ordenar las filas de una tabla.4

Captulo 2

ndices Primarios
4
Desventajas de los ndices de Aula Clic
Un ndice primario es un fichero ordenado cuyos registros son de longitud fija y

contienen dos campos. El primero de estos campos tiene el mismo tipo de datos que el

campo clave de ordenacin (llamado clave primaria) del fichero de datos, y el segundo

campo es un puntero a un bloque de disco (una direccin de bloque). Hay una entrada de

ndice (o registro de ndice) en el fichero del ndice por cada bloque del fichero de datos.

Cada entrada del ndice contiene, como valores de sus dos campos, la clave primaria del

primer registro de un bloque y un puntero a ese bloque.5

Figura 1. Esquema de ndices Primarios.

5
Definicin de ndices Primarios del paper Estructura de ndices para ficheros p2
Clculo de Nmero de Accesos al Disco

Cada entrada del ndice contiene, como valores de sus dos campos, la clave del

primer registro de un bloque y un puntero a ese bloque. A estos dos valores de los campos

de la entrada de ndice i se llama < K(i), P(i)>.

El primer registro de cada bloque del fichero de datos se denomina registro ancla

del bloque. Los ndices se pueden dividir tambin en densos o dispersos. Un ndice denso

tiene una entrada de ndice por cada valor de la clave de bsqueda del fichero de datos.

Un ndice disperso por el contrario, tiene entradas de ndice solo para algunos valores de

bsqueda. Un ndice primario es por tanto un ndice no denso, ya que incluye una entrada

por cada bloque de disco del fichero de datos en lugar de por cada valor de bsqueda.

El fichero del ndice de un ndice primario requiere muchos menos bloques que el

fichero de datos ya que hay menos entradas de ndice que registros en el fichero de datos,

a su vez cada entrada del ndice suele ser de menos tamao que un registro de datos

porque solo tiene dos campos; en consecuencia, en un bloque pueden caber ms entradas

de ndice que registros de datos. Por eso una bsqueda binaria en el fichero del ndice

requiere menos accesos a bloques que una bsqueda binaria en el fichero de datos.

A un registro cuyo valor de clave primaria sea K, le corresponde estar en el

bloque cuya direccin es P(i), donde . El i-simo bloque del fichero de datos contiene

todos esos registros debido a la ordenacin fsica de los registros del fichero segn el

campo de clave primaria. Para recuperar un registro, dado el valor K de su campo de

clave primaria, se realiza una bsqueda binaria en el fichero del ndice hasta encontrar la
entrada de ndice apropiada, i, y luego se recupera el bloque del fichero de datos cuya

direccin sea P(i).

Ejemplo.

Suponga que tenemos un fichero ordenado con r =30.000 registros almacenados

en un disco con un tamao de bloque B 1.024 bytes. Los registros del fichero son de

longitud fija y no estn extendidos, tienen una longitud R=100 bytes. El factor de bloques

del fichero sera fbl= L(B/R)= (1.024/100) = 10 registros por bloque. El nmero de

bloques requerido para el fichero es b =(r/fbl)=(30000/10)=3000 bloques. Una bsqueda

binaria en el fichero de datos requerira aproximadamente (LOG2 b)= LOB2(3000)= 12

accesos a bloques.6

Supongamos ahora que el campo clave de ordenacin del fichero tiene V = 9

bytes de longitud, que un puntero a bloque tiene P= 6 bytes de longitud y que hemos

construido un ndice primario para el fichero. El tamao de cada entrada del ndice es Ri=

(9 + 6)= 15 bytes, de modo que el factor de bloques del ndice es fbli=(B/R)=(1024/15)=

68 entradas por bloque. El nmero total de entradas del ndice r, es igual al nmero de

bloques del fichero de datos, que es 3.000. Por tanto, el nmero de bloques del ndice es

bi= (ri/fbli)=(3000/68)=45 bloques.

Ejemplo.

6
Ejemplo de ndices Primarios del paper Estructura de ndices para ficheros p3
Suponer un fichero ordenado con r=30.000 registros almacenados en un disco de

tamao de bloque B=1.024 bytes. Los registros del fichero son de longitud fija y no estn

extendidos, tienen longitud R=100 bytes.

Archivo de datos:

Factor de bloques: 1024/100= 10 [reg/bloque]

Bloques en el archivo: 30.000/10 = 3.000 [bloques]

ndice primario:

Entrada en el ndice: 9+6 = 15 [bytes]

Factor de bloqueo: 1024/15= 68 [entradas/bloque]

Cantidad de bloques: 10000/68= 148 [bloques]

Accesos

Binaria en el ndice + lineal en el bloque= log2 (3.000)= 12


Captulo 3

ndices por Agrupacin

Un ndice de agrupacin es tambin un fichero ordenado con dos campos; el

primero es del mismo tipo que el campo de agrupacin del fichero de datos, y el segundo

es un puntero a un bloque. Hay una entrada en el ndice de agrupacin por cada valor

distinto del campo de agrupacin y contiene el valor y un puntero al primer bloque del

fichero de datos que tenga un registro con ese valor en el campo de agrupacin.7

A fin de aliviar el problema de insercin, se suele reservar un bloque Completo (o

un grupo de bloques contiguos) por cada valor del campo de agrupacin; todos los

registros con ese valor se colocan en el bloque (o grupo de bloques). Esto hace

relativamente sencillas la insercin y la eliminacin.

Los ndices de agrupacin son un ejemplo ms de ndices no densos, porque

tienen una entrada por cada valor distinto del campo de indexacin, no por cada registro

del fichero.

Los ndices son un tanto parecidos a las estructuras de directorio empleadas para

el direccionamiento extensible.

7
Definicin de ndices por agrupacin del paper Estructura de ndices para ficheros p4
En ambos se busca un puntero al bloque de datos que contiene el registro deseado.

Una diferencia importante es que la bsqueda en un ndice utiliza los valores del propio

campo de bsqueda, en tanto que la bsqueda en un directorio de direccionamiento

calculado emplea los valores de direccionamiento que se calculan aplicando la funcin de

direccionamiento calculado al campo de bsqueda.8

Figura 2. Esquema de ndices por Agrupacin.

Clculo de Nmero de Accesos al Disco

Un ndice de agrupacin hace menos accesos a bloques de disco porque se limita

a buscar sobre el bloque con el campo de agrupacin requerido, por lo que el peor de los

casos ser tener que recorrer todo el bloque en bsqueda de la clave. Dicho de otra

8
Explicacin de ndices por Agrupacin del paper Estructura de ndices para ficheros p4
manera, en un ndice de agrupacin deber acceder al disco n veces, donde n=nmero de

claves de bsquedas de un mismo bloque.9

Captulo 4

ndices Secundarios

Un ndice secundario es tambin un fichero ordenado con dos campos. El primer

campo es del mismo tipo de datos que el de cualquier campo que no sea el de ordenacin

del fichero de datos, y se denomina campo de indexacin. El segundo campo es o bien un

puntero a bloque o bien un puntero a registro. Puede haber varios ndices secundarios (y

por tanto, campos de indexacin) para el mismo fichero.10

Primero consideraremos una estructura de acceso de ndice secundario sobre un

campo clave que tiene un valor distinto para cada registro. En ocasiones a estos campos

se les llama claves secundarias. En este hay una entrada de ndice por cada registro del

fichero de datos, que contiene el valor de la clave secundaria para ese registro y un

puntero, ya sea al bloque en cl que est almacenado ese registro o al registro mismo. Por

tanto, el ndice es denso.

Normalmente un ndice secundario necesita ms espacio de almacenamiento y

tiempos de bsqueda ms largos que un ndice primario, debido a su mayor nmero de

entradas. No obstante, la mejora en el tiempo de bsqueda de un registro arbitrario es

mucho mayor para un ndice secundario que para uno primario, pues tendramos que

9
Explicacin de Clculo de Accesos al Disco en ndices por Agrupacin del recurso
electrnico que se encuentra en:
http://di002.edv.uniovi.es/~fcano/bdatos/materiales/transpa/Cap12-Index-Hash.pdf
10
Definicin de ndices Secundarios del paper Estructura de ndices para ficheros p5
realizar una bsqueda lineal en el fichero de datos si no existiera el ndice secundario. En

el caso de un ndice primario, podramos realizar una bsqueda binaria en el fichero

principal, incluso si no existiera dicho ndice.

Figura 3. Esquema de ndices Secundarios.

Clculo de Nmero de Accesos al Disco

Si el ndice secundario esta sobre un campo clave se dice que es un ndice denso,

pues contiene una entrada de i por cada registro de fichero de datos.

Cada entrada es un registro de longitud fija y dos campos <k(i), p(i)>, donde k(i)

es el valor de la clave secundaria de un registro y p(i) es un apuntador sea a ese registro a

al bloque donde est dicho registro (en cuyo caso, una vez copiado el bloque en el buffer

de memoria, para acceder al registro ser necesario buscarlo secuencialmente dentro del

bloque hasta dar con el).11

11
Explicacin de Clculo de Accesos al Disco en ndices Secundarios del recurso
electrnico que se encuentra en: http://www.grch.com.ar/docs/bd/apuntes/BDTema10.pdf
Las entradas estn ordenadas segn el valor de k(i), de forma que es posible

realizar bsquedas binarias en el ndice. Por otro lado, un ndice secundario necesita ms

espacio que un ndice primario y su tiempo de bsqueda es superior, pues contiene ms

entradas.

Si el ndice secundario no est sobre un campo clave e pueden presentar varios

casos:

a) Incluir varias entradas de un ndice con el mismo valor de k(i). Es decir, cada

entrada ser un registro de longitud fija que contendr los valores <k(i), p(i)>,

done p(i) es un puntero a uno de los registros con dicho valor k(i) en el campo de

indexacin. En este caso el ndice es denso.

b) Incluir una nica entrada de ndice por cada valor distinto del campo de

indexacin, y permitir que las entradas del ndice tengan longitud variable, de

forma que cada entrada de ndice pueda contener varios punteros <k(i), [p(i),

p(i1), ...p(in)]>, donde cada p(i1) apunta al bloque donde este uno de los n

registros con valor k(i) en el campo de indexacin.

En ambos casos es necesario hacer uso del algoritmo de bsqueda binaria

en el ndice.

c) Incluir una nica entrada por cada valor distinto del campo de indexacin,

pero las entradas son de longitud fija. Ahora se utiliza un nivel adicional de

direccin para manejar punteros mltiples.

Cada entrada contendr los valores <k(i), p(i)>, donde p(i) es un puntero a

un bloque de apuntadores a registros. Si hay muchos registros con valores k(i) y


se agota el espacio en el bloque de apuntadores, este se enlaza con un nuevo

bloque de apuntadores.

Ahora, la obtencin de datos necesita un acceso a bloque adicional, pues

hay un nivel extra, pero los algoritmos de insercin, bsqueda y eliminacin son

sencillos.

Ejemplo.

Consideremos un fichero con r =30.000 registros de longitud fija de tamao

R=100 bytes, almacenado en un disco con un tamao de bloque B=1.024 bytes. El

fichero tiene b= 3.000 bloques, segn el clculo para efectuar una bsqueda lineal en

este fichero tendramos que realizar b/2 =3000/2 =1500 accesos a bloques en promedio.
12
Supongamos que construimos un ndice secundario basado en un campo clave que no

sea el de ordenacin del fichero que tiene V = 9 bytes de longitud. un puntero a bloque

tiene P=6 bytes de longitud, as que cada entrada de ndice tiene Ri =(9 + 6) =15 bytes y

el factor de bloques del ndice tiene fbli= (B/R1)=( 1.024/15)= 68 entradas por bloque.

En un ndice secundario denso como ste, el nmero total de entradas del ndice r, es

igual al nmero de registros del fichero de datos, que es 30.000. El nmero de bloques

requeridos para el ndice ser entonces bi=(r/fbl)=(30000/68)=442 bloques.

Una bsqueda binaria en este ndice secundario requiere (log2 bi)=((log2 442)= 9

accesos a bloque. Para buscar el registro empleando el ndice, requerimos un acceso

adicional a un bloque del fichero de datos haciendo un total de 9 + 1=10 accesos a

bloque, mucho menor que los 1500 accesos a bloque que requiere en promedio una

12
Ejemplo de ndices Secundarios del paper Estructura de ndices para ficheros p6
bsqueda lineal, pero no tan bueno como los 7 accesos a bloque que se necesitan con el

ndice primario.
Captulo 5

ndices Multinivel

Los ndices multinivel se basan en la idea de reducir la parte del ndice que

seguiremos examinando en fbli (factor de bloques del ndice) que es mayor que 2. Por

tanto, el espacio de bsqueda se reduce con mucha rapidez. El valor fbli se conoce como

abanico (fan-out) del ndice multinivel y nos referiremos a l con la abreviatura fo. Una

bsqueda en un ndice multinivel requiere aproximadamente (logF0 Bi) accesos a bloque,

que es una cifra menor que la de la bsqueda binaria si el abanico es mayor que 2.13

El ndice multinivel considera el fichero del ndice, al que ahora llamaremos

primer nivel (o nivel base) del ndice multinivel, como un fichero ordenado con un valor

distinto para cada K(i).

Por tanto, podemos crear un ndice primario para este primer nivel; a este ndice

del primer nivel se le denomina segundo nivel del ndice multinivel. Como el segundo

nivel es un ndice primario, podemos usar anclas de bloques para que el segundo nivel

tenga una entrada por cada bloque del primer nivel. El factor de bloques fbli del segundo

nivel, y de todos los niveles siguientes, es el mismo que el del ndice de primer nivel,

porque todas las entradas del ndice tienen el mismo tamao; cada una tiene un valor de

campo y una direccin de bloque. Si el primer nivel tiene r1 entradas, y el factor de

bloques (que es tambin el abanico) del ndice es tbli=f0, entonces el primer nivel

requerir (r1/f0) bloques, que en consecuencia ser el nmero de entradas r2 requeridas

en el segundo nivel del ndice.

13
Definicin de ndices Multinivel del paper Estructura de ndices para ficheros p6
Podemos repetir este proceso para el segundo nivel. El tercer nivel, que es un

ndice primario del segundo nivel, tiene una entrada por cada entrada del segundo nivel,

as que el nmero de entradas del tercer nivel es r3=(r2/fo). Cabe sealar que slo

necesitaremos un segundo nivel si el primero requiere ms de un bloque de

almacenamiento en disco, y, de manera similar, slo necesitaremos un tercer nivel si el

segundo requiere ms de un bloque. Podemos repetir el proceso anterior hasta que todas

las entradas de un nivel t del ndice quepan en un solo bloque. Este bloque del t-simo

nivel se denomina ndice de nivel superior. Cada nivel reduce el nmero de entradas del

nivel anterior en un factor de fo (el abanico del ndice), as que podemos usar la frmula

1<=(r1/(fo)^t) para calcular t. Por tanto, un ndice multinivel con r1, entradas en el primer

nivel tendr aproximadamente t niveles, donde t=((log fo (r1))).14

El esquema multinivel que hemos descrito se puede usar para cualquier tipo de

ndice, sea primario, de agrupacin o secundario, siempre que el ndice del primer nivel

tenga valores distintos para K(i) y entradas de longitud fija.

14
Explicacin de ndices Multinivel del paper Estructura de ndices para ficheros p6
Figura 4. Esquema de ndices Multiniveles.
Lista de referencias

Anon, (2017). [online] Available at:


http://di002.edv.uniovi.es/~fcano/bdatos/materiales/transpa/Cap12-Index-
Hash.pdf [Accessed 11 Mar. 2017].

Anon, (2017). [online] Available at:


http://www.grch.com.ar/docs/bd/apuntes/BDTema10.pdf [Accessed 11 Mar.
2017].

Anon, (2017). [online] Available at: http://changuitos.free.fr/Basesdedatos/Capitulo6.pdf


[Accessed 12 Mar. 2017].

Anon, (2017). [online] Available at: http://www3.uji.es/~mmarques/f47/teoria/tema2b.pdf


[Accessed 15 Mar. 2017].

Aulaclic.es. (2017). Conceptos Indices. [online] Available at:


http://www.aulaclic.es/sql/b_8_4_1.htm [Accessed 12 Mar. 2017].

También podría gustarte