当前播放: 19 | 事务开发:写操作事务
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
课程目录
第一章:MongoDB再入门 (12讲)
01 | 课程介绍
免费
02 | 内容综述
免费
03 | 认识文档数据库MongoDB
免费
04 | MongoDB特色及优势
免费
05 | 实验:安装MongoDB
免费
06 | MongoDB基本操作
07 | 实验:Hello World程序开发
08 | 聚合查询
09 | 实验:聚合查询
10 | 复制集机制及原理
11 | 实验:搭建MongoDB复制集
12 | MongoDB全家桶
第二章:从熟练到精通的开发之路 (12讲)
13 | 模型设计基础
14 | JSON文档模型设计特点
15 | 文档模型设计之一:基础设计
16 | 文档模型设计之二:工况细化
17 | 文档模型设计之三:模式套用
18 | 设计模式集锦
19 | 事务开发:写操作事务
20 | 事务开发:读操作事务之一
21 | 事务开发:读操作事务之二
22 | 事务开发:多文档事务
23 | Change Stream
24 | MongoDB开发最佳实践
19 | 事务开发:写操作事务

19 | 事务开发:写操作事务

唐建法(TJ)
Tapdata CTO、MongoDB中文社区主席、前MongoDB大中华区首席架构师
47讲 约500分钟3517
单独订阅¥129
2人成团¥99
2
本节摘要

下次更新时间为:2020 年 1 月 1 日
课件和 Demo 地址
https://github.com/geektime-geekbang/geektime-mongodb-course

展开
登录 后留言

精选留言(13)

  • 长期规划
    老师,j参数一般要设置为true吗

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

    2019-12-18
    2
    1
  • Allen
    老师,我发现配置好了后,需要调用一下rs.reconfig()命令才能生效,这个和mongodb的版本有关系吗?
    2019-12-30
  • 撑伞也是雨中人。
    老师 mongo是否可以在服务器端配置 majority write concern ,跟 j : true ? 如果在sql层面每条语句加 w:majority , j : true 有点麻烦,开发也不一定按照规范来操作。 如果可以在服务器直接配置,该如何配置
    2019-12-28
  • Casper
    老师您好,我在演练的时候发现(使用mongodb的cli工具),当集群为3个的时候,将writeConcern的w设置为4时, 数据任然可以插入成功,但是cli有错误信息返回。这个和预想的情况不同。如果我想让这种情况也无法插入数据应该如何设置呢?
    2019-12-26
  • Julien
    老师您好,我们在使用 1 primary + 2 secondaries, writeConcern:majority, j:1 的情况下,写性能是standalone mongod的好几倍,请问这个现象是正常的吗?理论上来说,客户端代码一样的情况下,即使数据需要拷贝到secondary,也不过是standalone的两倍时间。希望老师指教一下~
    2019-12-26
  • 一步
    Mongo 落盘的时候,有用到文件系统的 Page Cache 机制吗?
    当有一条数据更新的时候是先写到内存,然后是Page Cache 最后是 硬盘吗?

    j 这个参数是代表写到 Page Cache 还是硬盘呢?
    2019-12-25
  • dream
    老师,请问一下:日志、journal、oplog 这三个有什么联系与区别呢?感觉这三者的概念很混淆。

    作者回复: 日志: 这个是一个比较通用的概念,可以包括你说的所有(journal,oplog,以及server日志)。

    具体一点来说, journal日志是数据库的crash recovery手段。通常的做法是把数据库内的数据块修改,提前用文件顺序写方式刷到盘上,然后再去真正的提交数据的修改。这样的目的是在服务器宕机的时候,内存中被丢失的数据可以在恢复过程中从journal 日志文件中读回来。

    Oplog也是记录的数据库的操作日志,但是记的是逻辑操作命令。主要的目的是用于节点之间复制数据,而不是上面journal主要是用来recover crash。

    还有一种就是mongod.log,这个就是一个文本文件,记录数据库系统的正常运行和错误信息等等。

    2019-12-23
    1
  • dream
    老师,请问一下 j:true 是保证主节点的日志写入成功,还是保证writeConcern配置的参数对应的节点的日志写入成功才返回呢?

    作者回复: 后者。对应于 w:N 里面N个节点的日志落盘。

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

    作者回复: 有点绕。但是“刚刚写的那条数据是在它监听之前写入新的主节点的日志的,那么这个从节点不就丢失了这条写的数据了” 我只能说,这个从节点不会丢失。

    最后一个从节点通过比较自己的oplog和新主的oplog来确定是否要同步新数据。两者的oplog肯定会差一条(新的数据),就会从新主那里复制。


    2019-12-21
  • dream
    请问mongodb不管主节点,还是从节点,只要需要写入的数据写入到了内存中,就会响应给客户端写入成功吗?

    mongodb 主节点接收到写操作后,主节点的写入过程是什么样的呢?先写入内存,在写入rollback文件,在写入日志(此时从节点监听到主节点日志发生变化,同步变化到从节点进行相同的流程),在写入磁盘。是这样的吗?
    2019-12-21
  • 长期规划
    老师,w=majority时,写入成功会数据一定不会丢吧?比如副本集有5个节点,某一次更新录录记为r,更新成功。主和另一从节点宕机,剩下A,B,C三个节点,且满足
    1. A与B,C能通信,但B和C之间无法通信
    2. A比B和C有更高优先级
    3. A的opIog比B和C旧,少一个修改记录r
    这种情况下,A是不是有可能成为主节点呢?如果是,B和C同步A的数据后,会回滚那个记录r吧?数据不就丢了吗

    作者回复: 你这个是Triple Failure - 三重错误。 如果按照这种假设,极端点的话就像是3个硬盘同时坏掉,你全部写入都没用。数据还是丢了。

    然后,你的描述确实有可能发生。

    2019-12-20
    1
  • Geek_b0e6d2
    writeConcern增加了写操作延时,应该一定会增加集群压力吧?毕竟延时期间,占用着资源,处理能力会下降,吞吐量也会下降,延迟太大最终成功率也会掉
    2019-12-19
  • walker
    请问怎样限制 MongoDB 使用的总内存大小?
    将 mongod.cfg 中 storage.wiredTiger.engineConfig.cacheSizeGB 设置为 32 之后,在任务管理器中发现,MongoDB Server 占用的内存还是达到了 45 GB,相关配置如下:
    ```
    storage:
      dbPath: E:\MongoDB\Server\4.2\data
      journal:
        enabled: true
      engine: wiredTiger
      wiredTiger:
        engineConfig:
             cacheSizeGB: 32
    ```
    系统版本: Windows Server 2012 R2
    MondoDB 版本: 4.2.1

    作者回复: 32GB只是控制数据的缓存空间大小。MongoDB服务器本身还需要内存来进行工作,如管理TCP连接,聚合、排序运算等。

    2019-12-18
    1
收起评论
看过的人还看
Elasticsearch核心技术与实战

阮一鸣  eBay Pronto平台技术负责人

100讲 | 16933 人已学习

拼团 ¥99 原价 ¥129
设计模式之美

王争  前Google工程师,《数据结构与算法之美》专栏作者

100讲 | 18411 人已学习

拼团 ¥149 原价 ¥199
后端技术面试38讲

李智慧  同程艺龙交通首席架构师,前Intel&阿里架构师,《大型网站技术架构》作者

38讲 | 3779 人已学习

拼团 ¥79 原价 ¥99
MySQL实战45讲

林晓斌  网名丁奇,前阿里资深技术专家

48讲 | 44112 人已学习

拼团 ¥79 原价 ¥99