背景
在数据仓库领域,为了平衡分析需求和性能成本,一般会使用非范式的表结构进行建模,
而最常用的是拉链表、流水表、全量表和增量表。
拉链表
数据仓库中的拉链表是一种特殊的数据组织方式,主要用于处理缓慢变化维(Slowly Changing Dimension, SCD)问题。
它通过记录数据的历史版本记录,也即每一次变化前后的内容来维护数据的完整性和一致性。
拉链表优点是节省存储成本,相比于存储全量的历史数据,拉链表能够合并或者覆盖相同内容的版本记录,从而减少存储成本。
所以适用场景一般是数据量很大的分析场景。
流水表
流水表是一种按照时间顺序记录数据变化的表类型。流水表记录了数据的每一次变化,包括新增、修改等操作。
这些操作一般是被触发系统事件,或者爬虫等数据采集的记录,它通常包含数据的原始记录和变更记录,以及相关的时间点。
流水表优点是保存了完整的历史记录,提供了数据变化的完整历史,有助于详细的变动分析。
对于需要满足审计和合规性要求的场景,流水表也可以提供证明。
全量表
全量表指包含数据所有内容的表,也即它会存储数据所有历史的完整记录,不受时间范围或数据变更的限制。
大部分情况下,全量表用于数据的总体的分析需求还有备份需求。
与其他表类型相比,全量表包含更多的数据信息,所以一般更新频率较低。
增量表
增量表是一种专门设计用来存储在一定时间间隔内发生变化的数据的表,它不包含未变更的数据记录。
因为仅记录在特定时间周期内变化的数据,减少了数据处理的规模,所以主要用于快速更新数据仓库中的数据。
与全量表相比,增量表的更新频率更高,需要包含的数据更少。
所以也更适用于需要频繁更新和查询最新数据的场景,例如日常业务报告、实时监控和趋势分析。