您有一個 Azure Cosmos DB SQL API 容器,其依據 /customerId 進行分割。當訂單成立時,您的服務必須以原子方式執行以下操作:(1) 建立訂單文件,(2) 更新客戶設定檔的 openOrderCount,以及 (3) 刪除客戶的購物車文件。這三個文件共用相同的 customerId 值。您希望所有操作都能同時成功或失敗,而不使用伺服器端預存程序。您應該怎麼做?
選擇一個答案
點擊一個選項來檢查您的答案。
正確答案: 使用 Azure Cosmos DB SDK 的 TransactionalBatch 來發出 create、replace 和 delete 操作,並將 PartitionKey 值設定為與 customerId 相同。.
為什麼這是答案
正確答案是使用 Azure Cosmos DB SDK 的 TransactionalBatch。TransactionalBatch 允許您在相同分割區索引鍵下對多個文件執行原子性操作。由於這三個操作(建立訂單、更新客戶設定檔、刪除購物車)都共享相同的 customerId 分割區索引鍵,因此它們可以在單一事務批次中執行,確保所有操作同時成功或失敗,滿足原子性要求。 啟用跨分割區 ACID 交易(選項 B)是不可能的,因為 Azure Cosmos DB 不支援跨多個分割區索引鍵的原子性事務。Change Feed Processor(選項 C)適用於事件驅動的處理,但不能保證操作的原子性,且依賴最終一致性,不符合題目要求。執行三個獨立請求並依賴 ETag 保護和重試(選項 D)會導致複雜的錯誤處理邏輯,且無法保證原子性,可能導致資料不一致。
通過考試 — 無需無休止地尋找答案
集中一處獲取此考試的所有核實題目和解釋,節省數小時的準備時間。1,000 多種認證 · 20 多種語言 · 免費開始。
更快通過您的考試 → 無需信用卡