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

Builds de índice do MongoDB – impedindo que usuários acionem novas compilações

As compilações de índice em clusters de produção do MongoDB precisam ser tratadas com o máximo cuidado. Documentamos os problemas em detalhes em uma de nossas postagens de blog anteriores – Os perigos de construir índices no MongoDB.

Dependendo do tamanho dos seus dados, as compilações em primeiro plano e em segundo plano podem derrubar seu cluster. Então, como você evita que seus usuários acionem acidentalmente compilações de índice da CLI do MongoDB? A resposta curta é que você não pode. No entanto, o que você pode fazer é remover o privilégio “CreateIndex” da maioria de seus usuários para que eles não possam acionar acidentalmente uma compilação de índice da CLI. Deve haver muito poucos usuários em seu sistema que tenham acesso para gravar dados no banco de dados. Entre esses usuários, menos ainda deveriam ter permissão para construir índices. Para obter uma cartilha sobre como usar as funções do MongoDB, consulte a documentação – Gerenciar usuários e funções.

A melhor opção para implementar isso é criar sua própria função personalizada e remover o privilégio 'CreateIndex' para seus usuários. No entanto, não queremos construir a lista de permissões manualmente, pois isso será diferente para cada contexto e possivelmente para a versão do MongoDB. Montamos este pequeno script para usar uma das funções internas existentes e removemos o privilégio 'CreateIndex' dessa função. Neste exemplo, estamos usando a função “readWrite” incorporada e removendo o privilégio “CreateIndex” desta função:

var privs = db.getRole('readWrite',{ showPrivileges: true });
privs.privileges.forEach(function (item, index) {
  var index = item.actions.indexOf("createIndex");
  if (index !== -1) item.actions.splice(index, 1);
});
db.createRole({role:"readWriteNoIndex",privileges:privs.privileges,roles:[]});
  1. Salve o conteúdo do snippet de código como createRole.js.
  2. Execute o script usando a sintaxe abaixo:
mongo -u <user> -p <password> <host>:27017/<db name> --authenticationDatabase admin createRole.js

Depois que a função for criada, você poderá usar essa função para criar usuários daqui para frente.


Mais dicas para você

Como criar índices que não diferenciam maiúsculas de minúsculas no MongoDB

Os índices que não diferenciam maiúsculas de minúsculas suportam consultas que realizam comparações de strings sem considerar as letras maiúsculas e minúsculas. O agrupamento oferece a capacidade de especificar regras específicas do idioma para comparação de strings. Saber mais

Como parar uma compilação de índice em fuga no MongoDB

As compilações de índice no MongoDB podem ter um impacto adverso na disponibilidade do cluster. Se você acionar uma compilação de índice em primeiro plano em uma coleção grande, seu cluster poderá não responder até que a compilação do índice seja concluída. Saber mais

MongoDB Regex, Índice e Desempenho

MongoDB suporta expressões regulares usando o operador $regex. No entanto, essas consultas de regex do MongoDB têm uma desvantagem, todas, exceto um tipo de regex, fazem uso insatisfatório de índices e resultam em problemas de desempenho. Saber mais