gpt4 book ai didi

domain-driven-design - 事件溯源:聚合根和性能

转载 作者:行者123 更新时间:2023-12-02 09:29:37 25 4
gpt4 key购买 nike

我正在使用事件溯源构建 StackOverflow 克隆。 MVP 很简单:

  1. 用户可以发布问题
  2. 用户可以回答问题
  3. 用户可以对非封闭问题的答案投赞成票和反对票

我已将问题建模为聚合根。一个问题可以有零个或多个答案,一个答案可以有零个或多个赞成票和反对票。

但这会导致严重的性能问题。要给答案投票,必须加载问题(作为聚合根),这需要加载其所有答案。在非事件源 DDD 中,我会使用延迟加载来解决这个问题。但是事件溯源中的延迟加载是非常重要的(http://docs.geteventstore.com/introduction/event-sourcing-basics/)

将问题建模为聚合根是否正确?

最佳答案

首先不要使用延迟加载(同时使用 ORM)。因此,您可能会发现自己处于更糟糕的境地,而不是等待更长的时间。如果您需要使用它,大多数时候这意味着您的模型完全错误。

您可能需要考虑以下事项:

  1. 您期望这个问题有多少个答案。
  2. 如果有人在您提交答案时发布了答案,会发生什么情况。赞成票也是如此。
  3. 赞成票是否只是简单的 +1 而您不再关心它,或者您可以找到用户的所有赞成票,例如将它们更改为反对票(确定赞成票)。

您可能想要使用单独的聚合,不是因为性能问题,而是因为并发问题(问题 2)。

根据性能和您的赞成票的行为方式,您可能会考虑将其建模为值(value)对象。 (问题三)

继续阅读 http://dddcommunity.org/library/vernon_2011/

使用 cqrs 读/写分离可以实现真正的性能提升 http://udidahan.com/2009/12/09/clarified-cqrs/

关于domain-driven-design - 事件溯源:聚合根和性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34517072/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com