快速阅读:MongoDB 3.6 新特性


声明:本文转载自https://my.oschina.net/joymufeng/blog/1815475,转载目的在于传递更多信息,仅供学习交流之用。如有侵权行为,请联系我,我会及时删除。

Jesse是MongoDB的一名开发工程师,他在博文中详细讲述了MongoDB 3.6的一些新特性,博文内容小结如下,详细请参考原文

1 协议压缩(Wire Protocol Compression)

    在3.6中Client和Server之间的通信协议增加了压缩功能,使得MongoDB可以在带宽受限的主机上工作的很好,例如远程的云服务器主机。

2 OP_MSG消息格式

在3.6之前,MongoDB的通信协议扩展性很差,并且存在性能问题。在3.6中,Mathias Stearn 重新设计了一套通信协议,在新的协议中Client和Server均使用同一的OP_MSG消息格式,OP_MSG消息具有很好的扩展性,配合新协议的压缩功能,可以极大地提升网络传输效率。 只要升级Driver便可以享受 Wire Protocol Compression 和 OP_MSG 带来的性能提升,而不需要改动现有代码。

3 自动写重试(Retryable Writes)

试想一下,如果客户端执行了一次写操作,但是在读取响应时发生了网络错误,在这种情况下客户端应该如何处理错误呢?

collection.update_one({'_id': 1}, {'$inc': {'x': 1}}) 

由于$inc操作不是幂等的,如果盲目重试则会导致数据出错。3.6 为我们带来了好消息,在这种情况下驱动会自动重试。服务器端会为每个操作分配一个operation id,并且缓存每个操作的处理结果。在重试时,如果操作已完成,则会直接返回缓存的处理结果。

4 因果一致性(Causal Consistency)

在3.6以前,如果我们先向 primary 节点插入一条数据,然后立即向一个 secondaries 节点查询该条数据,很可能操作会失败,因为 primary 节点的数据变化可能尚未同步至 secondaries 节点。在3.6中,提出了 Session 的概念,客户端可以预先创建一个Session,在该Session中执行的所有操作将会按照顺序执行。

5 Change Streams

在3.6以前,如果我们想跟踪数据库的实时变化,只能 tail oplog。oplog 是系统操作日志,所以tail的代价比较大。在3.6中,我们可以利用 Change Streams 跟踪一个collection的实时变化。利用 Change Streams,我们可以非常方便地实现一个发布订阅模式。

本文发表于2018年05月20日 10:00
(c)注:本文转载自https://my.oschina.net/joymufeng/blog/1815475,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如有侵权行为,请联系我们,我们会及时删除.

阅读 1973 讨论 0 喜欢 0

抢先体验

扫码体验
趣味小程序
文字表情生成器

闪念胶囊

你要过得好哇,这样我才能恨你啊,你要是过得不好,我都不知道该恨你还是拥抱你啊。

直抵黄龙府,与诸君痛饮尔。

那时陪伴我的人啊,你们如今在何方。

不出意外的话,我们再也不会见了,祝你前程似锦。

这世界真好,吃野东西也要留出这条命来看看

快捷链接
网站地图
提交友链
Copyright © 2016 - 2021 Cion.
All Rights Reserved.
京ICP备2021004668号-1