tencent cloud

云数据库 MongoDB

动态与公告
产品动态
公告
新手指引
产品简介
产品概述
产品优势
应用场景
集群架构
产品规格
产品功能
地域和可用区
名词解释
购买指南
计费概述
产品定价
计费公式
欠费说明
备份空间计费
变配计费说明
快速入门
快速创建实例
连接 MongoDB 实例
读写数据库
操作指南
访问管理
管理实例
节点管理
版本升级
网络配置
系统监控
备份与回档
数据库审计
数据安全
SSL 认证
日志管理
数据库管理
多可用区部署
只读灾备
参数配置
回收站
任务管理
诊断优化
数据迁移指引
实践教程
索引优化解决读写性能瓶颈
分片集群 Mongos 负载不均解析及应对方案
分片集群使用注意事项
MongoDB 协议实例读写示例
基于 CVM 连接 MongoDB 进行数据导入导出的方法
3.6版本实例反复创建和删除同名数据库时报错怎么办
无法连接 MongoDB 解决方法
删减分片任务:进度确认与异常排查指南
性能调优
运维开发指南
开发规范
3.2版本分片集群命令支持情况
3.6版本命令支持情况
开发运维
故障处理
慢查询增多
连接数超限
API 文档
History
Introduction
API Category
Making API Requests
Instance APIs
Backup APIs
Account APIs
Other APIs
Task APIs
Introduction
Data Types
Error Codes
SDK 参考
Shell连接示例
PHP 连接示例
Node.js连接示例
Java 连接示例
Python连接示例
Python 读写示例
Go 连接示例
PHP 重连示例
产品性能
测试环境
测试方法
测试结果
常见问题
费用相关问题
功能特性问题
分片集群问题
实例相关问题
回档备份问题
连接相关问题
数据迁移问题
其他常见问题
相关协议
服务等级协议
Terms of Service
词汇表
联系我们

7.0 新特性速览

PDF
聚焦模式
字号
最后更新时间: 2024-10-25 11:19:23
本文列出云数据库 MongoDB 7.0 推出的主要特性。具体信息,请参见 MongoDB 7.0 release-notes

基于插槽的查询执行引擎性能提升

MongoDB 7.0 版本中的基于槽的查询执行引擎(Slot-Based Query Execution Engine)是对之前版本的进一步优化和扩展。这项技术通过将查询操作分解成一系列的“槽”(slot),每个槽负责处理查询的一个特定部分,从而允许更细粒度的并行处理。这样的设计使得数据库在处理复杂查询时能够更加高效,尤其是在处理包含 $group 或 $lookup 阶段的聚合管道查询时,新引擎能够提供更好的性能表现。

分片键分析

MongoDB 7.0 版本中引入的 analyzeShardKey 命令和 db.collection.analyzeShardKey() 方法是用于分析集合的分片键性能的重要工具。这些工具基于采样查询的结果来评估分片键的合理性,从而帮助设计更优的 Schema 以及分片键,使得数据在分片集群中的分布更加合理,提高查询效率。
analyzeShardKey 命令的基本语法如下:
db.adminCommand({
analyzeShardKey: <string>,
key: <shardKey>,
keyCharacteristics: <bool>,
readWriteDistribution: <bool>,
sampleRate: <double>,
sampleSize: <int>
})
analyzeShardKey 字段:指定要分析的集合的命名空间。
key 字段:定义要分析的分片键。这可以是未分片集合或分片集合的候选分片键,也可以是分片集合的当前分片键。
keyCharacteristics 字段:决定是否计算分片键的特征指标,如关联基数、频率和单调性。
readWriteDistribution 字段:决定是否计算读写分布的指标。
sampleRate 字段:定义计算分片键特征指标时,集合中要进行采样的文档所占的比例。
sampleSize 字段:定义计算分片键特征相关指标时要采样的文档数量。
说明:
使用 configureQueryAnalyzer 命令或 db.collection.configureQueryAnalyzer() 方法可配置查询分析器对在集合上运行的查询进行采样。

可查询加密(Queryable Encryption)

MongoDB 7.0 版本中引入的可查询加密(Queryable Encryption)是一项重要的安全特性,允许用户在客户端加密敏感数据字段,并将这些字段以完全随机化的加密数据形式存储在数据库服务器端。同时,还支持对加密数据运行表达性查询。以下是可查询加密的一些关键点:
数据加密与查询:可查询加密允许客户端加密敏感数据字段,并在数据库服务器端以加密形式存储这些字段。同时,支持对加密数据执行等值和范围查询 。
加密与解密过程:敏感数据在整个生命周期内(包括传输中、静态存储时、使用中、日志中、备份中)都被加密,只有在客户端才会被解密。
自动加密与显式加密:可查询加密可以通过自动加密或显式加密的方式实现。自动加密允许执行加密的读取和写入操作,而无需添加对加密和解密字段的显式调用。显式加密则允许通过 MongoDB 驱动程序的加密库执行加密读写操作,但这需要在应用程序中指定使用此库进行加密的逻辑 。
密钥管理:在生产环境中使用可查询加密时,必须使用远程密钥管理系统(KMS)来存储加密密钥。

自动合并(AutoMerger)

MongoDB 7.0 版本中引入的自动合并器(AutoMerger)是自动均衡器(Balancer)的一个重要组成部分,它旨在优化分片集群中的数据分布。自动合并器会在数据或索引分布不均衡、存在过多分片或进行数据迁移时自动运行,它会自动合并满足特定合并要求的 chunks。每隔 autoMergerIntervalSecs 秒执行一次自动合并操作。管理员可以通过 configureCollectionBalancing 命令启用或禁用自动合并器,例如:
db.adminCommand({
configureCollectionBalancing: "<db>.<collection>",
chunkSize: <num>,
defragmentCollection: <bool>,
enableAutoMerger: <bool>
})

新的聚合操作符:$median 和 $percentile

$median 聚合操作符:用于计算输入值的中位数。中位数是将数值按大小顺序排列后位于中间的值。如果输入值的数量是奇数,中位数就是中间的数值;如果是偶数,则中位数是中间两个数值的平均值。如下示例按 category 分组,并计算每个组的 value 字段的中位数。
db.collection.aggregate([
{
$group: {
_id: "$category",
medianValue: { $median: { input: "$value" } }
}
}
])
$percentile 操作符:用于计算输入数组中指定百分位的值。百分位是指在一组数据中,有百分之多少的数据项小于或等于这个值。如下示例按 category 分组,并计算每个组的 value 字段的 90 百分位数。
db.collection.aggregate([
{
$group: {
_id: "$category",
percentileValue: { $percentile: { input: "$value", p: 0.90, method: "approximate" } }
}
}
])

复合通配符索引(Compound Wildcard Indexes)

MongoDB 7.0 版本中引入的复合通配符索引(Compound Wildcard Indexes)是一项新特性,允许在多个字段上创建索引,其中可以包含一个通配符项和多个非通配符项。这种索引对于具有灵活模式的文档特别有用,即文档字段名称在集合中可能不同。如下示例,使用 wildcardProjection 来指定索引中应包含哪些子字段。通配符索引项 $**指定集合中的每个字段,而 wildcardProjection 限制索引到指定的字段 "customFields.addr"和 "customFields.name"。更多信息,请参见 Compound Wildcard Indexes
db.runCommand({
createIndexes: "salesData",
indexes: [
{
key: {
tenantId: 1,
"$**": 1
},
name: "tenant_customFields_projection",
wildcardProjection: {
"customFields.addr": 1,
"customFields.name": 1
}
}
]
})

其他特性

ChangeStream 支持超大变更事件,新增了 $changeStreamSplitLargeEvent 阶段,支持对超过16MB的超大变更事件进行切分。具体信息,请参见 Large Change Stream Events
慢查询日志增加了新的字段 catalogCacheIndexLookupDurationMillis,用于记录操作在索引缓存中获取索引信息所花费的时间,有助于更精确地分析和诊断查询性能问题,特别是在涉及索引查找的操作中。具体信息,请参见 log messages for slow queries
WT 引擎动态限流:自动动态调整 WT 存储引擎的事务并发度,以优化数据库在高负载下的性能。具体信息,请参见 Concurrent Storage Engine Transactions
安全性提升,支持 KMIP 1.0和1.1,以及 OpenSSL 3.0和 OpenSSL FIPS,增强了数据安全性。
新增了用于监控 Chunk 迁移的统计指标。具体信息,请参见 New Sharding Statistics for Chunk Migrations
元数据一致性检查,MongoDB 7.0 版本中引入的 checkMetadataConsistency 命令用于检查分片集群中的元数据一致性问题。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈