SQLite vs Core Data:保存大量数据
SQLite vs Core Data: saving large amounts of data
我正在制作一个需要在本地存储大量数据的统计分析应用程序。为了让您了解我在说什么,我制作了这张插图(不完全正确的信息,但非常相似):
该应用程序将跟踪数千个目的地,包括目的地人口、温度、汽车数量等。这些数字将显示在图表中,以便您可以查看随时间变化的数字 "development" .这将持续很长时间,换句话说:每数千个城市的每种数据类型都有数千个日期。
为此我需要保存大量数据,最好在本地完成(这很疯狂吗?)。我在深入挖掘核心数据的基础,或使用我在 SQLite 中已经不错的技能之间陷入困境。
如果您建议我应该使用 SQLite,您能否参考如何将其实现到您的应用程序中(也许是一些代码?)。
如果你建议我应该使用核心数据(主要是为了性能),请告诉我你将如何使用实体、属性、关系等实现这种类型的数据模型。我可以想象使用保存在核心数据中的字典会是一个好的解决方案?
提前致谢。
Core Data 是一个对象持久化模型-- 这就是你的答案,因为每个对象都有一点开销,所以一次在内存中有数千个对象是有问题的.如果您已经知道 SQL 那么这是另一个优点。
(核心数据的整体优点的讨论超出了这个问题的范围。我认为 "music" 应用程序使用具有数千个项目的核心数据来实现它,但因为它只需要显示一个项的子集。Map Kit 下降到 C,并且相当令人印象深刻地处理了数以万计的个位数字节项,您可以在 Map Kit 应用程序中看到 运行 工具。)
我在 iOS 中使用了 SQLite 这不是问题,它是基于 C 的,Objective C 是 C 的严格超集。有各种 "wrappers" 但请仔细查看这些内容,以防它们将您带回每一行对象。我没有使用,发现 SQLite C 设置很棘手但很好。编辑:我使用了 this tutorial,现在 Objective C 已经过时,但是清楚地概述了如何集成 SQLite。
唯一的问题是 iOS 中的 bundle/documents 区别会在您携带大量数据并想保存到该数据库时抓住您:您不能修改包中的文件,因此您需要创建或复制一个 SQL 数据库到文档文件夹 1 次,也许是在第一次启动应用程序时,才能使用它。由于您无法从捆绑包中删除,现在您拥有了两次数据库。 iOS 设置方式固有的问题。
如果您要将 SQLite 与 Swift 一起使用 - 我 强烈 推荐使用 this 项目。我在我当前的项目中使用它,它绝对很棒并且工作完美(我与项目或作者没有任何关系)。你实际上将该项目拖到你的项目中,它成为一个子项目,然后你只需将它设置为 1. 目标依赖项,2. 框架到 link with,3. 复制框架(构建阶段),它就可以工作.然后,您可以使用出色构建的 Swift 接口而不是丑陋繁琐的 libsqlite 调用来处理您的数据库。
我已经将它用于少量数据。几个数据库和多个表。干净直观。到目前为止,我还没有发现任何类型的错误。当我询问有关未记录的功能(但实际上存在并且有效,事实证明)的问题时,作者 Stephen Celis 做出了回应。这是一项了不起的努力。
它非常干净并且与 Swift 紧密集成,如果我不知道得更多,我会认为 Apple 本身已经为 Swift 语言添加了 SQLite 支持。
我正在制作一个需要在本地存储大量数据的统计分析应用程序。为了让您了解我在说什么,我制作了这张插图(不完全正确的信息,但非常相似):
该应用程序将跟踪数千个目的地,包括目的地人口、温度、汽车数量等。这些数字将显示在图表中,以便您可以查看随时间变化的数字 "development" .这将持续很长时间,换句话说:每数千个城市的每种数据类型都有数千个日期。
为此我需要保存大量数据,最好在本地完成(这很疯狂吗?)。我在深入挖掘核心数据的基础,或使用我在 SQLite 中已经不错的技能之间陷入困境。
如果您建议我应该使用 SQLite,您能否参考如何将其实现到您的应用程序中(也许是一些代码?)。
如果你建议我应该使用核心数据(主要是为了性能),请告诉我你将如何使用实体、属性、关系等实现这种类型的数据模型。我可以想象使用保存在核心数据中的字典会是一个好的解决方案?
提前致谢。
Core Data 是一个对象持久化模型-- 这就是你的答案,因为每个对象都有一点开销,所以一次在内存中有数千个对象是有问题的.如果您已经知道 SQL 那么这是另一个优点。
(核心数据的整体优点的讨论超出了这个问题的范围。我认为 "music" 应用程序使用具有数千个项目的核心数据来实现它,但因为它只需要显示一个项的子集。Map Kit 下降到 C,并且相当令人印象深刻地处理了数以万计的个位数字节项,您可以在 Map Kit 应用程序中看到 运行 工具。)
我在 iOS 中使用了 SQLite 这不是问题,它是基于 C 的,Objective C 是 C 的严格超集。有各种 "wrappers" 但请仔细查看这些内容,以防它们将您带回每一行对象。我没有使用,发现 SQLite C 设置很棘手但很好。编辑:我使用了 this tutorial,现在 Objective C 已经过时,但是清楚地概述了如何集成 SQLite。
唯一的问题是 iOS 中的 bundle/documents 区别会在您携带大量数据并想保存到该数据库时抓住您:您不能修改包中的文件,因此您需要创建或复制一个 SQL 数据库到文档文件夹 1 次,也许是在第一次启动应用程序时,才能使用它。由于您无法从捆绑包中删除,现在您拥有了两次数据库。 iOS 设置方式固有的问题。
如果您要将 SQLite 与 Swift 一起使用 - 我 强烈 推荐使用 this 项目。我在我当前的项目中使用它,它绝对很棒并且工作完美(我与项目或作者没有任何关系)。你实际上将该项目拖到你的项目中,它成为一个子项目,然后你只需将它设置为 1. 目标依赖项,2. 框架到 link with,3. 复制框架(构建阶段),它就可以工作.然后,您可以使用出色构建的 Swift 接口而不是丑陋繁琐的 libsqlite 调用来处理您的数据库。
我已经将它用于少量数据。几个数据库和多个表。干净直观。到目前为止,我还没有发现任何类型的错误。当我询问有关未记录的功能(但实际上存在并且有效,事实证明)的问题时,作者 Stephen Celis 做出了回应。这是一项了不起的努力。
它非常干净并且与 Swift 紧密集成,如果我不知道得更多,我会认为 Apple 本身已经为 Swift 语言添加了 SQLite 支持。