MongoDB是一个开源、高性能、无模式的文档型数据库
,当初的设计就是用于简化开发和方便扩展,是NoSQL数据库产品中的一种。是最像关系型数据库(MySQL)的非关系型数据库。
MySQL和MongoDB对比:
SQL术语/概念 | MongoDB属于/概念 | 解释/说明 |
database | databases | 数据库 |
table | collection | 数据库表/集合 |
row | document | 数据记录行/文档 |
column | field | 数据字段/域 |
index | index | 索引 |
primary key | primary key | 主键 |
MongoDB的最小存储单位就是文档(document)对象
。文档(document)对象
对应于关系型数据库的行
。数据在MongoDB中以BSON(Binary-JSON)
文档的格式存储在磁盘上。
MongoDB下载地址:Download MongoDB Community Server | MongoDB
MongoDB集群:副本集和分片集群
副本集:类似于redis的哨兵模式,组成成员包含主节点、副本成员(从节点)、仲裁者。
- 主节点(Primary):主要接受所有写操作
- 从节点(Replicate):从主节点通过复制操作以维护相同的数据集,即备份数据,不可写操作,但可以读操作
- 仲裁者(Arbiter):不保留任何数据的副本,只具有投票选举作用。当然也可以将仲裁服务器维护为副 本集的一部分,即副本成员同时也可以是仲裁者
分片集群:类似于redis集群模式,组成成员主要包含:分片节点、路由节点(mongos)、配置节点(config servers)
- 分片(存储):每个分片包含分片数据的子集。 每个分片都可以部署为副本集。
- mongos (路由):mongos充当查询路由器,在客户端应用程序和分片集群之间提供接口。
- config servers (”调度” 的配置):配置服务器存储群集的元数据和配置设置。 从MongoDB 3.4 开始,必须将配置服务器部署为副本集(CSRS)。
安全认证
默认情况下,NongoDB实例启动是没有开启用户访问控制的,通过公网IP和端口都可以访问,这样是很危险的。开启用户访问控制(验证用户名和密码)的方法有两种:
- 执行启动命令时加上--auth
- 在配置mongo的配置文件,加上
security:
authorization: enabled
MongoDB的用户是基于角色管理的,不同的角色有不同的权限。在创建用户时,需先切换到相应的库,然后创建用户的命令指定用户名、密码、角色、库名。
use test
db.createUser(
{
user: "myTester",
pwd: passwordPrompt(), // or cleartext password
roles: [ { role: "readWrite", db: "test" },
{ role: "read", db: "reporting" } ]
}
)
参考文档 https://mongodb.net.cn/manual/tutorial/enable-authentication/