mongodb使用规范

本规范旨在帮助开发人员逐步建立合理使用数据库的意识,对数据库相关的资源申请、业务规范使用等提供规范性的指导,从而为公司业务系统稳定、健康地运行提供保障。

以下所有规范会按照【强制】【建议】两个级别进行标注,对于【强制】级别的设计需强制修改调整。


[TOC]

基础规范

  • 【强制】新实例强制端口 3717
  • 【强制】新实例强制版本 Mongodb 6.0
  • 【强制】新实例强制存储引擎 WiredTiger
  • 【强制】管理员账号 rwuser,密码长度16位,包含数字、大小写、特殊符号;
  • 【建议】每个mongodb实例单独配置一个安全组
  • 【强制】禁止开通公网地址,禁止部署在公网可访问的服务器上
  • 【建议】短期测试使用可以选择按量付费模式
  • 【建议】根据实际的业务需要,从如下3种规格选择:
版本 适用场景 备注
单节点 数据量一般、QPS不高、开发测试、单节点 备份过程会缩表、数据不可写
副本集 数据量一般、QPS不高 3节点(提供Primary、Secondary节点,还有1个隐藏节点)
分片集群 数据量大、QPS高 提供mongos、shard、config三类节点,
可自主选择mongos节点和shard节点组建不同的实例

命名规范

所有对象命名应该遵循下述原则:

  • 【强制】凡是需要命名的对象,其标识符不能超过30个字符
  • 【强制】名称必须以英文字母开头,不得以 _(下划线) 作为起始和终止字母;
  • 【强制】所有名称的字符范围为:a-z, 0-9 和_(下划线),禁用大写、特殊符号、保留字、汉字和空格;
  • 【强制】采用英文单词或英文缩写作为名称,不使用无意义的字符或汉语拼音;
  • 【强制】名称应该清晰明了,能够准确表达事物的含义,最好可读,遵循“见名知意”的原则;

数据库命名规范

  • 【强制】数据库名称统一使用小写,采用下划线_分割,禁止以中划线-或小数点.分割,比如 platform-2.3
  • 【强制】数据库以 xxx_ 开头,再加业务系统代号,再加上具体业务名称,比如支付网关:xxx_pay_gateway;

注:xxx 可以是公司的英文标识,请根据实际修改。

Collection命名规范

  • 【建议】以表的具体内容进行描述。如:用户基础信息的表名为 users
  • 【建议】表中必须包含2个固定列:insert_time, update_time,且为datetime类型,示例如下:
  {
    _id: ObjectId("676be1b863cd2dde110eaca8"),
    name: 'sam',
    idnum: 4864494,
    insert_time: ISODate("2018-05-07T07:46:36.169Z"),
    update_time: ISODate("2018-05-07T07:46:36.169Z"),
    is_deleted: 1
  }

使用规范

  • 【强制】禁止在应用服务器上通过命令直连生产Mongodb服务
  • 【强制】创建索引要在后台创建,避免锁表,范例如下:
db.t1.createIndex({idcard:1},{background:1})
  • 【强制】业务账号默认分配 readwrite 角色,范例如下:
use xxx_antifraud;
db.createUser({user:"user_antifraud",pwd:"Aa_123456",roles:[{"role":"readWrite","db":"xxx_antifraud"}],passwordDigestor:"server"});
  • 【强制】禁止跨库查询,尽量不做跨表查询
  • 【强制】禁止使用 text索引、hash索引、sparse索引(请用partial索引替代sparse索引)
  • 【强制】Document越小越好,大小不超过16MB,否则会影响insert/update/query性能
  • 【强制】子文档嵌套数不超过100层
  • 【建议】单个collection的索引数量不得超过10个,否则增加维护负担、降低写入性能、占用更多空间
  • 【建议】组合索引中fields数量最多为10个
  • 【建议】时效性数据推荐使用TTL索引(Time to Live),对一个date类型的单列配置过期属性(时间戳或clock则不行)可实现对文档的自动过期删除,范例如下:
db.events.createIndex({"insert_time": 1},{expireAfterSeconds: 60*60*24*7})
  • 【建议】创建索引若要指定index名字的时候,命名规范为:..$,长度不超过 90 个字符
Copyright © www.sqlfans.cn 2024 All Right Reserved更新时间: 2024-12-25 23:14:19

results matching ""

    No results matching ""