我正在使用iCloud与Core Data,基于Apple指定的SQLite“库式”应用程序设计。虽然基本功能运行良好,但我担心事务日志及其管理方式。
虽然我的应用程序的数据库不是很大,但它非常活跃,并且在应用程序正在使用时核心数据堆栈会被多次保存。我注意到为每个核心数据保存创建了一个新的事务日志。最终结果是我有一个TON的事务日志,它们比实际的数据库占用更多的空间。
1)事务日志是否会被自动修剪/合并,或者它们会无限期地继续增长,最终会成千上万,占用多少兆字节?似乎手动清除事务日志并重新创建.baseline存档的唯一方法是禁用然后重新启用iCloud(删除无处不在的容器并重新启动)。但这显然不是一个好的解决方案。
2)我的当前架构经常保存核心数据堆栈,即使是微小的更改。通常,这是有道理的,因为我的数据库很小并且通常保存数据库文件始终是最新的。但是,考虑到事务日志的上述问题,我认为我应该尽量减少对数据库的保存。也许是在定时和/或应用过渡状态下这样做。
3)即使我通过减少保存数据库的频率来最小化事务日志的数量,这里似乎也存在问题,因为日志将随着时间的推移而继续增加。最终,“交易日志”设计的好处将成为所使用的iCloud存储量以及添加新设备时初始iCloud同步的负担。
由于Apple提供了非常稀疏的iCloud信息,而且几乎没有提供“最佳实践”的形式,我很感激社区的任何见解。
答案 0 :(得分:3)
我就此问题提出了雷达,并收到了以下答复。他们指出它应该在iOS 5.1中正常工作,但我自己还没有验证过。
澄清任何可能误解以下内容的人。事务日志将由核心数据内部清理。这不应该由应用程序本身执行。
工程部就此问题提供了以下反馈:
在所有活动日志之后,将删除事务日志 同龄人有机会阅读它们,它们超过了阈值 消耗的空间。之前的问题阻止了设备 正确地这样做。