在事件源Core Data应用程序中存储事件记录的位置?

时间:2013-05-31 18:44:07

标签: ios objective-c core-data event-sourcing

我正在构建一个使用事件源模式的iOS应用程序;我们的想法是,您应该能够通过重播一系列事件随时重建应用程序状态。

每个活动都带有一个UUID。应用程序的状态存储在持久的Core Data对象图中。

我对事件采购的特定实施保证了“至少一次”向客户提供事件。如果事件多次发生,我需要确保这些后续交付不会影响对象图。

我想保留一个事件记录 - 一组已经处理过的事件UUID。这样,我可以根据事件记录检查传入的事件,如果它们已经被处理,则删除它们。

您在哪里存储活动记录?

需要与持久化的核心数据图“同步”。特别是这意味着:

  • 如果删除了Core Data对象图,则必须删除事件记录
  • 事件记录必须与Core Data对象图一起持久保存

1 个答案:

答案 0 :(得分:1)

您也无法将其存储在Core Data中。就个人而言,如果我已经使用Core Data存储数据,那么我会用它来存储所有数据,这样我就可以使用一个持久性接口,而不是尝试对齐多个不同的接口。

更新1

  

我知道你在哪里拿它。因此,您建议我使用fetchRequest来检查商店中是否存在具有该UUID的实体,而不是将containsObject发送到内存中的一组UUID?由于必须对每个进入的事件执行此检查,我该怎么做才能确保它具有高效性?

进行计数而不是获取。如果计数>> = 1,那么您已经拥有该事件。如果它为零,你就不会。对持久存储执行计数非常快。

其次,使用预先创建的NSFetchRequest(和NSPredicate)并在检查之间保持它。这将减少构建查询所需的时间。