我试图了解使用MongoDB作为我正在处理的项目的主数据库的限制究竟是什么,可能很难通过在线垃圾来正确理解它与更传统的数据库选择的比较比如MySQL。
据我所知,阅读有关HADR配置的内容
MySQL - http://dev.mysql.com/doc/refman/5.5/en/replication-semisync.html
和MongoDB - http://docs.mongodb.org/manual/core/write-concern/
Replica Acknowledged http://docs.mongodb.org/manual/core/replica-set-write-concern/似乎是副本集中写入问题的最高级别。
副本确认是否等同于MySQL中的DB2和Semisynchronous级别的同步级别?
答案 0 :(得分:1)
不,他们不是。
IBM DB2提供了一种方法来确保副本集的所有成员同时达到最高速度,它与MySQL自己的同步复制相同。它确保整个从机组始终保持完全一致。
半同步复制也不是副本集majority
;来自文档页面:
主服务器仅在提交后等待,直到至少有一个从服务器已收到并记录事件。
但是:
它不会等待所有从站确认收到,并且它只需要接收,而不是事件已完全执行并在从属端提交。
换句话说,您不知道是否有任何从站实际执行了该命令。它与MongoDB中的w:0
或“不安全”写入相同。
使用majority
,您可以了解发送给的每个成员实际上都执行了您的命令,如文档中可爱的小图所示:http://docs.mongodb.org/manual/core/replica-set-write-concern/#verify-write-operations
如果那不能说服你那么引用:
以下命令序列创建一个配置,在返回之前等待写操作在大多数集成员上完成:
从下一段应该。
所以MySQL semisynchronous与majority
类似,但它不一样。 DB2完全不同。
IBM文档很好地总结了副本/从属关系中的差异:
同步模式配置参数值越严格,数据库解决方案对事务数据丢失的保护就越多,但事务处理性能越慢。您必须平衡保护和交易损失的需求与性能需求。
这适用于DB2,MySQL和MongoDB。你必须选择。