1-1 Mongodb4.0新特性
最后更新于:2022-04-02 07:39:11
### MongoDB4.2正式版本,2019年8月正式发布
从MongoDB 4.2开始,分布式事务是指分片群集和副本集上的多文档事务。从MongoDB 4.2开始,多文档事务(无论是在分片群集或副本集上)也称为分布式事务。
**在版本4.0中**,MongoDB支持副本集上的多文档事务。
**在4.2版中**,MongoDB引入了分布式事务,它增加了对分片群集上多文档事务的支持,并合并了对副本集上多文档事务的现有支持。
**要在MongoDB 4.2部署(副本集和分片群集)上使用事务,客户端必须使用针对MongoDB 4.2更新的MongoDB驱动程序**
多文档交易是原子性的(即提供“全有或全无”主张):
提交事务时,将保存在事务中进行的所有数据更改,并在事务外部可见。也就是说,一个事务在回滚其他事务时将不会提交其某些更改。
在提交事务之前,在事务外部看不到在事务中进行的数据更改。
但是,当一个事务写入多个分片时,并非所有外部读取操作都需要等待已提交事务的结果在所有分片上可见。例如,如果提交了一个事务,并且在分片A上可以看到写1,但是在分片B上仍然看不到写2,则外部读处于读关注状态[`"local"`]可以读取写1的结果而看不到写2。
当事务中止时,在事务中进行的所有数据更改都将被丢弃,而不会变得可见。例如,如果事务中的任何操作失败,则事务中止,并且在事务中进行的所有数据更改都将被丢弃而不会变得可见。
事务设计目标:
与关系型数据库的事务一样
多条语句,和传统型数据库相似的语法
任何应用城西都可以使用
支持一个或多个集合及数据库中的多个文档
分片和复制集的事务无任何差别
ACID一致性保证
快照隔离,要么成功,要么全失败
对单一文档操作无性能影响
#### 1. ACID事务
>分布式事务
Global PiT Reads
Mutable Shard Key Values
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/cc/1a/cc1a5585d6c54f69da15ea1fe697daae_1152x649.png)
#### 分布式事物注意事项
使用MongoDB 4.2驱动程序
事务在单一的分片上,比跨多个片速度会更快
事务在60秒之后自动中止(可调),数据库会回滚被终止的事务。
最贱实践:单一事务中,修改的文档不超过
#### 2. 查询及分析
>实体化视图
通配符索引
Atlas数据湖
#### 3. 韧性及扩展性
>可重试读写
stepdown 10倍加快
Zstandard
#### 4. 可在任何地方运行
>Atlas自动扩展
Atlas全文搜索
K8s集成
';