MongoDB 变更流
- 变更流允许应用程序访问实时数据更改,而不会拖尾oplog的复杂性和风险。应用程序可利用变更流订阅一个集合、一个数据库或者整个部署上的所有的数据更改,并立即对其做出反应。因为变更流使用聚合框架,应用程序也可以过滤特定更改或随意转换通知。
可用性
-
变更流可用于副本集和分片集:
-
存储引擎:
副本集和分片集必须使用WiredTiger存储引擎。变更流也可用于使用MongoDB的静态加密功能(encryption-at-rest)的部署。
-
副本集协议版本:
副本集和分片集必须使用副本集协议版本version 1
-
读关注“majority”支持:
自v4.2,无论是否支持"majority"读关注,变更流都可用;也就是说,可以启用(默认状态)或禁用“majority”读关注,以使用变更流。
在v4.0及之前的版本,只有当“majority”读关注被启用时才可以使用变更流。
-
连接
-
变更流别的连接可以使用带有
+svr
的DNS种子列表或者通过在连接字符串中单独列出服务器。如果驱动程序丢失了和变更流的连接或者连接断开,它将通过集群中具有匹配读首选项的另一个节点尝试重建连接。如果驱动程序找不到有正确的读优选项的节点,它将抛出一个异常。
监控集合、数据库或部署
可以针对集合、数据库或者部署开启变更流光标(change stream cursor),但是不能对system集合或者数据库asmin、local、config数据库及其集合建立变更流连接。