【发布时间】:2012-02-01 01:03:04
【问题描述】:
我将 iCloud 与 Core Data 结合使用,基于 Apple 指定的 SQLite“库式”应用程序设计。虽然基本功能运行良好,但我担心事务日志及其管理方式。
虽然我的应用程序的数据库不大,但它非常活跃,并且在使用应用程序时会多次保存核心数据堆栈。我注意到为每个核心数据保存创建了一个新的事务日志。最终结果是我拥有大量事务日志,它们占用的空间比实际数据库多得多。
1) 事务日志是否会自动修剪/合并,还是会继续无限增长,最终达到数千并占用数兆字节?似乎手动清除事务日志并重新创建 .baseline 存档的唯一方法是禁用然后重新启用 iCloud(删除普遍存在的容器并重新开始)。但这显然不是一个好的解决方案。
2) 我当前的架构经常保存核心数据堆栈,即使是很小的更改。一般来说,这是有道理的,因为我的数据库很小,并且经常保存可以确保数据库文件始终是最新的。但是,考虑到事务日志的上述问题,我认为我应该尽量减少对数据库的保存。可能会定时和/或在应用转换状态下这样做。
3) 即使我通过减少保存数据库的频率来最小化事务日志的数量,这里似乎存在一个问题,因为随着时间的推移,日志的数量会继续增长。最终,“事务日志”设计的好处将成为 iCloud 存储量的负担,以及添加新设备时的初始 iCloud 同步。
由于 Apple 提供的有关 iCloud 的信息非常少,而且几乎没有以“最佳实践”的形式提供,因此我希望社区提供任何见解。
【问题讨论】:
-
我认为这是一个很好的问题,但我建议您也可以在 Apple 开发者论坛中提出这个问题,以便您从实际设计和开发它的工程师那里获得反馈。他们可能会以错误报告/功能请求的形式要求您提供具体反馈。
标签: iphone ios core-data icloud