文档数据库服务设计规范 本页介绍了文档数据库服务设计规范。 库设计规范 数据库命名规范:dbxxxx。 库名全部小写,尽量不要使用任何以外的特殊字符,尽量使用数字打头的库名,如:123abc。库以文件夹的形式存在,使用特殊字符或其它不规范的命名方式会导致命名混乱。 数据库名称最多为 64 个字符。 在创建新的库前应尽量评估该库的体积、QPS等,提前与DBA讨论是应该新建一个库还是专门为该库创建一个新的集群。 集合设计规范 集合名全部小写,禁止使用任何以外的特殊字符,禁止使用数字打头的集合名,如:123abc,禁止system打头; system是系统集合前缀。 集合名称最多为64字符。 一个库中写入较大的集合会影响其它集合的读写性能,如果业务比较繁忙的集合在一个DB中,建议最多80个集合,同时也要考虑磁盘I/O的性能。 如果评估单集合数据量较大,可以将一个大表拆分为多个小表,然后将每一个小表存放在独立的库中或者sharding分表。 文档数据库服务的集合拥有”自动清理过期数据”的功能,只需在该集合中文档的时间字段增加一个TTL索引即可实现该功能,但需要注意的是该字段的类型则必须是mongoDate(),一定要结合实际业务设计是否需要。 设计轮询集合—集合是否设计为Capped限制集,一定要结合实际业务设计是否需要。 创建集合规则 不同的业务场景是可以使用不同的配置; db.createCollection("logs", { "storageEngine": { "wiredTiger": { "configString": "internalpagemax16KB,leafpagemax16KB,leafvaluemax8KB,oscachemax1GB"} } }) 如果是读多写少的表在创建时我们可以尽量将 page size 设置的比较小 ,比如 16KB,例如:“internalpagemax16KB,leafpagemax16KB,leafvaluemax8KB,oscachemax1GB”。 如果这个读多写少的表数据量比较大,可以为其设置一个压缩算法,例如:”blockcompressorzlib, internalpagemax16KB,leafpagemax16KB,leafvaluemax8KB”。