当前位置: 首页 > 知识库问答 >
问题:

如何在azure-cosmosdb(Document DB)中保持文档创建幂等性?

韩博厚
2023-03-14

我想实现使用azure cosmos DB创建文档的幂等性。请让我知道cosmos-db(文档db)是否开箱即用地支持此功能。

为此我使用了SQL api。

共有1个答案

邰德业
2023-03-14

是的,这是可能的,通过使用更新插入功能。

一种可能性是创建这样的文档:

var client = new CosmosClient(endpointUrl, primaryKey, clientOptions);
var container = client.GetContainer(databaseName, containerName);

var transactionalBatch = container.CreateTransactionalBatch(new PartitionKey(document.pk));
transactionalBatch.UpsertItem(document);

await transactionalBatch.ExecuteAsync();

通过使用更新插入项而不是创建项功能,您可以多次执行同一批处理,而不会引起更改,除非您更改文档。

这个例子是针对Cosmos Db V3的,更多的例子可以在这里找到:https://github.com/Azure/azure-cosmos-dotnet-v3

 类似资料:
  • 尝试使用REST API创建文档时,出现以下错误: 在各种SDK中,有一个可选参数要包含,,如果设置为则如果未提供ID,将拒绝带有此错误的请求。我提出了一个非常简单的REST请求,所以我自己没有添加这个参数(我甚至不知道我会添加什么头——大概是头——因为RESTAPI的文档没有涵盖它)。 唯一需要注意的是,集合有一个定义的分区键。我找不到任何文档说如果定义了分区键就需要一个ID,但是情况似乎就是这

  • 我们正在使用cosmosdb记录我们的应用程序日志。我们的日志有两层,一层有一般的信息,另一层有一般日志的更详细的信息。我们还在其他两个集合中记录了这些的副本以供备份。所以我们总共有四个系列。在我们的代码中,我们使用异步CreateDocumentAsync来创建这些日志。我们将任务存储在列表中,并使用Task.waitall来完成所有任务。在开发环境中,我们没有看到任何错误,但在生产中,当创建新

  • 我有一个用例,其中,我正在通过运行在EMR上的flink作业(使用flink-kinesis连接器)从kinesis流中消费事件。作业接收事件,处理它并将其接收到某个数据存储。通过处理,这里我的意思是应用一些转换(数据充实)并做聚合。我在这里有几个问题: > 如何在消耗Kinesis事件的同时保持幂等性?我想只做一次处理,因为在聚合值时,重复项可能会给出错误的结果。我能想到的一种方法是在事件中维护

  • 我想创建一个Azure函数,它接受传递给它的JSON主体,并将该文档插入到Azure COSMOSDB实例中。 并按如下方式实现该函数: 在门户中,我放入了一个简单的示例文档:

  • 我正在将一个应用程序从Azure SQL DB迁移到CosmosDB,但在Cosmos DB中存储文档时遇到了问题。 我的应用程序是使用Microsoft.Azure用C#编写的。DocumentDB库。当我使用库Microsoft.Azure中的CreateDocumentSync(Uri,对象)方法时。DocumentDB插入一条记录,该记录通过时没有任何错误。当我使用Azure Cosmos

  • 我知道如何使用Azure云函数在我的CosmosDB实例中创建、读取和更新文档,但仍然不知道如何实现删除。我用作参考的主要文档是https://docs.microsoft.com/en-us/azure/azure-functions/functions-create-cosmos-db-triggered-function. 我尝试使用没有id的输入和输出绑定(从而获取整个集合),然后过滤要从