MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Os perigos de construir índices no MongoDB

Os índices são uma parte crítica de qualquer operação de banco de dados. Definir os índices corretos pode fazer uma grande diferença no desempenho de seus servidores de banco de dados. No entanto, a criação de índices no MongoDB tem várias armadilhas que você precisa estar ciente para suas operações diárias. O MongoDB em alto nível oferece suporte a três técnicas para criar índices em suas coleções.

1. Criação de índice em primeiro plano

Quando você cria um índice em primeiro plano, ele bloqueia todas as outras operações no banco de dados – em uma coleção grande, isso pode levar várias horas. Isso implica que seu banco de dados está inativo durante a construção do índice. Dado que este é o modo padrão de construção de índices, não é surpreendente que muitos desenvolvedores se atirem no pé desencadeando construções de índices acidentais. Não há realmente nenhuma boa razão para acionar uma compilação de índice de primeiro plano em um servidor de produção (a menos que você saiba que a coleção tem uma pequena quantidade de dados).

2. Criação de índice de plano de fundo

Como o nome indica, o processo de indexação em segundo plano cria o índice em segundo plano sem afetar a disponibilidade do servidor de banco de dados. No entanto, ainda é uma operação de uso intensivo de recursos e você deve esperar ver a degradação do desempenho. Além disso, como está acontecendo em segundo plano, pode levar muito mais tempo para construir do que os índices de primeiro plano. Nas versões anteriores do MongoDB (<2.6), quando você fazia uma compilação de índice em segundo plano no primário de um conjunto de réplicas, ele seria executado como compilação em "primeiro plano" nos servidores secundários, felizmente, não é mais o caso - é a compilação em segundo plano em todos os nós. Se uma compilação de índice em segundo plano for interrompida, ela será retomada como uma compilação de índice em primeiro plano na reinicialização do servidor.

3. Criação de índice contínuo

O processo de criação de índice contínuo cria o índice em apenas um nó por vez. Fica mais ou menos assim:

  1. Gire um nó secundário para fora do conjunto de réplicas (você pode fazer isso alterando as portas ou reiniciando no modo autônomo).
  2. Crie o índice neste nó em primeiro plano. Depois que o índice for criado, gire o nó de volta para o conjunto de réplicas.
  3. Uma vez que o nó tenha alcançado as mudanças, passe para o próximo nó. Se o próximo nó for o primário, você precisará fazer um rs.stepDown() para torná-lo secundário.
  4. Enxágue e repita.

Mais detalhes do processo de construção do índice estão na documentação do MongoDB.

Usando as compilações de índice contínuo, você pode criar um índice sem nenhum impacto significativo no desempenho do seu aplicativo. No entanto, há failover envolvido - portanto, seu aplicativo deve ser capaz de lidar com isso (o que precisa de qualquer maneira).

Você pode criar um índice contínuo se não tiver um conjunto de réplicas? Infelizmente para instâncias independentes, a única opção é uma “construção de índice em segundo plano”.

A construção do índice Rolling é nossa abordagem preferida para construir índices no ScaleGrid. Nós até fornecemos uma interface do usuário e facilitamos o início de todo o processo da nossa interface do usuário. Nosso back-end fará toda a orquestração necessária para a compilação completa do índice – ele acionará uma compilação de índice de servidor por servidor. Você só precisa configurar conosco e depois apontar e clicar!


Como sempre, se você tiver mais dúvidas, entre em contato conosco em [email protected].