📘OLAP 与数据仓库课程笔记(完整详细版)
一、概述
1. OLTP 与 OLAP 的区别
特性 | OLTP(在线事务处理) | OLAP(在线分析处理) |
---|---|---|
查询类型 | 短小频繁的事务查询 | 少量但复杂、耗时长的分析查询 |
数据更新 | 实时更新 | 定期批量更新 |
应用场景 | 收银系统、机票预订 | 市场趋势分析、销售预测 |
数据来源 | 单个业务系统 | 多个系统的集成数据 |
二、数据仓库(Data Warehouse)
1. 定义
- 数据仓库是多个数据源的数据集成,集中存储,供分析使用。
- 通常定期从源数据库复制数据,如每天或每周一次。
2. 构建方式
- ETL(Extract, Transform, Load):
- 提取:从各个业务数据库中提取数据
- 转换:清洗、格式统一、标准化等
- 加载:将数据加载到数据仓库中
3. 用途
- 支持复杂的分析型查询(OLAP)
- 避免对 OLTP 系统造成性能压力
三、星型模式(Star Schema)
1. 组成结构
✅ 事实表(Fact Table)
- 包含度量值(如销售额)和维度键
- 示例:
Sales(bar, beer, drinker, day, time, price)
✅ 维度表(Dimension Tables)
- 描述事实表中的实体信息
- 示例:sql
Bars(bar, addr, license) Beers(beer, manf) Drinkers(drinker, addr, phone)
2. 可视化图示
+-----------+
| Dimension |
| Tables |
+-----+----+ +---+----+ +-----+----+
| Beers | | Bars | | Drinkers |
+---------+ +--------+ +----------+
\ | /
\ | /
\ v /
+--------------+
| Fact Table |
| Sales |
+--------------+
3. 维度属性 vs 依赖属性
- 维度属性:对应维度表的主键,如
bar
,beer
,drinker
,time
- 依赖属性:由维度属性决定的值,如
price
四、ROLAP 与 MOLAP
类型 | 全称 | 描述 |
---|---|---|
ROLAP | Relational OLAP | 使用关系型数据库支持星型模式,适合大数据量 |
MOLAP | Multidimensional OLAP | 使用多维数据库,以“数据立方体”形式组织数据,适合快速聚合查询 |
五、数据立方体(Data Cube)
1. 概念
- 维度 = 维度表的主键(如 bar, beer, drinker, time)
- 点 = 一个具体的事实(如某个时间在某酒吧购买某啤酒的价格)
- 边界(Marginals)= 对某些维度进行聚合的结果(如 SUM(price) over bar)
2. 示例
text
cube[bar="Joe's Bar", beer="Bud", drinker="Jim", time="*"]
→ 表示 Jim 在 Joe’s Bar 所有时间购买 Bud 的总价格
3. 聚合可视化
price
/|\
/ | \
bar beer drinker
六、操作:上卷(Roll-Up)与下钻(Drill-Down)
1. 上卷(Roll-Up)
- 合并维度,向上汇总
- 示例:按“酒吧”维度上卷 → 得到每个饮者在所有酒吧购买 Bud 的总价
2. 下钻(Drill-Down)
- 分解维度,向下细化
- 示例:发现 Joe’s Bar 销售 A-B 啤酒较少,进一步查看具体哪种 A-B 啤酒销量低
✅ 示例对比:
初始数据(按酒吧、饮者分组)
Bar | Jim | Bob | Mary |
---|---|---|---|
Joe’s Bar | 45 | 33 | 30 |
Nut-House | 50 | 36 | 42 |
Blue Chalk | 38 | 31 | 40 |
上卷(按酒吧)
Drinker | Total (A-B) |
---|---|
Jim | 133 |
Bob | 100 |
Mary | 112 |
下钻(按啤酒)
Beer | Jim | Bob | Mary |
---|---|---|---|
Bud | 40 | 29 | 40 |
Miller | 45 | 31 | 37 |
Bud Light | 48 | 40 | 35 |
七、数据挖掘(Data Mining)
1. 定义
- 从海量数据中发现有用的信息和模式
- 不是简单统计,而是发现隐藏的关联、聚类、趋势等
2. 应用场景
- 用户行为聚类(如网页主题分类)
- 检测异常行为(如信用卡欺诈)
- 推荐系统(如亚马逊推荐商品)
八、购物篮分析(Market Basket Analysis)
1. 原理
- 寻找经常一起出现的商品组合(频繁项集)
- 支持度(Support):项集出现在多少个购物篮中
2. SQL 实现(寻找频繁商品对)
sql
SELECT b1.item, b2.item
FROM Baskets b1, Baskets b2
WHERE b1.basket = b2.basket AND b1.item < b2.item
GROUP BY b1.item, b2.item
HAVING COUNT(*) >= s;
3. Apriori 算法优化
步骤:
- 先找出所有高频单品(单个商品出现次数 ≥ s)
- 仅基于这些高频单品构建候选商品对,减少计算量
优点:
- 减少连接的数据量
- 显著提升性能
✅ 示例:
假设超市有 10,000 种商品,平均每个购物篮 10 件,支持度阈值为 1%
- 最多只有 1/10 的商品可能是高频项
- 可节省大量计算资源
九、总结对比表
概念 | 说明 |
---|---|
OLTP | 短小、频繁、实时事务查询 |
OLAP | 复杂、分析型、批量处理 |
数据仓库 | 整合多个源系统的只读数据库 |
星型模式 | 事实表 + 维度表 |
ROLAP | 基于关系型 DBMS 的 OLAP 实现 |
MOLAP | 基于多维模型的 OLAP 实现 |
数据立方体 | 多维数据结构,支持聚合与切片 |
Roll-Up | 向上汇总,减少维度 |
Drill-Down | 向下细化,增加维度 |
数据挖掘 | 发现隐藏模式和趋势 |
购物篮分析 | 寻找商品组合规律,用于营销策略 |
十、关键概念总结
- OLAP 是数据分析的核心技术,适用于大规模聚合查询。
- 数据仓库是 OLAP 的基础,通过 ETL 流程整合数据。
- 星型模式是数据仓库中最常见的结构,包含事实表和维度表。
- 数据立方体提供多维视角,便于聚合分析。
- Roll-Up 和 Drill-Down是 OLAP 中常用的两种操作方式。
- 数据挖掘是从大数据中发现价值的过程,常用于市场分析、欺诈检测等。
- Apriori 算法能高效找出购物篮中的频繁项集,优化 SQL 查询性能。