MongoDB 4.2新特性:分布式事务、字段级加密、通配符索引、物化视图

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
云原生多模数据库 Lindorm,多引擎 多规格 0-4节点
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: MongoDB 4.2已经发布,我们来看看它增加了哪些新特性?分布式事务?数据库加密?通配符索引?

MongoDB 4.2已经发布,我们来看看它增加了哪些新特性?分布式事务?数据库加密?通配符索引?
在2019年MongoDB World大会上,CTO Eliot Horowitz介绍了MongoDB 4.2中的一些功能,这些功能扩展了其在数据库技术方面的领先地位:分布式事务(Distributed Transactions),字段级加密(Client Side Field Level Encryption),通配符索引(Wildcard Indexing)、按需物化视图(Materialized Views)。
image
这些都是重大的改进,表明MongoDB在企业级功能方便更加完善。
MongoDB 4.2提升了事务和分析技术水平。 它提供大规模的分布式事务的ACID担保和复杂的数据处理流程,还有最先进的加密控制保护机制。 我们可以在任何地方运行MongoDB4.2:在本地数据中心,云上、混合云、Atlas云上。我们可以获得阿里云、AWS,Azure和GCP可用的完全托管,云原生的MongoDB服务。阿里云全球第一个实现了MongoDB异地多活架构。可以支持互联网跨国公司的大规模出海业务。
现在使用MongoDB的公司越来越多了,技术架构方案也越来越成熟。MongoDB新特性也是为了满足更多的企业级业务场景需求。
1、MongoDB 4.2新特性:
先来大体上看看有哪些改进,作为4.0的加强版,事务特性做了增强,之前支持跨文档事务(复制集群),现在支持分布式事务(分片集群)。索引功能也进行了小改动,支持通配符索引,其实类似我们知道的ES搜索的字符匹配搜索,而且是不定字段模式。安全性也开始全库加密和特定字段加密。

  • ACID保证:分布式,跨分片集群节点分布式事务,全局时间点读取和可变分片键值。
  • 查询和分析:Atlas Data Lake,按需物化视图,通配符索引和MongoDB图表,用于丰富数据可视化。
  • 弹性和伸缩性:可重试的读写,集群新节点选举速度提高10倍,Zstandard压缩
  • 企业安全性:客户端字段级加密,支持支持无停机多个CA机构证书轮换,降低了3倍数据库审计的开销成本。
  • 随处运行:Atlas自动扩展,全文搜索服务,以及支持与Kubernetes和Apache Kafka集成。
    K8s也是火爆的不行,面试处处问容器,技术圈子好装逼,复杂的配置容器还是难以实现,还是需要人工介入。
    2、分布式事务:
    事务从跨文档事务级别,扩展到分片集群的分布式事务级别。用不用先不说,有了这个功能,起码部分特殊业务场景可以作为备选方案。
    4.2版本已经发布,4.0的多文档ACID事务支持的分布式事务,MongoDB4.2扩展提供更高级别的事务功能。 使用分布式事务,事务将能够跨MongoDB Atlas的全局集群工作,并允许大型分片部署(包括跨多个区域的部署)来处理这些操作。
    分布式事务在保持多语句操作的完全原子性的同时完成所有这些操作。如果任何事务无法在分片上提交,则会中止该事务中涉及的所有分片操作。比较好的一点就是使用4.2分布式事务与使用4.0的多文档事务完全相同。这意味着我们可以使用相同的熟悉的关系式事务语法,并且在扩展分布式事务时,客户端代码不需要修改。做到无缝迁移。

MongoDB4.2引入分布式事务引入同时来带来了许多其他新功能。例如,可变的分片键值key,更大规模的事务,驱动程序端的帮助类和记录度量数据,都使得开发更加容易。以可变分片键值为例。由于能够更改数据记录的主键key,该记录可以在分片集群之间迁移数据,从而允许全局重新分配数据或分层存储归档旧的数据,只要能在60秒的事务运行时间限制内完成即可。

有了分布式事务,MongoDB现在可以支持大多数业务场景,比如极端数据一致性要求的电商、支付、订单等场景:文档级ACID事务,跨多文档事务,到全局分布式集群事务。

3、客户端字段级加密:
全库加密比较简单,很多数据库也开始支持,但是字段级加密,复杂度比较高,但是加密策略会更加灵活,很多时候只需要对敏感字段加密,比如价格,或者供应商的手机号加密。MongoDB4.2的这个新特性还是比较实用的。当然之前大多数加密需要应用开发人员自己实现。
MongoDB提供了一系列安全选项,从端到端加密(E2E)实时加密到静止数据加密,细粒度的基于角色的访问控制(RBAC)和全面的审计功能。 由于某些特殊的法律所要求的严格性,可能有时候需要从数据库中安全地选取,查询和存储加密数据,而这些加密后的数据,数据库却不能读取解密,这个也就是客户端加密,严格保证数据库的安全性。
image

这个是必须始终在数据库中加密并且仅在客户端解密的数据加密模式。 MongoDB新的Field Level Encryption新特性就是为了解决这一挑战。 使用此功能,服务器不知道要加密的字段。 所有加密和解密都在驱动程序级别完成。
它是驱动程序,当它看到写入或查询命令中涉及加密字段时,从密钥管理器获取适当的密钥,加密数据并将其发送到服务器。然后服务器只看到密文并且不知道密钥。当从服务器返回结果时,服务器将该密文发送给驱动程序,并且已经有密钥的驱动程序对其进行解密。从应用程序的角度来看,这种机制是完全透明的,客户端应用完全不知道数据库进行了什么加密操作。

密钥管理也远离数据库,可以将密钥绑定到单个记录或用户账号。这样也使得删除用户加密信息变得容易。通过删除密钥管理系统中的相关密钥,可以有效地删除使用该密钥加密的所有数据。这也意味着我们可以安全地使用MongoDB Atlas等托管服务,因为他们知道数据永远不会在日志,内存或基础架构的任何其他部分中以未加密的方式显示。

如果你曾经手工写过数据库数据加密代码,肯定理解加密和解密,以及保证秘钥安全性等规则的复杂程度,数据库数据加密简单的对称加密很好理解,关键还涉及到秘钥的保存,安全性、以及加密算法和字段的灵活替换,还有客户端和数据库端如何做到加密解耦。那么MongoDB 4.2中的字段级加密的简洁设计可以帮助我们解决这个问题,真正提高大家的工作效率。
2019年国家出台法律法规,要求大型互联网、金融、政府机构必须通过严格的等级保护审查,相信这个功能非常的及时。当然如果你有更复杂的等保安全需求,可以联系我,也可以联系阿里云,中国唯一的通过等保三级和金融云等保4级的云计算公司。阿里云安全团队有丰富的经验可以帮助客户建立严格的安全系统,通过等保评审。
被攻击或者数据泄露多了一层防护,起码不会立即被破解,导致大规模的数据风险,又加上等保的法规,很多公司必须要做系统安全,这是不错的一个解决方案。
4、通配符索引:
索引大家都很熟悉,数据库基本都有自己的索引机制,而且支持的索引类型差别也比较大,MySQL、Oracle、ES、Hbase都有自己的实现,索引类型和算法差别很大。Mongodb4.2新增的通配符索引,也比较特殊,所白了就是某个字段不确定,某些字段确定,但是可能需要针对不确定的字段做快速搜索匹配,这个和全文索引差别还比较大,应该是为Document级别的数据提供了更多的索引灵活度。
通配符索引是灵活文档模型提出的问题的答案; 我索引建立在什么字段上,要查询什么字段,一切可能都不确定? 虽然有时候很容易分辨哪些字段创建索引,但有些情况下还是比较难以判断。 例如,我们电商网站可能在子文档中有一组可变字段来表示商品的特征,并且当销售从衣服到汽车、手机、化妆品等的所有商品时,这些字段有很多不同的特征,但是用户希望快速搜索到这些商品。 使用MongoDB4.2的通配符索引,可以为该子文档中的所有特征字段创建索引,并创建一个涵盖所有这些字段及其值的索引。
大家想了解详细信息,可以阅读官方文档“MongoDB 4.2-1:通配符索引”中阅读有关此新特性的更多信息,https://www.mongodb.com/blog/post/coming-in-mongodb-42--1-wildcard-indexes。
如果有基于MongoDB的社交APP或者电商App,比如某些商品的标签、或者某些个人的标签,后期有搜索某个标签的人群,比如搜索喜欢动漫、健身、跑步、音乐标签的人群,这个索引就比较合适。轻量级APP平台可以基于MongoDB快速实现。而又不需要ES这种全文搜索的海量数据规模。一定程度上降低了数据搜索的体量。
5、物化视图:
这个功能特性的目的,就是缓存计算结果,以便于后期高并发反复使用此前的计算结果。达到改善数据库性能的目的。
MongoDB4.2支持创建数据集视图,向客户端应用程序呈现大数据分析的结果,预计算(提前计算)或仅过滤数据集部分结果。所需要的只是将$out运算符放在MongoDB聚合管道的末尾以创建新集合来缓存分析的数据结果。当我们想要更新结果时,可以重新运行命令并再次写出所有记录。
在MongoDB 4.2中更加简单,方便,不需要每次重新运行全部命令:我们可以使用新的$merge运算符来更新视图集合。可以控制新文档的更新方式,并可以在新视图上使用索引以加快访问速度。再提一个优点,物化视图可以分片存储,并且可以完全控制视图的更新时间。
6、MongoDB 4.2下载
可以下载最新的4.2版本,安装试用https://www.mongodb.com/download-center/community。
image
参考资料:

https://www.mongodb.com/new
作者简介:
徐雷,
1)MongoDB中文社区联席主席;
2)《MongoDB实战》第2版译者;
3)阿里云大学讲师;阿里云栖社区讲师;
4)目前就职于阿里巴巴,架构师。

阿里巴巴Java群超过4800人
进群方式:钉钉扫码入群
image
阿里巴巴MongoDB群
image

目录
相关文章
|
9月前
|
JSON NoSQL MongoDB
实时计算 Flink版产品使用合集之要将收集到的 MongoDB 数据映射成 JSON 对象而非按字段分割,该怎么操作
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
6月前
|
SQL 分布式计算 MaxCompute
一种基于ODPS SQL的全局字典索引分布式计算思路
本文提供一种能充分利用分布式计算资源来计算全局字典索引的方法,以解决在大数据量下使用上诉方式导致所有数据被分发到单个reducer进行单机排序带来的性能瓶颈。
|
6月前
|
存储 缓存 负载均衡
【PolarDB-X 技术揭秘】Lizard B+tree:揭秘分布式数据库索引优化的终极奥秘!
【8月更文挑战第25天】PolarDB-X是阿里云的一款分布式数据库产品,其核心组件Lizard B+tree针对分布式环境优化,解决了传统B+tree面临的数据分片与跨节点查询等问题。Lizard B+tree通过一致性哈希实现数据分片,确保分布式一致性;智能分区实现了负载均衡;高效的搜索算法与缓存机制降低了查询延迟;副本机制确保了系统的高可用性。此外,PolarDB-X通过自适应分支因子、缓存优化、异步写入、数据压缩和智能分片等策略进一步提升了Lizard B+tree的性能,使其能够在分布式环境下提供高性能的索引服务。这些优化不仅提高了查询速度,还确保了系统的稳定性和可靠性。
139 5
|
6月前
|
C# UED 定位技术
WPF控件大全:初学者必读,掌握控件使用技巧,让你的应用程序更上一层楼!
【8月更文挑战第31天】在WPF应用程序开发中,控件是实现用户界面交互的关键元素。WPF提供了丰富的控件库,包括基础控件(如`Button`、`TextBox`)、布局控件(如`StackPanel`、`Grid`)、数据绑定控件(如`ListBox`、`DataGrid`)等。本文将介绍这些控件的基本分类及使用技巧,并通过示例代码展示如何在项目中应用。合理选择控件并利用布局控件和数据绑定功能,可以提升用户体验和程序性能。
191 0
|
6月前
|
存储 缓存 自然语言处理
Lettuce的特性和内部实现问题之分布式环境中消息发送时的问题如何解决
Lettuce的特性和内部实现问题之分布式环境中消息发送时的问题如何解决
|
9月前
|
NoSQL 分布式数据库 MongoDB
【MongoDB 专栏】MongoDB 的分布式事务解决方案
【5月更文挑战第11天】本文探讨了MongoDB的分布式事务处理,涉及两阶段提交(2PC)、TCC补偿事务、分布式锁和幂等处理。2PC通过协调者与参与者确保数据一致性,而TCC提供更高性能和容错性。分布式锁解决并发冲突,幂等处理保证事务正确性。根据业务需求选择合适方案,并关注性能、可靠性和容错。
427 2
【MongoDB 专栏】MongoDB 的分布式事务解决方案
|
9月前
|
NoSQL MongoDB 数据库
MongoDB的索引与索引字段的顺序
MongoDB的索引与索引字段的顺序
161 2
|
9月前
|
存储 JSON DataWorks
DataWorks产品使用合集之DataWorks将 MongoDB 中的数组类型写入到 DataWorks 的单个字段时,表示为字符串格式而非 JSON 格式如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
90 3
|
9月前
|
调度
考虑充电负荷空间可调度特性的分布式电源与电动汽车充电站联合配置方法(matlab代码)
考虑充电负荷空间可调度特性的分布式电源与电动汽车充电站联合配置方法(matlab代码)
|
9月前
|
NoSQL 安全 MongoDB
MongoDB安全机制:认证、授权与加密
【4月更文挑战第30天】MongoDB提供全面的安全机制,包括认证(用户名/密码、LDAP、Kerberos、x.509证书)、授权(基于角色的访问控制,RBAC)和加密(TLS/SSL、透明数据加密TDE、字段级加密FLE),确保数据保密性、完整性和可用性。通过合理配置这些机制,企业可保障数据安全,应对不断变化的安全威胁。

相关产品

  • 云数据库 MongoDB 版