Eu tenho um grande número de registros (~ 1 bilhão) que preciso carregar no MongoDB (na verdade TokuMX, mas tanto faz). Eu tenho cerca de 6 índices diferentes que preciso criar na coleção. É sempre mais rápido carregar os dados e depois criar os índices? Quando eu olho para o arquivo de log do Mongo, parece que o Mongo faz algum tipo de operação grande (talvez uma contagem de linhas?) Antes de realmente iniciar a criação do índice, e ele faz isso para cada índice que eu crio.
Será sempre mais rápido criar os índices depois de carregar os dados?
Se eu esperar até carregar os dados, seria mais rápido criar cada índice em segundo plano ao mesmo tempo, em vez de criá-los um por um?
Antigamente, carregávamos nossos dados em massa desta maneira:
Esse método sempre se mostrou mais rápido do que deixar os índices no lugar. No entanto, isso foi para Sybase e SQL Server. Imagino que outros sistemas seriam semelhantes, mas não posso dizer com certeza.
Se você estiver fazendo uma operação de carregamento grande, é mais rápido utilizar o carregador em massa TokuMX, pois requer apenas uma passagem pelos dados para criar o índice de chave primária e quaisquer índices secundários. Mais informações estão disponíveis na documentação em http://docs.tokutek.com/tokumx/tokumx-commands.html#tokumx-new-commands-loader