最近,我已要求从总共14Tb的Cosmos Db数据中删除几百万条记录。
当我上网时,我发现了一个存储的proc来进行批量删除,并且该分区基于分区键起作用。
我的情况是,每个文档中都有4个属性。 1. ID 2.数字[分区键] 3.开始日期 4.结束日期
要求是根据开始日期删除文档。
从c中删除*,其中c.startdate> =''和c.startdate <=''
上面的查询遍历所有分区并删除记录。
我还通过在Databricks中运行查询来进行检查,以将整个CosmosDB记录保存在一个临时数据帧中,并添加TTL样式,然后再次向上升级到Cosmos DB。
是否有更好的方法可以达到相同的目的?
答案 0 :(得分:0)
通常来说,批量删除具有此article中列出的方法。
由于您的数据非常庞大,也许bulkDelete.js不再适合。毕竟,SP有执行时间限制。除了您问题中描述的解决方案之外,我还建议您可以使用SDK代码自行封装方法:
在查询请求中设置maxItemCount = 100
和EnableCrossPartitionQuery = true
。与此同时,您可以获得continuation token
,用于下一页数据。批量处理数据,也许您可以从.net bulk Delete Library(GeneratePartitionKeyDocumentIdTuplesToBulkDelete
和BulkDeleteAsyn
)中获得一些代码片段