mongodb设计命名规范方案

mongodb设计命名规范方案

ID:22166689

大小:63.33 KB

页数:7页

时间:2018-10-27

mongodb设计命名规范方案_第1页
mongodb设计命名规范方案_第2页
mongodb设计命名规范方案_第3页
mongodb设计命名规范方案_第4页
mongodb设计命名规范方案_第5页
资源描述:

《mongodb设计命名规范方案》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、MongoDB设计命名规范1.库1.库名全部小写,禁止使用任何`_`以外的特殊字符,禁止使用数字打头的库名,如:`123_abc`;2.库以文件夹的形式存在,使用特殊字符或其它不规范的命名方式会导致命名混乱;3.数据库名最多为64字符;4.在创建新的库前应尽量评估该库的体积、QPS等,提前与DBA讨论是应该新建一个库还是专门为该库创建一个新的集群;某开发在拿到DBA提供的MongoDB后由于MongoDB的权限控制比较宽松,导致该业务的开发在创建集合的时候懒得与DBA讨论,而是随意的将所有集合都创建在一个库中,最初并没有什么问题,因为业务的请求量并不大。半年后,该业务增

2、长到了一个比较大的量级,而此时开发人员上线了一个新的项目,该项目的写入量很大,大部分都为批量更新,由于所有集合都存放在一个库中,这个新项目的批量更新带来了频繁的锁、I/O平均等。最后开发配合DBA一起将该库拆散到了多个新的库中,将一库N集合转换为单库单集合,性能问题迎刃而解。2.集合1.集合名全部小写,禁止使用任何`_`以外的特殊字符,禁止使用数字打头的集合名,如:`123_abc`,禁止system打头;system是系统集合前缀;2.集合名称最多为64字符;3.一个库中写入较大的集合会影响其它集合的读写性能,如果业务比较繁华的集合在一个DB中,建议最多80个集合,同

3、时也要考虑磁盘I/O的性能;4.如果评估单集合数据量较大,可以将一个大表拆分为多个小表,然后将每一个小表存放在独立的库中或者sharding分表;5.MongoDB的集合拥有“自动清理过期数据”的功能,只需在该集合中文档的时间字段增加一个TTL索引即可实现该功能,但需要注意的是该字段的类型则必须是mongoDate(),一定要结合实际业务设计是否需要;6.设计轮询集合---集合是否设计为Capped限制集,一定要结合实际业务设计是否需要;7.创建集合规则不同的业务场景是可以配置进行不同的配置;a.如果是读多写少的表在创建时我们可以尽量将pagesize设置的比较小,比如

4、16KB,如果表数据量不太大("internal_page_max=16KB,leaf_page_max=16KB,leaf_value_max=8KB,os_cache_max=1GB"b.如果这个读多写少的表数据量比较大,可以为其设置一个压缩算法,例如:"block_compressor=zlib,internal_page_max=16KB,leaf_page_max=16KB,leaf_value_max=8KB"c.注意:该zlib压缩算法不要使用,对cpu消耗特别大,如果使用snapp消耗20%cpu,而且使用zlib能消耗90%cpu,甚至100%d.如果

5、是写多读少的表,可以将leaf_page_max设置到1MB,并开启压缩算法,也可以为其制定操作系统层面pagecache大小的os_cache_max值,让它不会占用太多的pagecache内存,防止影响读操作;c.案例db.createCollection("logs",{storageEngine:{wiredTiger:{configString:"internal_page_max=16KB,leaf_page_max=16KB,leaf_value_max=8KB,os_cache_max=1GB"}}})f.说明读多写少的表internal_page_ma

6、x=16KB默认为4KBleaf_page_max=16KB默认为32KBleaf_value_max=8KB默认为64MBos_cache_max=1GB默认为0 读多写少的表而且数据量比较大block_compressor=zlib默认为snappyinternal_page_max=16KB默认为4KBleaf_page_max=16KB默认为32KBleaf_value_max=8KB默认为64MB3.文档1.文档中的key禁止使用任何`_`以外的特殊字符;2.尽量将同样类型的文档存放在一个集合中,将不同类型的文档分散在不同的集合中;相同类型的文档能够大幅度提高

7、索引利用率,如果文档混杂存放则可能会出现查询经常需要全表扫描的情况;3.禁止使用_id,如:向_id中写入自定义内容;某业务的MongoDB在放量后出现严重的写入性能问题,大致为:写入达到300/s的时候IO跑满,排查中发现,该业务在设计的时候为了方便,而将_id中写入了无序的类似md5的数据。MongoDB的表与InnoDB相似,都是索引组织表,数据内容跟在主键后,而_id是MongoDB中的默认主键,一旦_id的值为非自增,当数据量达到一定程度之后,每一次写入都可能导致主键的二叉树大幅度调整,这将是一个代价极大的写入,所以写入就会随着

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。