知识卡片

记录系统与报表系统的耦合陷阱

普通读书笔记卡 · 1848.g

内容

交易型的记录系统和分析型的报表系统对数据库结构的诉求天然矛盾——一个为高频读写优化,一个为灵活查询优化,硬塞进同一套模式里谁都得将就,报表设计者最终往往绕过分层直接怼数据库,把架构师苦心维护的隔离层彻底击穿。现代做法是用事件流解耦两者:领域服务各自维护优化过的数据库,同时把变更发布到事件流,报表服务订阅该流、异步构建专为查询优化的非规范化数据库,用最终一致性换取双方各自演进的自由。

参考来源

- 位置:《演进式架构(原书第2版)》第8章《演进式架构的陷阱和反模式》8.3.2节「反模式:记录系统之上的报表系统」(源文件:_epub-src/EPUB/xhtml/chapter12.xhtml) - 结论依据:原文明确记录系统和报表系统对数据库结构诉求矛盾,报表设计者绕过分层直接耦合数据库,现代做法用事件流解耦,直接支持卡片论点。 - 原始内容:"很多企业即使有良好的分层架构,也允许报表设计者直接把报表和数据库模式耦合起来,使其丧失了修改数据库结构而不破坏报表的能力……很多微服务架构通过分离行为来解决报表问题……使用事件流或消息队列来构建此类架构……一组报表服务也会监听该事件流,把数据填充到为报表优化过的非规范化数据库中"