Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MongoDB 3.6中的新功能 (1) - 发展的速度

MongoDB 3.6中的新功能 (1) - 发展的速度

作者头像
MongoDB中文社区
发布于 2019-04-22 08:13:06
发布于 2019-04-22 08:13:06
1.6K0
举报
文章被收录于专栏:MongoDB中文社区MongoDB中文社区

New in MongoDB 3.6. What’s New in MongoDB 3.6. Part 1 – Speed to Develo

作者:Mat Keep

翻译:TJ

我们都知道MongoDB 最新的版本3.6刚刚于去年12月发布,目前的最新版本是3.6.2。按照MongoDB一个月一个小版本的节奏,年后马上就是3.6.3,基本过了新版本的危险期,各位可以考虑升级你们的MongoDB了。

那么3.6到底有什么东东值得让我们升级呢? 我们将通过一个轻博客序列来为大家介绍。今天我们就来这个序列的第1部分,来了解一下3.6版本MongoDB在核心数据库产品上做的功能改善,包括变更流,可重试写操作,更强的数组操作能力及开发者工具。

在第2部分中,我们将深入了解DevOps世界和分布式系统管理,Ops Manager的改进,模式管理能力和压缩等话题

第3部分将介绍面向开发人员,数据科学家和业务分析师的全新SQL连接器,更丰富的数据库内分析和聚合框架,以及新推荐的R语言

如果您想要了解新版本提供的所有内容,请下载“MongoDB 3.6新增功能指南”。

开发者优先

MongoDB一直是开发者优先的技术。其文档数据模型自然映射到应用程序代码中的对象,使开发人员可以轻松学习和使用。文档模式可以动态地创建和修改,并且无需对数据库进行停机,使构建和衍变应用程序变得非常快速。MongoDB为10多种语言提供原生的,符合程序语言规范的驱动程序 - 社区也提供了数十种语言驱动的支持 - 包括即时查询,实时聚合和丰富的索引,提供强大的编程方法来访问和分析任何结构的数据。

MongoDB 3.6基于这些核心功能,允许开发人员可以用较少的代码来创建丰富的应用程序和提高客户体验。

变更流

变更流有些类似于关系型数据库中的触发器。它允许开发人员构建响应式,实时,Web,移动和IoT应用程序,以便查看,过滤数据更改,并在数据库中进行操作。变更流可实现跨分布式数据库和应用程序的无缝数据移动,使用完全的反应式编程风格,可以简单地在任何需要的地方流式数据更改和触发操作。

变更流是在MongoDB的操作日志(oplog)之上作为一个API实现的,消费者可以打开集合的变更流,并使用$ match,$ project和$ redact 聚合操作对相关事件进行过滤。只要文档或集合被修改,应用程序就可以监听到通知,从而使下游应用程序和消费者能够实时处理新数据,而无需不断查询整个集合来对数据改动做处理。应用程序可以直接使用,或者通过消息队列,或者通过MongoDB Stitch(即将推出)等后端服务来使用变更流。

MongoDB变更流启用的用例包括:

  • 股票价格涨跌时候需要实时处理的交易类应用。
  • 在插入或修改文档时通过触发API调用来实现微服务架构中的数据同步。比如说,一条刚写入数据库的新客户订单可以自动触发生成发票和交货计划的操作。
  • 数据变化时实时更新仪表板,分析系统及搜索引擎等。
  • 创建强大的物联网数据管道,只要物理对象的状态发生变化,就可以做出反应。例如,每当连接的车辆移动到地理围栏区域外时就会发出警报。
  • 将新的信用卡交易推给机器学习训练模型来重新调整欺诈分类算法。
  • 在多人游戏中刷新记分牌。

MongoDB变更流使消费者能够实时响应数据的变化

图1:MongoDB变更流使消费者能够实时响应数据更改

一些需要实时数据变更通知的MongoDB用户已经基于“Oplog Tailling”的技术开发了自己的数据触发器机制。使用更改流以后,这些用户可以减少对这些代码的开发和维护开销,提高可用性,并提高数据的可靠性。和其他数据库实现的类似功能或者Oplog Tailing方式相比,MongoDB的变更流提供了许多优势:

  • 灵活性 - 用户可以注册以接收从文档更改中的增量变化,或者接收完整文档的数据。
  • 一致性 - 通过利用全局逻辑时钟,变更流确保整个分片上事件通知的总排序。因此,MongoDB保证更改顺序将被妥善保持,并且可以由消费应用程序按照从流接收的顺序安全地处理。
  • 安全性 - 用户只能在自己有访问权限的集合上创建变更流。
  • 可靠性 - 通知只在大多数提交的写入操作上发送,并在节点或网络出现故障时持续使用。
  • 可恢复性 - 当节点在故障后恢复时,假设应用程序接收到的最后一个事件还在oplog记录内,变更流可以自动恢复。
  • 熟悉的语法 - 变更流的API利用已有的MongoDB驱动程序和查询语言,并且独立于底层oplog格式。
  • 高并发 - 可以针对每个MongoDB实例打开多达1,000个变更流而无显著的性能影响

查看MongoDB变更流文档以了解更多信息。

可重试写入

向MongoDB添加可重写的写操作会将处理临时系统故障的复杂性从应用程序转移到数据库。从现在开始,程序员不再需要实现自定义的客户端容错代码,而是可以在出现瞬时网络故障或主副本选举时由MongoDB驱动程序自动重试写入,MongoDB服务器会提供写入操作会执行一次并只有一次的语义保证。

通过为每个写入操作分配一个唯一的事务标识符,驱动程序将重新发送该ID以使服务器能够评估先前的写入尝试是否已经成功,还是需要重试刚才的写入操作。这种可重写写入的实现相对于其他数据库采用的方法提供了许多好处:

  • 可重写的写入不仅限于幂等操作。它们也可以应用于诸如递增或递减计数器的操作,或处理库存盘点的订单。
  • 对于由于超时异常(例如由于暂时的网络故障)而无法确认成功返回到应用程序的操作,可重试写操作是安全的。
  • 可重试写操作不要求开发人员为其应用程序添加任何额外的代码,例如重试逻辑或保存点。

无法接受任何写入数据丢失的应用程序(如电子商务应用程序,交易交换和物联网传感器数据摄取)可立即受益于可重试写功能。当MongoDB的可重试写操作和具有自动恢复功能(通常在2秒或更短时间内)的MongoDB复制集结合使用时,可以使开发人员实现全局始终可用的写操作,而不会造成那些最终一致系统或Multi-Master系统会引起的数据丢失或过时数据的问题。

可调一致性

通过可调一致性,MongoDB为开发人员提供了对分布式集群的路由查询的精确控制,在数据的一致性和性能需求见找到一个平衡点。 MongoDB 3.4添加了线性化读,这个是MongoDB能够通过Jepsen测试,数据库行业中最严格的数据安全性和正确性测试,的关键特性。

现在,MongoDB 3.6版本引入了对因果一致性的支持- 保证客户端会话中的每个读取操作始终会看到先前的写入操作,而不管是哪个节点正在为请求提供服务。通过对会话中的操作进行严格的因果排序,因果一致性确保了每个读取在逻辑上始终一致,从而实现了分布式系统的单一读取 - 保证了大很多分布式数据库都无法做到的功能。

因果一致性使开发人员能够保持由传统单节点关系数据库强制执行的严格数据一致性的好处,同时使其基础架构现代化,以充分利用现代分布式数据平台的可扩展性和高可用性优势。

开发人员工具:MongoDB Compass

作为MongoDB的GUI,Compass已经成为开发人员和DBA不可或缺的工具,支持图形界面下的模式管理的和查询优化。Compass现在提供了几个新功能:

  • 自动补齐:使开发人员能够使用Compass简化查询开发,提供字段名称和MongoDB运算符的建议,以及在代码中匹配大括号和引号。
  • 查询历史记录:允许开发人员重新运行他们最近执行的查询,并保存常用查询以按需运行。
  • 表视图:现在开发人员可以将文档视为常规表格来查看,在JSON文档基础之上。

MongoDB Compass不仅仅是一个单独的工具 - 它是一个允许添加模块化组件的框架。Compass现在将其作为Compass插件框架公开,使得Compass可以由任何用户使用和MongoDB软件工程师一样的方法进行扩展。使用插件API,用户可以构建插件来向Compass添加新功能。如GridFS查看器,示例数据生成器,硬件状态查看器,日志采集器/分析器等。

您可以在MongoDB Compass文档中了解更多关于这些新功能的信息。

MongoDB Compass 社区版

随着MongoDB 3.6的发布,Compass系列已经扩展到现在包括新的,免费的Compass社区版本。

Compass社区为开发人员提供了一个直观的可视化界面,与MongoDB shell一起使用。它包含了Compass的核心功能,使用户能够查看数据库和集合的层次和大小,检查文档以及插入/更新/删除文档。开发人员可以使用GUI来构建查询,检查它们的执行方式以及添加或删除索引以提高性能。Compass社区还支持MongoDB 3.6提供的最新Compass功能,使开发人员更有效率。

MongoDB Compass社区版

图2:MongoDB Compass社区版,MongoDB开发者的新型免费GUI

MongoDB Compass社区版可以从MongoDB下载中心下载。

完整的数组更新能力

数组是MongoDB文档数据模型中的一个强大的数据结构,它允许开发人员在一个文档中表示复杂的对象,在一次调用数据库时就可以高效地检索这些对象。但是,在MongoDB 3.6之前,更新操作只能只能更新数组中第一个匹配的数组元素。

通过3.6的改善,开发人员现在可以对数组中的匹配元素(包括嵌套数组中的元素)执行复杂的数组操作,所有操作都在一次原子更新操作中。MongoDB 3.6添加了一个新arrayFilters选项,允许更新指定在数组字段中修改哪些元素。这种增强功能使得MongoDB数据建模更加灵活,并且性能也比支持JSON的其他数据库更加优秀:毕竟在MongoDB中可以只更新数组的部分元素而无需更新整个文档。

从数组更新文档中了解更多信息。

下一步

这是该博客系列的第一部分。 如果想要了解新版本提供的所有内容,请下载MongoDB 3.6新增功能指南。你也可以马上试用3.6的新功能:

  • 在MongoDB Atlas数据库服务上启动MongoDB 3.6 。
  • 下载MongoDB 3.6来评估你自己的环境中的新版本。
  • 注册MongoDB大学的免费3.6培训。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-01-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Mongoing中文社区 微信公众号,前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
MongoDB 基础浅谈
作者:hazenweng,腾讯 QQ 音乐后台开发工程师 MongoDB 作为一款优秀的基于分布式文件存储的 NoSQL 数据库,在业界有着广泛的应用。下文对 MongoDB 的一些基础概念进行简单介绍。 1 MongoDB 特点 面向集合存储:MongoDB 是面向集合的,数据以 collection 分组存储。每个 collection 在数据库中都有唯一的名称。 模式自由:集合的概念类似 MySQL 里的表,但它不需要定义任何模式。 结构松散:对于存储在数据库中的文档,不需要设置相同的字段,并且
腾讯技术工程官方号
2021/09/18
1.5K0
完美数据迁移-MongoDB Stream的应用
尽管如此,目前还是有许多企业踏上了服务化改造的道路,这其中则免不了”旧改”的各种繁杂事。
MongoDB中文社区
2018/08/14
1.1K0
完美数据迁移-MongoDB Stream的应用
3分钟看完MongoDB3.6新特性
3.6版本起,默认使用localhost(127.0.0.1),多个ip使用逗号分隔:localhost,198.51.100.1 除去部分2.6 RPM安装包是本地外,其余版本默认是All interfaces.
py3study
2020/01/06
1.2K0
3分钟看完MongoDB3.6新特性
用MongoDB Change Streams 在BigQuery中复制数据
Chang Stream(变更记录流) 是指collection(数据库集合)的变更事件流,应用程序通过db.collection.watch()这样的命令可以获得被监听对象的实时变更。BigQuery是Google推出的一项Web服务,该服务让开发者可以使用Google的架构来运行SQL语句对超级大的数据库进行操作。
MongoDB中文社区
2019/08/26
4.3K0
用MongoDB Change Streams 在BigQuery中复制数据
mongoDB复制(译 v4.0)
MongoDB中的副本集是一组维护相同数据集的mongod进程。副本集提供冗余和高可用性,是所有生产部署的基础。本节介绍MongoDB中的复制以及副本集的组件和体系结构。该部分还提供了与副本集相关的常见任务的教程。
shirley
2019/06/28
9620
快速阅读:MongoDB 3.6 新特性
Jesse是MongoDB的一名开发工程师,他在博文中详细讲述了MongoDB 3.6的一些新特性,博文内容小结如下,详细请参考原文。 1 协议压缩(Wire Protocol Compression)     在3.6中Client和Server之间的通信协议增加了压缩功能,使得MongoDB可以在带宽受限的主机上工作的很好,例如远程的云服务器主机。 2 OP_MSG消息格式 在3.6之前,MongoDB的通信协议扩展性很差,并且存在性能问题。在3.6中,Mathias Stearn 重新设计了一套通
joymufeng
2018/06/19
9890
技术干货 | 如何利用 MongoDB Change Streams 实现数据实时同步?
当前实时数据同步的应用场景较多,实现方式主要有两种,一是数据库厂家本身提供了实时数据捕获工具,如 Oracle 的 OGG 等;另外一种是实时解析数据库的事务日志,获取到实时变化的数据后进行同步,如 Flink CDC 等。
MongoDB中文社区
2023/01/04
3.8K0
技术干货 | 如何利用 MongoDB Change Streams 实现数据实时同步?
Java和Node.js实战 MongoDB 4.x 新特性:Change Streams 变化流
监控数据库发生的变化是MongoDB同步数据服务的关键。我们不需要去定期轮训查询集合中的更改文档,我们就可以可以更轻松地过滤Change Streams 变化流,并立即采取处理错误。这是一种Reactive反应式编程风格,可以非常强大。如今,获取这些变更信息流非常简单。
MongoDB中文社区
2019/03/21
1.1K0
Java和Node.js实战 MongoDB 4.x 新特性:Change Streams 变化流
MongoDB 新功能介绍-Change Streams
MongoDB 3.6已经GA有一段时间,网络上对于该版本新特性的详细介绍文章比较少为此借机会对部分新特性做一个相对详细的介绍。基于早期MongoDB版本实现如跨平台数据同步、消息通知、ETL及oplog备份等服务时大多依赖于 Tailable Cursors 的方式。当然这样的实现一来相对复杂同时也存在着一些风险(如不同版本oplog兼容性及过滤特定操作类型等)。
MongoDB中文社区
2018/08/14
2.2K0
MongoDB 新功能介绍-Change Streams
MongoDB部署检查列表建议
MongoDB Manual (Version 4.2)> Administration
MongoDB中文社区
2020/09/21
1.2K0
MongoDB部署检查列表建议
【五分钟了解MongoDB】Change Stream 和MongoDB 4.x
充分获知数据库的数据变动是从MongoDB向其他数据服务进行数据同步的关键点。与直接查询collection来获取数据变动相比,通过流式的方式进行监听会有效并及时的多。这是一种非常强大的“响应式编程”模式。随着MongoDB的版本更新,流式的获取方式将变得原来越易用。
MongoDB中文社区
2019/07/08
1.2K0
【五分钟了解MongoDB】Change Stream 和MongoDB 4.x
什么魔力要你升级到 MONGODB 6.0 (译)
MONGODB 已经走到了6.0,但大多数的公司使用MONGODB 可能都没有到5.0 这个版本,大多还在4.X 晃悠,偶然看到一篇关于 7大理由升级到6.0 的文字,翻译并分享,看看有什么需求促使我们升级到更高版本的MONGODB
AustinDatabases
2022/12/12
1.8K0
什么魔力要你升级到 MONGODB 6.0 (译)
MongoDB CTO 兼联合创始人Eliot Horowitz: 文档无处不在
在MongoDB的引领下,大量新的文档型数据库在过去的十年里相继面世,传统数据库也都纷纷增加了文档功能。2017年,微软在 Cosmos 数据库(曾经被命名为“DocumentDB”)的基础上添加了MongoDB API 层,最近亚马逊又推出了DocumentDB,在其 Aurora 技术的基础上提供了MongoDB 查询语言的一个子集。文档模型,尤其是 MongoDB API,正在蓬勃迅猛发展。
MongoDB中文社区
2019/04/22
1.2K0
MongoDB CTO 兼联合创始人Eliot Horowitz: 文档无处不在
为什么MongoDB适合深度学习?
当您正在考虑为新的深度学习项目选择何种数据库时,您可以访问这个链接所对应的帖子(https://www.mongodb.com/blog/post/deep-learning-and-the-artificial-intelligence-revolution-part-3 )。在您选择数据库之前,以了解更多需要考虑的关键事项。
MongoDB中文社区
2018/08/14
2.2K0
为什么MongoDB适合深度学习?
完美数据迁移-MongoDB Stream的应用
最近微服务架构火的不行,但本质上也只是风口上的一个热点词汇。 作为笔者的经验来说,想要应用一个新的架构需要带来的变革成本是非常高的。
美码师
2018/08/27
1.5K0
完美数据迁移-MongoDB Stream的应用
时间序列数据和MongoDB:第\b三部分 - 查询,分析和呈现时间序列数据
在 时间序列数据和MongoDB中:第一部分 - 简介 我们回顾了您需要了解的关键问题,以了解数据库的查询访问模式。在 时间序列数据和MongoDB:第二部分 - 模式设计最佳实践中, 我们探讨了时间序列数据的各种模式设计选项以及它们如何影响MongoDB资源。在这篇博文中,我们将介绍如何查询,分析和呈现MongoDB中存储的时间序列数据。了解客户端如何连接以查询数据库将有助于指导您设计数据模型和最佳数据库配置。查询MongoDB有多种方法。您可以使用本机工具(如 MongoDB Shell 命令行)和 MongoDB Compass(基于GUI的查询工具)。通过一系列以编程方式访问MongoDB数据 MongoDB驱动程序。几乎所有主要的编程语言都有驱动程序,包括C#,Java,NodeJS,Go,R,Python,Ruby等等。
MongoDB中文社区
2018/12/27
3.8K0
基于JSON的Oracle数据库应用程序开发(与MongoDB兼容)
应用程序开发在一个不断变化的环境中进行。用户期望应用程序能够适应迅速变化的业务需求,并在应用程序演化时进行即时更新。所有这些意味着当应用程序发展时,开发人员需要具备最小停机时间或DBA参与的灵活数据持久性机制。关系模型缺乏这种灵活性:表具有静态的“形状”,应用程序更改需要修改表结构(例如添加新列),这通常涉及数据库管理员(DBA)。此外,现有数据可能需要进行修改以适应新的模式。更重要的是,关系方法需要事先设计模式:应用程序的对象(例如“客户订单”)被规范化为存储对象值的表和列。一个应用程序对象通常被规范化为多个表。这意味着现在简单的插入或获取操作需要插入并选择涉及所有参与表的操作,并具有正确的连接条件。开发人员必须理解此映射并使用SQL表达它。
Yunjie Ge
2023/09/01
3300
基于JSON的Oracle数据库应用程序开发(与MongoDB兼容)
MongoDB 可调节的一致性,其他数据库都不行系列 (白皮书 翻译)--1
这里翻译一篇关于 mongodb 数据一致性的白皮书,这是一份有10页的文档。基于数据一致性的部分内容,在其他的传统数据库,缓存数据库都不存在,也是一个让传统DBA 想不明白的部分,所以进行翻译。
AustinDatabases
2024/03/12
2030
MongoDB  可调节的一致性,其他数据库都不行系列  (白皮书 翻译)--1
Flink Connector MongoDB CDC实现原理
CDC全称是Change Data Capture,我们通常将能够捕获数据变更的技术称为CDC。目前通常描述的CDC技术主要面向数据库的变更,是一种用于捕获数据库中数据的变更技术。CDC的技术应用场景有数据同步、数据分发、数据集成等。
代来
2021/08/25
4.7K0
MongoDB 4.0 RC 版本强势登陆
MongoDB 因其灵活的文档模型、可扩展分布式设计广受开发者喜爱,在此基础上,MongoDB 4.0 推出了更强大的功能支持,目前4.0第一个RC版本已经发布,本文将介绍 MongoDB 4.0 核心的一些新特性。
MongoDB中文社区
2018/08/14
6210
MongoDB 4.0 RC 版本强势登陆
推荐阅读
相关推荐
MongoDB 基础浅谈
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档