我正在学习 Core Data,之前我在我的一个项目中使用过 SQLite。我的问题是,我应该在什么场景下使用 Core Data 和 SQLite?我已经阅读了 Core Data 的一些优点,它提供了设计数据结构的可视化方式、访问数据的抽象级别以及 SQLite 可以在多平台上使用,但是有什么与数据大小有关的吗?如果数据量比我们应该使用 Core Data 大,反之亦然?
4 回答
核心数据:
主要功能是图形管理(虽然读写磁盘是一个重要的支持功能)
对存储在内存中的对象进行操作(尽管它们可以从磁盘延迟加载)
与成熟的对象一起工作,这些对象可以自我管理很多行为,并且可以为进一步的行为进行子类化和定制
非事务性、单线程、单用户(除非您围绕提供这些东西的 Core Data 创建一个完整的抽象)
只在内存中运行
需要保存过程
可以非常快速地在内存中创建数百万个新对象(尽管保存这些对象会很慢)
将数据约束留给程序的业务逻辑端
数据库或 SQLite:
主要功能是存储和获取数据
操作存储在磁盘上的数据(或最小和增量加载)
存储“哑”数据
可以是事务性的、线程安全的、多用户的
可以在不加载到内存的情况下删除表和编辑数据
永久保存到磁盘(并且经常崩溃恢复)
创建数百万个新行可能很慢
提供数据约束,如“唯一”键
参考以下链接 http://cocoawithlove.com/2010/02/differences-between-core-data-and.html
对于在这种情况下实体之间具有更多“多对多”或“一对多”关系的大型数据(超过 100000 条记录),您可以使用 SQLite,否则您可以毫无问题地获取核心数据。
还有一个建议,请在做出任何决定之前标准化您的数据库。
使用 SQLite 处理大数据,有一个非常好的教程 提高 SQLite 的每秒插入性能?
根据我的经验,数据大小从来都不是问题,但我听说 SQLite 更健壮。我使用 SQLite 是因为我们希望我们的应用程序预先填充用户数据,而使用 Core Data,它适用于单个用户,它将像地址簿一样填充它。
Core Data 没有数据量的限制——事实上,它使用 SQLite 作为存储,所以数据大小不应该打扰你。
Core Data 是一个非常棒的解决方案,所以我建议您在项目中使用它。