知识卡片

反范式化有边界

普通读书笔记卡 · 1788.c

内容

服务层经常需要反范式化来换低延迟查询,但反范式化只应存在于派生视图中。核心主数据集仍保持事实化和规范化,避免为了某个读模型牺牲长期可演化性。

参考来源

- 位置:《大数据系统构建:可扩展实时数据系统构建原理与最佳实践》第10章《服务层概述》"10.2 规范化/非规范化问题的服务层解决方案"一节(源文件:_epub-src/OEBPS/Text/080.xhtml) - 结论依据:原文明确"在批处理层中,你可以随心所欲地规范化主数据集……服务层是完全根据它服务的查询来定制的,所以可以根据需要进行优化来获得最大的性能",并说明"如果一个错误引发了不一致问题,那么可以通过从头开始重新计算服务层,很容易地纠正它们",划清了主数据集必须保持规范化、只有服务层可以反范式化的边界。 - 原始内容:幸运的是,Lambda架构中主数据集和服务层之间的分离,解决了规范化与非规范化的问题。在批处理层中,你可以随心所欲地规范化主数据集……作为互补,服务层是完全根据它服务的查询来定制的,所以可以根据需要进行优化来获得最大的性能。服务层的这些优化可以远远超过非规范化。