vlambda博客
学习文章列表

数据仓库系列(一)数据仓库的特点与架构分类--数仓与数据库究竟有什么区别??


  • 数据仓库理论介绍:

    • 一:数据仓库的四大特点:

    • 二:数据仓库和数据库的区别

    • 三:OLTP和OLAP的区别:

    • 四:有哪些数据仓库架构?

    • 数据仓库的解决方案:


数据仓库理论介绍:

数据仓库是一个面向主题的,集成的,非易失的且随时间变化的数据集合

一:数据仓库的四大特点:

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