2

我正在学习 Core Data,之前我在我的一个项目中使用过 SQLite。我的问题是,我应该在什么场景下使用 Core Data 和 SQLite?我已经阅读了 Core Data 的一些优点,它提供了设计数据结构的可视化方式、访问数据的抽象级别以及 SQLite 可以在多平台上使用,但是有什么与数据大小有关的吗?如果数据量比我们应该使用 Core Data 大,反之亦然?

4

4 回答 4

6

核心数据:

  1. 主要功能是图形管理(虽然读写磁盘是一个重要的支持功能)

  2. 对存储在内存中的对象进行操作(尽管它们可以从磁盘延迟加载)

  3. 与成熟的对象一起工作,这些对象可以自我管理很多行为,并且可以为进一步的行为进行子类化和定制

  4. 非事务性、单线程、单用户(除非您围绕提供这些东西的 Core Data 创建一个完整的抽象)

  5. 只在内存中运行

  6. 需要保存过程

  7. 可以非常快速地在内存中创建数百万个新对象(尽管保存这些对象会很慢)

  8. 将数据约束留给程序的业务逻辑端

数据库或 SQLite:

  1. 主要功能是存储和获取数据

  2. 操作存储在磁盘上的数据(或最小和增量加载)

  3. 存储“哑”数据

  4. 可以是事务性的、线程安全的、多用户的

  5. 可以在不加载到内存的情况下删除表和编辑数据

  6. 永久保存到磁盘(并且经常崩溃恢复)

  7. 创建数百万个新行可能很慢

  8. 提供数据约束,如“唯一”键

参考以下链接 http://cocoawithlove.com/2010/02/differences-between-core-data-and.html

于 2012-06-26T16:10:41.357 回答
0

对于在这种情况下实体之间具有更多“多对多”或“一对多”关系的大型数据(超过 100000 条记录),您可以使用 SQLite,否则您可以毫无问题地获取核心数据。

还有一个建议,请在做出任何决定之前标准化您的数据库。

使用 SQLite 处理大数据,有一个非常好的教程 提高 SQLite 的每秒插入性能?

于 2012-06-26T16:14:44.950 回答
0

根据我的经验,数据大小从来都不是问题,但我听说 SQLite 更健壮。我使用 SQLite 是因为我们希望我们的应用程序预先填充用户数据,而使用 Core Data,它适用于单个用户,它将像地址簿一样填充它。

于 2012-06-26T16:20:14.823 回答
0

Core Data 没有数据量的限制——事实上,它使用 SQLite 作为存储,所以数据大小不应该打扰你。

Core Data 是一个非常棒的解决方案,所以我建议您在项目中使用它。

于 2012-06-26T15:56:32.307 回答