Mongodb: manipule consultas off-line sem afetar as consultas regulares

1

Eu tenho uma réplica do MongoDB definida com três membros: primário, secundário e secundário oculto, apenas para backups. Idealmente, quero adicionar uma instância adicional dedicada à execução de operações em lote lentas. A ideia é que essa instância execute operações de estilo de redução de mapa que podem levar muito tempo para serem concluídas, sem diminuir as consultas regulares necessárias para concluir rapidamente.

Não conheço uma configuração do Mongo que possa alcançar isso. Eu adoraria ouvir ideias sobre como lidar com solicitações pesadas off-line sem afetar solicitações curtas e quase em tempo real.

    
por Elad 10.05.2015 / 13:03

2 respostas

1

Isso não é uma questão de configuração. Suas consultas normais são enviadas para o primário atual. Portanto, tudo o que você precisa fazer é garantir que as operações em lote (suponho que as agregações e / ou tarefas mapReduce) sejam executadas em um secundário. Você pode fazer isso definindo o readPreference como secondary ou secondaryPreferred .

Isso traz alguns inconvenientes sérios:

  1. Os trabalhos do mapReduce não podem sempre mostrar os resultados inline e não podem ser salvos. Uma maneira de atenuar esse problema é salvar os resultados do lado do aplicativo.
  2. As agregações com um estágio $out serão executadas no primário, independentemente da preferência de leitura definida
  3. Dependendo de suas configurações de preocupação de gravação, seus secundários podem conter dados que não estão atualizados. Isso pode ser um problema em algumas situações.

Caso seja impossível usar uma preferência de leitura de secondary ou secondaryPreferred , a única maneira de minimizar a carga de operações de longa execução, como agregações, é o compartilhamento de tarefas mapReduce, dividindo a carga em várias máquinas. Observe que, para implementar essa distribuição de carga, é necessário planejamento cuidadoso e modelagem de dados.

    
por 10.05.2015 / 23:10
0

Como você planeja executar consultas lentas na nova réplica. talvez você queira definir um tempo de atraso adequado para suas consultas de redução de mapa de longa duração. como 3 min ou 10 min. Por este atraso, você pode ter o desempenho total da sua nova réplica. não lidará com várias consultas de uma só vez.

Aqui está a documentação: Membros do conjunto de réplicas atrasadas

    
por 10.05.2015 / 13:21

Tags