定义:
数据库:用于存储和操作业务数据的系统,用于即时任务的处理(做事)
数据仓库:专门为分析而构建的数据存储系统,用于数据的深度分析(分析)
核心区别:
数仓采用星型模型优化大数据量查询,分为事实表和维度表:
- **事实表:**位于中心,记录核心可度量的业务事实(比如销售额、销售数量)。它包含多个外键(比如产品键、客户键、时间键等),用于关联到各个维度表。
- **维度表:**围绕在事实表周围,描述业务的上下文(比如谁、什么时间、什么产品),这里是有意保留冗余的关键所在。
在执行分析查询时,数据库只需将事实表与少数几张宽维度表进行关联,就能一次性获得所有必要的筛选和分组条件(比如华南地区、数码相机),这能极大地减少复杂耗时的表连接操作,从而实现了查询性能的数量级提升。
总结:
| 关键维度 | 数据库 | 数据仓库 |
|---|---|---|
| 设计目的 | 支撑业务处理日常事务(增删改查)保证数据的即时一致性 | 支持为分析决策整合海量历史数据,为复杂查询和数据分析提供平台 |
| 数据结构 | 规范化设计(第三范式):通过拆分表来消除数据冗余,表结构复杂,关联多 | 反规范化设计(星型、雪花模型):有意识地保留冗余,将数据组织成事实表和维度表,表结构简单,减少复杂查询 |
| 使用场景 | 网购下单、订单查询等实时业务流程 | 生成报告、分析客户行为等战略分析 |
| 性能优化方式 | 使用索引、事务锁等机制保证高并发快速响应 | 优化“查询”分析速度针对少量复杂、庞大的查询操作进行优化,通过列式存储、大量预聚合(如物化视图)等技术来快速扫描海量数据。 |
| 数据流向与更新方式 | 实时更新,生产数据 | 定期批量更新数据,从各个数据库中抽取数据后经过转换清洗后加载入库,集成消费数据 |
数据库是面向业务操作的实时数据系统,数据仓库是面向战略分析的历史数据平台