1

在 CQRS 中,事件源是我们唯一真正的信息来源,永远不要相信您读取的数据模型,那么如果我需要显示一个确认消息框,其中显示例如“用户 X 的最后 10 次操作”,那么我应该使用什么方法?

1 - 发送一个命令来查询我的聚合的最后 10 个操作,然后聚合发布我在 UI 中处理的包含用户操作的 10 个事件?

2 - 或者简单地说,查询我的读取模型?

CQRS 在我的情况下怎么说?

多谢你们。

约翰·史密斯

4

1 回答 1

1

永远不要相信您的读取模型并不意味着您需要从写入数据库读取数据。这意味着您在读取模型中的数据可能会变得无效。在这种情况下,您应该在您的事件处理程序中进行一些修复,并且因为您只信任写入数据库,从您的事件(写入数据库)重建读取数据库。

简单的规则(至少我遵循这些规则):

  1. 始终从读取数据库中读取数据。
  2. 只有在将事件应用于 AR 之前需要验证某些内容并且需要重播事件时(在您的域内应该只有一种访问 AR 的方法 - GetById),您才能访问聚合根。

在您的示例中,一切都很简单:处理用户 AR 消息并以您需要的格式存储事件(您应该从事件映射数据,而不仅仅是存储事件)您需要在用户中(在 nosql 数据库的情况下是嵌套集合)或在单独的表中(如果是 sql)数据库。

于 2011-07-29T06:55:10.523 回答