【发布时间】:2020-03-02 09:01:17
【问题描述】:
我正在开发一个关键的遗留系统,它的数据模型存在更改的风险。该系统的工作负载由相当少的写入和大量读取组成。
现在,我需要向一些客户端公开一些新的 API。要实现这些 API,我需要创建新记录或合并旧系统中的多个记录。
考虑到与更改旧系统相关的风险以及新 API 所需数据的复杂性,我的一个解决方案是使用Reporting Database。
另一种可能的解决方案是使用类似 CQRS 的架构,以便旧系统继续使用自己的数据模型(命令部分)存储数据,并使用消息代理将任何更改(事件)传达给另一个系统,它以适合客户端查询的方式存储数据(查询部分)。因为这个系统整体是单体的,所以我的事件只能包含改变实体的标识符,而查询部分可以通过直接查询遗留系统的共享数据库来检索完整的记录。
我知道与 CQRS 架构相关的复杂性,尤其是在分布式系统中。在纸面上,它似乎解决了很多困难,包括修改遗留系统。但是我仍然不确定使用 CQRS 来解决我描述的问题是否是一个好主意,因为有些人认为 CQRS 应该只用于新建项目。
任何建议将不胜感激。
【问题讨论】:
标签: architecture data-modeling cqrs software-design