mongo开发标准(待完善)
MongoDB开发规范
1.mongoDB库的设计
mongodb数据库命名规范:db_xxxx
禁止使用任何 " _ "(下划线)外的特殊字符
禁止使用数字打头的库名
数据库名最多为64字符
命名不能与系统库相同(admin、local、config)
2.mongoDB集合的设计
mongodb集合命名规范:t_xxxx
集合名全部小写
禁止使用任何 " _ "(下划线) 以外的特殊字符
禁止使用数字打头的集合名称
集合名称最多为 64字符
3.mongoDB文档的设计
文档中的 key 禁止使用任何 " _ "(下划线)以外的特殊字符
禁止使用 _id ,如:向 _id 中写入自定义内容中写入自定义内容
尽量不要让数组字段成为查询条件
尽量存放统一了大小写后的数据
单个文档不超过16M,嵌套不能超过100层;若单个文档超过16M,建议s使用GridFS
4.mongoDB索引的设计
尽量遵循最左前缀原则
索引名称长度不要超过 128 字符
尽可能的将单列索引并入组合索引以降低数量
多列索引尽量不要超过5个字段
单个集合索引数量适当控制至5个
避免对数组字段创建索引
TTL索引如果是复合索引则过期将失效
使用background模式批量创建索引
5.分布式集群限制
分片key最大长度不能超过512字节
分片key索引类型不能是text、数据索引和geo索引
分片集合单个文档的条件操作必须带分片key或者_id
分片key及其值不允许修改
分片集合不允许创建(不含分片key前缀)唯一性索引
6.其他建议
查询、更新与删除必须带条件并且条件字段具有合适的索引(最好是以_id字段为条件)
update必须使用$set否则会重置文档
find和aggregate操作建议按需返回对应的字段
全集合扫描排序的内存限制32M,故需要为排序添加索引,控制排序的数量
aggregate管道操作的内存限制100MB,故需要控制计算数据量和调整allowDiskUse允许磁盘排序
数据元素添加尽量使用$push并且避免对中间元素进行更新
建议实际业务每次批量更新控制在1000~5000
默认情况下bulkWrite操作有序一般建议设置false
为避免批量操作导致复制延迟可每批适当sleep
开发不能在业务里面建立索引,加索引需要联系dba
7.驱动配置
对于只做查询的程序连接(如数据分析)读写优先级read_preference必须设置成secondary
8.索引原则
1. 每个查询原则上都需要创建对应索引
2. 单个索引设计应考虑满足尽量多的查询
3. 索引字段选择及顺序需要考虑查询覆盖率及选择性
4. 对于更新极其频繁的字段上创建需慎重考虑
5. 对于数组索引需要慎重考虑未来元素个数
6. 对于超长字符串类型字段上慎用B-tree索引
7. 对于重度字符串搜索可考虑第三方解决方案
8. 并发更新较高的单个集合上不适宜创建过多索引
mongo开发标准(待完善)的更多相关文章
- [课程设计]Scrum 1. 8多鱼点餐系统开发进度(完善整个订餐页面工作)
[课程设计]Scrum 1. 8多鱼点餐系统开发进度(完善整个订餐页面工作) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选题: ...
- MongoDB硬件及开发标准规范
大数据平台部 运维研发组 MongoDB硬件及开发标准规范 说明: 无特殊情况,均以此文档为参考文件搭建,如有特殊情况,需与运维研发组和开发组商议后进行更改. MongoD ...
- 《嵌入式linux应用程序开发标准教程》笔记——6.文件IO编程
前段时间看APUE,确实比较详细,不过过于详细了,当成工具书倒是比较合适,还是读一读这种培训机构的书籍,进度会比较快,遇到问题时再回去翻翻APUE,这样的效率可能更高一些. <嵌入式linux应 ...
- Java技术开发标准JSR介绍
JSR我们需要先提及JCP(Java Community Process SM(JCP SM)).JCP是为Java技术开发标准技术规范的机制.任何人都可以注册并参与审阅和提供Java规范请求(JSR ...
- Vue/小程序/小程序云+Node+Mongo开发微信授权、支付和分享
大家好,我是河畔一角,今天给大家介绍我的第三门实战课程:基于微信开发的H5.小程序和小程序云的授权.支付和分享专项课程. 一.这一次为什么会选择微信支付和分享的课题呢? 金庸的小说中曾提到:有人的地方 ...
- 请推荐下比较适合中小企业的ERP系统,如odoo,除前期开发和不定期完善,有没有其他固定月费或年费?
odoo的话你自己就可以下载开源的安装使用的啊,如果你要别人帮你开发和完善做技术服务的话一般都还是要年费的,主要是因为要帮你做维护或修bug什么的,自己能搞定的话自然不需要的哦.只是odoo使用的是p ...
- Web前端开发标准规范
web前端开发规范的意义 提高团队的协作能力 提高代码的复用利用率 可以写出质量更高,效率更好的代码 为后期维护提供更好的支持 一.命名规则 命名使用英文语义化,禁止使用特殊字符,禁止使用拼音,禁止使 ...
- springboot2.0 web 开发标准目录架构
├── clean-run.sh ├── logs/ 日志文件目录 │ ├── sb2-web_test_2018-06-02_0959.0.log │ └── sb2-web_test.log | ...
- Lrc歌词-开发标准
LRC歌词是在其程序当中实现的专门用于MP3等歌词同步显示的标签式的纯文本文件,如今已经得到了广泛的运用.现就LRC歌词文件的格式规定详细说明,已供程序开发人员参考. LRC文件是纯文本文件,可以用记 ...
随机推荐
- 2019.02.09 codeforces451 E. Devu and Flowers(容斥原理)
传送门 题意简述:给出n堆花,对于第j堆,有f[j]朵花,每堆花的颜色不同,现在要从中选出s朵,求方案数. 思路: 假设所有花没有上限直接插板法,现在有了上限我们用容斥扣掉多算的 状压一下再容斥:fi ...
- Ubuntu下 QT添加外部链接库(.so文件)示例
参考:https://blog.csdn.net/KKALL1314/article/details/81915354 https://forum.qt.io/topic/80301/file-not ...
- POSTMAN 数据关联
概述 在使用postman测试接口是,我们可能需要先获取一个token,然后再将这个token发送到第二个请求.这个需要做postman的关联,一次性完成这两个测试. 实现方法 1.编写两个控制器方法 ...
- aliyun API 调试
打开https://ai.aliyun.com/,登录阿里云账号,选择控制台,右侧标签中选择产品服务,选择自己需要的子标签(如图像识别),选择API调试,按要求填写表格. 其中请求Body参照API文 ...
- latex去掉页眉
\begin{document}之前添加 \fancyhead{} 即: \fancyhead{} \begin{document}
- bootstrap-glyph-customization
http://www.runoob.com/try/demo_source/bootstrap-glyph-customization.htm http://fontawesome.io/icons/
- [转]深入理解mysqldump原理
本文转至:http://blog.csdn.net/cug_jiang126com/article/details/49824471 在mysqldump过程中,之前其实一直不是很理解为什么加了--s ...
- 关于TM影像各波段组合的简介
321:真彩色合成,即3.2.1波段分别赋予红.绿.蓝色,则获得自然彩色合成图像,图像的色彩与原地区或景物的实际色彩一致,适合于非遥感应用专业人员使用. 432:标准假彩色合成,即4.3.2波段分别赋 ...
- 判断页面是app打开还是浏览器打开。cookie
有个需求需要对页面判断不同的打开方式来最里面的链接进行不同调整, 这样就要分四种情况,app,浏览器X安卓系统,苹果系统,起初是对页面url地址带有的参数(安卓)跟用户代理(苹果)返回值判断navig ...
- kepware http接口 GO语言开发
读取某变量的值 package main import ( "fmt" "net/http" "io/ioutil" ) func main ...