# 命令查询分离

> 命令查询职责分离。

- ID: m06363
- 分类: system
- 领域: 系统论

## 定义

命令查询职责分离。将系统的“读”（Query）操作和“写”（Command）操作分离到不同的模型甚至数据库中。脚手架作用：性能解耦。如果不分离，复杂的查询会拖慢写入，复杂的写入会阻塞查询。把它们拆开，分别优化，“读”可以加缓存，“写”可以排队。

## 机制

CQRS 是 CQS（命令查询分离）在架构层面的延伸。核心假设是：**读模型与写模型的优化目标不同**——写关注一致性与业务规则，读关注性能与展示。分离后两边可独立伸缩、独立建模：读侧可冗余、加缓存，写侧可异步排队。本质是对"读写"这一对矛盾需求的职责解耦。

## 练习

1. 区分系统的 Command（写/变更状态）与 Query（读/返回数据）； 2. 为两者建立独立的模型/对象； 3. 写侧处理命令并更新写库； 4. 读侧直接从读库/视图取数； 5. 通过事件或消息同步两侧数据（最终一致）； 6. 按实际负载分别伸缩读写资源。

## 脚手架用法

性能解耦。如果不分离，复杂的查询会拖慢写入，复杂的写入会阻塞查询。把它们拆开，分别优化，“读”可以加缓存，“写”可以排队。

[阅读网页](https://thinkingmodels.site/entries/detail/m06363)
