前言
MongoDB是非关系型数据库的典型代表,DB-Engines Ranking 数据显示,近年来,MongoDB在
NoSQL领域一直独占鳌头。MongoDB是为快速开发互联网应用 而设计的数据库系统,其数据模型和持
久化策略就是为了构建高读/写的性能,并且可以方面的弹性拓展。随着MongoDB的普及和使用量的快
速增长,为了规范使用,便于管理和获取更高的性能,整理此文档。我们从 数据库设计规范、集合设计
规范、索引设计规范、文档设计规范、API使用规范、连接规范等方面进行阐述和要求。
存储选型
1. 主要解决大量数据的访问效率问题, 减少mysql 压力。MongoDB内建了多种数据分片的特性,可
以很好的适应大数据量的需求。内建的Sharding分片特性避免系统在数据增长的过程中遇到性能
瓶颈。
2. 复杂数据结构,以多种不同查询条件去查询同一份数据。 MongoDB的BSON数据格式非常适合文
档化格式的存储及查询;支持丰富的查询表达式,可轻易查询文档中内嵌的对象和数组及子文档。
3. 非事务并且关联性集合不强的都可以使用
4. 无多文档事务性需求及复杂关联检索
5. 业务快速迭代,需求频繁变动业务
6. 数据模型不固定,存储格式灵活场景
7. 单集群读写并发过大无法支撑业务增长
8. 期望5个9的数据库高可用场景
一、库设计规范
1. 【强制】数据库名约定为小写,以“db”
开
始
。
2 .
【
强
制
】
数据
库
名
称
不
能
包含
除
“”以外的特殊字符。
2. 【强制】数据库名称最多为64个字符。
3. 【强制】数据库上线需经过DBA评审。
二、文档设计规范
1. 【强制】集合中的 key 禁止使用任何 " _ "(下划线)以外的特殊字符。
2. 【强制】以“”
开
头
的
键
是
系统
保
留的
,
不
可
以
“”开头命名键名称。
3. 【建议】尽量存放统一了大小写后的数据。MongoDB大小写敏感,如果字段无需大小写敏感,为
了提高查询效率,应尽量在统一了大小写之后再插入到MongoDB中。
4. 【强制】集合名称的最大长度为64个字符,包括前缀的【database.】内容。
5. 【强制】集合名称的命名规则和MySQL数据库表的命名规则相同。
6. 【建议】如果评估单集合数据量较大,可以将一个大表拆分为多个小表,然后将每一个小表存放在
独立的库中或者sharding分表;
三、索引设计规范
1. 【强制】索引名称长度不要超过 128 字符
2. 【强制】遵循“最左前缀”原则
3. 【建议】优先使用覆盖索引
4. 【建议】在数据量较大的时候,MongoDB 索引的创建是一个缓慢的过程,所以应当在上线前或数
据量变得很大前尽量评估,按需创建会用到的索引;