何时使用Core Data以及何时使用Sqlite?

时间:2012-06-26 15:53:06

标签: iphone sqlite core-data

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

4 个答案:

答案 0 :(得分:4)

核心数据:

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

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

  3. 与完全成熟的对象一起使用,这些对象可以自我管理很多行为,并且可以进行子类化和自定义以用于进一步的行为

  4. 非事务性,单线程,单用户(除非您围绕提供这些内容的Core Data创建完整的抽象)

  5. 仅在内存中运行

  6. 需要保存流程

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

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

  9. 数据库或SQLite:

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

    2. 对存储在磁盘上的数据进行操作(或最低限度地逐步加载)

    3. 存储“哑”数据

    4. 可以是交易的,线程安全的,多用户的

    5. 可以删除表格并编辑数据而无需加载到内存中

    6. 永久保存到磁盘(通常具有抗冲击性)

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

    8. 提供数据限制,例如“唯一”键

    9. 从以下链接引用 http://cocoawithlove.com/2010/02/differences-between-core-data-and.html

答案 1 :(得分:0)

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

核心数据是一个非常好的解决方案,因此我建议您在项目中使用它。

答案 2 :(得分:0)

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

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

使用SQLite处理大数据, 有一个非常好的教程 Improve INSERT-per-second performance of SQLite?

答案 3 :(得分:0)

在我的经历中,数据大小从来都不是问题,但我听说SQLite更强大。我已经使用了SQLite,因为我们希望我们的应用程序预先填充了用户的数据,而Core Data则用于将单个用户填充为地址簿之类的内容。