seegongsik
Mis palabras
Datos

Indices: hacer rapidas las busquedas

Imagina buscar una palabra en un libro grueso. Leer de la primera pagina a la ultima toma demasiado. Por eso un libro tiene un indice al final. Lista palabras con numeros de pagina, asi saltas directo a esa pagina. Una base de datos es igual. Cuando los datos crecen, recorrerlos desde el inicio es muy lento, asi que construye un indice, una especie de mapa de busqueda, de antemano.

01

Un libro tiene un indice al final

Antes vimos como una base de datos
encuentra la fila que quiere.
Pero cuando hay muchos datos,
recorrerlos de inicio a fin es lento.
Es igual que cazar una palabra
en un libro grueso desde la primera pagina.
Por eso un libro tiene un indice al final.
Un numero de pagina va junto a cada palabra,
asi saltas directo a esa pagina.

Hallar una palabra en un libro grueso
page 1
page 2
page 3
page 4
page 5palabra a hallar
page 6
indice: palabra -> page 5
Toca ambas formas para comparar los pasos

Compara recorrer el texto desde el inicio con saltar usando el indice. ¿Cuantos pasos toma cada uno?

Saltar con el indice
lo encontro en muchos menos pasos.
El indice de una base de datos
es exactamente esta busqueda.
Es un mapa hecho de antemano
para hallar los datos rapido.
Pero los indices vienen en tipos.
Hallar un valor exacto
y hallar un rango son distintos.

02

Para un valor exacto, un indice hash

A veces quieres hallar
solo un valor exacto, como "Kim".
Para eso, un indice hash va bien.
Un hash toma el nombre
y calcula un numero de casilla al instante.
Asi, sin recorrer fila por fila,
salta a esa casilla en un paso.
Es como saber el numero de un casillero
y abrir justo ese.

nombres (valor exacto)
casillas
0
1
2
3
4
Toca un nombre para hallar su casilla con el hash

Toca un nombre y el hash calcula un numero de casilla, saltando a esa caja en un paso.

Con solo un nombre
hallo el lugar de una vez.
Un indice hash es asi de rapido
para hallar un valor exacto.
Pero tiene un punto debil.
Un hash dispersa los valores,
asi que hallar por un rango,
como "de 20 a 30 anos",
lo hace mal. Ahi hace falta otro indice.

03

Para un rango, un indice de arbol

A veces quieres hallar
por un rango, como "de 20 a 30 anos".
Para eso, un indice de arbol va bien.
Un indice de arbol mantiene los valores
ordenados de menor a mayor.
Asi, una vez hallado el valor inicial,
puedes correr justo a su lado,
recorriendo en orden los valores del rango.
Es como un diccionario en orden alfabetico.

indice de arbol ordenado (edad)
Toca el valor inicial del rango

Toca para fijar el rango a hallar. El indice de arbol ordenado halla el valor inicial y recorre el rango.

Como esta ordenado,
el rango corrio suave hacia el lado.
Un hash localiza un punto,
un arbol recorre una linea.
Asi que el indice correcto depende
de lo que buscas a menudo.
Muchos valores exactos, usa hash;
muchos rangos, usa arbol.
Pero un indice no es gratis.

04

Un indice no es gratis

Un indice tambien tiene desventajas.
Primero, ocupa espacio extra.
Como la busqueda se escribe aparte,
usa ese tanto mas de sitio.
Segundo, cuando los datos cambian
el indice debe cambiar con ellos.
Si anades o borras una fila,
la busqueda hay que actualizarla para que cuadre.
Asi que crear muchos a ciegas es una perdida.

tabla de datos
Ann
Ben
Cho
indice (busqueda)
Ann#0
Ben#1
Cho#2
espacio que usa el indice: 3 celdas
Anade o borra una fila y el indice la sigue

Anade o borra una fila. Cada vez que los datos cambian, el indice tambien se actualiza, y el espacio que usa crece.

Cada vez que los datos cambiaban
el indice se movia con ellos.
Y ocupaba mas y mas espacio.
Por eso hacemos un indice
solo para valores que buscamos a menudo.
Sopesamos la ganancia de velocidad
contra el costo de espacio y actualizaciones
en una balanza.
Bien elegido, las busquedas van mucho mas rapidas.

05

Resumamos

Reunido en una linea, es esto.
Un indice, como la busqueda al final del libro,
es un mapa que te deja saltar rapido.
Un indice hash localiza un valor exacto
de un solo paso,
y un indice de arbol, al estar ordenado,
va bien para recorrer un rango.
Pero usa espacio extra
y hay que actualizarlo cuando los datos cambian.

1. busqueda del libro = mapa para saltar rapido
2. indice hash para un valor exacto
3. indice de arbol ordenado para un rango
4. no es gratis (espacio + actualizaciones)
Pulsa el boton para repasar los puntos clave en orden

Toca los puntos clave en orden para repasar. (busqueda del libro -> hash para exacto -> arbol para rango -> no es gratis)

Ahora sabes como un indice
hace rapidas las busquedas.
Hemos visto como hallar datos rapido,
asi que ahora pasamos a manejar
los datos de forma segura.
¿Que pasa cuando muchas personas
tocan los mismos datos a la vez?
Resolvamos ese problema delicado
juntos en la proxima leccion.

En una líneaCuando hay muchos datos, recorrerlos desde el inicio es lento. Un indice es como la busqueda al final del libro, un mapa hecho de antemano para que la base de datos salte directo al lugar correcto. Hay dos tipos. Un indice hash localiza un valor exacto de un solo paso. Un indice de arbol mantiene los valores ordenados, asi que va bien para recorrer un rango. Pero no es gratis. Un indice ocupa espacio extra, y cuando los datos cambian el indice tambien hay que actualizarlo. Aun asi, bien usado, hace las busquedas mucho mas rapidas.
Datos
¿Te fue útil? Apoyar seegongsik