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

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

巫健柏
2023-03-14

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

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

我们不能在MS Cosmos SQL API中轻松地批量删除分布在几个逻辑分区上的文档吗?感觉恶心..

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

共有3个答案

沈国安
2023-03-14

如果您编写一个批处理作业来执行此操作,通过使用一些日期配置在夜间删除文档,我们可以实现这一点。这是一篇关于如何做到这一点的文章。

https://medium . com/@ vaibhav . medavarapu/bulk-delete-documents-from-azure-cosmos-db-using-ASP-net-core-8 BC 95 DD 20411

桂高昂
2023-03-14

有人尝试过这个吗...在java中看起来是一个很好的解决方案https://github.com/Azure/azure-cosmosdb-bulkexecutor-java-getting-started#bulk-delete-api

郝玄天
2023-03-14

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

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

1.Bulk删除存储过程: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-cosmos db-bulk executor-Java-入门/blob/master/samples/bulk executor-sample/src/main/Java/com/Microsoft/Azure/cosmos db/bulk executor/bulk delete/bulk deleter . Java

到目前为止,仅支持上述官方解决方案。另一种解决html" target="_blank">方法是cosmos db的TTL。我相信您有自己的逻辑来判断哪部分数据是正确的,哪部分数据是错误的,应该删除。您可以对这些数据设置TTL,以便在过期数据到达时立即杀死它们。

 类似资料:
  • 问题内容: 我最近发现并修复了我正在处理的站点中的错误,该错误导致表中有数百万行重复的数据行,即使没有行也将非常大(仍然有数百万行)。我可以轻松找到这些重复的行,并可以运行一个删除查询来杀死它们。问题是试图一次删除这么多行会长时间锁定表,如果可能的话,我想避免这种情况。我可以看到摆脱这些行而又不占用站点(通过锁定表)的唯一方法是: 编写一个脚本,该脚本将循环执行数千个较小的删除查询。从理论上讲,这

  • 发生的事情 由于系统中的错误,上个月的所有数据都已损坏。所以我们不得不手动删除并重新输入这些记录。基本上,我想删除在某段时间内插入的所有行。但是,我发现很难在HBase中扫描和删除数百万行。 可能的解决方案 我找到了两种批量删除的方法: 第一种是设置一个TTL,这样所有过期的记录都会被系统自动删除。但是我想保留上个月之前插入的记录,所以这个解决方案对我不起作用。 第二种选择是使用Java API编

  • 问题内容: 我们有数十万个Redis键的列表,其中包含各种特殊字符,我们希望将其批量删除。 但是,对于以下情况,我似乎找不到答案: 我们有大量的钥匙(数十万个) 键具有各种特殊字符,例如双引号(“),反斜杠(),各种奇怪的Unicode字符等。 我们正在使用Windows Redis-Cli客户端 奖励:理想情况下,我们可以在MULTI / EXEC事务中发出此命令,因此我们也可以自动删除SET和

  • 问题内容: 我正在为一个即将到来的Web应用程序进行数据库设计,我想知道是否有人在他们当前的Web应用程序中大量使用mysql,这种设计对于一个可以说80,000个用户的Web应用程序是否有效。 1个DB 在DB中,每个用户的功能都有数百万个表,并且在每个表中可能有数百万行。 尽管此设计非常动态并且可以很好地扩展,但我想知道两件事。 这是当今Web应用程序中的常见设计吗? 如果查询数百万行,这在时

  • 问题内容: 我想要两个整数,一个除以另一个以获得小数或百分比。如何获得这两个整数的百分比或小数?(例如,我不确定是否正确。我可能离…): 这就是我以为自己可以做到的方式,但是它没有用…我想将小数(如果有的话)设为100的百分数,例如,在这种情况下为%25。有任何想法吗? 这是正确的代码(感谢Salvatore Previti!): (顺便说一句,我正在使用此项目进行测验程序,这就是为什么我需要百分

  • 问题内容: 我正在使用Python进行一些数据分析。我有两个表,第一个(叫它“ A”)有1000万行和10列,第二个(“ B”)有7300万行和2列。他们有1个具有共同ID的列,我想根据该列将两个表相交。特别是我想要表的内部联接。 我无法将表B作为pandas数据框加载到内存中,以在pandas上使用常规合并功能。我尝试通过读取表B上的文件的块,将每个块与A相交,并将这些交集连接起来(内部联接的输