gpt4 book ai didi

domain-driven-design - 将遗留数据库迁移到 cqrs/事件源 View

转载 作者:行者123 更新时间:2023-12-05 01:38:00 26 4
gpt4 key购买 nike

我们需要重写具有复杂业务逻辑的旧遗留应用程序。我们考虑使用 cqrs 和事件溯源。但不清楚如何从旧数据库迁移数据。可能我们只需要将它迁移到读取数据库,因为我们无法重现所有事件来填充事件存储。但是我们至少需要为每个聚合在事件存储中创建一些初始记录,比如 AggregateCreated?或者我们需要编写一个脚本并使用所有命令来以我们通常使用事件溯源的方式重新创建聚合?

最佳答案

使用现有数据库或其转换版本作为读取端持久化的开始绝不是一个好主意。您的事件溯源系统需要启动,这样您就可以获得事件溯源的主要好处之一 - 能够使用多语言持久性按需创建预测。

使用命令进行迁移也不是一个好主意,原因很简单,根据定义,命令可能会由于不变控制的前置或后置条件检查而失败。它也没有表达迁移的意思,迁移就是代表当前系统状态,就像现在一样。请记住,当前的系统停留时间不是您可以接受或拒绝的。它是给你的,你的工作就是捕捉它。

此类迁移的最佳实践是发出所谓的迁移事件,例如 EntityXMigratedFromLegacy。当然,工作量可能很大。主要是因为遗留系统模型很可能与新模型不匹配,否则这种迁移的原因并不完全清楚。

通过使用迁移事件,您可以明确声明一个状态从另一个地方原样移动的事实。您将始终了解迁移后的实体如何在新系统中开始其生命周期 - 通过从旧系统迁移或在新系统中初始化。

关于domain-driven-design - 将遗留数据库迁移到 cqrs/事件源 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60249012/

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