时间:2021-07-01 10:21:17 帮助过:25人阅读
持久化:
写有同步与异步模式。通过参数调整在持久化与性能之间平衡。
{ w: <value>, j: <boolean>, wtimeout: <number> }
w:majority:写请求已被传播到多数节点,(含主节点)才确认。日志是否已持久化看参数j
j:true w指定数量节点或多数节点日志已持久化才确认。
读和写模式密切相关。写日志持久化与否影像到读的一致性。
当j:false时,日志并未持久化到硬盘,只是在内存中,所以此时failover都有可能出现读不一致。
读:
readPreference
控制从复制集的哪个节点读取数据,这个特性可方便的实现读写分离、就近读取等策略。默认primiry。readConcern 用来控制读一致性,用户可以在性能和一致性之间取舍
The readConcern
option is available for the following operations:
find
commandaggregate
command and the db.collection.aggregate()
methoddistinct
commandcount
commandparallelCollectionScan
commandgeoNear
commandgeoSearch
command为简化讨论,下面讨论基于w:majority,j:true,readPreference:primiry
常见场景:遍历find返回的cursor。
readConcern进行并发修改隔离。
不支持mysql中常见的多表多行的事务,也不支持单表多行事务,其批量语法可能部分成功,只能使用补偿机制,达到最终一致性。$isolated可以保证update多文档不会有并发访问。但是不提供回滚。(不支持分片集群。)
mongodb的ACID特性与mysql,redis简单比较
标签:版本 操作 multi 成功 div 持久化 级别 count 上线