Indexación de bases de datos

indexación

Cómo funciona realmente la indexación de bases de datos

Una breve descripción de un concepto poderoso: indexación.

Indexación


Una base de datos presenta el almacenamiento organizado de datos. El almacenamiento tiene una estructura específica para dónde se colocan los datos. Cada tipo de base de datos tiene su propio formato para almacenar datos. Están ajustados y optimizados para casos de uso específicos. En el siguiente ejemplo, tenemos una base de datos con información sobre automóviles:

indexación
Ejemplo de una tabla de base de datos con coches

Se ve bien y es fácil navegar a través de él. Pero, ¿alguna vez se ha preguntado cómo se almacenan realmente los datos?

 

Almacenamiento interno

Cada base de datos se almacena internamente en un archivo con una cierta codificación y formato aplicados. En aras de la simplicidad, imaginemos que una base de datos está respaldada por un archivo CSV. Así es como se ve:

ID,Brand,Model,Color,Price
1,Ford,Focus,Grey,42000
2,Toyota,Prius,White,40500
3,BMW,M5,Red,60000
4,Audi,A3,Black,38000
5,Toyota,Camry,White,51500
6,VW,Golf,Grey,32000

Todo parece sencillo. Hacer una búsqueda con solo seis entradas no es un problema. ¿Te imaginas si tuvieras 100.000 entradas? Revisar el archivo se volvería muy lento. El tiempo de consulta aumenta proporcionalmente al tamaño del archivo. Cuando sabemos que la base de datos crecerá con el tiempo, necesitamos encontrar una solución.

Aquí viene la indexación al rescate.

 

Índice de base de datos

Un índice de base de datos es una estructura de datos que se utiliza para acelerar las operaciones de recuperación de datos. Cómo se ve?

Si necesitamos recuperar un automóvil de nuestra tabla por ID 6, sería mucho más rápido saltar a la fila respectiva de inmediato sin recorrer el resto. Esta es la idea principal de la indexación. También necesitamos guardar el desplazamiento que apunta a la entrada respectiva.

La forma más sencilla de lograrlo es mantener el desplazamiento de cada entrada en un hash. La clave es el valor de la columna que queremos indexar (en este ejemplo, es la columna de ID). El valor hash es el desplazamiento en el archivo de base de datos. Para ID = 1, el desplazamiento es 0. Para ID = 2, el desplazamiento es 24. Puede verse así:

Hash Index {1:0, 2:24, 3:51, 4:70, 5:92, 6:118}
1 => {0}         --------->   1,Ford,Focus,Grey,42000   
2 => {24}        --------->   2,Toyota,Prius,White,40500
3 => {51}        --------->   3,BMW,M5,Red,60000
4 => {70}        --------->   4,Audi,A3,Black,38000
5 => {92}        --------->   5,Toyota,Camry,White,51500
6 => {118}       --------->   6,VW,Golf,Grey,32000

Después de agregar un índice, la consulta de autos por ID arrojará resultados más rápido. La solicitud de recuperación va al índice hash y toma el desplazamiento del ID respectivo. Luego comienza a leer el archivo de la base de datos desde el desplazamiento exactamente en la entrada necesaria.

La indexación es una forma adecuada de implementar una restricción de unicidad. Cuando desea garantizar que el valor en una determinada columna es único, entonces es necesario un índice en la columna. De lo contrario, cada operación de inserción se bloqueará al verificar si los nuevos datos ya existen.

También es posible tener varios índices. Si necesitamos tener una consulta rápida por cualquier otra columna, también agregamos un índice. Por ejemplo, podríamos agregar un índice de color y consultar autos rápidos por colores. Pero cada nuevo índice trae costos adicionales a la base de datos.

 

Costos del índice

Primero, cada hash de índice requiere memoria adicional. Cuantos más índices agreguemos, más memoria se utilizará. Es importante recordar agregar un índice solo en las columnas que se consultarán con frecuencia. De lo contrario, indexar cada columna consumirá una enorme cantidad de memoria.

En segundo lugar, para las operaciones de lectura rápida, habrá operaciones de escritura ligeramente más lentas. Cada vez que agregamos una entrada a la tabla, también tenemos que crear un elemento en el índice hash. Una situación similar se aplica a la actualización o eliminación de datos. Este es un compromiso con el que tenemos que lidiar.

 

Para llevar

  • Un índice de base de datos es una buena forma de impulsar las consultas de lectura.
  • La indexación de una columna es necesaria para una restricción de unicidad.
  • Con cada nuevo índice, se consumirá más memoria.
  • Agregar un índice tiene un impacto en las operaciones de escritura y actualización.

Así es como funciona un índice hash simple. Hay muchos otros enfoques para usar índices de bases de datos, como tablas de cadenas ordenadas o árboles B. Utilizan una lógica más compleja y estructuras optimizadas para lograr mejores resultados de rendimiento.

Sin embargo, la idea de guardar la compensación sigue siendo la misma. Con el uso adecuado de los índices, podrá alcanzar un nuevo nivel al trabajar con bases de datos.

Recent Post