对单个模型使用多个 NSPersistentStore 的优缺点是啥?

Posted

技术标签:

【中文标题】对单个模型使用多个 NSPersistentStore 的优缺点是啥?【英文标题】:What are the pros and cons of using multiple NSPersistentStores for a single model?对单个模型使用多个 NSPersistentStore 的优缺点是什么? 【发布时间】:2013-07-26 22:58:49 【问题描述】:

假设我有一个模型,但我想将对象保存到超过 1 个 NSPersistentStores。假设我使用单个 NSPersistentStoreCoordinator 来管理这些商店,这种设置的优缺点是什么?

【问题讨论】:

【参考方案1】:

关于原问题(多家店铺,一名协调员):

一个 PSC 下的两个存储的潜在优势是您可以在两个 sqlite 文件之间分散数据(假设这是您使用的存储类型)。这可能很有帮助,例如,如果您想在应用程序中发布预填充的 sqlite 文件(您可以通过发布新文件在后续版本中轻松更新该文件),同时旁边仍然有用户创建的数据。

缺点是处理不同店铺之间的关系比一个店铺内要麻烦。

关于这个问题的另一个答案(多个协调员):

在同一个商店中使用多个协调器当然有潜在的好处,主要与性能相关。对协调器的任何请求都会将其锁定,因此其他所有人都必须等待获取数据或保存数据。通过使用两个协调器,您可以将锁向下推到 sqlite 文件,它来来去去的速度要快得多。

此外,使用 write-ahead-logging 而不是回滚日志的 sqlite 存储允许多个读取器、单个写入器访问存储。通过使用两个协调器,您可以利用 sqlite 的并发能力。 Apple 内部也在使用这种模式。

另请参阅 Apple 关于 Core Data 和 iCloud 的 WWDC 2013 会议(由于开发中心持续中断,无法链接...)

但请记住,所有这些都非常深奥,几乎在所有情况下都不是必需的。

【讨论】:

感谢您的回答。如果您有更多关于此主题的参考资料,如果您将它们扔给我,我将不胜感激。与您给出的答案相比,我的搜索只提供了模糊的答案。

以上是关于对单个模型使用多个 NSPersistentStore 的优缺点是啥?的主要内容,如果未能解决你的问题,请参考以下文章

在单个 GPU 上并行拟合多个 Keras 模型

如何在单个列上使用 groupby 并对 Pandas 中的多个列进行比较?

WPF - 使用具有多个 ViewModel 的单个模型

使用具有单个 sqlalchemy 模型的多个数据库

如何使用单个工匠命令在 Laravel 8 中创建多个模型?

在 joomla 3.0 中使用单个模型从表单写入多个表