mongodb使用规范
本规范旨在帮助开发人员逐步建立合理使用数据库的意识,对数据库相关的资源申请、业务规范使用等提供规范性的指导,从而为公司业务系统稳定、健康地运行提供保障。
以下所有规范会按照【强制】、【建议】两个级别进行标注,对于【强制】级别的设计需强制修改调整。
[TOC]
基础规范
- 【强制】管理员账号 rwuser,密码长度16位,包含数字、大小写、特殊符号;
- 【建议】每个mongodb实例单独配置一个安全组
申请规范
- 【强制】禁止开通公网地址,禁止部署在公网可访问的服务器上
- 【强制】新实例强制端口 3717
- 【强制】新实例强制版本 Mongodb 6.0
- 【强制】新实例强制存储引擎 WiredTiger
- 【建议】短期测试使用可以选择按量付费模式
版本 | 适用场景 | 备注 |
---|---|---|
单节点 | 数据量一般、QPS不高、开发测试、单节点 | 备份过程会缩表、数据不可写 |
副本集 | 数据量一般、QPS不高 | 3节点(提供Primary、Secondary节点,还有1个隐藏节点) |
分片集群 | 数据量大、QPS高 | 提供mongos、shard、config三类节点, 可自主选择mongos节点和shard节点组建不同的实例 |
使用规范
- 【强制】禁止在应用服务器上通过命令直连生产Mongodb服务
- 【建议】创建索引要在后台创建,避免锁表,范例如下:
db.t1.createIndex({idcard:1},{background:1})
- 【建议】时效性数据推荐使用TTL索引(Time to Live),对一个date类型的单列配置过期属性(不支持非date列或复合索引)可实现对文档的自动过期删除,范例如下:
db.events.createIndex({"insert_time":1},{ expireAfterSeconds: 60*60*24*7 })