我正在开发一个关键的旧系统,该系统的数据模型有更改的风险。该系统的工作量由很少的写入和大量的读取组成。
现在,我需要向一些客户端公开一些新的API。要实现这些API,我需要创建新记录或合并旧系统中的多个记录。
考虑到与更改遗留系统相关的风险以及新API中所需数据的复杂性,对我来说,一种解决方案是使用Reporting Database。
另一个可能的解决方案可能是使用类似CQRS的体系结构,以便旧系统继续使用其自己的数据模型(命令部分)存储数据,并使用消息代理将任何更改(事件)传达给另一个系统。 ,以适合客户端查询的方式(查询部分)存储数据。因为此系统总体上是整体的,所以我的事件只能包含已更改实体的标识符,而“查询”部分可以通过直接查询遗留系统的共享数据库来检索完整记录。
我知道与CQRS体系结构相关的复杂性,特别是在分布式系统中。从表面上看,它似乎解决了许多困难,包括修改遗留系统。但是我仍然不确定使用CQRS解决我所描述的问题是否是一个好主意,因为有人认为CQRS仅应在Greenfield项目中使用。
任何建议将不胜感激。