MongoDB 规范

库命名规范

1.不能为空字符串“”

2.不能以$开头

3.不能包含 .  和 ^

4.数据库大小写敏感

5.库名最长64个字符

6.不能与系统库相同

最佳:库名包含小写英文加下划线

 

集合名规范

1.不能为空字符串“”

2.不能以system.系统集合名开头

3.不包含特殊符号~!@#¥%

最佳:下划线和小写英文

 

bson单个文档大小及嵌套

1.单个文档不超过16MB

2.嵌套不超过100层

最佳:嵌套不超过3层(高并发),单个文档过大,图片等存放GridFS

 

索引限制

1.单个集合最多包含64个索引

2.单个索引记录不超过1024 bytes (failIndexKeyTooLong=true)

3.多列索引个数不超过31

4.前台模式创建索引内存限制500M (maxIndexBuildMemoryUsageMegabytes)

5.不允许创建多列数组的组合索引

6.TTL索引如果是复合索引,过期将失效

7.hash索引只支持单列

最佳:使用backgroup模式批量创建索引,多列索引不超过5个字段,单个集合索引不超过5,避免对数组创建索引

 

副本集限制

1.副本集最多50个节点

2.副本集最多7个投票节点   (提交选举效率,减少心跳网络代价)

 

分布式集群限制

1.分片key最大长度不能超过512 bytes

2.分片key索引类型不能是text,数组和geo

3.分片集合单个文档的条件操作必须带分片key或_id

4.分片key及其值不允许修改

5.分片集合不允许创建普通(不含分片key前缀)唯一性索引

 

多文档事务限制

1.不支持系统库里的集合

2.事务不支持元数据操作的修改(如drop)

3.非增删改查如创建用户不支持事务

4.事务执行周期默认最长60s超过自动崩溃

   最佳:transactionLifetimeLimitSeconds控制超时时间,不建议改大

5.默认事务申请锁等待5ms

 

其他限制

1.全集合扫描排序的内存限制32M   (添加索引,控制排序数据量)

2.Aggregation管道操作的内存限制100M   (控制计算数据量,调整allowDiskUse允许磁盘排序)

3.bulkWrite操作每批最大操作限制1k-100k(>=3.6)   (每次批量控制1k-5k,bulWrite有序操作false,避免复制延迟每批适当sleep)

 

其他建议

1.查询,更新,删除必须带条件,条件有索引

2.update 必须带$set,否则重置文档

3.find和aggregate按需字段返回

4.数组元素添加尽量使用$push并避免对中间元素更新

 

posted on 2019-05-14 15:02  Thiefnm  阅读(495)  评论(0编辑  收藏  举报