2010-08-28 24 views
3

我正在構建一個iPhone應用程序,該應用程序將使用加權圖(可能大約有1000個節點和500-700個關係,球場估計可能是非常錯誤的)。我應該使用Core Data還是SQLite來表示具有加權邊的圖結構?

核心數據將會很棒,因爲它易於使用並針對iPhone進行了優化。同時,圖形節點需要加權。我可以在覈心數據中添加一個間接級別(編輯/說明:我會將加權邊界表示爲關係),但認爲這可能會打敗性能提升點。

SQLite將使我能夠做到這一點沒有任何額外的間接問題變成性能。

另一個考慮是我使用核心數據來存儲的東西,然後存儲在表中的權重sqlite中,並建立自定義的核心數據對象,當我獲取或創建在sqlite中創建必要的鏈接,然後只使用sqlite用於計算(因爲計算只能遍歷並查看權重,所以除了對象的最終結果/ ID外,我不需要其他任何東西)。然後我會查找核心數據中的實際對象。

此外,還會有一臺服務器將所有用戶圖形考慮在一張更大的圖表中。因此,直接使用sqlite可能更容易,因爲在野獸服務器上覆制信息會更容易:-)

感謝您的幫助。

+0

核心數據不是數據庫。 – Chet 2014-03-26 06:34:59

回答

1

乍一看,Core Data對於您的用例來說非常棒,因爲它的對象圖管理框架(帶有持久性)。它的延遲加載和緩存功能允許你在內存中加載一個局部圖,如果你有一個大圖,這通常是需要的。

核心數據似乎不支持加權關係(我根本不是核心數據專家)。如果「間接級別」意味着表示關係的核心數據對象,那麼我認爲這將會是一個性能問題。

出於性能和可移植性考慮,直接SQLite可能是一個更好的選擇,因爲您可以完全控制模式和索引。

我贊成你的想法「在sqlite中只存儲權重」。根據我的理解,這可以讓您在保持性能關鍵任務高效的同時利用Core Data功能。

NetNewsWire的作者撰寫了一篇博客文章,解釋爲什麼他已經離開Core Data(主要是因爲性能和靈活性原因),這可能對您有所幫助。 http://inessential.com/2010/02/26/on_switching_away_from_core_data

相關問題