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. 口径统一:同一个指标,只有一个定义
  2. 减少重复:数据一次加工,多处使用
  3. 支持决策:可以跨系统做综合分析
  4. 历史追溯:能看到数据的变化过程

我的经验:数据仓库不是一蹴而就的。我见过很多团队一上来就想建「大而全」的数据仓库,结果搞了半年出不了成果,最后项目黄了。我的建议是:先解决最痛的问题,比如财务和销售的数据对不上,那就先把这两个系统的数据整合起来。小步快跑,逐步扩展。

1.4 数据仓库的核心架构

数据仓库的架构,我习惯用这张图来表示:

数据仓库核心架构 业务系统1 (CRM) 业务系统2 (订单) 业务系统3 (财务) 数据源层 ETL 数据抽取、清洗、转换、加载 (Extract, Transform, Load) 数据集成层 数据仓库核心存储 ODS → 明细层 → 汇总层 → 应用层 (面向主题、集成、非易失、随时间变化) 数据存储层 报表系统 (BI报表) 数据分析 (OLAP/Ad-hoc) 数据挖掘 (机器学习) 数据应用层 核心思想:数据从各业务系统流入,经过ETL整合,在数据仓库中统一存储,最后服务于各类应用

这张图我用了很多年。每次给团队讲数据仓库,我都会先画这张图。它把数据仓库的核心流程说清楚了:数据从哪里来,经过什么处理,存在哪里,怎么用。

1.5 数据仓库 vs 传统数据库

很多人分不清数据仓库和传统数据库的区别。我直接列个表:

对比维度 传统数据库(OLTP) 数据仓库(OLAP)
主要用途 日常事务处理 分析决策支持
数据特点 当前数据,实时更新 历史数据,定期刷新
操作类型 大量增删改 大量查询,少量写入
响应要求 毫秒级 秒级到分钟级
数据模型 范式化(3NF) 维度建模(星型/雪花)
数据量级 GB级 TB级甚至PB级

你看,这两者从根上就是不同的东西。拿数据库来做分析,就像拿轿车去拉货——不是不能,但效率低、成本高。

我曾经遇到一个客户,他们的报表跑在业务数据库上。每次出月报,财务部都要等半天,因为报表查询把数据库锁住了,业务系统也跟着卡。后来我们把报表迁移到数据仓库,问题就解决了。业务系统该下单下单,数据仓库该分析分析,互不干扰。

1.6 小结:数据仓库解决了什么?

回到最开始的问题:为什么我们需要数据仓库?

说白了,就三个字——统一、高效、可靠。

  • 统一:统一的数据标准、统一的计算口径、统一的存储
  • 高效:一次加工、多次使用,减少重复开发
  • 可靠:数据质量可控,历史可追溯,决策有依据

数据仓库不是银弹,它解决不了所有问题。但它解决了企业数据管理中最基础、最核心的问题——让数据真正成为资产,而不是负担。