本文介绍云数据库MongoDB 6.0版本推出的新特性和优化项。
速览
本文从以下方面介绍云数据库MongoDB 6.0版本:
MongoDB 6.0的更多新特性以及优化项,请参见MongoDB 6.0 release-notes。
可查询加密(Queryable Encryption)
可查询加密功能目前是预览(Preview)版本,不建议直接在生产环境使用。预览(Preview)版本的更多信息,请参见MongoDB Releases Queryable Encryption Preview。
MongoDB 6.0新推出可查询加密功能,允许用户从客户端加密敏感数据,将其作为完全随机的加密数据存储在数据库服务器端,并对加密数据进行丰富的查询。
可查询加密只允许在客户端查看敏感数据的明文,在查询到达服务器端时会同时包含从KMS获取的加密密钥,然后在服务器端以密文进行查询并返回,最后在客户端利用密钥解密后以明文呈现。
可查询加密的特点如下:
从客户端加密敏感数据,只有客户端拥有加密密钥。
数据在整个生命周期(传输、存储、使用、审计和备份)中都是加密的。
客户端可以直接对加密数据进行丰富的查询(包括等值匹配、范围、前后缀或子字符串等查询类型)。
强大的数据隐私保护能力,只有能访问客户端的应用程序和加密密钥的授权用户才能看到明文数据。
更轻量化的应用程序开发,涉及敏感数据的开发者无需考虑太多安全、合规的事情,数据库会直接提供综合加密解决方案。
降低敏感数据上云的安全顾虑。
可查询加密的更多信息,请参见Introducing Queryable Encryption。
集群同步(Cluster-to-Cluster Sync)
无论是数据的同构同步(Mongo-to-Mongo)还是异构同步(Others-to-Mongo & Mongo-to-Others)都是MongoDB生态中的一部分,开源MongoDB推出了多种工具,比如mongoimport、mongoexport、mongodump和mongorestore等,但是这些工具并没有很好的规划数据同步。
MongoDB 6.0推出了新的同步工具mongosync,它能支持跨实例数据同步(两个MongoDB实例间连续且单向的数据同步)。用户还可以实时控制和监控整个同步过程,按需启动、停止、恢复甚至反转同步。
mongosync工具的更多信息,请参见mongosync。
时序集合(Time Series Collection)
时序集合是MongoDB 5.0版本发布的功能,主要应用于时序数据分析型场景。从5.0版本开始,时序集合的功能更新记录如下:
版本 | 更新说明 |
MongoDB 5.0 | 首次发布。 |
MongoDB 5.1 | 引入分片(Sharding),以支持更好地分布数据。 |
MongoDB 5.2 | 引入柱状压缩(Columnar Compression),以改善存储空间占用。 |
MongoDB 5.3 | 引入密集化和间隙填充(Densification and Gap-Filling),以支持部分数据点缺失情况下的时序分析。 |
MongoDB 6.0 | 分别从索引、查询以及排序多个方面增强了时序集合。
|
变更流(Change Streams)
变更流是MongoDB 3.6版本发布的用于支持CDC(Change Data Capture)的核心功能之一。变更流可以让业务更容易地实时获取数据库的变更,并基于此构建各种事件驱动型的应用或系统,不再需要依赖其他的数据同步中间件。
变更流的功能更新记录如下:
版本 | 更新说明 |
MongoDB 3.6 |
|
MongoDB 4.0 |
|
MongoDB 4.2 |
|
MongoDB 5.1 |
|
MongoDB 5.3 | 支持在Chunk迁移期间过滤对孤立文档的更新。 |
MongoDB 6.0 |
|
聚合(Aggregation)
聚合功能允许用户处理多个文档并返回计算结果。通过将多个操作符组合到聚合管道中,用户可以构建出足够复杂的数据处理管道以提取数据并进行分析。MongoDB 6.0在原有聚合功能的基础上,推出了如下新特性以及优化项:
分片集群实例支持
$lookup
和$graphLookup
。改进
$lookup
对JOINS的支持。改进
$graphLookup
对图遍历的支持。提升
$lookup
性能,部分场景中性能提升可达百倍。
$lookup
和$graphLookup
的更多信息,请参见$lookup (aggregation)和$graphLookup (aggregation)。
查询(Query)
新增$maxN
、$topN
、$minN
、$bottomN
、$lastN
和$sortArray
等操作符。通过操作符可以将更多的计算从业务层下沉到数据库中,使得业务层更加轻量化。
操作符的更多信息,请参见Aggregation Pipeline Operators。
弹性
MongoDB 6.0在原有弹性的基础上,推出了如下新特性以及优化项:
将数据块(Chunk)规格的默认值从64 MB调整为128 MB,有效降低了数据迁移频率以及网络和路由层的开销。
支持
configureCollectionBalancing
命令,此命令支持的功能如下:支持为不同的分片表设置不同的数据块规格。
示例:数据规模特别大的分片表,将数据块规格调整到256 MB。数据规模相对较小但希望在分片上分布更均匀的分片表,将数据块规格调整到64 MB或32 MB。
支持自动整理分片集合的磁盘空间碎片。
您可以通过
configureCollectionBalancing
命令设置自动整理磁盘碎片,设置自动整理后您无需再主动使用compact
命令来整理磁盘空间碎片,即可有效控制磁盘空间使用率,
说明configureCollectionBalancing
命令的更多信息,请参见configureCollectionBalancing。
安全性
MongoDB 6.0在原有安全性的基础上,对客户端字段级加密(CSFLE, Client-Side Field-Level Encryption)功能进行了优化。CSFLE将支持任何符合密钥管理互通协议(KMIP,Key Management Interoperability Protocol)的密钥管理提供商,即除了基于KeyFile的本地密钥管理外,MongoDB支持通过KMIP与第三方密钥管理设备集成,为用户提供更安全的保障。
客户端字段级加密功能被广泛应用于敏感数据的管理中,尤其是数据迁移的场景。