簡體   English   中英

如何在 Cosmos DB 中的單個存儲過程中執行多項操作

[英]How to do multiple operations in single stored procedure in Cosmos DB

是否可以在有界執行的 Cosmos Db 中的單個存儲過程中執行多個操作? 我必須在單個存儲過程中執行以下操作

  1. 要插入的新記錄
  2. 要刪除的記錄很少
  3. 要執行的更新操作

在這種情況下,如何通過事務支持來維護數據一致性?

Cosmos DB 存儲過程在單個集合的單個分區內以事務方式工作。 因此,只要您的插入、刪除和更新(更准確地說是替換)都在單個分區內,它們就會在單個存儲過程調用中以事務方式處理。

嘿羅摩克里希納雷迪,

正如大衛所提到的,事務只能在集合中的一個分區內實現。 請參閱此處的文檔: https : //docs.microsoft.com/en-us/azure/cosmos-db/database-transactions-optimistic-concurrency 我曾經有過將多個集合合並為一個集合以實現交易的經歷。 您可能也需要做同樣的事情。

這里有實現交易的例子: https : //github.com/MicrosoftDocs/azure-docs/blob/master/articles/cosmos-db/how-to-write-stored-procedures-triggers-udfs.md如何實現創建存儲過程。

在您的特定情況下,您可能需要編寫一個事務,該事務需要更新插入的項目數組和要刪除的項目數組。 您可以在此處找到刪除事務的示例: https : //github.com/Azure/azure-cosmos-dotnet-v2/blob/master/samples/clientside-transactions/DocDBClientBulk/DocDBClientBulk/bulkDelete.js

或者,您可以在 Cosmos 現在支持的 .NET SDK 中使用事務批處理。 除了事務支持之外,您還可以在此博客中看到其他即將到來的期待已久的更新: https : //devblogs.microsoft.com/cosmosdb/whats-new-in-azure-cosmos-db-nov-2019/ 但是,我不清楚它是否支持您正在尋求的刪除。 我還沒有機會玩它。 也許你弄明白了可以分享一下!

暫無
暫無

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

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