天天看点

【MongoDB训练营】第五课:ChangeStream使用及原理介绍 答疑汇总

1.shardkey唯一值+hash的 数据是不是会更好的均匀分布?

答:hash可以实现均与分布,举个例子,我们生产中会对已时间分区的日志进行二级或者混合分区,即以天|月作为一级分区,在以hash作为二级分区。

2.mongos 有默认的 hash 函数吗?是什么?还是可以由用户自定义?

答:mongodb 不可以自定义hash函数。

3.是不是只有分片才能用mongos?

答:只有分片shard集群才可以使用mongos

4.MongoDB 配置文件 能分享下么 学习参考

答:mongodb配置参数可以参考官网说明。

5.Change stream 断点续传如何解决oplog被覆盖的问题。change stream消息是推送还是基于mongoclient的拉取?使用mongoclient 时是长连接还是短链接?

答:断点续传不能解决op log被覆盖的问题,老师解释了两种op log被覆盖的可能原因:

一是各种原因导致的消费速度赶不上生产速度,

二是短时间内产生很多和我要抽取的目标不相关的日志

change stream是长连接。

6.同城异地的复制集,如何保证同步?

答:复制集保证同步 primary-secondary 通过拉取回放op log实现数据同步

change stream也可以实现这个功能,但是原理不同。

7.Change Stream 和触发器的区别是?如果有个场景,比如物流状态变化,我们怎么对接上?

答:从应用层面 change stream和触发器是一个概念,只能说是实现解决同一问题的两个思路,但是实现原理上这根本就没有相关性。

8.change stream对系统性能影响几何?

答: 对系统性能影响开销取决于你系统自身的负载如何,目前是单线程的操作,主要开销是在解析上,综合来看,影响是比较小的。