对单个模型使用多个NSPersistentStores有什么优缺点?

时间:2013-07-26 22:58:50

标签: ios cocoa-touch core-data

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

1 个答案:

答案 0 :(得分:3)

关于原始问题(多个商店,一个协调员):

两个商店在一个PSC下的潜在优势是你可以在两个sqlite文件之间分配数据(假设你正在使用的商店类型)。例如,如果您希望随应用程序发送预先填充的sqlite文件(您可以通过发送新文件在后续版本中轻松更新),同时仍然在其旁边有用户创建的数据,这可能会有所帮助。

缺点是处理不同商店之间的关系比一个商店更麻烦。

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

使用同一商店的多个协调员肯定有潜在的好处,主要是性能相关。对协调器的任何请求都将锁定它,以便其他人必须等待获取数据或保存数据。通过使用两个协调器,您可以将锁定向下推送到sqlite文件,在该文件中它会变得更快。

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

另请参阅Apple关于Core Data和iCloud的WWDC 2013会议(由于正在进行的开发中心停机而无法链接......)

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