sql-server - 事件溯源 : Read Model Normalized or Denormalized

标签 sql-server asp.net-core cqrs event-sourcing

在事件溯源中,读取模型投影应该规范化(关系)还是非规范化(宽水平)?公司使用两个 SQL Server 2016 数据库:WriteLogDatabase 和 ReadProjectionDatabase。 (公司目前没有 NoSQL MongoDB,这会有所帮助)

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

谢谢,

最佳答案

在事件溯源中,您的事件是事实的来源,您的读取模型是从这些事件中计算出来的。
您可以计算标准化和非标准化读取模型 - 选择取决于您。

读取模型应该针对读取/查询操作进行优化。因此,如果非规范化读取模型允许您避免连接读取 - 使用它。

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

关于sql-server - 事件溯源 : Read Model Normalized or Denormalized,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49746788/

相关文章:

java - SQL 和 Java 返回不同的日期?

asp.net-core - 如何为 ASP.NET Core 注册和使用 MediatR 管道处理程序?

events - 为什么命令和事件要分开表示?

microservices - 需要使用/Cosmos DB 抵御对事件溯源架构的古怪挑战

sql-server - SQL Server 中的存储过程在许多用户使用时执行速度非常慢

SQL Server 从另一个表插入数据

c# - "Enable Always on support..."用于通过 C# 或 powershell 的 SSIS

c# - 通过调用 'IServiceCollection.AddHealthChecks' 添加所有需要的服务

c# - ASP.NET Core 2.1 无法识别配置扩展

Golang 和 DDD 域建模