【MongoDB训练营】第四课:分片集群的使用及原理介绍 答疑汇总

1.副本集和分片在生产环境中该如何取舍呢?有什么参考规律么?
答:副本集遇到的问题
副本集帮助我们解决了 读请求扩展,高可用等问题。那么业务场景进一步增长:
存储容量超出单机磁盘容量;活跃数据集超出单机内存容量:很多读请求需要从磁盘读取写入量超出单机IOPS上限mongodb分片集群:水平扩容的方式,支持大数据集和稿吞吐量的情形副本集升级到分片集群 ,客户端需要重启。

2.change stream的机制是什么,mongoclient在change stream是长连接还是短连接
答:change stream 进行op log的解析和读取,目测是长连接。类似oracle的ogg个人感觉。

3.分片架构比副本集在SQL聚合查询上是否有优势?
答:这个可以利用到多shard并发IO的能力,但是数据仍然要经过网络最终有mongos向外输出,如果是高IO,但是最终输出的结果比较少的话,sharding是有优势的。经过Mongos多一跳确实优势不明显。

4.现网低版本3.2的mongodb分片集群,想要升级到高版本,如何操作比较好,有什么最佳实践?
答:参考mongodb官方文档,先升级config节点,再shard节点,最后mongos节点,并结合滚动升级的方式。

5.现有2节点的sharding,数据量比较大了,单节点1T左右,加起来7万多个chunk,每天开了 0点到6点的balance,然后想着再扩容2个sharding节点,这样的话是不是只在规定的时间内balance?这样的话是不是要好几天才能均衡完?
答: 每个shard同一时间只能迁移一个chunk,可以在congfig日志中查看chunk迁移速度。一定会在规定时间内进行chunk迁移的触发,对是触发。

6.shardkey 的选择、 类型的选择 ,chunk要 大小的设置 能在稍微讲讲吗?
答:参见课程ppt,绝对是讲到了,比如基数足够大,频率足够低,单调递增的话用hash
chunk的大小建议保持默认值,太大可能有数据不均衡,太小导致过多不必要的迁移。
参见群里文档链接。

7.修改分片键的 命令中的前缀怎么理解,该命令使用上有什么限制?
答: 以当前分片键的字段作为新分片键的前缀,比如原分片键用的字段A,那么新分片键(A,B)

8.Mongo数据订阅有哪些比较好的工具?阿里云有类似的订阅服务么?
答:阿里云DTS 可以支持数据迁移、同步、订阅,change stream可以实现数据库不同级别对象的数据订阅

9.chunk和shardkey的关系?
答:sharedkey是数据打散的依据,打散后数据会被存放在chunk,不同的chunk会存放在shared中,chunk是shared对数据管理的底层逻辑单位。

10.hashed 分片默认会分成多少个chunk?是按数据量增加分裂变多吗?
答:分片空数据集合进行hash分片,默认分裂为NUM(shard)*2个chunk;chunk默认chunk 64M 随着数据的增长,会进行分裂,当两个shard数据不均衡时,会进行balancing。

11.chunk数量有上限吗? hash桶会不会有用尽的情况?
答:应该不存在这个限制

上一篇:sql server 2008学习3 表组织和索引组织


下一篇:jquery easyui datagrid使用参考