Serie de entrada de la base de datos mongodb (dos)

Este es el segundo artículo de la serie de entradas de la base de datos de Mongodb. Este artículo trata principalmente de agregar índices para optimizar la velocidad de consulta de la función de consulta de la base de datos de mongodb, ordenar las relaciones de asociación de tablas y complementar la configuración de permisos de usuario de la base de datos.

1. Índice de datos de la base de datos

El índice es una marca, la función es acelerar la velocidad de búsqueda, pero también aumentará la velocidad de actualización,

Agreguemos más datos al administrador en el último artículo, primero agregue algunos cientos de miles (puede tomar algunos minutos agregarlo), si no lo ha leído, puede consultar mi último artículo , verificar el tiempo de ejecución de la consulta y agregar  explicar ('executionStats') ; Por ejemplo: db.admin.find ({edad: 52010}). explicar ('executionStats')

Podemos ver que la consulta consume mucho tiempo "executionTimeMillis": 271 , 271 milisegundos. Suponiendo que a menudo usamos age para consultar, entonces establecemos un índice para age.

  • Vea el índice en la tabla: db.table name.getIndexes () ; por ejemplo: db.admin.getIndexes (), de forma predeterminada, solo hay un índice predeterminado de _id en nuestra tabla.

  • Establecer índice : db.table name.ensureIndex ({establecer campo de índice: 1}) , 1 orden ascendente -1 orden descendente; por ejemplo: db.admin.ensureIndex ({edad: 1})

En este punto, cuando miramos el índice, encontraremos que dos campos tienen índices:

Consulta de nuevo para ver el tiempo de consulta: el tiempo que consume se ha convertido directamente en 0ms, se puede ver que la velocidad de mejora es exagerada.

  • Eliminar índice :  db.table name.dropIndex ({campo de índice: 1}); por ejemplo: db.admin.dropIndex ({edad: 1})
  • Índice compuesto : de acuerdo con el índice, es necesario consultar varios campos juntos. Por ejemplo, en la tabla de administración, establecemos el índice db.admin.ensureIndex ({nombre: 1, edad : -1}) En este momento, el mecanismo de consulta de índice compuesto es que cuando miramos hacia arriba , activaremos el índice cuando busquemos según el nombre y la edad, y también activaremos el índice cuando busquemos por nombre (el primer campo al configurar el índice compuesto). Pero no lo encontraremos por edad (la edad no es el primer campo al configurar un índice compuesto) . Aquí puede configurar el índice compuesto para probarlo usted mismo. Habrá un campo  indexBounds en la explicación del índice de activación .
  • Índice únicodb.table name.ensureIndex ({campo de índice: 1}, {único: verdadero}) El índice único es que establecemos un índice único para un campo, por lo que este campo no se puede repetir en la tabla, por ejemplo: para administrador El nombre en el conjunto es un índice único, db.admin.ensureIndex ({nombre: 1}, {único: verdadero}) Luego, el nombre insertado debe ser inexistente en la tabla y no puede significar el mismo nombre; de ​​lo contrario, inserte datos Se informará el error de clave duplicada.

2. Relaciones de tablas de bases de datos relacionales

1. Relación uno a uno: por ejemplo: una persona tiene un número de identificación; tarjeta de identificación y licencia de conducir; es decir, según a, puede encontrar b, según b, puede encontrar un correspondiente entre sí; artículo y contenido del artículo, etc.

2. Relación uno a varios Por ejemplo: clasificación de productos y varios productos correspondientes; un departamento tiene varios empleados y un empleado solo puede pertenecer a un departamento

3. Relación de muchos a muchos Por ejemplo: un usuario puede recolectar múltiples productos, y cada uno también es recolectado por múltiples usuarios;

 

3. Suplemento: configuración de permisos de la cuenta de Mongodb

Si no tenemos los permisos de la cuenta configurados ahora, cualquiera puede conectarse a la base de datos de nuestra computadora (en este momento cmd puede ingresar directamente a mongo para conectarse), falta de seguridad, crear un proceso de usuario primero use la biblioteca de administración para crear un superadministrador, el superadministrador puede Operar para acceder a todas las bibliotecas, el superadministrador también puede usar diferentes bibliotecas para crear permisos de usuario para diferentes bibliotecas.

1. Crea un usuario superadministrador  

use admin // Use la biblioteca de administración que viene con el sistema

 db.createUser ({usuario: 'admin', pwd: '123456', roles: [{rol: 'root', db: 'admin'}]}) // Crear un rol de usuario es root significa que todos los permisos tienen

2. Modifique el archivo de configuración de la base de datos mongodb (archivo mongod.cfg en el directorio bin de mongodb; el mío es C: \ MongoDB \ bin \ mongod.cfg) configuración:

seguridad:
    autorización: habilitada

3. Reinicie la base de datos  mongodb mongod --dbpath C: \ DBdata \ data --auth ; aquí debe agregar el sufijo --auth para indicar el permiso para iniciar la base de datos. En este momento, puede conectarse usando mongo para conectarse, pero no puede realizar ninguna operación en la base de datos. .

4. Utilice la cuenta de superadministrador para conectarse a la base de datos

mongo admin -u admin -p 123456 // significa conectarse a la biblioteca de administración y usar la contraseña de la cuenta del superadministrador

Si es remoto: dirección IP remota de mongo: número de puerto / nombre de la base de datos -u nombre de usuario -p contraseña

Cuando desarrollamos, el superadministrador suele crear un usuario para nosotros. Este usuario solo puede operar la biblioteca relacionada con el proyecto que hacemos, y generalmente no nos dará usuarios de superadministrador. Por ejemplo, creamos un nuevo Usuarios que pueden operar la base de datos abc

1. Primero cambie a la base de datos abc use abc 

2. Cree un usuario db.createUser ({usuario: 'zhangsan', pwd: '123456', roles: [{role: 'dbOwner', db: 'abc'}]})

3. Cierre la sesión del administrador actual y vuelva a iniciar sesión con el usuario zhangsan; inicie sesión: mongo abc -u zhangsan -p 123456

4. En este momento, solo se puede ver / operar la biblioteca abc cuando se visualiza la base de datos show dbs

Función de base de datos Enlace de función de  base de datos : generalmente usamos root (todos los derechos del administrador), dbOwner (todos los derechos para operar la base de datos actual) son suficientes

Suplemento : cuando usa node.js para conectarse a mongodb usando mongose, puede conectarse directamente sin establecer permisos de usuario:

const mongose = require('mongoose')
mongose.connect('mongodb://127.0.0.1/shop', { useNewUrlParser: true, useUnifiedTopology: true }, (err, res) => {
    if(err) throw err;
    console.log('connect Mongodb success !')
})


module.exports = mongose;

Pero si configuramos la autoridad del usuario para conectarse, necesitamos configurarlo así: mongodb: // nombre de usuario: contraseña @ dirección / nombre de biblioteca? AuthSource = admin

const mongose = require('mongoose')

mongose.connect('mongodb://admin:123456@localhost:27017/shop', { useNewUrlParser: true, useUnifiedTopology: true, authSource: 'admin' }, (err, res) => {
    if(err) throw err;
    console.log('connect Mongodb success !')
})


module.exports = mongose;

ps: La clave es agregar el parámetro  authSource: 'admin' ; si es una conexión nativa de nodejs, la URL debe escribirse como:  url: 'mongodb: // admin: 123456 @ localhost: 27017 / shop? authSource = admin'.

5. El comando de usuario para eliminar abc: db.dropUser ('zhangsan')

6. Comando para modificar la contraseña del usuario: db.updateUser ('admin', {pwd: '111111'})

7. El segundo método de autenticación de conexión db.auth (nombre de usuario, contraseña): primero ingrese a la biblioteca que necesitamos para conectarnos a mongo admin (conectarse a la biblioteca de administración); luego realice la autenticación de nombre de usuario y contraseña db.auth ('admin', '123456' ); Esto también puede iniciar sesión correctamente

Este artículo está escrito aquí. El siguiente artículo es el último de la entrada de la base de datos mongodb. Presenta algunas funciones de consulta avanzadas en el uso de la canalización de agregación agregada de mongodb y la copia de seguridad y restauración de la base de datos. Aquellos que no están bien escritos o tienen preguntas. Puede dejar un mensaje para discutir y, si cree que puede ser útil, le puede gustar.

Supongo que te gusta

Origin blog.csdn.net/weixin_42288815/article/details/110670419
Recomendado
Clasificación