You need to enable JavaScript to run this app.
导航
MongoDB 4.4 新特性概览
最近更新时间:2023.11.03 14:15:46首次发布时间:2023.04.23 16:36:45

本文介绍 MongoDB 4.4 版本的主要新特性。

全时诊断数据采集(Full Time Diagnostic Data Capture)

从 MongoDB 4.4 版开始,当 mongod 或 mongos 中的全时诊断数据采集(Full Time Diagnostic Data Capture,简称 FTDC) 线程发生故障时,系统会终止发起进程。更多详情,请参见 Full Time Diagnostic Data Capture (FTDC)

重定义分片键(Refinable Shard Keys)

MongoDB 4.4 版本中引入了 refineCollectionShardKey 命令来优化集合的分片键,该命令允许您通过 refineCollectionShardKey 命令在现有分片键中添加一个或多个后缀字段,来实现更细粒度的数据分发。更多详情,请参见 refineCollectionShardKey

对冲读(Hedged Reads)

为减少数据读取延迟, MongoDB 4.4 版支持 Hedged Reads 功能,即在分片集群场景下,mongos 节点会把一个读请求同时路由到所查询分片下的多个节点中,并将响应最快的查询结果返回给客户端。您可以在分片集群的 Read Preference 字段中将参数 readHedgingMode 设置为 on。更多详情,请参见 hedged readsRead Preference for Sharded Clusters

复合哈希分片键(Compound Hashed Shard Keys)

MongoDB 4.4 版本引入了复合哈希索引,允许在复合索引中指定单个哈希字段,从而提供了复合哈希片键的支持,来帮助集合数据在分片之间的均匀分布,简化业务逻辑的复杂性。更多详情,请参见 Compound Hashed Indexes

隐藏索引(Hidden Indexes)

MongoDB 4.4 版本支持隐藏索引(Hidden Indexes)功能,您可以通过 collMod 命令来隐藏已有的索引,设置隐藏之后,这些索引不会被查询计划所选择,从而帮助您评估删除该索引的影响。如果索引隐藏之后影响了线上业务,您可以取消隐藏,索引即可立刻可用。更多详情,请参见 Hidden Indexes

流式复制(Streaming Replication)

MongoDB 4.4 之前的版本,从节点需要先向主节点发送读取请求并等待主节点响应后,才能获取一批 Oplog 数据。通过这种方式获取 Oplog 时,每次都需要经历一个完整的网络往返时间 RTT(Round-Trip Time)。但从 4.4 版本开始,MongoDB 从节点无需发起请求,主节点就可以持续地向从节点发送 Oplog,这种 Oplog 同步方式称为流式复制。流式复制可以在高负载和高延迟网络环境中,减少复制延迟。您可以通过 oplogFetcherUsesExhaust 参数开启流式复制功能。更多详情,请参见 Streaming Replication

同步建索引(Simultaneous Indexing)

MongoDB 4.4 之前的版本,需要先等主节点索引创建完成后,从节点上才能创建。从 MongoDB 4.4 版本开始,主节点和从节点可以同时执行索引创建操作,这样可以大幅减少主从延迟事件,也可以保证即使在索引创建过程中,从节点仍然能够访问到最新的数据。更多详情,请参见 Index Builds in Replicated Environments

镜像读取(Mirrored Reads)

MongoDB 4.4 版本提供了镜像读取功能,即主节点会按一定的比例将读流量复制到从节点上执行,帮助从节点预热缓存。这是一个非即发即弃(Fire and Forgot)的行为,不会对主节点的性能产生任何实质性的影响,但会在一定程度上增加从节点的负载。您可以通过 samplingRatemaxTimeMS 参数来设置流量复制的比例。更多详情,请参见 mirrorReads

可恢复的全量同步(Resumable Initial Sync)

MongoDB 4.4 之前的版本,如果从节点在做全量同步时由于网络抖动而出现连接闪断,那么需要重新开始整个全量同步,当数据量较大时,这种情况会严重影响业务。但从 MongoDB 4.4 版本开始,支持从中断位置继续执行同步。如果闪断后一直无法连接成功,系统会重新选择一个可用同步源进行新的全量同步。您可以通过replication.initialSyncTransientErrorRetryPeriodSeconds 参数设置该过程的超时时间。关于该参数的更多详情,请参见 MongoDB Server Parameters

Oplog 最小保留时间(Minimum Oplog Retention Period)

MongoDB 的 Oplog 记录了所有数据变更详情,可用于数据同步、增量备份、数据迁移、数据订阅等场景。从 MongoDB 4.4 版本开始,您可以通过 mongod 配置文件中的 storage.oplogMinRetentionHours 参数来定义Oplog 的最短保留时长,或通过 oplogMinRetentionHours 命令在线修改 Oplog 的最短保留时长。更多详情,请参见 Minimum Oplog Retention Period

多表联合增强(Union All)

MongoDB 4.4 版本支持在多表联合查询中添加 $unionWith stage,可以将两个集合中的数据聚合到一个结果中。$unionWith stage 支持分片集合,您可以在 Aggregate Pipeline 中使用多个 $unionWith stage ,实现对多个集合数据做聚合。更多详情,请参见 $unionWith

自定义 Aggregation 表达式(Custom Aggregation Expressions)

MongoDB 4.4 版本提供了两个新的运算符: $accumulator$function ,您可以通过上述两个运算符,使用聚合来编写自定义 JavaScript 脚本,实现更复杂的查询能力。更多详情,请参见 Map-Reduce to Aggregation Pipeline