写入或持久化数据的与读取或查询数据的功能有完全不同的需求。将读侧和写侧关注点分开,可以分别为两者提供最好的体验。一个试图同时封装读和写操作的模型很少能做得很好。
使用CQRS模式,写侧实体将重点放在更新命令上,您可以针对不同类型的查询和报告作业优化读侧。这种分离提供了更好的可伸缩性,因为读侧可以独立于写侧扩展到许多节点,而且通常在读侧需要大量的可伸缩性。
例如,在一个投标系统中,重要的是“接受写操作”并尽快回应投标者我们已经接受了投标,这意味着写操作吞吐量是最重要的。同样的应用程序可能会有一些复杂的统计视图,或者分析师可能会使用这些数据来找出最佳的投标策略和趋势。这些读侧用例往往需要某种富有表现力的查询功能,以及与写侧不同的数据模型。将读侧与写侧分离的结果是最终的一致性。对写侧进行的更新可能不会即时对读侧可见。