mongo开发标准(待完善)

Posted 黑洞中的奇点

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mongo开发标准(待完善)相关的知识,希望对你有一定的参考价值。

MongoDB开发规范

1.mongoDB库的设计
mongodb数据库命名规范:db_xxxx
禁止使用任何 " _ "(下划线)外的特殊字符
禁止使用数字打头的库名
数据库名最多为64字符
命名不能与系统库相同(admin、local、config)

2.mongoDB集合的设计
mongodb集合命名规范:t_xxxx
集合名全部小写
禁止使用任何 " _ "(下划线) 以外的特殊字符
禁止使用数字打头的集合名称
集合名称最多为 64字符

3.mongoDB文档的设计
文档中的 key 禁止使用任何 " _ "(下划线)以外的特殊字符
禁止使用 _id ,如:向 _id 中写入自定义内容中写入自定义内容
尽量不要让数组字段成为查询条件
尽量存放统一了大小写后的数据
单个文档不超过16M,嵌套不能超过100层;若单个文档超过16M,建议s使用GridFS

4.mongoDB索引的设计
尽量遵循最左前缀原则
索引名称长度不要超过 128 字符
尽可能的将单列索引并入组合索引以降低数量
多列索引尽量不要超过5个字段
单个集合索引数量适当控制至5个
避免对数组字段创建索引
TTL索引如果是复合索引则过期将失效
使用background模式批量创建索引

5.分布式集群限制
分片key最大长度不能超过512字节
分片key索引类型不能是text、数据索引和geo索引
分片集合单个文档的条件操作必须带分片key或者_id
分片key及其值不允许修改
分片集合不允许创建(不含分片key前缀)唯一性索引


6.其他建议
查询、更新与删除必须带条件并且条件字段具有合适的索引(最好是以_id字段为条件)
update必须使用$set否则会重置文档
find和aggregate操作建议按需返回对应的字段
全集合扫描排序的内存限制32M,故需要为排序添加索引,控制排序的数量
aggregate管道操作的内存限制100MB,故需要控制计算数据量和调整allowDiskUse允许磁盘排序
数据元素添加尽量使用$push并且避免对中间元素进行更新
建议实际业务每次批量更新控制在1000~5000
默认情况下bulkWrite操作有序一般建议设置false
为避免批量操作导致复制延迟可每批适当sleep
开发不能在业务里面建立索引,加索引需要联系dba

7.驱动配置
对于只做查询的程序连接(如数据分析)读写优先级read_preference必须设置成secondary

以上是关于mongo开发标准(待完善)的主要内容,如果未能解决你的问题,请参考以下文章

回顾---待完善

IIC总线硬件工作原理(待完善)

Mysql数据库应用-节目评分系统数据库设计(待完善)

vue使用感悟(待整理完善)

Go语言开发(十四)Go语言常用标准库四

Go语言开发(十六)Go语言常用标准库六