mongodb是nosql数据库吗 11 NoSQL | MongoDB入门实战教程( 二 )


可以看到,上面的可选项基本上也是遵循了关系型数据的事务隔离级别,越往下安全性越高,但是并发性能越低 。
在实际应用中,和 writeConcern 一样,我们往往会折中考虑做权衡,因此我们在readConcern的一般性场景下选择 majority,即读取在大多数节点上提交完成的数据 。如果跟事务隔离级别对比,那majority就类似于Read Commited即提交读 。
readConcern应用实践
在MongoShell中:
db.teams.find().readConcern("majority");在.NET应用程序中:
// 连接字符串全局设置mongodb://mongo-master:27017,mongo-slave1:27017,mongo-slave2:27017/?replicaSet=testRs&readConcern=majority// 在.NET代码中操作Driver时设置_contacts.WithReadConcern(ReadConcern.Majority).Find(doc => true);writeConcern + readConcern
在某些场景中,向主节点写入了一条数据,立即从从节点读取这条数据,如何才能在不改变方式的前提下保证用户能够读取到刚刚写入的数据?

mongodb是nosql数据库吗 11 NoSQL | MongoDB入门实战教程

文章插图
对于这类问题,我们也可以称其为如何实现一个安全的读写分离 。
这里,我们可以使用 writeConcern + readConcern 的组合拳来实现:
db.orders.insert({ oid: 101, sku: "kiteboar", q: 1}, {writeConcern:{w: "majority”}});db.orders.find({oid:101}).readPref("secondary").readConcern("majority");4 总结
本文简单介绍了MongoDB的读操作事务,它有两个重要的参数 readPreference 和 readConcern,分别解决从哪里读取数据 和 什么样的数据可以被读取 的问题 。
下一篇,我们会学习MongoDB的多文档事务,这是MongoDB 4.x版本的最大改进 。
参考资料
唐建法,《MongoDB高手课》(极客时间)
郭远威,《MongoDB实战指南》(图书)


以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!

「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助: