簡體   English   中英

復制 CosmosDB 集合並按物理分區保留項目順序的最有效方法是什么?

[英]What is the most efficient way to copy a CosmosDB collection and retain the order of items by physical partition?

我使用 Azure 數據工廠嘗試了許多不同的組合來創建 CosmosDB 集合的克隆,該集合維護寫入分區的項目的順序,但除非我指定批量寫入大小為 1,否則它不會保持順序。 即使從映射數據流中源的更改源觸發也不會保留順序。 我們編寫了一個簡單的工具,可以一次復制一條記錄,但很明顯,這很慢。

我們將 Cosmos 用作事件存儲,更改饋送處理器為我們的投影儀提供數據 - 這一切都運行良好,但我們希望將事件復制到不同的環境中以測試更改。 這需要保留原始寫入順序。

提前致謝。

更改饋送處理器確實以_ts順序從每個物理分區中讀取。

當然,我已經能夠使用它在幾個小時內成功復制非常大的 collections (> 1TB)。

為此,我使用了跨多個實例擴展的 function 應用程序,確保租約集合具有足夠的最大 RU 配置,不會成為瓶頸,並且在配置目標時擴大了 RU,足以預先創建所需數量的物理分區,而不是而不是在導入期間拆分分區。

不過,我一直使用批量插入,因此在更改饋送處理器交付的每個批次中,我猜_ts可能會變得無序。 這對我來說從來都不重要。

將集合復制到新集合並保留_ts順序的最有效方法當然是恢復備份。

它還具有您不必編寫任何代碼並提供任何資源來執行此操作的好處。 如果您還沒有使用連續備份 model,您應該考慮切換到它,因為這允許恢復是自助服務並可以在指定的時間點進行。

獲得像 cerebrata 這樣的工具,它會在 collections 等之間進行復制,如果你認為合適的話,如果你正在做很多 Azure 專門與 CosmosDB 一起工作,它是一個非常方便使用的工具,這些天我不能沒有它。

免責聲明:我不為 cerebrata 工作,也沒有因為推薦他們的工具而獲得任何好處,這純粹是基於我自己的經驗。

暫無
暫無

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

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