简单概括下MongoDB 4.0 新特性

4.0 版本

(1)跨文档事务支持 (ACID)

首个支持跨文档事务的NoSQL云数据库,将文档模型的速度,灵活性和功能与ACID保证相结合。现在,使用MongoDB解决各种用例变得更加容易。

(4.0 的事务存在最大修改 16MB、事务执行时间不能过长的限制)

(2)40%迁移速度提升

并发的读取和写入,使得新增分片shard迁移性能提升了约 40%, 新增节点能更快的承载业务压力。

(3)读性能大幅扩展

4.0版本借助事务特性,使得备节点不再因为同步日志而阻塞读取请求。

(4)Change Stream 增强

在MongoDB3.6之前,如果我们希望对MongoDB数据库中的数据变动进行监听,通常是通过 “监听并回放oplog”。从MongoDB3.6开始支持的 Change Streams打破了这个僵局。 Change Streams使得数据的变动监听变得简单易用。如果你只需要针对某一个collection进行变动监听,MongoDB3.6就可以满足你的需求。在4.0版本中我们可以针对若干个数据库或者整个实例(复制集或者sharding)进行变动监听。与watch()某一个collection不同,4.0中我们可以watch()某个数据库或者整个实例。

4.2 版本

(1)分布式事务(支持跨分片的事务)

4.2 支持分布式事务,MongoDB 采用二阶段提交的方式,实现在多个 Shard 间发生的修改,要么同时发生,要么都不发生,保证事务的 ACID 特性。

在使用上,4.2 的分布式事务跟 4.0 副本集事务使用方式完全一样,用户无需关心后端数据如何分布。

(2)高可用

在 4.0 提供了 Retryable Write 功能,在新的 4.2 版本,MongoDB 增加了 Retryable Read 功能,对于一些临时的网络问题,用户无需自己实现重试逻辑,MongoDB 会自动重试处理,保证用户业务的连续性。

(3)Index 增强,增加了Wildcard Index 类型

MongoDB 4.2 引入 Wildcard Index,可以针对一系列的字段自动建索引,满足丰富的查询需求。

(4)字段级别加密

MongoDB 除了支持 SSL、TDE 等安全机制,在 4.2 引入「字段级加密」的支持,实现对用户JSON文档的Value 进行自动加密。整个过程在 Driver 层完成,传输、存储到服务端的文档Value都是密文,MongoDB 4.2 Drvier 支持丰富的加密策略,可以针对集合、字段维度开启加密,加密过程对开发者完全透明。

(5)缩短维护时间,提升维护效率

*主节点stepDown速度提升10倍,1秒内选择出新的主节点;

*保持连接:a.主节点读取连接保持开放,直到光标关闭;b.清除失败的读取,应用程序等待驱动重启连接。

补充说明

1.事务的存在意义 与关系型数据库中的事务一样:

A.多条语句,相似的语法;

B.支持多种语言;

C.支持一个或多个集合及数据库中的多个文档;

D.分片和复制集中的事务无任何差别(4.2)。

2.ACID 一致性保证

A.快照隔离,要么全成功,要么全失败;

B.对单一文档操作无性能影响。

3.分布式事务的注意事项

A.使用支持MongoDB 4.2 的程序驱动;

B.事务在单一的分片上,比跨多个片的速度更快;

C.事务在60秒之后自动中止(可调),数据库会回滚被中止的事务;

D.最佳实践:单一事务中,修改的文档数量不超过1000个;

E.运行事务之时,数据块迁移会受到限制。

4.可重试读写

A.将更多的错误处理代码从应用程序移到驱动程序和服务器;

B.读取失败时,驱动程序自动重试

  *网络错误,主节点选举

  *30秒后触发,重试一次,保证读取偏好

C.3.6版本引入的可重试写入,现在变成所有驱动程序的默认功能。

posted @ 2019-02-26 10:38  东山絮柳仔  阅读(4996)  评论(0编辑  收藏  举报