2017-10-18 28 views
1

我目前正在爲我們的組織學習MS奧爾良。 據我所知,只要所有數據庫更新都通過穀物即將到來,奧爾良穀物將保持與數據庫同步。奧爾良 - 大量數據導入

但是,如果存在更新/插入/刪除DB中的記錄的一些批量處理過程(如處理數據文件)會發生什麼?

是否有一些過程或模式與奧爾良一起使用來迎合這一點? 或者我們是否需要通過穀物處理所有批量處理? 如果我們通過穀物加工批量生產 - 我們是否通過更新每個穀物來實現它(如果每個穀物都更新爲數據庫,看起來非常昂貴),還是有一些批量模式用於強制所有受影響的穀物「更新」?

答案可能很明顯。我在文檔中找不到有關這些場景的任何內容。

我們將使用Orleans作爲本地安裝與MS-SQL服務器。

編輯:

我指的是一個過程N個晶粒的更新數據。有一個更新1000條記錄的單個調用對於sql更好,而對於更新一條記錄的1000個調用更好。具體的例子是股票更新:每個產品股票都是穀物。每15分鐘左右,一個文件將從第三方到達,通知應用程序之外發生的庫存數量變化。這應該在db中更新並反映在穀物中。文件可能有10K的記錄...

+0

你會更好地使用穀物來控制數據訪問 – BozoJoe

+0

感謝您的答案。有使用穀物做這個的模式嗎?我指的是更新N穀物數據的過程。有一個更新1000條記錄的單個調用對於sql更好,而對於更新一條記錄的1000個調用更好。具體的例子是股票更新:每個產品股票都是穀物。每15分鐘左右,一個文件將從第三方到達,通知應用程序之外發生的庫存數量變化。這應該在db中更新並反映在穀物中。文件可能有10K的記錄... – user2995891

+0

你應該添加你的意見的問題。你確定你'需要'使用演員模型嗎?產品庫存是否具有獨立的功能,演員模型比您所說的批量更新操作更合適? – BozoJoe

回答

2

您有幾個選項。

1)通過穀物上傳 - 穀物將緩存數據並存儲在數據庫中。這部分地破壞了你高效數據庫上傳的目標,所以可能不是你想要的。

2)直接批量上傳到數據庫,但使用穀物來訪問和處理/提供數據。穀物會在首次請求時從數據庫中讀取數據,將其緩存起來,以供進一步請求。此外,所有未來的數據更新都將通過穀物進行。這通常是最常見的模式。 3)如果你還需要週期性的數據處理,即使沒有服務請求,那麼在批量上傳穀物後,你可以「批量打擊」穀物來開始定期處理。在這個選項中,你將編寫一個控制器循環(例如客戶端邏輯),它將一個一個地調用「Init」到一組顆粒中(並行:在X(X〜100)上並行調用Init並等待它們所有在一起),然後做下一批。穀物將啓動計時器或初始化提醒。

+0

感謝您的詳細解答!非常感激 – user2995891