大数据数据仓库的架构与设计

数据仓库的概念

        数据仓库是一个面向主题的、集成的、随时间变化的、但信息本身相对稳定的数据集合,用于对管理决策过程的支持。
特点
        面向主题:数据仓库都是基于某个明确主题,仅需要与该主题相关的数据,其他的无关细节数据将被排除掉 
        集成的:从不同的数据源采集数据到同一个数据源,此过程会有一些ETL操作 
        随时间变化:关键数据隐式或显式的基于时间变化 
        信息本身相对稳定:数据装入以后一般只进行查询操作,没有传统数据库的增删改操作

数据库和数据仓库的区别

差异项
数据库
数据仓库
特征
操作处理
信息处理
面向
事务
分析
用户
DBA、开发
经理、主管、分析人员
功能
日常操作
长期信息需求、决策支持
DB设计
基于ER模型,面向应用
星形/雪花模型,面向主题
数据
当前的、最新的
历史的、跨时间维护
汇总
原始的、高度详细
汇总的、统一的
视图
详细、一般关系
汇总的、多维的
工作单元
短的、简单事务
复杂查询
访问
读/写
大多为读
关注
数据进入
信息输出
操作
主键索引操作
大量的磁盘扫描
用户数
数百到数亿
数百
DB规模
GB到TB
>=TB
优先
高性能、高可用性
高灵活性
度量
事务吞吐量
查询吞吐量、响应时间
 
数据生命周期
    
数据采集层
 
         数据采集的对象主要是传统数据库数据和日志数据。如下草图
 
大数据数据仓库的架构与设计
 
数据计算层(数据仓库)
 
         数据只有被整合和计算,才能被用于洞察商业规律,挖掘潜在信息,从而实现大数据价值,达到赋予的商业和创造价值的目的。
 
         在构建全域数据体系,应遵循统一、规范、可共享等特点,避免数据的冗余和重复建设,规避数据烟囱和不一致性,充分发挥大数据海量、多样性方面的优势。
 
         从数据计算频率角度,数据仓库可分离线数据仓库和实时数据仓库。离线数据仓库主要是指传统的数据仓库概念,数据计算频率主要以天(包含小时、周和月)为单位;如T-1,则是每天凌晨跑上一天的数据。但是随着业务的发展特别是交易过程的缩短,用户对数据产出的实时性要求逐渐提高,实时数据仓库的概念也孕育而生。
 
         数据加工链路遵循业界的分层理念,主流分为这四层,包括操作数据层(Operational Data Store,ODS)、明细数据层(Data Warehouse Detail,DWD)、汇总数据层(Data Warehouse Summary,DWS)和应用数据层(Application Data Store,ADS)。通过数据仓库不同层次之间的加工过程实现从数据资产向信息资产的转化,并且对整个过程进行有效的元数据管理及数据质量处理。
 
         在大数据系统中,元数据模型整合及应用是一个重要的组成部分,主要包含数据源元数据、数据仓库元数据、数据链路元数据、工具类元数据、数据质量类元数据等。元数据应用主要面向数据发现、数据管理等,如用于存储、计算和成本管理。
 
大数据数据仓库的架构与设计
 
数据服务层
 
        当数据已被整合和计算好之后,需要提供给产品和应用进行数据消费。为了有更好的性能和体验,阿里巴巴构建了自己的数据服务层,通过接口服务化方式对外提供数据服务。针对不同的需求,数据服务层的数据来源架构在多种数据库
 
之上,如MYSQL和HBase等。
 
        以数据仓库整合计算好的数据作为数据源,对外通过接口的方式提供数据服务,主要提供简单数据查询服务、复杂数据查询(用户识别、用户画像等)和实时数据推送服务。
 
 数据应用层(数据产品)
 
        数据准备好后,通过合适的应用提供给用户,让数据最大化地发挥价值。对数据的应用有很多方面,如搜索、推荐、广告、金融、信用、保险等。应用产品也有很多,如实时数据监控、宏观决策分析支撑平台、对象分析工具、行业数据
 
分析门户等。
 

数据仓库多维数据模型的设计

基本概念

主题(Subject)
        主题就是指我们所要分析的具体方面。例如:某年某月某地区某机型某款App的安装情况。主题有两个元素:一是各个分析角度(维度),如时间位置;二是要分析的具体量度,该量度一般通过数值体现,如App安装量。
维(Dimension)
       维是用于从不同角度描述事物特征的,一般维都会有多层(Level:级别),每个Level都会包含一些共有的或特有的属性(Attribute)。
       以时间维为例,时间维一般会包含年、季、月、日这几个Level,每个Level一般都会有ID、NAME、DESCRIPTION这几个公共属性,这几个公共属性不仅适用于时间维,也同样表现在其它各种不同类型的维。
分层(Hierarchy)
       OLAP需要基于有层级的自上而下的钻取,或者自下而上地聚合。所以我们一般会在维的基础上再次进行分层,维、分层、层级的关系
       每一级之间可能是附属关系(如市属于省、省属于国家),也可能是顺序关系(如天周年)
量度
       量度就是我们要分析的具体的技术指标,诸如年销售额之类。它们一般为数值型数据。我们或者将该数据汇总,或者将该数据取次数、独立次数或取最大最小值等,这样的数据称为量度。
粒度 
       数据的细分层度,例如按天分按小时分。
事实表和维表
       事实表是用来记录分析的内容的全量信息的,包含了每个事件的具体要素,以及具体发生的事情。事实表中存储数字型ID以及度量信息。
       维表则是对事实表中事件的要素的描述信息,就是你观察该事务的角度,是从哪个角度去观察这个内容的。如下图
大数据数据仓库的架构与设计
星形/雪花形/事实星座
这三者就是数据仓库多维数据模型建模的模式
上图所示就是一个标准的星形模型。
雪花形就是在维度下面又细分出维度,这样切分是为了使表结构更加规范化。雪花模式可以减少冗余,但是减少的那点空间和事实表的容量相比实在是微不足道,而且多个表联结操作会降低性能,所以一般不用雪花模式设计数据仓库。
事实星座模式就是星形模式的集合,包含星形模式,也就包含多个事实表。
企业级数据仓库/数据集市
企业级数据仓库:突出大而全,不论是细致数据和聚合数据它全都有,设计时使用事实星座模式
数据集市:可以看做是企业级数据仓库的一个子集,它是针对某一方面的数据设计的数据仓库,例如为公司的支付业务设计一个单独的数据集市。由于数据集市没有进行企业级的设计和规划,所以长期来看,它本身的集成将会极其复杂。其数据来源有两种,一种是直接从原生数据源得到,另一种是从企业数据仓库得到。设计时使用星形模型

设计步骤

1、确定主题
主题与业务密切相关,所以设计数仓之前应当充分了解业务有哪些方面的需求,据此确定主题
2、确定量度
在确定了主题以后,我们将考虑要分析的技术指标,诸如年销售额之类。量度是要统计的指标,必须事先选 
择恰当,基于不同的量度将直接产生不同的决策结果。
3、确定数据粒度
考虑到量度的聚合程度不同,我们将采用“最小粒度原则”,即将量度的粒度设置到最小。例如如果知道某些数据细分到天就好了,那么设置其粒度到天;但是如果不确定的话,就将粒度设置为最小,即毫秒级别的。
4、确定维度
设计各个维度的主键、层次、层级,尽量减少冗余。
5、创建事实表
事实表中将存在维度代理键和各量度,而不应该存在描述性信息,即符合“瘦高原则”,即要求事实表数据条数尽量多(粒度最小),而描述性信息尽量少。