对于一个复制集集群来说 针对读写比单机要复杂,尤其是事务的支持,要保证从节点事件的同步要和主节点完全一致。以及对高可用的支持,要支持不同安全程度的写以及读的一致性。 针对写: 1.我们能控制写入多少个节点成功后才返回确认应答,这关系到数据落地的安全性。也就是writeConcern=0/1/2/majority以及journal=true/false的意义。可以根据不同的环境对数据安全的要求。 2.还有一个问题,针对同一个事务中跨库跨表或者有多个耗时的IO操作的语句,主从同步的时候由于网络或者机器自身性能配置不同导致的顺序不一致的问题,mongoDB提供了逻辑时钟的概念,也就是每个操作语句都带有ts,该ts与机器上本地时钟 操作逻辑时钟对比后,产生的一个逻辑上的时钟值,无论跨国的异地同步也能保证操作语句之间的实际顺序。 针对读: 既然有复制集群那么读写分离肯定是支持的,也就是readConcern=local/avaliable/majority/snapshot,以及readperference的意义,解决脏读 幻读 可重复读的问题。
当用客户端,比如 Mongo Shell,通过 Mongodb Uri 连接副本集实例,来执行例如 Insert,Find,Delete 等 命令,和 Standalone 模式无差异,重点看副本集读写 和 Standalone 比较特异化的地方。
资源来源:电子书《玩转MongoDB从入门到实战》,下载链接:https://developer.aliyun.com/topic/download?id=1060
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。