2013-07-08 64 views
1

從iOS上本地存儲從遠程數據庫加載的數據的最佳方式是什麼? (您不需要提供任何代碼,我只是想知道概念上的最佳方式。)數據如何從本地存儲的遠程數據庫中加載(在內存中)

例如,以iOS爲例的Twitter。當它加載推文時,它是否只需從遠程數據庫中提取推文數據並將它們存儲在iPhone上的本地數據庫中?或者,如果數據只是以對象數組或類似的方式存儲在本地,會更好嗎?

請參閱我認爲能夠使用/顯示遠程數據庫中的數據(例如,在動態表視圖中),數據必須存儲爲對象,因此可能它們應該只是作爲對象存儲在數組中。然而,在研究這個時,我看到了很多關於本地數據庫的文章,所以我想也許它更有效地將遠程數據作爲表加載並存儲在本地數據庫中,並直接使用本地表中的數據來顯示數據或類似的東西。

哪一個需要更多開銷:將數據存儲爲Tweet對象數組或作爲推文的本地數據庫?

你認爲在本地存儲遠程數據的最佳方式是什麼(在內存中)(對於加載數據類似於iOS的Twitter)的應用程序?

我想這會引發這個先決條件問題:當從遠程數據庫中下載數據時,它是否通常作爲數據庫表(結果集)加載並因此存儲爲一個?

謝謝!

+0

看看Restkit,我已經非常廣泛地使用它來處理這類事情。 – Bushbert

+0

我發現在過去只需從Web服務(如Twitter)中獲取數據,將它存儲在數組或字典中,然後使用它即可。當你想要更新時,這隻需要一個網絡電話,然後所有東西都在那裏,隨時可以使用,不過你覺得有必要 – MZimmerman6

回答

3

雖然很容易將提取的數據放入陣列並從中使用,但由於兩個主要原因使用本地數據庫可能會使您受益:可伸縮性和持久性。

如果您希望下載並顯示大量數據,嘗試將它一次存儲在內存中可能不安全。它將更具可擴展性,可下載所需的任何數據,將其存儲在本地數據庫中,然後僅提取需要顯示的相關對象。

如果您下載數據並只將其存儲在數組中,則必須從遠程數據庫重新獲取數據,並在應用/視圖控制器/下次加載時重新解析數據,然後才能顯示任何內容。相反,創建一個本地數據庫,用於存儲下載的數據,使其可以在下一次加載時隨時顯示,同時從遠程源獲取新數據。

儘管在創建數據庫時發生了一些初始開銷,但爲您提供的可伸縮性和持久性足以保證。將遠程數據庫的狀態存儲在本地數據庫中是非常普遍的做法。但是,如果您不介意用戶不得不等待每次讀取數據,或者讀取的數據量相對較低或數據非常簡單,那麼您將節省時間和精力跳過本地數據庫。

相關問題