首页 > 解决方案 > Tailable 游标与更改流,用于通知上限集合中的插入操作

问题描述

我很好奇在可用性和性能方面,使用可尾游标与带有过滤器的更改流对上限集合进行插入操作的优缺点。

我有一个包含更新对象的上限集合。此集合唯一可能的操作是插入新更新(作为新记录),我需要将其中继到我的应用程序后端并通过 SSE/WebSockets 实时分发。我将在订阅查询中使用单个参数,它是一个时间戳,它是对象属性的一部分。该集合在该字段上有一个索引。我还将对新添加的记录进行一些基本过滤,因此 Change Streams 的聚合框架会有所帮助。

我读过:MongoDB 中的 changeStream 和可尾游标之间有什么区别,它总结了可尾游标和更改流之间的区别。

此外,关于Capped Collections的 mongodb 文章只说明了 Tailable 游标方法,而关于 Tailable 游标的文章指出它们不使用索引,您应该使用普通游标来获取结果。

简而言之,我需要一个可靠的集合更新流,完全基于在集合中插入新记录。我应该采用哪种方法?

标签: mongodbchangestreamcapped-collections

解决方案


Tailable cursors 和 capped collections 被创建来支持将 oplog 从主节点复制到辅助节点。对于任何其他活动,推荐的方法是ChangeStream。变更流与 MongoDB 身份验证模型集成,可以在集合、数据库、集群和分片集群级别获取变更流。Tailable 游标仅适用于单个集合并且不可恢复。所有官方MongoDB 驱动程序都支持更改流。


推荐阅读