一、数据仓库概述:从概念到核心特征
大家好,我是老周。做数据仓库这行十几年了,今天咱们聊聊最基础也最关键的问题——数据仓库到底是什么。
很多人一听到「数据仓库」,第一反应就是「哦,就是存数据的嘛」。嗯,这话对了一半。存数据没错,但怎么存、为什么存、存完怎么用,这里面的门道可不少。
1.1 什么是数据仓库
数据仓库,说白了就是一个面向分析的、集成的、稳定的、反映历史变化的数据集合。它不是为了支撑日常业务交易而存在的,而是为了帮企业做决策、做分析、做报表。
我习惯用一个比喻来解释:数据库是「记账本」,数据仓库是「分析报告」。
- 记账本:每天记流水账,一笔一笔,实时更新。查余额快,但想分析「过去三个月哪类商品卖得最好」?累死你。
- 分析报告:把流水账整理成结构化的报表,按时间、按品类、按区域汇总。查趋势、做对比,一目了然。
数据仓库就是那个帮你把「流水账」变成「分析报告」的系统。它从各个业务系统(ERP、CRM、POS等)抽取数据,经过清洗、转换、整合,最终形成一个统一的分析视图。
一句话总结:数据仓库是面向分析的、集成的、稳定的、随时间变化的数据集合,用于支持管理决策。
1.2 数据仓库与数据库的区别
这个问题我面试时必问。很多人答不上来,或者答得模棱两可。咱们直接上对比表,一目了然。
| 对比维度 | 数据库(OLTP) | 数据仓库(OLAP) |
|---|---|---|
| 核心用途 | 支撑日常业务交易 | 支撑分析决策 |
| 典型操作 | 增删改查(CRUD) | 批量查询、聚合分析 |
| 数据粒度 | 细粒度(单条记录) | 汇总/轻度聚合 |
| 数据时效 | 实时/准实时 | 批量(T+1为主) |
| 数据冗余 | 低(范式化设计) | 高(星型/雪花型) |
| 历史数据 | 保留近期(通常3-6个月) | 保留长期(数年甚至更久) |
| 用户群体 | 一线业务人员 | 数据分析师、管理层 |
你看,从设计理念到使用场景,完全是两套思路。数据库追求的是「快」——读写快、响应快;数据仓库追求的是「全」——数据全、历史全、分析维度全。
我的经验:千万别想着用数据库直接做分析。我在一个项目里见过有人直接在订单库上跑复杂聚合查询,结果把生产库拖垮了,老板差点没把我骂死。从那以后,我坚持「分析走数仓,交易走数据库」的原则,再也没出过事。
1.3 数据仓库的核心特征
数据仓库有四个核心特征,我习惯叫它「四字真言」:面、集、稳、变。咱们一个一个说。
1.3.1 面向主题
什么意思?数据仓库不是按业务部门来组织数据的,而是按分析主题来组织的。
举个例子:
- 业务系统:按部门分——销售系统、财务系统、库存系统。每个系统只管自己的事。
- 数据仓库:按主题分——客户主题、产品主题、订单主题、销售主题。一个主题可能横跨多个业务系统。
面向主题的好处是:分析人员不用关心数据从哪来,只需要关注「我要分析什么」。比如分析「客户购买行为」,数据仓库已经把客户信息、订单信息、产品信息整合到客户主题下了,直接查就行。
1.3.2 集成
这是数据仓库最核心、也最头疼的特征。说白了,就是把来自不同源头的数据统一口径、统一格式、统一编码。
我遇到过最典型的例子:
- A系统里「性别」存的是「男/女」
- B系统里「性别」存的是「M/F」
- C系统里「性别」存的是「1/0」
如果不做集成,分析出来的结果就是灾难。数据仓库要做的事情就是:把「男/M/1」统一成「男性」,把「女/F/0」统一成「女性」。
避坑指南:我曾经接手过一个项目,前团队没做数据集成,直接把各系统的数据原样拉进数仓。结果做「全国客户性别分布」分析时,男性占比120%——因为同一个客户在三个系统里被重复统计了三次。嗯,从那以后,我要求每个数据源入库前必须做去重+标准化。
1.3.3 非易失
数据仓库里的数据是只读的。一旦写入,原则上不允许修改和删除。
为什么?因为数据仓库的核心价值是还原历史。你今天改了昨天的数据,那昨天的报表就变了,历史分析就失真了。
实际操作中:
- 数据仓库只有批量加载和查询两种操作
- 没有UPDATE和DELETE(除非数据确实有误)
- 错误数据通过新增修正记录来弥补,而不是直接覆盖
你想想看,如果财务分析发现上个月的营收数据被人改过,那审计怎么办?所以,非易失是数据仓库的底线。
1.3.4 随时间变化
数据仓库会持续记录数据的变化过程。它不只是保存当前状态,还保存历史状态。
举个例子:
- 数据库:客户地址变了,直接UPDATE,旧地址就丢了
- 数据仓库:客户地址变了,新增一条记录,标记生效时间和失效时间。这样你随时可以查「2023年1月时,这个客户的地址是什么」
这个特征在数据仓库里叫「缓慢变化维度」(SCD,Slowly Changing Dimension),后面我们会专门讲。这里先记住一句话:数据仓库记录的是数据的历史轨迹,而不是数据的最新快照。
1.4 知识体系总览
说了这么多,咱们用一张图把数据仓库的核心知识体系串起来。这张图我每次培训都会画,算是我的「传家宝」了。
1.5 小结
这一章咱们把数据仓库的「根」扎下来了。记住三件事:
- 数据仓库是什么:面向分析的、集成的、稳定的、随时间变化的数据集合
- 和数据库的区别:OLTP vs OLAP,交易 vs 分析,实时 vs 批量
- 四个核心特征:面向主题、集成、非易失、随时间变化
这些概念看起来简单,但真正落地的时候,每一个特征背后都有一堆坑等着你。后面我们会一步步展开,从需求调研到模型输出,把每个环节都掰开揉碎了讲清楚。