sql >> Base de Datos >  >> NoSQL >> MongoDB

Los peligros de crear índices en MongoDB

Los índices son una parte crítica de cualquier operación de base de datos. Definir los índices correctos puede marcar una gran diferencia en el rendimiento de sus servidores de bases de datos. Sin embargo, la creación de índices en MongoDB tiene varios inconvenientes que debe tener en cuenta para sus operaciones diarias. MongoDB a un alto nivel admite tres técnicas para crear índices en sus colecciones.

1. Creación de índice en primer plano

Cuando crea un índice en primer plano, bloquea todas las demás operaciones en la base de datos; en una colección grande, esto puede demorar varias horas. Esto implica que su base de datos está inactiva durante la construcción del índice. Dado que este es el modo predeterminado de creación de índices, no es de extrañar que muchos desarrolladores se disparen en el pie y desencadenen compilaciones accidentales de índices. Realmente no hay una buena razón para activar una compilación de índice en primer plano en un servidor de producción (a menos que sepa que la colección tiene una pequeña cantidad de datos).

2. Creación del índice de fondo

Como su nombre lo indica, el proceso de indexación en segundo plano crea el índice en segundo plano sin afectar la disponibilidad de su servidor de base de datos. Sin embargo, sigue siendo una operación que consume muchos recursos y debería esperar ver una degradación del rendimiento. Además, dado que está sucediendo en segundo plano, puede llevar mucho más tiempo construirlo que los índices de primer plano. En las versiones anteriores de MongoDB (<2.6), cuando creaba un índice en segundo plano en el principal de un conjunto de réplicas, se ejecutaba como una compilación "en primer plano" en los servidores secundarios, afortunadamente ya no es el caso, es una compilación en segundo plano en todos los nodos. Si se interrumpe la creación de un índice en segundo plano, se reanudará como una creación de índice en primer plano al reiniciar el servidor.

3. Construcción de índice móvil

El proceso de generación de índices continuos genera el índice en un solo nodo a la vez. Es algo como esto:

  1. Rote un nodo secundario fuera del conjunto de réplicas (puede hacerlo cambiando los puertos o reiniciando en modo independiente).
  2. Cree el índice en este nodo en primer plano. Una vez que se crea el índice, vuelva a rotar el nodo en el conjunto de réplicas.
  3. Una vez que el nodo se haya puesto al día con los cambios, continúe con el siguiente nodo. Si el siguiente nodo es el principal, deberá ejecutar rs.stepDown() para convertirlo en secundario.
  4. Enjuague y repita.

En la documentación de MongoDB encontrará más detalles sobre el proceso de creación de índices.

Con las compilaciones de índices continuos, puede crear un índice sin ningún impacto significativo en el rendimiento de su aplicación. Sin embargo, hay una conmutación por error involucrada, por lo que su aplicación debería poder manejar eso (lo que necesita de todos modos).

¿Puede hacer una compilación de índice móvil si no tiene un conjunto de réplicas? Desafortunadamente para las instancias independientes, la única opción es una "construcción de índice de fondo".

La creación de índices móviles es nuestro enfoque favorito para crear índices en ScaleGrid. Incluso proporcionamos una interfaz de usuario y le facilitamos el inicio de todo el proceso desde nuestra interfaz de usuario. Nuestro backend hará toda la orquestación necesaria para la construcción del índice completo:activará una construcción de índice de servidor por servidor. ¡Solo necesita configurarlo con nosotros y luego apuntar y hacer clic!

Como siempre, si tiene más preguntas, puede comunicarse con nosotros en [email protected].