【问题标题】:Azure CosmosDB Data Trigger not taking actual updatesAzure CosmosDB 数据触发器未进行实际更新
【发布时间】:2019-11-07 06:10:44
【问题描述】:

我使用 CosmosDB 触发器模板创建了一个 Azure 函数,按照:this link

一切正常,我可以看到更新从我在 Cosmos DB 中创建的 Collection 流入。

现在的问题是,我只想要那些有实际更新的文档。目前,如果我使用代码更新文档,它将更新它的时间戳和文档正在更新。虽然没有实际的数据更新。

我的问题:

  1. 我怎样才能只获取实际更新的文档(仅那些修改了 json 字段的文档)?
  2. 如何跟踪已删除的文档?他们也不在这里流动吗??

【问题讨论】:

  • 这是什么意思:“如果我使用代码更新文档”?
  • 使用 azure java sdk 将数据放入 cosmos 集合中
  • 所以你的意思是你只想获取更新而不是新创建的文档?!
  • 我也想要新创建的文档、更新和删除。最终努力实现 CDC。
  • 请编辑您的问题并描述documents which are having actual updates 的含义。如果您包含相同的示例,将会有所帮助。

标签: azure triggers azure-functions azure-cosmosdb azure-cosmosdb-sqlapi


【解决方案1】:

1) 由于对文档的任何推送都会更新 - 内部管理的 - _ts 属性,这仍然是对整个文档的更改。如果你改变了文件的用户数据在这里没有关系。更改提要不知道这种区别。因此,您也将始终在更改提要中看到这些更新。

2) 删除不会添加到更改提要中,但有一种可能的解决方法:

当前更改提要不记录删除。 [...]您可以在要删除的项目上添加一个软标记,例如,您可以在项目中添加一个名为“已删除”的属性并将其设置为“true”并在该项目上设置一个 TTL,所以可以自动删除。

https://docs.microsoft.com/en-us/azure/cosmos-db/change-feed#change-feed-and-different-operations

【讨论】:

  • 我已经实现了这个软标记,并在为 Azure 搜索中的相同数据建立索引时获取更新。效果很好。现在唯一的挑战是 Cosmos 每天都有数百万份文档。我只想在 Azure 搜索中索引更新的索引。如果我每天使用完全相同的 json 更新文档(因为它每天都从上游流出),那么我还需要重新索引 Azure 搜索中的所有文档。这就是我尝试查看 Azure Functions 的原因。如果他们能帮助解决这个问题。
  • CosmosDB 的 Azure 函数触发器基于 CosmosDB 更改源。所以它受到同样的限制。
  • 好的,那么我需要在插入/更新读取同一个文档之前在代码本身中处理这个问题。
猜你喜欢
  • 1970-01-01
  • 2019-11-01
  • 2018-09-30
  • 1970-01-01
  • 2019-10-18
  • 1970-01-01
  • 1970-01-01
  • 2020-07-07
  • 1970-01-01
相关资源
最近更新 更多