速览
正如发布MongoDB 5.0时承诺的更快发布频率,年度大版本MongoDB 6.0也于2022年正式跟广大数据库爱好者们见面了 。目前阿里云MongoDB已经完成了对6.0版本的适配工作,大家可以直接在官网控制台进行购买和尝鲜体验!
![MongoDB 6.0 新特性概览](http://img.jiangsulong.com/221110/1325201543-0.png)
文章插图
该版本的主要功能特性包括:
● 时序集合增强
● Change Stream增强
● 可查询加密
● 聚合&query能力增强
● 集群同步
总结来看,MongoDB 6.0的新功能旨在促进开发和运营,消除数据孤岛,并消除因不必要地使用额外第三方技术而带来的业务复杂性 。
新特性
时序集合(time series collections)作为从5.0发布时面向时序数据的全新功能,时序集合标志着MongoDB这一OLTP型数据库希望能处理好更多AP型场景的决心,官方对时序集合的支持也一直保持着高速的更新&改进频率 。比如为了支持更好分布数据而在5.1引入的分片(sharding)、为了改善存储空间占用而在5.2引入的列式压缩(columnar compression)以及为了支持部分数据点缺失情况下的时序分析而在5.3引入的密集化和间隙填充(densification and gap-filling)
另外,时序集合的索引方面也有增强 。从6.0开始,为了提高读取性能,时序集合现在包括测量的二级和复合索引 。时序数据也开始和空间维度进一步结合形成时空数据,时序结合开始支持地理位置索引(geo-indexing) 。通过将地理信息附加到时间序列数据,开发人员可以更好地分析涉及举例和位置的场景 。比如跟踪夏日冷链运输车的温度变化情况以及监测特定航线上的货运船燃料消耗等 。
性能方面也有一些优化,主要针对的是查询以及排序场景 。比如MongoDB可以更快返回时序数据中的最后一个数据点("last point" query),而不再需要扫描整个集合以后才得到想要的数据;通过在时间以及元数据字段上的聚簇索引(clustered index)以及二级索引(secondary index)能够更高效地完成排序操作 。
Change Stream作为支持CDC的核心功能之一,Change Stream迎来了自MongoDB 3.6发布以来的一次重大更新 。有了Change Stream,业务可以更容易地实时获取数据库的变更,并基于此构建各种事件驱动型的应用或系统,不再需要依赖其他的数据同步中间件 。
![MongoDB 6.0 新特性概览](http://img.jiangsulong.com/221110/132520H44-1.png)
文章插图
看新特性之前让我们先看下之前版本里有关Change Stream功能的更新历史:
![MongoDB 6.0 新特性概览](http://img.jiangsulong.com/221110/1325204Q7-2.png)
文章插图
在这次的MongoDB 6.0版本里 。对Change Stream的更新包括:
● 支持变更的前后视图(pre-image和post-image)
● 支持更多的DDL(包括
create/createIndexes/modify/shardCollection)
● 性能提升:聚合框架上pipeline中stage的下推以及优化
●change event新增了wallTime字段,时间戳也能支持多种转换和展示算子($toDate/$tsSeconds/tsIncrement)以方便业务消费
在之前,客户端只能通过change events获取文档变更后的状态,现在也能支持获取变更前的状态了 。这使得一些同时需要变更前&变更后的下游系统(用作校对或审计)能够充分利用数据库原生的能力而无需自行在业务层面耦合 。更灵活的功能形态将大大扩展changeStream未来的使用场景 。与此同时,支持更多的DDL操作也使得Change Stream的应用场景限制变得更少,不再会遇到经常中断后需要resume的情况 。之前的使用场景中,分片集群需要mongos做merge,导致mongos成为整个changeStream的瓶颈点,性能也不够理想;这次从框架层面的优化以及部分场景下的stage下推带来的性能提升值得期待 。
总而言之,这次大版本的功能升级也是对用户广泛诉求(SERVER-36941以及SERVER-46414)的积极响应,表明了MongoDB对数据库使用者体验上的关注 。
Queryable Encryption (Preview)数据安全正在肉眼可见地变得越来越重要 。已有的传输加密或者静态加密手段没办法实现在使用过程中的加密,这使得更复杂的加密和更方便的查询看起来是背道相驰的事情 。MongoDB 6.0推出的可查询加密可以允许用户从客户端加密敏感数据,将其作为完全随机的加密数据存储在数据库服务器端,并对加密数据直接进行丰富的查询 。
从下面的示例中可以看到只有客户端能看到敏感信息的明文,在query到达server时会同时包含从KMS获取的加密秘钥,然后在server端以密文进行查询并返回,最后在客户端用驱动利用密钥解密后以明文呈现 。
推荐阅读
- TypeScript 4.9 发布!重点新特性解读
- 余生请多指教|《余生》开分6.0,为什么男主粉喊话“低了”,女主粉则比较满意?
- 豆瓣|《余生请多指教》豆瓣开分6.0,打分人数引争议,网友:手速慢了
- 肖战|《余生,请多指教》豆瓣开分6.0,平台疑锁分,肖战作品平均分仅5.3
- 豆瓣|《余生请多指教》豆瓣开分6.0,一星比五星还多,合理吗?
- 音乐|六年内最大更新!酷我音乐发布车载6.0版:UI全变了
- 虚拟机|免费开源虚拟机Virtual Box大升级:支持Linux内核6.0
- 安卓|8月30日登场!ColorOS 13新特性爆料汇总
- Android 13 新特性:1 小时后自动清理剪贴板内容
- 安卓|安卓13正式版发布并开源!一文了解新特性