21 - Indices

Otro elemento esencial en MongoDB son los índices.

Los índices sirven para acceder a los documentos de una colección rápidamente, acelerando la localización de la información.

Los índices se emplean para facilitar la obtención de información de una colección. El indice de una colección desempeña la misma función que el índice de un libro: permite encontrar datos rápidamente; en el caso de las colecciones, localiza documentos.

Mongo accede a los documentos de dos maneras:

1) recorriendo las colecciones; comenzando desde el principio y extrayendo los documentos que cumplen las condiciones de la consulta; lo cual implica posicionar las cabezas lectoras, leer el dato, controlar si coincide con lo que se busca (como si pasáramos una a una las páginas de un libro buscando un tema específico).

2) empleando índices; recorriendo la estructura de árbol del índice para localizar los documentos y extrayendo los que cumplen las condiciones de la consulta (comparando con un libro, diremos que es como leer el índice y luego de encontrar el tema buscado, ir directamente a la página indicada).

Un índice posibilita el acceso directo y rápido haciendo más eficiente las búsquedas. Sin índice, MongoDB debe recorrer secuencialmente todos los documentos de una colección para encontrar un documento en particular.

Los índices son estructuras asociadas a las colecciones, una colección almacena los campos indexados y se crean para acelerar las consultas.

Entonces, el objetivo de un indice es acelerar la recuperación de información. La indexación es una técnica que optimiza el acceso a los datos, mejora el rendimiento acelerando las consultas y otras operaciones como pueden ser las modificaciones y borrados. Es útil cuando las colecciones contienen cientos de miles o millones de documentos.

La desventaja es que consume espacio en el disco y genera costo de mantenimiento (tiempo y recursos) cuando se efectúan inserciones y modificaciones.

Es importante identificar el o los campos por los que sería útil crear un índice.

No se recomienda crear índices sobre campos que no se usan con frecuencia en consultas o en colecciones muy pequeñas.

Los cambios sobre las colecciones, como inserción, actualización o eliminación de documentos, son incorporados automáticamente en los archivos índices.

En MongoDB el primer índice que se crea en forma automática corresponde al campo _id, recordemos que dicho campo podemos asignarle un valor nosotros o hacer que se cree automáticamente.

Los otros campos a los cuales se le crearán índices deberán ser seleccionados por nosotros dependiendo de las consultas de nuestra aplicación a la base de datos.

Los índices que se crean en MongoDB funcionan de manera similar a como funcionan en gestores de bases de datos relacionales (MySQL, SqlServer, PostgreSQL etc)