我有一个使用 Akka 和 Cassandra 进行事件溯源的应用程序。作为 API 响应的一部分,我需要显示在特定时间范围内发生的特定类型/标签(例如 UpdateEvent)的事件数量。是否存在任何接近的能力来实现这一目标?
我已经阅读了查询插件中的“eventsByTag”查询,据我了解,它提供了事件流及其使用,这会对面向客户端的后端产生巨大的影响。如果我错了请指正。
我认为我需要的是以某种方式查询消息表以按时间线提取事件,或者我应该使用流来填充一组新的读取侧表以实现功能。
Cassandra(以及 Akka Persistence Cassandra 使用的模式)通常不太适合此查询,尤其是因为它将涉及整个键空间的扫描,因此效率相当低。
因此,理想的方法是将事件(例如使用 Lagom 的投影或 Akka 投影)投影到时间序列数据库中(这是 CQRS 的优点之一:能够使用最适合的查询模型来回答问题)。如果您碰巧没有现成的时间序列数据库,那么您可以通过一些努力在更通用的数据库(如 Cassandra 或关系数据库)中实现该功能。