事件溯源:读取规范化或非规范化模型

Event Sourcing: Read Model Normalized or Denormalized

在 Event Sourcing 中,Read Model Projection 应该规范化(关系)还是非规范化(宽水平)?公司正在使用两个 SQL Server 2016 数据库:WriteLogDatabase 和 ReadProjectionDatabase。 (公司目前没有NoSQL MongoDB,这会有所帮助)

在金融公司中,我们导入平面文件(多个 1 行客户记录),应用业务过滤器、验证、转换逻辑,然后 API 将它们插入多个表:客户地址、客户贷款类型、客户Phone,客户财务报表。当我们在未来的平面文件中得到一个新行时,我们必须再次将所有表重新合并为 1 行,提取所有数据,进行相应的更新,并将数据反馈到多个表中。只是想知道在 Event Sourcing 中将所有内容都放在 1 个宽的水平非规范化方法中是否更好?

谢谢,

在事件溯源中,您的事件是真实的来源,您的读取模型是根据这些事件计算得出的。 您可以计算规范化和非规范化的读取模型 - 选择取决于您。

读取模型应针对 read/query 操作进行优化。因此,如果非规范化读取模型让您避免在读取时加入 - 使用它。

另一方面,如果您的读取模型用于某些 free-form 分析和报告工具,则规范化形式对用户来说可能更方便。