簡體   English   中英

如何批量刪除(比如數百萬)分布在 Cosmos db sql api 中數百萬個邏輯分區的文檔?

[英]How to bulk delete (say millions) of documents spread across millions of logical partitions in Cosmos db sql api?

MS Azure 文檔沒有談論它。 正式的批量執行器文檔只討論插入和更新選項,而不是刪除。 有一個建議的java腳本服務器端程序來創建一個存儲過程,這聽起來很不錯,但這需要我們輸入分區鍵值。 如果我們的文檔分布在數百萬個邏輯分區中,那將毫無意義。

這是一個非常簡單的業務需求。 在遷移 sql api cosmos 集合中的大量數據時,如果我們插入一些錯誤的數據,似乎沒有選擇刪除其他選項然后恢復到以前的狀態。 我已經探索了幾個小時,但找不到解決方案。 甚至在 MS 支持下提出了一個案例,他們指向了一些我認為需要查看的 .net 代碼,因為這看起來並不簡單。 如果有人不知道.net怎么辦。

我們不能在 MS Cosmos SQL API 中輕松批量刪除分布在多個邏輯分區的文檔嗎? 感覺好惡心。。

我希望你能提供一些准確的細節。 如何使用一些簡單直接的示例代碼和步驟來實現這一點。 希望 MS 和 Cosmos db 專家也能分享意見。

甚至在 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/批量刪除/BulkDeleter.java

目前只支持以上官方解決方案。 另一種解決方法是cosmos db的TTL 。相信你有自己的邏輯來判斷哪些數據是正確的,哪些是錯誤的,應該刪除。 您可以對這些數據設置 TTL,以便在過期數據到達時立即終止它們。

有沒有人試過這個 .. 看起來像一個很好的解決方案在 java https://github.com/Azure/azure-cosmosdb-bulkexecutor-java-getting-started#bulk-delete-api

如果您編寫一個批處理作業來通過使用某些日期配置在一夜之間刪除文檔,我們可以實現它。 這是關於如何做到這一點的文章。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM