前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >快速阅读:MongoDB 3.6 新特性

快速阅读:MongoDB 3.6 新特性

作者头像
joymufeng
发布2018-06-19 10:56:58
9000
发布2018-06-19 10:56:58
举报

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)

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

代码语言:javascript
复制
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,我们可以非常方便地实现一个发布订阅模式。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MongoDB
腾讯云数据库 MongoDB(TencentDB for MongoDB)是腾讯云基于全球广受欢迎的 MongoDB 打造的高性能 NoSQL 数据库,100%完全兼容 MongoDB 协议,支持跨文档事务,提供稳定丰富的监控管理,弹性可扩展、自动容灾,适用于文档型数据库场景,您无需自建灾备体系及控制管理系统。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档