MongoDB 3.4 功能改进一览

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: MongoDB 下一个大版本 3.4 即将发布,本文主要介绍 3.4 版本在功能特性上做的改进,内容翻译自 Development Release Notes for 3.4 Release Candidate。 分片集群(Sharded Cluster) Membership Awarenes

MongoDB 3.4 已经发布,本文主要介绍 3.4 版本在功能特性上做的改进,内容翻译自 [https://docs.mongodb.com/manual/release-notes/3.4/?_ga=1.74729233.2005306875.1453858874)

分片集群(Sharded Cluster)

Membership Awareness

MongoDB 3.4里,分片集群的所有组件,Config server、mongod、mongos 都能相互感知整个分片集群的存在,了解整个分片集群的配置信息,这样能避免分片集群的误配置,比如在现在的版本,有可能会将一个 shard 错误的加到多个 sharded cluster 了。这个特性引入了如下限制

  • 分片集群里 mongod 启动时,必须显式配置 sharding.clusterRole 为 shardsrv
  • 3.4版本的 mongos 不能连接低版本的 mongod

Config server 的 Primary 节点负责负载均衡

MongoDB 3.2及以前版本里,分片集群的负载均衡由 mongos 负责,多个 mongos 会抢一个分布式锁,抢锁成功的 mongos 会对执行负载均衡任务,在 shard 间迁移 chunk;在3.4版本里,负载均衡将由 Config server 的 Primary 节点负责,预计会在负载均衡并发度及效率上会有大的提升。

不再支持 SCCC Config server 的模式

MongoDB 3.2版本引入了复制集模式的 Config Server(CSRS 模式),在此之前,Config server 由多个镜像的单节点组成(SCCC模式),3.4版本里,MongoDB 将不再支持 SCCC模式的 Config server。

所以往 3.4 版本升级时,如果Config server 还是 SCCC 模式,需要先升级为 SCRS 模式

Sharding Zones

分片集群里引入了 Zone 的概念,主要取代现在的 tag-aware sharding 机制,能将某些数据分配到指定的一个或多个 shard 上,这个特性将极大的方便 sharding cluster 的跨机房部署,详细了解 Sharding zone 机制

Faster Balancing

  • 使用wiredtiger 引擎时,moveChunk 的secondaryThrottle选项默认设置为 false,即不用等待迁移的数据复制到secondary节点
  • 支持并行的 chunk 迁移,对于包含 N 个 shard 的 sharding 集群,MongoDB 最多可以同时跑 N/2 个迁移任务。

复制集(Replica Set)

majority WriteConcern 支持配置是否刷 journal

配置复制集时,增加 writeConcernMajorityJournalDefault 选项,默认为 true,即当指定 WriteConcern 为 majority 时,数据写到大多数节点并且 journal 成功刷盘后,才向客户端确认成功;如果为 false,数据写到大多数节点的内存,就向客户端确认。

支持配置 Primary 追数据的时间

配置复制集时,增加 catchUpTimeoutMillis 选项,默认为2s,来指定新选举出来的 Primary 从其它拥有更新数据的节点追数据的时间,增加该时间能最大限度的减少需要 rollback 的数据,但可能增加整个 failover 的时间,该选项只能在 protocolVersion 为1时使用。

支持 Linearizable Read Concern

"linearizable" Read Concern 级别保证,一定能读到 WriteConcern 为 majority,并且确认时间在读请求开始之前的数据,该级别仅在查询结果只有单个文档的情况下有效。

提升全量同步

  • 在拷贝数据的时候,同时建立所有的索引(以前版本只有_id索引是在同步数据时建立的)
  • 拷贝数据的阶段,secondary 不断拉取新的 oplog,确保 secondary 的 local 数据库有足够的空间来存储这些临时数据。

Decimal Type

MongoDB 3.4 新增对decimal128 format的支持,最多支持34位小数位。

跟 Double 类型不同,decimal 数据存储的是实际的数据,无精度问题,以9.99为例,decimal NumberDecimal("9.99") 的值就是9.99; 而 Double 类型的9.99则是一个大概值 9.9900000000000002131628....

Aggregation

MongoDB 在3.4版本增加了大量的 aggregation 操作符,功能更加强大了,举几个例子

  • bucket 能对方便的对数据进行分类
  • $grahpLookup 在 3.2的$lookup 的基础上更进一步,能支持更复杂的关系运算了。
  • $addFields 使得文档操作更丰富了,比如将某些字段求和存储为新的字段。

详细的介绍请参考Aggregation部分

Collation and Case-Insensitive Indexes

MongoDB 3.4 开始支持 collation,在之前的版本里,文档里存储的字符串,不论是中文还是英文,不论大小写,一律按字节来对比,引入 collation 后,支持对字符串的内容进行解读,可以按使用的 locale 进行对比,也支持对比时忽略大小写。

create、createIndexes、find、aggregate 等涉及字符串操作的命令都支持 collation。

视图(Views)

MongoDB 3.4里增加了对只读视图的支持,视图将集合里满足某个查询条件的数据虚拟成一个特殊的集合,用户可以在特殊的集合上做进一步的查询操作。

安全提升(Security Enhancement)

MongoDB 3.4 支持轮转的将复制集、或分片集群的各个节点开启鉴权,不需要停服务,详细步骤参考Enforce Keyfile Access Control in a Replica Set without Downtime

工具(MongoDB Tools)

MongoDB 3.4 引入 mongoreplay 工具,可用于监控并记录 mongod 上执行的命令并 replay 到另一个 mongod 实例上,该工具可用于代替 mongosniff。

General Enhancements

  • 支持 systemd
  • 降低默认的 wiredtiger cache 配置

Changes Affecting Compatibility

可能影响兼容性的修改

升级步骤(Upgrade Procedures)

对新版本功能感兴趣的同学可以下载 MongoDB-3.4 来试玩下。

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
5月前
|
Oracle NoSQL 关系型数据库
实时计算 Flink版产品使用合集之MongoDB CDC connector的全量快照功能可以并发读取吗
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
111 2
|
2月前
|
存储 NoSQL 数据管理
揭秘MongoDB时间序列集合:这个超级功能将如何彻底改变你的数据管理?
【8月更文挑战第8天】时间序列数据记录随时间变化的信息,在数据库管理中至关重要。MongoDB自4.0版起引入时间序列集合,专为这类数据优化存储与查询。通过问答形式介绍其特点:自动数据过期、高效存储机制及快速查询操作。创建时需指定时间字段及可选元数据字段。支持设置数据过期时间,采用粗粒度索引减少I/O操作。查询时可通过时间范围筛选数据,并利用聚合框架进行数据分析。随着实时分析需求的增长,时间序列集合的应用将更加广泛。
77 0
|
4月前
|
存储 负载均衡 NoSQL
MongoDB的分片功能
【6月更文挑战第6天】MongoDB的分片功能
45 1
|
5月前
|
分布式计算 DataWorks NoSQL
DataWorks产品使用合集之在 DataWorks 中,离线同步的一键生成目标表结构功能不能识别 MongoDB 数据源如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
52 0
|
10月前
|
存储 人工智能 NoSQL
MongoDB推出高级数据管理功能,实现随处可运行应用程序
借助MongoDB Atlas for the Edge,企业不仅可以安全地存储数据,还可以跨越不同数据源和目的地实时同步数据,从而提供具有高可用性、高弹性和高可靠性的应用程序
|
11月前
|
NoSQL 测试技术 API
Eolink Apikit 版本更新:「数据字典」功能上线、支持 MongoDB 数据库操作...
Eolink Apikit 版本更新: 1. 搭建自定义接口协议架构,支持快速适配金融行业各类型私有协议的导入、编辑和展示。 2. 数据字典功能上线,支持以数据字典的形式管理参数枚举值。 3. 数据库连接支持 MongoDB 数据库操作。 4. 基于 Apikit 类型导入 API 数据支持增量更新。
70 0
|
数据可视化 前端开发 NoSQL
【BackEnd】SpringBoot整合MongoDB实现登录注册功能(适合初学者)
该项目使用SpringBoot2.7+MongoDB实现的登录注册Demo,可作为启动项目的BaseLine
296 0
|
存储 传感器 缓存
MongoDB 功能详解之时间序列集合(Time Series Collections)
时间序列集合(Time Series Collections):MongoDB 5.0 版本中的新功能。
|
NoSQL MongoDB
《阿里云MongoDB备份恢复功能说明和原理介绍》电子版地址
阿里云MongoDB备份恢复功能说明和原理介绍
99 0
《阿里云MongoDB备份恢复功能说明和原理介绍》电子版地址
|
SQL NoSQL 安全
MongoDB新愿景及功能:致力成为开发者数据平台提供商
MongoDB Atlas引入一套统一的新功能, 以满足开发者在构建现代应用程序方面日益增长的数据需求
MongoDB新愿景及功能:致力成为开发者数据平台提供商

相关产品

  • 云数据库 MongoDB 版
  • 下一篇
    无影云桌面