2010-12-01 22 views
0

我正在爲基於SQLite的流行的iPhone閃存卡應用程序開發在線用戶數據庫備份/同步系統;這是相當大規模的 - 我們可以很快獲得1億個單獨的閃卡記錄或更多(10,000個用戶,每個10,000張卡) - 我們需要考慮這種可擴展性來設計系統。但我們並不是真的處於基於網絡的軟件業務,至少最初我們並沒有計劃實際上給出這麼多的網絡界面,除了賬戶管理 - 用戶數據的所有實際操作都將脫機。大型iPhone用戶數據庫的在線存儲/同步:在服務器或設備上執行?

所以好像我們對如何實現這一兩種基本的選擇:

  • 在服務器上執行同步;將所有用戶的數據存儲在MySQL數據庫(或我們擴展的一堆數據庫)中,並只下載/上傳更改列表。

  • 本地執行同步;從服務器下載最新版本的數據庫,檢查/應用設備上的更改,然後上載合併的數據庫。

這似乎是本地同步選項就意味着少了很多編程工作,並在我們這邊低得多的託管費用,同時也將意味着我們的用戶顯著更多的帶寬使用 - 大概2-量級上的東西每個同步操作需要4 MB,而基於網絡的同步則需要幾K個。

有沒有人覺得這些選項中的一個顯然比另一個更好?有沒有其他方法可以做到這一點我們沒有考慮過?

感謝。

回答

0

我可以通過這種方式解決問題,但是,由於這是同步,爲什麼數據庫的本地副本無法記錄可以在服務器端複製的更改列表?這僅適用於單個設備,當然不會將多個設備同步到相同的數據集。

可以通過多種方式指出這些更改:例如,您可以校驗和記錄iPhone上的數據,並在同步時再次校驗,然後上載已更改的數據,刪除操作需要單獨記錄。

+0

這部分不是我所擔心的,實際上,我最擔心的是高效地管理服務器端的許多記錄;這不會是一個小型的MySQL項目,如果事情發展,我們可以輕鬆進入集羣/分區領域。而如果我們只是檢索/編寫整個數據庫文件,我們可能會通過一個小的EC2實例獲得,而S3標準的文件存儲量非常少。 – Ertebolle 2010-12-01 11:46:30

相關問題