如何在 Cosmos db sql api 中批量删除分布在数百万个逻辑分区上的(例如数百万个)文档?

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

MS Azure 文档没有提及任何内容。正式的批量执行器文档仅讨论插入和更新选项,而不讨论删除。有一个建议的java脚本服务器端程序来创建一个存储过程,这听起来非常好,但是这需要我们输入分区键值。如果我们的文档分布在数百万个逻辑分区中,那就没有意义了。

这是一个非常简单的业务需求。在迁移 sql api cosmos 集合中的大量数据时,如果我们插入一些错误的数据,似乎没有选择删除其他数据然后恢复到之前的状态。我已经探索了几个小时,但找不到解决方案。即使向 MS 支持提出了一个案例,他们也指向了一些 .net 代码,我认为需要查看这些代码,因为这看起来并不简单。如果有人不知道 .net 怎么办?

我们能否轻松批量删除 MS Cosmos SQL API 中分布在多个逻辑分区的文档?感觉很恶心..

希望您能提供一些准确的细节。如何通过一些简单直接的示例代码和步骤来实现这一点。希望MS和Cosmos db专家也分享一下意见。

azure azure-cosmosdb azure-cosmosdb-sqlapi document-database bulk-delete
3个回答
1
投票

即使向 MS 支持提出了一个案例,他们也针对一些 .net 代码 我认为需要看到这一点,因为这看起来并不简单。

显然,除了以下两种情况之外,您已经做出了一些努力来寻找解决方案:

  1. 批量删除存储过程:https://github.com/Azure/azure-cosmosdb-js-server/blob/master/samples/stored-procedures/bulkDelete.js

  2. 批量删除执行器:

    .NET:https://github.com/Azure/azure-cosmosdb-bulkexecutor-dotnet-getting-started/blob/master/BulkDeleteSample/BulkDeleteSample/Program.cs

    Java:https://github.com/Azure/azure-cosmosdb-bulkexecutor-java-getting-started/blob/master/samples/bulkexecutor-sample/src/main/java/com/microsoft/azure/cosmosdb/ bulkexecutor/bulkdelete/BulkDeleter.java

  3. 目前仅支持以上官方解决方案。另一种解决方法是cosmos db的
TTL

。我相信你有自己的逻辑来判断哪部分数据是正确的,哪部分数据是错误的,应该删除。您可以对这些数据设置 TTL,以便在过期数据到达时立即将其杀死。


0
投票
https://github.com/Azure/azure-cosmosdb-bulkexecutor-java-getting-started#bulk-delete-api


0
投票

https://medium.com/@vaibhav.medavarapu/bulk-delete-documents-from-azure-cosmos-db-using-asp-net-core-8bc95dd20411

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