我们有具有复杂业务逻辑的旧版旧版应用程序,需要重写。我们考虑使用cqrs和事件源。但是尚不清楚如何从旧数据库迁移数据。可能我们只需要将其迁移到读取数据库中,因为我们无法复制所有事件来填充事件存储。但是我们至少需要在事件存储中为每个聚合创建一些初始记录,例如AggregateCreated
吗?还是我们需要编写脚本并使用所有命令一个接一个地使用所有命令以通常与事件源相同的方式重新创建聚合?
可能我们需要将其迁移到只读数据库中
不,您的读取模型数据库可以根据写入端随时删除和重新创建,只有写入端才是您的真实来源。
但是我们至少需要在事件存储中创建一些初始记录,以用于每个聚合,例如AggregateCreated?
当然,仅拥有初始事件可能还不够。如果您当前的OrderAggregate有保留,则必须为它具有的每个保留创建ItemReservedEvent。
或者我们需要编写一个脚本,并一一使用所有命令来用我们通常使用事件源的方式重新创建聚合?
感觉就是那样。从数据库中读取旧的聚合/实体,然后尝试将其映射到新的聚合/实体。