【问题标题】:When to use Core Data and when to use Sqlite? [closed]什么时候使用Core Data,什么时候使用Sqlite? [关闭]
【发布时间】:2012-06-26 15:53:06
【问题描述】:

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

【问题讨论】:

  • 可能重复:stackoverflow.com/questions/523482/core-data-vs-sqlite-3>
  • 我不知道为什么我的问题被否决了,因为我的问题是我们可以使用 Core Data 和 SQLite 的场景,但我在任何地方都找不到,所以我问了。你建议的链接还显示了 Core Data 在图形中的优势,但没有提到在哪些情况下如果不需要图形,我们应该使用 Core Data 或 SQLite。或者可以说这是显示我们应该在需要图形的情况下使用 Core Data 的场景之一。请那些投反对票的人也给他们的 cmets,因为我想知道哪里出了问题。
  • 我也在寻找这个答案,我在面试中被问到同样的问题。因此,如果主持人允许将其作为建设性问题,我想知道答案。请做。

标签: iphone sqlite core-data


【解决方案1】:

核心数据:

  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

【讨论】:

  • 感谢您的回复,但我的问题不是核心数据和 SQLite 之间的比较。我想知道场景。
  • @NuzhatZari:比较告诉你场景。例如。您想要/需要多用户?然后你使用 SQLite,因为这个特性是免费的,并且必须首先为 CoreData 实现它。或者您正在处理比内存容量更大的数据?那么 CoreData 将不是选项,SQLite 将是一个选项。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

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

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

      【讨论】:

      • 你为什么要发布两个不同的答案?
      猜你喜欢
      • 2012-09-19
      • 1970-01-01
      • 2017-09-11
      • 1970-01-01
      • 1970-01-01
      • 2010-09-20
      • 1970-01-01
      • 1970-01-01
      • 2012-12-23
      相关资源
      最近更新 更多