azure - 使用java驱动程序批量插入documentdb

标签 azure azure-cosmosdb azure-java-sdk

我在 cosmosdb 中使用 java-sdk 进行 CRUD 操作,我能够对员工 DTO 进行基本插入,一切看起来都不错。但现在我想做批量插入,但无法找到合适的 api。

我遇到了cosmosdb documentation他们建议使用存储过程(服务器端JS),但我更喜欢直接java驱动程序选项,就像其他nosql提供的那样。

有没有我遗漏的东西,哪个更好,存储过程还是java驱动程序选项(如果存在)?下面是我用于插入单个文档的代码片段。

documentClient.createDocument(getCollection().getSelfLink(), document, null, false).getResource();

最佳答案

在客户端,您可以对集合进行单次写入,就像您当前所做的那样。 没有客户端批量插入 API 调用。 现在 Java(和 .NET)SDK 中还内置了事务支持(6 年前最初提出问题时不可用) 。基于SDK批量操作的基本流程:

  • 根据分区键值创建事务(事务仍然在分区内进行)
  • 指定写入操作
  • 执行批处理

所以...就像...

CosmosBatch batchSample = CosmosBatch.createCosmosBatch(new PartitionKey("someKeyValue"));
batchSample.createItemOperation(someItem)
batchSample.createItemOperation(anotherItem)
CosmosBatchResponse response = container.executeCosmosBatch(batchSample);

使用存储过程,您将能够将所需的任何有效负载传递给存储过程,然后您可以以事务方式将多个文档插入到集合(或者分区,如果使用分区集合) )。通过对该存储过程的单个客户端调用。

因此,使用存储过程,您仍然可以执行单个客户端调用,从而有效地完成您专门寻找的任务。您只需适当设置有效负载,以便存储过程代码可以分隔要插入的每个单独文档。

关于azure - 使用java驱动程序批量插入documentdb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44435254/

相关文章:

azure - 在 Azure 存储中使用 CORS 来防止文件被非法访问

Azure DocumentDB 查询在超过 1000 次调用时变慢

azure - 重定向到 Web 应用程序后无法获取身份验证 token

azure - 如何等待在Arm模板中的另一个ResourceGroup中部署资源

mongodb - 迁移 Azure 表存储

azure - 从 Azure 门户删除 Cosmos 集合中的文档

azure - Cosmos DB OFFSET LIMIT(NoSQL 查询)RU 成本

java - 使用 Azure Java SDK 或 REST API 列出存储帐户的所有快照

java - 如何使用Java API获取云服务(托管服务)诊断数据?

Azure:无法加载文件或程序集“Microsoft.ServiceBus”