2011-07-12 50 views
19

coredata和sqlite之間的基本區別是什麼,因爲它們都是數據庫,可以與IOS開發一起使用。並告訴我哪個更適合保存和回收大量數據coredata和sqlite之間的差異

+3

的可能重複的[核心數據VS的SQLite 3](HTTP的業務邏輯側:// stackoverf low.com/questions/523482/core-data-vs-sqlite-3) – Abizern

+1

也可能是[在iPhone上使用CoreData或SQLite?]的副本(http://stackoverflow.com/questions/1318467/use-coredata- or-sqlite-on-iphone) –

回答

68

這兩者之間存在巨大差異。 SQLLite是一個數據庫本身就像我們有MS SQL Server。但是CoreDataORM(對象關係模型),其在databaseUI之間創建layer。它的speeds-upprocess的互動,因爲我們不必write queries,只與ORM一起工作,讓ORM處理後端。對於save or retrieval of large data,我推薦使用Core Data,因爲它能夠處理更少的設備處理速度。希望這可以幫助。

@Andndhati:使用核心數據我們可以高效地優化內存。

問候。

+1

除上述之外,使用核心數據我們可以高效地優化內存。 – sample

+0

Sqlite不是ORM ...其對象圖管理器 – King

+0

根據http://stackoverflow.com/a/524301/399741,核心數據不是一個ORM。 –

1

使用核心數據我們可以高效地優化內存。

+0

不正確;如果創建複雜的項目從未使用coredata .... – user1005462

3

coredata和sqlite有很大的區別。

核心數據本身並不是一個數據庫,它只是一個變化跟蹤系統,像SQLite這樣的持久性存儲的封裝(回收,將對象保存到持久性存儲)。您可以將SQLite作爲基礎RDBMS和coredata用作管理表格屬性更改的層(撤消,重做,重置更改),還可以優化管理內存(錯誤)。

15

除了是ORM(對象關係模型)你可以比較Core-Data和SQLite;

SQLite的

  • 都有數據約束功能。
  • 對存儲在磁盤上的數據進行操作。
  • 可以刪除表格和編輯數據而不將它們加載到內存中。
  • 與核心數據相比較慢。

核心數據

  • 沒有數據的限制,如果需要的話需要通過業務邏輯實現。
  • 在內存中運行(數據需要從磁盤加載到內存)
  • 需要加載整個數據,如果我們需要刪除表或更新。
  • 在記錄創建的條款。快速(保存它們可能是耗時的)

從SQLite的另外相隔的後端核心數據可以使用XML或二進制格式用於存儲數據的磁盤。

+0

非常感謝你分享這個。 – swiftBoy

2

的SQLite

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

操作對存儲在磁盤(或最低限度地和遞增地加載)

商店 「啞」 數據

可以是數據交易型,線程安全型,多用途

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

可能會很慢創造數以百萬計的新行

信息,如「唯一」的密鑰數據約束

核心數據

主要功能是圖形管理(儘管讀取和寫入磁盤是一項重要的支持功能)

對存儲在內存中的對象進行操作(雖然它們可以從磁盤中延遲加載)

具有完全成熟的對象廠,自我管理了很多自己的行爲,除非你創建一個圍繞核心的整個抽象可以被繼承和定製的進一步行爲

非事務,單線程,單用戶(數據,其提供這些東西)

需要一個保存過程

葉數據約束到程序