use*_*696 5 oop postgresql events domain-driven-design
我一直在阅读有关事件采购的内容,虽然我发现这是一个很自然的方法来解决几个问题,但我并不太了解如何将事件存储在实践中.
在互联网上搜索一下我发现Vaughn Vernon 撰写的这篇文章谈到了在DDD中存储聚合的简单方法.虽然它不是专门针对事件来源,但他提出了一种使用PostgreSQL 存储域事件的方法.
在他的做法,我们有一个表Events有一个id和JSON data领域.这给了很多自由,因为我们可以存储任何JSON数据,因此我们可以存储各种事件.
但是让所有事件都对应于单个表中的所有聚合,让我有点担心.
因此,当我们存储事件以使用事件采购时,我们应该如何进行?我可以看到三个选项:
遵循文章中用于域事件的想法,并将所有内容存储在单个表中.
每个事件创建一个表.这里的缺点是我们需要跟踪每个聚合的事件,并且对于每个聚合,可以有各种类型的事件.所以这很容易导致一个巨大的表号.
为每个聚合创建一个表,并在那里存储该聚合的所有事件.虽然我们最终在同一个表中汇总了不同类型的事件,但它们都与相同的聚合相关.
这三个选项中哪一个更合理?如果没有,那么在使用事件采购时存储事件的正确方法是什么?