(1)图解数仓架构
先看图,图解数仓架构:
从以下三个方面去了解数仓:
Where:数据仓库的数据从哪里来
How:对数据仓库的建设我们要做哪些事情
What:数据仓库的应用场景以及它所发挥的作用
(1)先看第一个部分操作系统,就是业务处理系统,OLTP产生的数据大概有三类:
DB:业务数据(MySQL),比如下单、送货
ClickData:点击流的数据(日志文件),比如用户的点击收藏数据
OtherData:比如Tcp过来的数据、第三方接口过来的数据
也就是说数据仓库的数据来源于上面三种数据类型。
(2)第二个部分是数据仓库建设过程中具体的要做哪些事情,大概分为五个部分:
业务架构设计:基于业务做一些领域的划分(领域、规范、指标)
模型设计:明细模型、汇总模型
数据研发:ETL、存储、处理,也就是数据平台建设的过程
数据服务:数据总线、统一接口
元数据管理:对以上过程的元数据做统一管理
数据仓库建设过程中核心的指导思想:
OneData:建立统一的、标准的、可共享的一个数据,就是从成本的角度来说,尽可能的减少重复的工作,让数据的获取,数据的开发和数据建设能够简单一些
OneService:统一服务,就是所有人的使用都是同一的入口
(3)第三个部分What的部分,提供OLAP的数据分析,能够让数据使用人员非常简便的、高质量的、比较有权威的拿到来自数据仓库的数据
(2)数据仓库的特性
面向主题:与业务相关的数据类型,每个主题对应一个宏观的分析领域
集成:将多个分散的数据源统一成一致的、无歧义的数据格式
历史快照:反映了某一历史时间点的数据快照
静态:数据仓库中的一般不会进行数据更新
那么什么是数据仓库,总结一句话:
数据仓库是一个在任何时候都可以非常方便的提供具备权威可信的数据存储服务
这句话大概概括了三个方面的核心信息:任何时候、非常方面、权威可信
任何时候:就是业务发生变化的时候,数据仓库尽可能的不要发生变化
非常方面:每一个指标的统计能够给开发人员与实施人员提供方面的结果
权威可信:数据仓库中数据内容是精准的
(3)为什么要建立数据仓库
未建立数据仓库所存在的问题
很难建立和维护汇总数据来源于多个业务系统版本的报表
没有适当的方式将有价值的数据合并到特定的数据库
业务系统表结构为事务性能而优化,有时并不适合查询与分析,况且事务处理的优
先级比分析系统高,所以如果分析系统和事务处理运行在同一硬件之上,分析系统
往往性能很差。
多个业务系统数据格式不统
用户需要看到的显示数据字段,有时在数据库中并不存在
有误用业务数据的风险
建立数据仓库的好处:
将多个数据源集成到单一数据存储,可以使用单一数据查询引擎展示数据
缓解在事务处理数据库上因执行大查询而产生的资源竞争问题
多数据源整合,统一中心数据视图
提供数据质量,数据属性规范统
使数据对于业务用户更有意义
(4)操作性系统,把控数据的三个维度
操作性系统很适合在线应用,主要要求是高可用、高速度、高并发、可恢复和保证
数据一致性、准确性、完整性。
操作性系统,把控数据的三个维度:
ACID
Operator(操作性)
Devise(设计)
(5)操作性系统和分析性系统的区别
分析性系统很是一种快速相应多维分析查询的实现方式。主要的应用场景包括:业
务分析报告,市场管理报告、业务过程管理、预算和预测等。
操作性系统和分析性系统从数据层面和应用层面做了如下对比:
(6)数据仓库架构的演化过程
独立数据集市架构:
Inmon企业信息工厂架构:
Kimball数据仓库架构:
混合型数据仓库架构:
这四种数仓架构在企业中都是有场景的,并不是说一定要选择哪一个,而是根据企业的技术发展水平和业务情况去选择
(7)看似简单的ETL