couchbase 事件服务是否无限期地存储事件?

问题描述 投票:0回答:1

我通过以下链接来了解 couchbase 服务器中的事件服务: https://docs.couchbase.com/server/current/eventing/eventing-example-data-enrichment.html

我有几个疑问:

  1. 在案例 #2 中,文章要求我们取消部署为案例 #1 创建的函数。为什么?是因为该函数也会被触发,并尝试更新插入相同的文档吗?
  2. 在这两种情况下,文章都对数据库进行了一些更改,然后创建/部署了函数。这是否意味着 couchbase 将所有突变历史记录存储在某处,并且当我创建一些符合条件的函数时,它会自动应用于所有现有突变?我在文档中读到,couchbase 不会无限期地存储这些突变,但没有得到太多细节 - 比如多长时间等..
  3. 如果我有这样的场景,我想对某个集合中发生的所有现有突变运行某个函数,我可以依靠 couchbase 来存储所有这些突变吗?或者我应该寻找其他解决方案?
couchbase spring-data-couchbase
1个回答
0
投票

在案例 #2 中,文章要求我们取消部署为案例 #1 创建的函数。为什么?是因为该函数也会被触发,并尝试更新插入相同的文档吗?

是的,你将有无限递归(每个函数接收来自另一个函数的更新/突变,依此类推)。

在这两种情况下,文章都对数据库进行了一些更改,然后创建/部署了函数。这是否意味着 couchbase 将所有突变历史记录存储在某处,并且当我创建一些符合条件的函数时,它会自动应用于所有现有突变?我在文档中读到,couchbase 不会无限期地存储这些突变,但没有得到太多细节 - 比如多长时间等..

Couchbase 通常存储已删除重复数据的值,即最新的值。因此,如果您运行 Eveninting 并每分钟添加一次相同的文档密钥,Eventing 将响应每个更改。但是,如果您取消部署事件并重新部署它(从所有内容),它将从该密钥的最新重复数据删除更改开始,然后查看更新。请参阅https://docs.couchbase.com/server/current/eventing/eventing-faq.html#change-capture

现在有一个非常新的功能出现,称为“更改流”,可以关闭重复数据删除,但您将有一个截止时间或截止大小(以字节为单位)来保留完整的历史记录。

如果我有这样的场景,我想对某个集合中发生的所有现有突变运行某个函数,我可以依靠 couchbase 来存储所有这些突变吗?或者我应该寻找其他解决方案?

更改流将为您提供时间和/或大小的“窗口”。这样做的另一个原因可能是向键添加时间戳并将内容写入另一个集合。

© www.soinside.com 2019 - 2024. All rights reserved.