Azure cosmosdb 文档数据库触发器是否并行执行?

Azure cosmosdb 文档数据库触发器是否并行执行?,azure-cosmosdb,Azure Cosmosdb,我们正在尝试使用文档DB触发器生成自动编号。为此,我们在集合中有一个特殊的文档来存储自动编号,然后通过调用此触发器来创建集合中的所有其他文档。触发器的行为方式如下- 1从自动编号文档中读取上次使用的编号。 2将数字增加1,然后将增加的值保存回自动编号文档 3创建一个新文档,其中autoId字段设置为递增值,新文档的其余字段传递到正文中 await documentClient.CreateDocumentAsync("collectionURI", newDocument, new Reques

我们正在尝试使用文档DB触发器生成自动编号。为此,我们在集合中有一个特殊的文档来存储自动编号,然后通过调用此触发器来创建集合中的所有其他文档。触发器的行为方式如下-

1从自动编号文档中读取上次使用的编号。 2将数字增加1,然后将增加的值保存回自动编号文档 3创建一个新文档,其中autoId字段设置为递增值,新文档的其余字段传递到正文中

await documentClient.CreateDocumentAsync("collectionURI", newDocument, new RequestOptions() { PreTriggerInclude = new List<string> {"autoNumbersTrigger"} });

我们在机器上本地运行document DB client时测试了这一点,即使使用100K并行插入,我们的触发器也从未遇到并发问题。因此,问题是,这种行为有保证吗?可以安全地说,所描述的触发行为永远不会遇到并发问题吗?

您应该捕获intDocumentClientException.StatusCode==449 retry with,它可以在对同一文档的并发更新期间返回。正如您所注意到的,即使在高写入速率下,这种情况也很少见。

您为集合设置了什么一致性级别?强一致性Yok,捕获该异常后我是否可以重新查询该操作?您能否详细说明捕获此异常后重试触发器操作的最佳做法?是的,您可以重新提交。由于触发器是事务性的,一旦发生错误,它们会自动回滚,并且可以安全地重试任意次数。