我想我理解 ES + CQRS 上下文中读取模型的想法(如果不是,请纠正我)。但是,我仍然对在“严肃”报道的背景下使用它有一些疑问。假设我使用关系数据库和一些 ORM 来处理我的读取模型。一个基本的“汇总统计读取模型”可能如下所示:
class SummaryStats1
{
public Guid TypeId { get; set; }
public string TypeName { get; set; }
public Guid SubTypeId { get; set; }
public string SubTypeName { get; set; }
public int Count { get; set; }
}
给定一个事件:
TypeId = 3acf7d6f-4565-4672-985d-a748b7706a3e
TypeName = Bla1
SubTypeId = 41532aa1-f5d1-4ec4-896b-807ad66f75fc
SubTypeName = Bla2
规范化器将:
(1) 检查是否存在上述组合的实例(由 TypeId、TypeName、SubTypeId、SubTypeName 定义) (2) 如果没有实例,则创建实例并将 Count 设置为 1。如果有它会将计数增加一。
这是可接受的报告方法吗?我想人们可以针对这种非规范化的数据结构(用于过滤和其他 sql 'projections')运行非常有效的选择:
SELECT TypeName, Sum(Count) FROM SummaryStats1 GROUP BY TypeName
CQRS/ES 专家会同意这一点吗?这是做事的“方式”(即创建这些专用的报告阅读模型)吗?非常感谢对源代码/真实示例的任何引用。