如何设计 MongoDB 数据模型来存储 Event Sourcing 事件

Moh*_*sen 5 database-design mongodb cqrs event-sourcing

如果我创建单个table(或documentin document databases)每个aggregate type,我可以在重构write侧面时合并数据库或分片它们microservices,结果应用程序变得更具可扩展性,并且还提高了加载速度events

在设计event store类似的东西时,我应该注意什么副作用吗?

编辑:

我目前正在使用MongoDb.

如果我创建一个collectionperaggregate id怎么办?还是一个databaseperaggregate type和一个collectionper aggregate id...?

这在性能、数据管理的简易性、可维护性或进一步的可扩展性方面有问题吗?

Voi*_*son 6

如果我创建单个表(或文档数据库中的文档),则每当重构写入微服务时,我都可以合并数据库或对它们进行分片,从而使应用程序变得更具可扩展性。

在设计这样的活动商店时,我应该注意什么副作用吗?

我还没有看到任何关于该设计的权威讨论。

事件源社区中曾讨论过为每种类型的聚合建立一个单独的表。您可以在这里找到该讨论。内容摘要:更有经验的从业者似乎对有人故意这样做感到惊讶。

您应该记住的一件事是,虽然事件是真实的(它们描述了业务感兴趣的东西),但聚合是人为的。如果重新设计聚合边界需要将事件移动到各处,您可能会不高兴。

以下内容可能会有所帮助