MongoDB 高手课
唐建法(TJ)
Tapdata CTO、MongoDB 中文社区主席、前 MongoDB 大中华区首席架构师
19351 人已学习
新⼈⾸单¥59
课程目录
已完结/共 53 讲
MongoDB 高手课
登录|注册
留言
35
收藏
沉浸
阅读
分享
手机端
回顶部
当前播放: 19 | 事务开发:写操作事务
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.75x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
01 | 课程介绍
02 | 内容综述
03 | 认识文档数据库MongoDB
04 | MongoDB特色及优势
05 | 实验:安装MongoDB
06 | MongoDB基本操作
07 | 实验:Hello World程序开发
08 | 聚合查询
09 | 实验:聚合查询
10 | 复制集机制及原理
11 | 实验:搭建MongoDB复制集
12 | MongoDB全家桶
13 | 模型设计基础
14 | JSON文档模型设计特点
15 | 文档模型设计之一:基础设计
16 | 文档模型设计之二:工况细化
17 | 文档模型设计之三:模式套用
18 | 设计模式集锦
19 | 事务开发:写操作事务
20 | 事务开发:读操作事务之一
21 | 事务开发:读操作事务之二
22 | 事务开发:多文档事务
23 | Change Stream
24 | MongoDB开发最佳实践
25 | 分片集群机制及原理
26 | 分片集群设计
27 | 实验:分片集群搭建及扩容
28 | MongoDB监控最佳实践
29 | MongoDB备份与恢复
30 | 备份与恢复操作
31 | MongoDB安全架构
32 | MongoDB安全加固实践
33 | MongoDB索引机制(一)
34 | MongoDB索引机制(二)
35 | MongoDB读写性能机制
36 | 性能诊断工具
37 | 高级集群设计:两地三中心
38 | 实验:搭建两地三中心集群
39 | 高级集群设计:全球多写
40 | MongoDB上线及升级
41 | MongoDB应用场景及选型
42 | MongoDB典型案例(一)
43 | MongoDB典型案例(二)
44 | 关系型数据库迁移
45 | 数据库迁移方式及工具
46 | Oracle迁移实战
47 | MongoDB + Spark实时大数据
48 | MongoDB + Spark连接实战
49 | MongoDB SQL套接件
50 | MongoDB与微服务
51 | MongoDB与数据中台
52 | MongoDB数据中台案例
53 | 结果测试&结束语
登录 后留言

全部留言(35)

  • 最新
  • 精选
dream
老师,请问一下:日志、journal、oplog 这三个有什么联系与区别呢?感觉这三者的概念很混淆。

作者回复: 日志: 这个是一个比较通用的概念,可以包括你说的所有(journal,oplog,以及server日志)。 具体一点来说, journal日志是数据库的crash recovery手段。通常的做法是把数据库内的数据块修改,提前用文件顺序写方式刷到盘上,然后再去真正的提交数据的修改。这样的目的是在服务器宕机的时候,内存中被丢失的数据可以在恢复过程中从journal 日志文件中读回来。 Oplog也是记录的数据库的操作日志,但是记的是逻辑操作命令。主要的目的是用于节点之间复制数据,而不是上面journal主要是用来recover crash。 还有一种就是mongod.log,这个就是一个文本文件,记录数据库系统的正常运行和错误信息等等。

2019-12-23
3
10
撑伞也是雨中人。
老师 mongo是否可以在服务器端配置 majority write concern ,跟 j : true ? 如果在sql层面每条语句加 w:majority , j : true 有点麻烦,开发也不一定按照规范来操作。 如果可以在服务器直接配置,该如何配置

作者回复: 服务器端无法配置。 你可以在Connection String上设置,这个一般是全局统一的设置。 例子: mongodb://db0.example.com,db1.example.com,db2.example.com/?replicaSet=myRepl&w=majority&wtimeoutMS=5000 详细文档: https://docs.mongodb.com/manual/reference/connection-string/

2019-12-28
2
6
Tokamak
老师您好,我在演练的时候发现(使用mongodb的cli工具),当集群为3个的时候,将writeConcern的w设置为4时, 数据任然可以插入成功,但是cli有错误信息返回。这个和预想的情况不同。如果我想让这种情况也无法插入数据应该如何设置呢?

作者回复: 这个问题我已经提交给原厂了,暂时还没有回复。

2019-12-26
6
Mongo 落盘的时候,有用到文件系统的 Page Cache 机制吗? 当有一条数据更新的时候是先写到内存,然后是Page Cache 最后是 硬盘吗? j 这个参数是代表写到 Page Cache 还是硬盘呢?

作者回复: j:1 表示Journal 日志刷盘,所以就是要写文件到硬盘。 正常数据只是写到内存的Cache(不是操作系统的cache,而是WiredTiger自己管理的Cache),然后异步刷盘。

2019-12-25
2
5
dream
老师请问一下,就是一主二从的模式,writeConcern 为 majority,刚好写入一条数据时主节点宕机,此时两个从节点一个有数据,一个没有这条数据,有数据的一个作为主节点。此时,没有数据的一个还是从节点,它的同步是去监听新的主节点的日志变化,但是刚刚写的那条数据是在它监听之前写入新的主节点的日志的,那么这个从节点不就丢失了这条写的数据了吗?mongodb还有其他什么机制保证吗?

作者回复: 有点绕。但是“刚刚写的那条数据是在它监听之前写入新的主节点的日志的,那么这个从节点不就丢失了这条写的数据了” 我只能说,这个从节点不会丢失。 最后一个从节点通过比较自己的oplog和新主的oplog来确定是否要同步新数据。两者的oplog肯定会差一条(新的数据),就会从新主那里复制。

2019-12-21
5
Allen
老师,我发现配置好了后,需要调用一下rs.reconfig()命令才能生效,这个和mongodb的版本有关系吗?

作者回复: 这个是需要用reconfig命令才能生效的。

2019-12-30
4
李英权
老师,mongodb事务的默认隔离级别是什么?听说是相当于read uncommitted,这样似乎存在问题啊

作者回复: 默认是read uncommitted。正常情况都不会有问题,除了发生宕机的时候,这个可能会有问题 - 你读到的一条数据可能会在宕机的时候被回滚掉。这种事情概率很小,发生了可能问题也不算特别严重,很多场景可以接受。如果要求比较高,那么需要用 readConcern: majority 来提高隔离级别。

2020-01-19
2
长期规划
老师,j参数一般要设置为true吗

作者回复: 如果你使用majority write concern的话,不一定非得需要j:true。因为即使在主节点crash场景下,这条数据也已经在另一个节点上有了。

2019-12-18
3
2
田翌辰
请问一下,oplog是在内存中还是在磁盘上呢? 每一次写操作都会事务的记录oplog对吧

作者回复: oplog和就是一个MongoDB的collection ,都是存储在磁盘上的。 对oplog的操作只是顺序追加写入,所以效率相对来说会高不少,相比于普通collection 的随机读写。 每一次增删改都会记录相应的oplog,并且对oplog的操作和数据表的写入是同一个原子事务的。

2020-06-04
1
怎么就确定重新启动的主节点是同步x=1的节点呢.也可能是还没同步x=1节点.

作者回复: 按照mongodb复制集选举规则,有最新数据的会第一优先被选为主节点

2020-01-18
2
1
收起评论