MongoDB 更改流中的resumeAfter 和startAtOperationTime 之间的区别

2024-01-12

在版本 4 中,MongoDB 更改流可以使用两个不同的参数来指定恢复更改流的位置:resumeAfter(一些内部令牌)和startAtOperationTime,时间戳类型。

是否可以完全替代resumeAfter with startAtOperationTime通过使用安全恢复变更流clusterTime在每个变更事件中发现?

我特别关心并且在文档中找不到确切信息的是是否startAtOperationTime对于可以恢复的内容和持续时间,也适用相同的规则和保证。此处使用的操作时间是否正确保存,是否始终可以用作通常用于的文档令牌的替代品resumeAfter?


这里使用的操作时间是否正确保存,并且它始终可以用作通常用于resumeAfter的文档令牌的替代品吗?

使用两者中的哪一个取决于您的用例。

两个选项,恢复后 https://docs.mongodb.com/manual/changeStreams/#resumeafter-for-change-streams and startAtOperationTime,非常相似,但有细微的差别:

  • startAtOperationTime需要一个时间戳。尽管resumeAfter采取entire _id of a 改变流 https://docs.mongodb.com/manual/changeStreams/事件文档。
  • startAtOperationTime可以在一段时间后恢复通知使事件无效 https://docs.mongodb.com/manual/reference/change-events/#change-event-invalidate通过创建新的变更流。尽管resumeAfter无效事件关闭流后无法恢复更改流。
  • startAtOperationTime恢复发生的更改在或之后指定的时间戳。尽管resumeAfter立即恢复更改after提供的令牌。

无论您选择哪一个,令牌或时间戳都应该在副本集 Oplog https://docs.mongodb.com/manual/core/replica-set-oplog/窗口时间。更改流依赖于 MongoDB 全局逻辑时钟(集群时间),该时钟与分布式数据库同步oplog,因此这两个选项都使用相同的底层技术。

值得注意的是,如果您想开始观看集合并处理集合中的现有条目,您可以指定startAtOperationTime带有构造的时间戳。这样做会更难resumeAfter,因为它需要一个源自_id一个事件的。

另外,MongoDB v4.2 中新增了一个新选项startAfter这需要一个_id来自事件,并在恢复令牌中指定的操作之后恢复更改流。此外,它允许通知在无效事件后恢复,就像startAtOperationTime.

您还可能会发现恢复令牌之间的兼容性表 https://docs.mongodb.com/manual/reference/method/db.collection.watch/#resumability对 MongoDB 版本有用

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MongoDB 更改流中的resumeAfter 和startAtOperationTime 之间的区别 的相关文章

随机推荐

  • 创建控制器时,调用目标引发了异常

    我是 ASP NET MVC 5 的初学者 正在构建一个小型应用程序 当我添加控制器时 弹出一条消息 运行所选代码生成器时出错 调用目标已引发异常 在添加控制器之前 我在 Web Config 文件中添加了一个连接字符串 请告诉我如何解决这
  • 如何使用SQL组过滤具有最大日期值的行

    我有下表 CREATE TABLE Test Id int value varchar 20 adate varchar 20 INSERT INTO Test Id value adate VALUES 1 100 2014 01 01
  • 从程序文件访问时文件访问被拒绝

    我有一个用 VS 2010 和 C 开发的小型 Winform 应用程序 并创建了设置 我已将应用程序配置文件放入应用程序文件夹路径中以保存用户凭据 安装后应用程序无法访问配置文件 因为我给定了程序安装默认路径 如下所示 ProgramFi
  • 将数组作为 x-www-form-urlencoded 的一部分发送

    I want to send array using postman the request looks like this Im using postman to execute requests I found on the inter
  • 如何通知另一个线程

    我想知道如何通知另一个线程的最佳方式 例如 我有一个后台线程 public void StartBackgroundThread new Thread new Runnable Override public void run Do som
  • 自定义 jQuery 下拉菜单

    我正在使用 jQuery 创建一个自定义的简单下拉菜单 该下拉菜单根据过度状态隐藏 显示元素 我现在遇到的问题是 当您查看它隐藏的显示元素时 您无法将鼠标移动到创建的下拉列表中 关于如何解决这个问题还有什么想法 有没有更简单的方法来做我所拥
  • 使用 Qt 设计应用程序

    我必须实现图形用户界面设计 选择的框架是Qt 经过一些实施工作后 出现了一些困难和问题 主要的一点是有一些花哨的设计元素 比如渐变 3D效果 阴影等等 目前使用的方法 我真的不太喜欢 是使用图形设计中的位图作为各种小部件的背景 根据元素的放
  • CVPixelBuffer 到 CIImage 总是返回 nil

    我试图将从 AVPlayerItemVideoOutput 中提取的 PixelBuffer 转换为 CIImage 但总是为零 The Code if videoOutput hasNewPixelBufferForItemTime pl
  • iPhone模拟器资源未更新

    我的 iPhone 模拟器拒绝更新我编辑的资源 进行 清理 并构建后 安装了新资源 在第二次运行时 它重新安装了旧的 我不知道它们是从哪里来的 有什么建议么 Go into Library Application Support iPhon
  • 比较 2 个文件并保留两个文件不共同的条目

    我有一个 CSV 文件和一个数据库表作为输入 我需要保留数据库表中的所有记录 但排除 CSV 文件中的记录 最终所有内容都会写入 CSV 文件 我所有的尝试都导致了数百个重复 所以我在这里面临很大的挑战 这是一个快速而肮脏的技巧 但它应该适
  • Concrete5:我可以在常规页面上使用 $_GET 变量作为查询字符串吗?

    GET 变量如何与 Concrete5 一起使用 我可以在常规页面上使用它吗 我知道我可以通过 url 段对单页执行此操作 我只是想知道常规页面是否可以 例子是 http www domain name com about us name
  • 弯曲方向列的高度相等,无需设置高度

    我想要一个没有明确设置高度的弹性容器 并且它的所有子容器都具有相同的高度 我不太清楚如何实现这一点 如果弹性容器设置了高度 我可以让它工作 但我希望它的高度根据子项是动态的 同样 它们应该都是相等的 并根据最大的孩子计算 我不想依赖js来使
  • Matplotlib 获取子图(轴)大小?

    只是徘徊 如何获得 Matplotlib 中子图 轴 的大小 如果我执行 Ctrl F 大小 https matplotlib org 3 1 1 api axes api html https matplotlib org 3 1 1 a
  • SQL Server 返回不等于 <> 值且为 NULL 的行

    我有一个表 其中有一列值可以是 rowTypeID 1 2 3 or null 我想编写一个查询 返回其中不包含值 3 的任何行 在此示例中 我想要所有 NULL 行以及所有 1 2 行 我只是不想要值为 3 的行 当前为数据库设置了 Se
  • 将 Gridsearch 中的最佳参数保存在 pandas 数据框中

    我需要将所有参数组合和相应的精度保存在一种 pandas 数据框中 我希望我已经说清楚了 如果我做错了什么 请指出 示例代码是 from sklearn grid search import GridSearchCV import skle
  • 如何检测 ES 模块是否是主模块?

    如何检测 ECMAScript 模块是否为主模块 这对于 CommonJS 模块来说很容易 参见检测是通过 require 调用还是直接通过命令行调用 https stackoverflow com questions 6398196 de
  • Pydantic - 动态创建具有多个基类的模型?

    来自pydantic 文档 https pydantic docs helpmanual io usage models 我的理解是 import pydantic class User pydantic BaseModel id int
  • 如何使用 Entity Framework 和 EntityState.Modified 更新对象的并非每个字段

    我需要更新给定实体对象的除 property1 和 property2 之外的所有字段 有这个代码 HttpPost public ActionResult Add object obj if ModelState IsValid cont
  • NSMutableUrlRequest 吃加号

    我创建 NSMutableUrlRequest 用于将数据发送到服务器 向其中添加所有必需的字段 然后添加用于发送的字符串 如下所示 theRequest setHTTPBody postString dataUsingEncoding N
  • MongoDB 更改流中的resumeAfter 和startAtOperationTime 之间的区别

    在版本 4 中 MongoDB 更改流可以使用两个不同的参数来指定恢复更改流的位置 resumeAfter 一些内部令牌 和startAtOperationTime 时间戳类型 是否可以完全替代resumeAfter with startA