我在學習Core Data,之前我在我的一個項目中使用過SQLite。我的問題是,我應該使用Core Data vesus SQLite的哪種場景?我已經閱讀了Core Data的一些優點,它提供了設計數據結構的可視化方式,訪問數據的抽象級別以及SQLite可以在多平臺上使用,但是有沒有與數據大小有關的任何內容?如果數據量大於我們應該使用核心數據或反之亦然?何時使用Core Data以及何時使用Sqlite?
回答
核心數據:
主要功能是圖表管理(雖然讀出和寫入磁盤是一個重要的支撐功能)
操作存儲在存儲器中的對象(儘管它們可以是懶惰地從磁盤加載)
與完全成熟的對象一起工作,可以自行管理它們的許多行爲,並且可以進一步分類和定製[R行爲
非事務,單線程,單用戶(除非你創建一個圍繞核心數據的整個提取,其提供這些東西)
只在內存中運行
需要保存過程
能創造數以百萬計的內存中的新對象的速度非常快(雖然節約了這些對象將是緩慢的)
葉數據約束到程序的業務邏輯側
數據庫或SQLite的:
主要功能是存儲和獲取數據
操作上的數據存儲在磁盤上(或最小和增量加載)
存儲「啞」數據
可以是事務性的,線程安全的,多用戶
可以刪除表和編輯數據,而無需加載到內存中
永久保存到磁盤(常死機彈性)
創建數百萬行新行可能會很慢
提供數據約束,如「唯一」鍵
從下面的鏈接 http://cocoawithlove.com/2010/02/differences-between-core-data-and.html
感謝您的回覆,但我的問題不是核心數據和SQLite之間的比較。我想知道這些場景。 –
@NuzhatZari:比較告訴你情景。例如。你想/需要多用戶?然後你使用SQLite,因爲這個功能是免費的,並且必須首先將它用於CoreData。或者你正在處理比適合內存更大的數據?然後CoreData將無法選擇,SQLite將是一個選項。 – Mecki
核心數據的數據量沒有限制 - 事實上,它使用SQLite作爲存儲,所以數據大小不應該打擾你。
核心數據是一個非常棒的解決方案,所以我建議你在你的項目中使用它。
對於大型數據(超過10萬條記錄)與更多的「多對多」或「一對多」的實體之間的關係,在這種情況下簡稱您可以使用SQLite否則你可以去核心數據沒有任何問題。
還有一個建議,請在做出任何決定之前對數據庫進行規範化。
要使用SQLite處理大量的數據, 有一個非常好的教程 Improve INSERT-per-second performance of SQLite?
爲什麼你發佈兩個單獨的答案? – pasawaya
在我執政經驗的數據大小從來都不是問題,但我聽說SQLite是更穩健。我已經去了SQLite,因爲我們希望我們的應用程序預先填充用戶的數據,而使用Core Data它是爲單個用戶填充它的東西,像地址簿。
- 1. 何時使用Core Data的NSMainQueueConcurrencyType?
- 2. 何時使用==以及何時使用?
- 3. Android的 - 當使用共享偏好以及何時使用SQLite
- 4. 何時使用belongsTo以及何時hasMany?
- 5. 何時使用jQuery.ajax以及何時使用jQuery.post?
- 6. 何時使用Apache Helix以及何時使用Apache Mesos
- 7. 何時使用Abstract Factory以及何時使用Factory Method?
- 8. 何時使用LEFT JOIN以及何時使用INNER JOIN?
- 9. PHP:何時使用Traits以及何時使用靜態方法?
- 10. 何時使用Value Formatter以及何時使用Value Resolver
- 11. 何時使用json文件以及何時使用js文件?
- 12. 何時使用:something =>'something'以及何時使用:something,'something'?
- 13. Elixir:何時使用'數字'以及何時使用'整數'
- 14. 何時使用Class.isInstance()以及何時使用instanceof運算符?
- 15. 何時使用Socket以及何時在Flex中使用XMLSocket?
- 16. 何時使用以及何時不使用Python 2.7_中的__init__
- 17. 何時使用undef_method以及何時使用remove_method?
- 18. 何時使用ICommand包裝RelayCommand以及何時使用Just ReplayCommand?
- 19. 何時使用數組以及何時使用單元陣列?
- 20. 何時使用DataTrigger以及何時使用Converter?
- 21. 何時使用Docker-Compose以及何時使用Docker-Swarm
- 22. 何時使用dup以及何時在Ruby中使用克隆?
- 23. 何時使用Gen_Fsm以及何時使用Gen_Server?
- 24. 何時使用佈局以及何時使用活動?
- 25. 何時使用IDataReader以及何時使用DataReader?
- 26. 何時使用uid以及何時在$ $ $ $中使用$ id
- 27. 何時使用ASP.NET驗證控件以及何時不使用?
- 28. 何時使用Pig以及何時使用Java for Mapreduce?
- 29. 何時使用Comparator以及何時在Java中使用Comparable?
- 30. 何時使用Twitter Bootstrap以及何時使用HTML5 Boilerplate?
可能的重複: –
pasawaya
我不知道爲什麼我的問題是downvoted,因爲我的問題是我們可以使用的場景核心數據和SQLite,我沒有在任何地方找到它,所以我問。而且你建議的鏈接也顯示了核心數據在圖中的優勢,但沒有提及在哪些情況下我們應該去核心數據或SQLite,如果圖是不是要求。或者可以說這是表明我們應該使用核心數據的場景之一,其中圖表是必需的。請那些正在投票的人給出他們的評論,因爲我想知道什麼是錯的。 –
我也在尋找這個答案,在面試中我被問到了同樣的問題。所以我想知道主持人是否允許它作爲一個建設性問題的答案。請做。 – Sandy