MongoDB设计命名规范1
库名全部小写,禁止使用任何`_`以外的特殊字符,禁止使用数字打头的库名,如:`123_abc`;2
库以文件夹的形式存在,使用特殊字符或其它不规范的命名方式会导致命名混乱;3
数据库名最多为64字符;4
在创建新的库前应尽量评估该库的体积、QPS等,提前与DBA讨论是应该新建一个库还是专门为该库创建一个新的集群;某开发在拿到DBA提供的MongoDB后由于MongoDB的权限控制比较宽松,导致该业务的开发在创建集合的时候懒得与DBA讨论,而是随意的将所有集合都创建在一个库中,最初并没有什么问题,因为业务的请求量并不大
半年后,该业务增长到了一个比较大的量级,而此时开发人员上线了一个新的项目,该项目的写入量很大,大部分都为批量更新,由于所有集合都存放在一个库中,这个新项目的批量更新带来了频繁的锁、I/O平均等
最后开发配合DBA一起将该库拆散到了多个新的库中,将一库N集合转换为单库单集合,性能问题迎刃而解
集合名全部小写,禁止使用任何`_`以外的特殊字符,禁止使用数字打头的集合名,如:`123_abc`,禁止system打头;system是系统集合前缀;2
集合名称最多为64字符;3
一个库中写入较大的集合会影响其它集合的读写性能,如果业务比较繁华的集合在一个DB中,建议最多80个集合,同时也要考虑磁盘I/O的性能;4
如果评估单集合数据量较大,可以将一个大表拆分为多个小表,然后将每一个小表存放在独立的库中或者sharding分表;5
MongoDB的集合拥有“自动清理过期数据”的功能,只需在该集合中文档的时间字段增加一个TTL索引即可实现该功能,但需要注意的是该字段的类型则必须是mongoDate(),一定要结合实际业务设计是否需要;6
设计轮询集合---集合是否设计为Capped限制集,一定要结合实际业务设计是否需要;7