一、提高MongoDB读写性能
1、“批量插入”与“逐条插入”数据,比较性能差异
2、“插入”与“更新”数据,比较性能差异
3、使用“索引”提高查询速度
原理比较
import pymongo
handler = pymongo.MongoClient().chapter_8.one _by_one
handler.create_index('salary',background = True)
- 如果为False,那在创建索引时,这个集合就不能被查询也不能被写入,但是速度快。
- 如果设置为True,那么创建索引的速度会慢一些,但是不影响其他程序读写这个集合。
4、引入Redis,以降低MongoDB的读取频率
5、增添适当冗余信息,以提高查询速度
二、提高MongoDB的安全性
1、配置权限管理机制
- 特权是指一些资源和能够在资源上进行的操作。
- 一个角色可以有多种特权。
- 一个用户可以被赋予不同的角色。
(1)、创建管理员用户
管理员用户的作用是创建其他用户。管理员用户本身不能对数据库进行控制。
use admin
db.createUser(
{ user:'admin',
pwd:'123456',
roles:[{role:'userAdminAnyDatabase',db:'admin'}]
})
security:
authorization: enabled
show dbs
mongo -port 27017 -u "admin" -p "123456" --authenticationDatabase "admin"
db.createUser(
{
user : "test_name",
pwd : "123456",
roles: [ { role : "readWrite", db : "chapter_8" } ,
{ role : "read", db : "chapter_7" } ]
}
)
(3)使用Robo 3T连接有账号的MongoDB
编辑连接
(4)创建能操作数据库的管理员用户
db.createUser(
{
user : "root",
pwd : "123456",
roles: ['root']
}
)
(5)用Python连接有密码的MongoDB
mongobd://用户名:密码@数据库地址:端口/数据库名
如果使用root用户,不用指定数据库