通常在CQRS中,写入DB用于存储长期运行的过程(sagas)的过渡数据.如果你正在同步读写DB(我假设你的意思是两种方式),你可能会做错事.
对于服务期望多个消息的长时间运行的进程,它需要一种在所有消息到达之前临时存储数据的方法.这方面的一个例子是客户注册,其中需要经理批准,需要一周的时间来处理.该服务需要一种在批准到达之前临时存储客户信息的方法.这是写DB用于存储这段临时数据的地方.请注意,在客户获得批准之前,尚未向读取数据库写入任何内容.
当批准最终到达时,服务将从写入DB获取客户信息,完成注册过程并将其写入读取DB.此时,写入DB中的临时客户信息已完成其工作,可以从写入DB中删除.请注意,没有涉及任何双向同步.
对于更简单的流程(例如更改客户名称),可以立即将更改写入读取的数据库.不需要写入写入DB,因为在这种情况下没有临时数据.