sql >> Base de Datos >  >> NoSQL >> MongoDB

MongoDB Index Builds:evitar que los usuarios activen nuevas compilaciones

Las compilaciones de índices en los clústeres de producción de MongoDB deben manejarse con sumo cuidado. Hemos documentado los problemas en detalle en una de nuestras publicaciones de blog anteriores:Los peligros de crear índices en MongoDB.

Dependiendo del tamaño de sus datos, tanto las compilaciones de primer plano como las de fondo pueden reducir su clúster. Entonces, ¿cómo evita que sus usuarios activen accidentalmente compilaciones de índices desde la CLI de MongoDB? La respuesta corta es que no puedes. Sin embargo, lo que puede hacer es eliminar el privilegio "Crear índice" de la mayoría de sus usuarios para que no puedan desencadenar accidentalmente una creación de índice desde la CLI. Debe haber muy pocos usuarios en su sistema que tengan acceso para escribir datos en la base de datos. Entre estos usuarios, incluso menos deberían tener permiso para crear índices. Para obtener información básica sobre cómo usar los roles de MongoDB, consulte la documentación:Administrar usuarios y roles.

La mejor opción para implementar esto es crear su propio rol personalizado y eliminar el privilegio "Crear índice" para sus usuarios. Sin embargo, no queríamos construir la lista de permisos a mano ya que será diferente para cada contexto y posiblemente para la versión de MongoDB. Armamos este pequeño script para usar uno de los roles integrados existentes y eliminamos el privilegio "Crear índice" de este rol. En este ejemplo, estamos usando el rol incorporado "readWrite" y quitando el privilegio "CreateIndex" de este rol:

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. Guarde el contenido del fragmento de código como createRole.js.
  2. Ejecute el script usando la siguiente sintaxis:
mongo -u <user> -p <password> <host>:27017/<db name> --authenticationDatabase admin createRole.js

Una vez que se crea el rol, puede usar este rol para crear usuarios en el futuro.

Más consejos para ti

Cómo crear índices que no distinguen entre mayúsculas y minúsculas en MongoDB

Los índices que no distinguen entre mayúsculas y minúsculas admiten consultas que realizan comparaciones de cadenas sin tener en cuenta las mayúsculas y minúsculas. La intercalación le brinda la capacidad de especificar reglas específicas del idioma para la comparación de cadenas. Más información

Cómo detener una compilación de índice fuera de control en MongoDB

Las compilaciones de índices en MongoDB pueden tener un impacto adverso en la disponibilidad de su clúster. Si activa una compilación de índice en primer plano en una colección grande, es posible que su clúster no responda hasta que se complete la compilación del índice. Más información

MongoDB Regex, índice y rendimiento

MongoDB admite expresiones regulares mediante el operador $regex. Sin embargo, estas consultas de expresión regular de MongoDB tienen un inconveniente, todos menos un tipo de expresión regular hacen un uso deficiente de los índices y dan como resultado problemas de rendimiento. Más información