OS X 应用程序。存储数据的最佳方式是啥?

Posted

技术标签:

【中文标题】OS X 应用程序。存储数据的最佳方式是啥?【英文标题】:OS X App. Which is the best way to store data?OS X 应用程序。存储数据的最佳方式是什么? 【发布时间】:2015-10-06 10:06:04 【问题描述】:

在 os x 应用程序中,存储数百条用户记录以及每条记录的大量信息的最佳方式是什么?

我知道我可以使用 CoreData、SQLite、Realm、plist 或其他解决方案。 哪种是最兼容的(我认为例如用于网络使用)和干净/轻巧/快速的数据库类型/存储数据?

谢谢

【问题讨论】:

这可能过于宽泛/自以为是 你是对的....我想知道哪种方法好... 对我来说最重要的区别是我想将数据存储作为记录表还是持久对象来处理。保存的信息可能没有太大差异,但我对编程的看法(对象图与表关系)发生了很大变化。 【参考方案1】:

Core Data 由 Apple 编写,用于基于 Cocoa 的应用程序。它已经包含在操作系统中,经过 10 年的开发,已经在应用商店的数十万个应用程序中使用。

使用第三方库会带来巨大的风险。

我始终推荐在 ios 和 OS X 上使用 Core Data,因为它是由 Apple 编写的,拥有完全支持的开发人员团队,并且是一个成熟的代码库。

使用原始 SQLite 是可能的,但您不会获得与使用 Core Data 相同的性能优势。

Realm 专注于错误的事情。他们的数据迁移系统很可怕,当他们需要关注整体情况时,他们会关注原始速度。他们的目标可能是移动设备,但我不同意他们的目标。

数百条记录对于任何数据库系统来说都不难。当您在设备上获得成千上万条记录时,其中许多记录会由于内存压力而开始下降(即使在 OS X 上也是如此)。

Core Data 旨在帮助缓解内存压力。我不知道有任何第三方框架会这样做。

【讨论】:

您是否愿意澄清一下为什么您觉得 Realm 的“数据迁移系统很可怕”,以及您不同意 Realm 的目标是什么?我也很好奇你觉得速度与“整体情况”之间的权衡。 内存压力是移动设备上最大的问题。速度不是问题,因为持久性很少是应用程序的缓慢部分。与 UI 的集成是另一个重要因素。如果集成很困难,那么应用程序就很难维护。迁移实际上是在领域中手动进行的,手动意味着更多的开发人员级别错误的机会。 非常感谢您对此进行了扩展!【参考方案2】:

我认为最重要的是将 Realm 与其他数据库进行比较。 Realm 使用自己的自己的核心,其他的都是基于SQLite(CoreData 使用SQLite)。 Realm 是第一个专为移动使用而设计的数据库。因此,对于您的案例 (OSX),您必须考虑您的应用是否具有与移动应用相同的功能:设备限制。

领域:

非常快速的方法:参见示例here 快速执行:查看基准here,是的,成千上万的用户记录!

轻量级:嵌入式数据库小于 1MB

但处于测试状态。这意味着它们在不断发展

SQLite:

名称中的“lite”表示它是一个轻型数据库。 github 中有许多库可以为您提供帮助,包括完整的文档和完整的示例。

就我个人而言,我将 Realm 用于我的 OSX 应用程序,尽管它处于 beta 状态,但我拥有我需要的所有功能。 Realm 比 CoreData 更快,为我节省了数千行代码和数月的工作量。 :)

希望对你有所帮助。

【讨论】:

以上是关于OS X 应用程序。存储数据的最佳方式是啥?的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 应用程序中本地存储数据的最佳方式是啥? [复制]

为 iOS/Android 应用程序存储敏感数据的最佳方式是啥?

在 Android Wear OS(即 CSV)上保存和传输智能手表传感器数据的最佳方式是啥?

在 Mac OS X 上分析数学密集型 C++ 应用程序以提高速度的最简单/最佳方法是啥?

本地存储数据的最佳方式是啥(IOS-xcode)

在数据库中存储货币价值的最佳方式是啥?