数据仓库系列(一)数据仓库的特点与架构分类--数仓与数据库究竟有什么区别??
文章目录
数据仓库理论介绍:
数据仓库是一个面向主题的,集成的,非易失的且随时间变化的数据集合
一:数据仓库的四大特点:
1):面向主题:
- 主题(Subject) 是在较高层次上企业信息系统中的数据进行综合,归类和分析利用的一个抽象概念。
- 每一个主题基本对应一个宏观的分析领域
- 它是对应企业中某一宏观分析领域所涉及的分析对象
提取主题:
- 一个面向事务处理的商场数据库系统,其数据模式:
-
采购子系统:
- 订单
- 订单细则
- 供应商
-
销售子系统:
- 顾客`
- 销售
-
库存管理子系统:
- 领料单
- 进料单
- 库存
- 库房
-
人事管理子系统:
- 员工
- 部门
-
2):集成
- 集成性是指数据仓库中数据必须是一致的
- 数据仓库的数据是从原有的分散的多个数据库,数据文件和数据段中抽取来的
- 数据来源可能既有内部数据又有外部数据
- 集成方法
- 统一:消除不一致的现象
- 综合:对原有数据进行综合和计算
3):非易失
- 数据仓库中的数据是经过抽取而形成的分析型数据
- 不具有原始性
- 主要供企业决策分析之用
- 执行的主要是查询操作,一般情况下不执行更新操作
- 一个稳定的数据环境也有利于数据分析操作和决策的制订
4):随时间变化
- 数据仓库以维的形式对数据进行组织,时间维是数据仓库很重要的一个维度
- 不断增加新的数据内容
- 不断删去旧的数据内容
- 更新与时间有关的综合数据
二:数据仓库和数据库的区别
数据库 | 数据仓库 | |
---|---|---|
本质 | 数据的集合 | 数据的集合 |
定位 | 事务处理OLTP | 数据分析OLAP |
面向群体 | 前端用户 | 管理人员 |
操作 | 增删改查 | 查询 |
数据粒度 | 事件记录 | 维度 |
表结构 | 3NF | 星型、雪花 |
三:OLTP和OLAP的区别:
-
联机事务处理OLTP
- On-line Transaction Processing
- OLTP是传统的关系型数据库的主要应用
对比属性 | OLTP | OLAP |
---|---|---|
读特性 | 每次查询只返回少量记录 | 对大量记录进行汇总 |
写特性 | 随机、低延时写入用户的输入 | 批量导入 |
使用场景 | 用户,Java EE项目 | 内部分析师,为决策提供支持 |
数据表征 | 最新数据状态 | 随时间变化的历史状态 |
数据规模 | GB | TB到PB |
四:有哪些数据仓库架构?
lnmon架构–范式建模:
ER建模:
lnmon提出–
从全企业的高度设计的一个3NF模型
Inmon模型将模型划分为三个层次:
- ERD–Entity Relationship Diagram 实体关系图层
- DIS–Data Item Set 数据项集层
- PM–Physical Model 物理模型
Data Vault建模:
Dan Linstedt提出–
ER模型的衍生,为了实现数据的整合
强调可审计的基础数据层
基于主题将企业数据结构化组织
Data Vault组成:
- Hub:企业的核心业务实体
- Link:代表Hub之间的关系
- Satellite:是Hub的详细描述内容
Anchor建模:
Lars.Ronnback提出–
一个高度可扩展的模型,核心是所有的扩展知识添加而不是修改。
模型规范升级成6NF,变成K-V结构化模型
Anchor模型组成:
- Anchors:代表业务实体,且只有主键
- Attributes:类似Satellite,更规范,全部K-V化
- Ties:Anchors之间的关系,类似Link
- Knots:代表可能在多个Anchors中公用的属性的提炼
Kimball架构–维度建模:
Kimball提出–
是一种自上而下的建模方式,从分析决策的需求出发构建模型,关注如何更快速的完成需求分析,
维度建模数据仓库模型构建过程:
选择业务流程
- 确认哪些业务处理流程是数据仓库应该覆盖的
- 记录方式
- 纯文本
- 使用业务流程建模标注(BPMN)方法
- 使用同一建模语言(UML)
声明粒度
- 确定事实中表示的是什么
- 选择维度和事实前必须声明粒度
- 建议从原始粒度数据开始涉及
- 不同的事实可以有不同的粒度
确认维度
- 说明事实表的数据从哪里采集来的
- 典型的维度都是名词
- 维度表存储了某一维度的所有相关数据
确认事实
- 识别数字化的度量,构成事实表的记录
- 和系统的业务用户密切相关
- 大部分事实表的度量都是数字类型
混合型架构:
现在我在的公司主流使用Kimball的维度建模方式,两种架构各有优缺点,根据不同需求使用不同的架构完成。
数据仓库的解决方案:
数据采集
- flume,sqoop,logstash,datax
数据存储
- mysql,hdfs,hbase,redis,mongoDB
数据计算
- hive,tez,spark,flink,storm,impala
数据可视化
- tableau,echarts,superset,quickbi,datav
任务调度
- oozie,azkaban,crontab