2012-01-17 85 views
2

您會考慮一種乾淨而有效的方式來初始填充作爲RESTful分佈式系統體系結構一部分的數據存儲?將初始(批量)數據導入RESTful系統的最佳做法是什麼?

我們已經有一個批量導入的POST方法,它接受XML提要,解析,驗證和導入數據。因此,有一種可能性需要客戶端針對我們的REST接口發佈POST請求(如果我們遇到了請求超時問題,可能會發生大塊)。

數據存儲本身是基於MongoDB的,所以另一方面你也可以考慮低級批量導入,它需要一個壓縮的數據文件,解壓縮並直接將JSON數據導入到數據庫中這當然會繞過我們的業務邏輯來驗證要導入的數據)。

你有什麼意見和建議,有沒有任何REST模式可以給出關於這個問題的建議?

+0

可能是HTTP管道傳輸可能會增加吞吐量? – ngeek 2012-01-20 23:48:36

回答

1

不知道更多的細節,我認爲你最終釘牢它。我會將數據分成塊,然後運行一個程序來讀取這些塊中的一個,並將這些數據發送到您的http接口。

執行導入的腳本/程序只能處理足夠小的塊以避免超時,並且應該意識到其成功與否。如果一件作品超時或失敗,你應該確保你知道你在哪裏進口,這樣你就可以從同一個地方重新嘗試。

說了這麼多,如果你的系統允許多次導入同樣的東西而沒有後果(見http://en.wikipedia.org/wiki/Idempotence),所以如果你必須完全重新發送1段,你的寧靜的後端將是能夠接受它而不需要複製數據。

如果你得到它的工作,你甚至可以同時運行你的導入程序與多個塊,使其並行和更快。 (只要你的http/restful後端可以處理它)

+0

...是的,好像我會堅持使用目前的方法在發佈1000個實體的費用。感謝您關於操作的冪等性的提示,這可能需要跟蹤單個操作的成功並查看哪些可以在隨後的嘗試中被跳過。 – ngeek 2012-01-20 23:46:36

相關問題