gpt4 book ai didi

cqrs - 将关系数据迁移到事件存储

转载 作者:行者123 更新时间:2023-12-05 09:00:06 24 4
gpt4 key购买 nike

我正在使用我自己的 CQRS 模式实现将一个旧项目迁移到 CQRS。我开始此迁移的主要原因是摆脱 n 层架构造成的困惑。然而,与许多其他项目一样,该项目正在使用关系数据存储。

此过程中的当前状态是我有进行更改的命令和隔离查询的查询对象。这意味着从客户端到服务器,我有一个 CQRS-ish 方式来更改和查询数据,尽管我没有发布任何来自更改的事件,也没有非规范化的读取存储。我应该提一下,我也有非常贫血的 DTO 作为我的“领域模型”。所有行为都分布在 n 层及其处理程序、管理器和所有那些可怕的层中。

我想知道如何进行下一步。我现在想要的是开始构建一个负责其行为的领域模型,原因是我想开始使用事件存储作为事实来源,这让我想到了我的问题:

如何将数据从关系数据存储迁移到事件存储?

我有一个非常规范化的数据模型,其中包含非常重要的数据,必须进行迁移。我明白我不能指望从这些数据中捕捉到任何意图,因为它已经死了,但我应该如何处理它?我应该创建大量迁移命令吗?很高兴听到您的经验。

最佳答案

我还没有机会尝试这个,但我想尝试的东西会在多个阶段起作用:

  1. 首先列出系统需要的所有事件。
  2. 接下来将 View 引入关系数据库以表示事件。
  3. 编写自定义实用程序以从 View 中进行选择以构建正确的事件对象。
  4. 让自定义实用程序以正确的顺序将事件对象写入事件存储。
  5. 最后确保从事件存储中刷新非规范化 View 模型。

我认为将事件写入事件存储的顺序有点棘手,需要多加思考。但是鉴于这是一个迁移过程,所以只要域的最终状态是正确的,我认为这并不重要。如果您的关系表有时间戳,那么这可能会有所帮助。

我决定构建事件对象比创建命令更合适,因为关系数据代表过去发生的操作的域。

关于cqrs - 将关系数据迁移到事件存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6514492/

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