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

O índice no campo ts em oplog.rs não é atualizado


Como você descobriu, índices secundários não são suportados em coleções de sistema como local.oplog.rs e *.system.profile . No MongoDB 2.4 e anteriores, os índices parecem ter sido criados, mas nunca foram atualizados. Versões mais recentes do MongoDB (2.6+) retornam um erro se você tentar atualizar diretamente uma coleção do sistema com uma alteração não suportada, como tentar criar índices adicionais.

O oplog.rs coleção é definitivamente "especial" porque seu uso pretendido é apenas para replicação. Os internos de replicação fazem algumas suposições sobre as operações esperadas para o oplog nessa base. Por exemplo, a replicação só precisa inserir entradas de oplog -- ao contrário de uma coleção limitada que você mesmo pode criar, as entradas de oplog nunca Atualizada.

Espera-se que os aplicativos leiam o oplog com um cursor tailable se precisarem seguir novas entradas inseridas no oplog ou fazer uma busca usando $natural pedido.

O tutorial do cursor tailable apresenta mais detalhes sobre o uso, mas alguns pontos específicos a serem observados são:
  • Cursores de tailable não usam índices e retornam documentos em ordem natural.
  • Como os cursores tailable não usam índices, a varredura inicial da consulta pode ser cara; mas, depois de esgotar inicialmente o cursor, as recuperações subsequentes dos documentos recém-adicionados são baratas