下次更新时间为:2020 年 1 月 1 日
课件和 Demo 地址
https://github.com/geektime-geekbang/geektime-mongodb-course
作者回复: 你要问我,肯定是了。从CRUD操作来说,JSON 数据库更加方便。支持事务以后,现在MongoDB剩下的就是 做BI分析了这一块可能还不算太强。
作者回复: 这个单文档事务叫法背后的逻辑:
关系型里面,用户表和用户电话是分开在两张表。当你需要新增一个新用户,你需要:
insert into USER
insert into PHONE
这两个DML需要放在事务范围内,保证两条数据(其实是一条,用户数据)要么一起成功写入,要么回滚。
在MongoDB里面,类似的操作变成了一个单文档操作:
db.user.insert({ name: "TJ",phone: ["1234"]})
这个操作里面其实相当于做了两个事情:1) 添加用户 2) 添加电话号码。这两个事情是有原子事务性的-要么一起成功,要么一起失败。
这个是mongo单文档事务的由来。
作者回复: 事务性有ACID四个属性,你上面讲的是ACID里面的I, Isolation。Isolation隔离性关注的就是跟读相关的事情。
你说的增删改事务,多半是和A相关,Atomicity,原子性。一起提交,或者全部回滚。
作者回复: 这个反馈可以去jira.mongodb.org 去提一个Issue,属于产品建议。