1. 数据仓库前世今生:从烟囱式开发到数据孤岛,为什么我们需要数据仓库?
大家好,我是老周。做数据这行快十五年了,今天咱们聊聊数据仓库的起源。
很多人刚接触数据仓库时,会觉得这东西太复杂——分层、建模、ETL,一套套理论。但说白了,数据仓库的出现,是被逼出来的。
为什么这么说?
咱们回到二十年前,看看那时候的企业是怎么做数据的。
1.1 烟囱式开发:每个系统各玩各的
早期企业信息化,业务部门各自为政。财务部上了套财务系统,销售部买了CRM,人事部搞了HR系统。每个系统都有自己的数据库,自己管自己的数据。
这种模式,我称之为「烟囱式开发」。
每个系统就像一根独立的烟囱,从数据采集到报表输出,全在自己内部完成。系统之间几乎没有数据交换。
烟囱式系统的典型特征:
- 每个系统独立建设,技术栈五花八门
- 数据标准不统一,同一个客户在不同系统里可能叫法不同
- 报表各自出,口径经常对不上
- 数据重复存储,维护成本高
我记得刚入行时,在一家零售企业做项目。财务部说上个月销售额是5000万,销售部说是4800万,两个部门领导在会议上吵得不可开交。最后查下来,财务部算的是「已开票金额」,销售部算的是「已下单金额」。你说谁错了?都没错,但口径不一样。
这就是烟囱式开发的典型问题——数据孤岛。
1.2 数据孤岛:看似有数据,实际用不了
数据孤岛不是技术问题,是组织问题。每个部门都把自己的数据当宝贝,不愿意共享。但更深层的原因是:数据格式不统一,想共享也共享不了。
举个例子,客户性别这个字段:
| 系统 | 字段名 | 取值 |
|---|---|---|
| CRM系统 | gender | M/F |
| 订单系统 | sex | 0/1 |
| 客服系统 | xb | 男/女 |
你看,同一个意思,三个系统三种表达。想做个全量客户分析?先花两周时间做数据清洗吧。
我曾经帮一家银行做数据整合,光是「客户名称」这个字段,就发现了17种不同的写法。有的带空格,有的带全角半角,有的公司名后面加了个「有限公司」,有的没加。这种活,干一次就怕了。
数据孤岛的代价:
- 决策靠「拍脑袋」——因为拿不到全局数据
- 重复开发——每个部门都在做类似的报表
- 数据不一致——同一个指标,不同部门算出来不一样
- 维护成本高——系统之间靠人工导Excel传数据
1.3 为什么需要数据仓库?
数据仓库的出现,就是为了解决上面这些问题。
Bill Inmon在1992年提出了数据仓库的概念。他说:数据仓库是一个面向主题的、集成的、非易失的、随时间变化的数据集合。
翻译成人话就是:
- 面向主题:按业务主题组织数据,不是按系统
- 集成:把各个系统的数据统一清洗、转换
- 非易失:数据写入后一般不修改,只查询
- 随时间变化:保留历史数据,可以回溯
说白了,数据仓库就是企业的「统一数据平台」。所有业务系统的数据,经过清洗、整合后,统一存储在这里。报表、分析、数据挖掘,都从这个平台取数。
这样做的好处很明显:
- 口径统一:同一个指标,只有一个定义
- 减少重复:数据一次加工,多处使用
- 支持决策:可以跨系统做综合分析
- 历史追溯:能看到数据的变化过程
我的经验:数据仓库不是一蹴而就的。我见过很多团队一上来就想建「大而全」的数据仓库,结果搞了半年出不了成果,最后项目黄了。我的建议是:先解决最痛的问题,比如财务和销售的数据对不上,那就先把这两个系统的数据整合起来。小步快跑,逐步扩展。
1.4 数据仓库的核心架构
数据仓库的架构,我习惯用这张图来表示:
这张图我用了很多年。每次给团队讲数据仓库,我都会先画这张图。它把数据仓库的核心流程说清楚了:数据从哪里来,经过什么处理,存在哪里,怎么用。
1.5 数据仓库 vs 传统数据库
很多人分不清数据仓库和传统数据库的区别。我直接列个表:
| 对比维度 | 传统数据库(OLTP) | 数据仓库(OLAP) |
|---|---|---|
| 主要用途 | 日常事务处理 | 分析决策支持 |
| 数据特点 | 当前数据,实时更新 | 历史数据,定期刷新 |
| 操作类型 | 大量增删改 | 大量查询,少量写入 |
| 响应要求 | 毫秒级 | 秒级到分钟级 |
| 数据模型 | 范式化(3NF) | 维度建模(星型/雪花) |
| 数据量级 | GB级 | TB级甚至PB级 |
你看,这两者从根上就是不同的东西。拿数据库来做分析,就像拿轿车去拉货——不是不能,但效率低、成本高。
我曾经遇到一个客户,他们的报表跑在业务数据库上。每次出月报,财务部都要等半天,因为报表查询把数据库锁住了,业务系统也跟着卡。后来我们把报表迁移到数据仓库,问题就解决了。业务系统该下单下单,数据仓库该分析分析,互不干扰。
1.6 小结:数据仓库解决了什么?
回到最开始的问题:为什么我们需要数据仓库?
说白了,就三个字——统一、高效、可靠。
- 统一:统一的数据标准、统一的计算口径、统一的存储
- 高效:一次加工、多次使用,减少重复开发
- 可靠:数据质量可控,历史可追溯,决策有依据
数据仓库不是银弹,它解决不了所有问题。但它解决了企业数据管理中最基础、最核心的问题——让数据真正成为资产,而不是负担。