数据仓库概述及分层架构

什么是数据仓库

数据仓库定义

数据仓库实际上是一种数据存储,它将各种异构数据源中的数据集成在一起,并保持其语义一致,为企业决策提供支持。数据仓库的应用主要有行为分析、信用分析、经济预测、安全防控、多维分析、报表、BI等。

  • 数据量: PB/ZB级
  • 计算能力:分布式弹性计算
  • 驱动方式:支撑在线应用
  • 数据维度:全域维度

数据仓库特点

数据仓库是一个面向主题的、集成的、时变的、非易失的数据集合。

面向主题

即在较高层次对数据综合、归类,针对某一分析领域所抽象出来的分析对象。
构建主题有三个步骤:

  • 1.抽象主题:抽象出需要分析的主题域
  • 2.确定主题相关表:确定每个主题域所包含的数据表
  • 3.选择公共键:主题的所有表都有一个公共键,作为主键的一部分,将各表统一起来,体现它们是属于一个主题
    比如,政务领域,某地区的人口库可以分为基本信息、资产信息、社会活动、资质荣誉、涉世涉法这五大主题。生活服务领域,某电商公司分为客服、流量、运营、订单、门店、产品、参与人、风控、结算和公用等十大主题。

集成化

因为数据来源的格式类型不同,编码、命名格式、属性单位不一致,所以需要对原有数据进行综合、计算。数据仓库提供的数据集成工具支持存量数据批量抽取,增量数据定时抽取,分布式架构,多任务并发运行,支持多数据源导入和数据脱敏。

时变性

数据仓库中的数据是不同时间的数据集合,有随时间变化不断增加新内容,随时间变化不断删除旧数据,更新与时间有关的综合数据。

非易失性

数据是经过抽取(操作性环境)而形成的分析型数据(静态快照),不具有原始性,主要供企业决策分析之用,执行的主要是查询操作,一般情况下不执行更新操作。

数据仓库分层架构

为什么要分层?

我们对数据进行分层的一个主要原因就是希望在管理数据的时候,能对数据有一个更加清晰的掌控,详细来讲,主要有下面几个原因:

  • 1.清晰数据结构:每一个数据分层都有它的作用域,这样我们在使用表的时候能更方便地定位和理解。
  • 2.数据血缘追踪:对外提供的是能直接使用的一张业务表,但是它的来源有很多,如果有一张来源表出
    问题了,我们希望能够快速准确地定位到问题,并清楚它的影响范围。
  • 3.减少重复开发:规范数据分层,开发一些通用的中间层数据(共性加工层),能够减少极大的重复计
    算。
  • 4.把复杂问题简单化:将一个复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤,比较简单和容易理解。而且便于维护数据的准确性,当数据出现问题之后,可以不用修复所有的数据,只需要从有问题的步骤开始修复。
  • 5.屏蔽原始数据的异常。
  • 6.屏蔽业务的影响:不必改一次业务就需要重新接入数据。

为了满足上述需要,我们理论结合实际,自底向上将数据仓库分为五层,分别是ODS:贴源数据层(Operational Data Store),STD:标准数据层(Standard),DWD:明细数据层(Data Warehouse Detai),DWS汇总数据层(Data Warehouse Summary),DM:数据集市层(Data Mart)。

ODS:贴源数据层(Operational Data Store)

数据来源于各业务系统的源数据,物理模型和业务系统模型一致。为其它逻辑层提供数据,为其他应用系统提供全量的贴源数据。通过ETL工具,把业务数据抽取落到数据仓库ODS层,不做清洗转换。

功能

  • ODS保存所有操作数据
  • 在业务系统和数据仓库之间形成一个隔离,源系统数据结构的变化不影响其他数据分层
  • 转移一部份业务系统查询细节数据的功能,减轻业务系统负担
  • 减轻业务系统被反复抽取的压力,由ODS统一进行抽取和分发

    建表方式及处理原则

  • 保留所有数据
  • 根据源业务系统表的情况以增量或全量方式抽取数据
  • ODS层以流水表和快照表为主,按日期对数据进行分区保存,不使用拉链表
  • ODS层的数据不做清洗和转换。数据的表结构和数据粒度与原业务系统保持一致

STD:标准数据层(Standard)

数据来自ODS层,对ODS层当中的数据进行清洗、转换。 为DWD提供标准数据,并把清洗后的脏数据在该层保存,反馈给业务系统进行修改。通过清洗工具把ODS当中的数据做一些清洗、转换后,导入到STD当中,如:空值处理、 数据类型转换等。

功能

  • 为DWD层提供经过清洗、转换后的明细数据,满足对标准化数据需求

    建表方式及处理原则

  • 数据结构与ODS层一致,但可以对表结构进行裁减、合并等操作
  • 对数据做清洗、转换等处理如:日期时间格式转换、字段合并、空值处理、脏数据处理、命名规范。
  • STD层不会一直保存数据,具体保存周期根据业务情况而定。
  • STD层保存清理出来的脏数据、有问题的数据

DWD:明细数据层(Data Warehouse Detai)

数据来自STD层,按主题对数据进行综合、归类。建模时尽量减少数据冗余,为DWS、DM层提供统一的、标准的数据视图,保留通过STD层标准经之后的所有历史数据。

功能

  • 是DM和DWS主要数据来源
  • 按主题对数据进行抽象、归类
  • 提供业务系统细节数据的长期沉淀
  • 为未来分析类的需求扩展提供历史数据支撑,满足即席查询需求

建模方式及原则

  • 中性设计、灵活扩展:不针对某个应用而设计
  • 面向全局、数据整合:存放最详尽的历史数据,业务发生变化时易于扩展,适应复杂的实际业务情况
  • 稳定的,经得起考验的:能够在很久时间内保持稳定,回答不断产生、不断变化且无法 预先定义的业务问题
  • 以拉链表和快照表为主,保留历史数据

DWS汇总数据层(Data Warehouse Summary)

数据来自DWD层,采用维度建模,星型架构,服务于数据挖掘,DM数据集市等。从DWD层的数据进行粗粒度聚合汇总;按业务需求对事实进行拉宽形成宽表,共性汇总加工。

功能

  • 这一层可以是一些宽表,是根据DWD层数据按照各种维度或多种维度组合把需要查询的 一些事实字段进行汇总统并作为单独的列进行存储
  • 满足一些特定查询、数据挖掘应用
  • 面向业务,共性需求进行汇总

建模方式及原则

  • 尽量减少数据访问时计算,优化检索
  • 维度建模,星形模型
  • 事实拉宽,度量预先计算
  • 基本都是快照表,保留至少每月月底数据,根据需要保留近N天
  • 反规范化,有数据冗余

DM:数据集市层(Data Mart)

数据来自DWD、DWS,采用维度建模,星型架构,根据应用要求,生成相关结果数据,支撑应用使用。

功能

  • 应用层是根据业务需要,由DWD、DWS数据统计而出的结果,可以直接提供查询展现 ,或导入至Mysql等关系型数据中使用。
  • 面向特定业务部门或者特定主题
  • 支持数据挖掘

建模方式及原则

  • 形式各异,主要按不同应用需求来处理
  • 维度建模,星形模型
  • 保持数据量小,定时刷新数据
0%