【发布时间】:2016-12-28 13:49:04
【问题描述】:
如果我为每个aggregate type 创建一个table(或document databases 中的document),我可以在重构write 侧的microservices 时合并数据库或对它们进行分片,结果是应用程序变得更具可扩展性,并且还提高了加载events 的速度。
在我这样设计event store 时,我应该注意哪些副作用?
编辑:
我目前正在使用MongoDb。
如果我根据 aggregate id 创建一个 collection 会怎样?
或者每个aggregate type 一个database,每个aggregate id 一个collection ...?
这在性能、数据管理的便利性、可维护性或进一步的可扩展性方面是否存在问题?
【问题讨论】:
-
您是在谈论 Table-Per-Aggregate-Type(每个事件在表中的一行)还是 Document-Per-Aggregate-Instance(每个实例一个文档,事件作为文档内的数组,所有聚合的单个集合)?
-
这个问题是否可以更好地表述为“如何设计我的 MongoDB 数据模型来存储事件溯源事件”?
-
@guillaume3:这种事件数据设计,导致写入端的非线性事件存储(所有聚合都不是在单个表、文档或文件中排序...)我正在寻找它在不同情况下可以提供的问题(特别是 MongoDb)。例如,也许这样的设计对于 Sql 数据库是可以的,但对于 MongoDb 是不行的......
-
Carlos G:我添加了更多信息
-
@Mohsen 在什么方面可以?表现?易于数据管理?可维护性?进一步的可扩展性?如果您的问题是特定于 MongoDB 的,您应该在问题中提及它并添加标签。此外,Q 的标题似乎并没有传达这里真正的问题。
标签: mongodb database-design cqrs event-sourcing