2012-06-26 65 views
-1

我在學習Core Data,之前我在我的一個項目中使用過SQLite。我的問題是,我應該使用Core Data vesus SQLite的哪種場景?我已經閱讀了Core Data的一些優點,它提供了設計數據結構的可視化方式,訪問數據的抽象級別以及SQLite可以在多平臺上使用,但是有沒有與數據大小有關的任何內容?如果數據量大於我們應該使用核心數據或反之亦然?何時使用Core Data以及何時使用Sqlite?

+0

可能的重複: pasawaya

+1

我不知道爲什麼我的問題是downvoted,因爲我的問題是我們可以使用的場景核心數據和SQLite,我沒有在任何地方找到它,所以我問。而且你建議的鏈接也顯示了核心數據在圖中的優勢,但沒有提及在哪些情況下我們應該去核心數據或SQLite,如果圖是不是要求。或者可以說這是表明我們應該使用核心數據的場景之一,其中圖表是必需的。請那些正在投票的人給出他們的評論,因爲我想知道什麼是錯的。 –

+0

我也在尋找這個答案,在面試中我被問到了同樣的問題。所以我想知道主持人是否允許它作爲一個建設性問題的答案。請做。 – Sandy

回答

3

核心數據:

  1. 主要功能是圖表管理(雖然讀出和寫入磁盤是一個重要的支撐功能)

  2. 操作存儲在存儲器中的對象(儘管它們可以是懶惰地從磁盤加載)

  3. 與完全成熟的對象一起工作,可以自行管理它們的許多行爲,並且可以進一步分類和定製[R行爲

  4. 非事務,單線程,單用戶(除非你創建一個圍繞核心數據的整個提取,其提供這些東西)

  5. 只在內存中運行

  6. 需要保存過程

  7. 能創造數以百萬計的內存中的新對象的速度非常快(雖然節約了這些對象將是緩慢的)

  8. 葉數據約束到程序的業務邏輯側

數據庫或SQLite的:

  1. 主要功能是存儲和獲取數據

  2. 操作上的數據存儲在磁盤上(或最小和增量加載)

  3. 存儲「啞」數據

  4. 可以是事務性的,線程安全的,多用戶

  5. 可以刪除表和編輯數據,而無需加載到內存中

  6. 永久保存到磁盤(常死機彈性)

  7. 創建數百萬行新行可能會很慢

  8. 提供數據約束,如「唯一」鍵

從下面的鏈接 http://cocoawithlove.com/2010/02/differences-between-core-data-and.html

+0

感謝您的回覆,但我的問題不是核心數據和SQLite之間的比較。我想知道這些場景。 –

+0

@NuzhatZari:比較告訴你情景。例如。你想/需要多用戶?然後你使用SQLite,因爲這個功能是免費的,並且必須首先將它用於CoreData。或者你正在處理比適合內存更大的數據?然後CoreData將無法選擇,SQLite將是一個選項。 – Mecki

0

核心數據的數據量沒有限制 - 事實上,它使用SQLite作爲存儲,所以數據大小不應該打擾你。

核心數據是一個非常棒的解決方案,所以我建議你在你的項目中使用它。

0

對於大型數據(超過10萬條記錄)與更多的「多對多」或「一對多」的實體之間的關係,在這種情況下簡稱您可以使用SQLite否則你可以去核心數據沒有任何問題。

還有一個建議,請在做出任何決定之前對數據庫進行規範化。

要使用SQLite處理大量的數據, 有一個非常好的教程 Improve INSERT-per-second performance of SQLite?

+0

爲什麼你發佈兩個單獨的答案? – pasawaya

0

在我執政經驗的數據大小從來都不是問題,但我聽說SQLite是更穩健。我已經去了SQLite,因爲我們希望我們的應用程序預先填充用戶的數據,而使用Core Data它是爲單個用戶填充它的東西,像地址簿。

相關問題