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

Posso modificar o índice existente no MongoDB sem descartá-lo?


Não há como alterar um índice como você descreve e, se houvesse, acho que o resultado em termos de desempenho seria semelhante - como o banco de dados usaria o índice meio criado/alterado enquanto essa operação estivesse acontecendo, por exemplo?

Em vez disso, eu recomendaria usar a opção de plano de fundo para criar o índice em um único nó, se essa for a sua configuração - levará mais tempo, mas não interferirá tanto na sua operação normal. Quando terminar, você pode descartar o índice antigo quando quiser.

No entanto , se você tiver um conjunto de réplicas (recomendado), deve estar ciente de que a criação do índice é sempre (atualmente) feita em primeiro plano no secundário. Se você quiser evitar a carga em seus secundários, siga as etapas descritas aqui para remover um membro um de cada vez e criar o índice necessário antes de se juntar ao conjunto:

http://docs.mongodb.org/manual/administration/indexes/#index-building-replica-sets

Atualizar

As compilações de índice em segundo plano em secundários serão possíveis a partir da versão 2.6 (consulte as notas da versão para obter detalhes). Isso não será retroportado para versões anteriores, portanto, a observação acima será verdadeira para versões anteriores a 2.6.

Finalmente, como nota geral, os índices construídos em segundo plano geralmente serão maiores e menos eficientes do que aqueles construídos em primeiro plano, portanto, a metodologia acima ainda terá seus usos.