1 数据仓库介绍
1.1 数据仓库简介
数据仓库是一个面向主题的、集成的、随时间变化的、但信息本身相对稳定的数据集合,主要针对来自多个数据源的历史数据进行细粒度、多维度的分析,输出用于企业的数据分析、数据挖掘、数据报表等方向,帮助管理者或业务分析人员做出商业战略决策。
数据仓库可概括为四个特点:
面向主题:数据仓库都是基于某个明确主题,仅需要与该主题相关的数据,其他的无关细节数据将被排除掉。不同于传统数据库对应某一个或多个项目,数据仓库根据使用者实际需求,将不同数据源的数据在一个较高的抽象层次上做整合,所有数据都围绕某一主题来组织。比如对于滴滴出行,“司机行为分析”就是一个主题,对于链家网,“成交分析”就是一个主题。
集成的:从不同的数据源采集数据到同一个数据源,此过程会有一些ETL操作
随时间变化:关键数据隐式或显式的基于时间变化
信息本身相对稳定:数据装入以后一般只进行查询操作,没有传统数据库的增删改操作。
在这解释下主题的概念,主题是根据分析的要求来确定的,这与按照数据处理或应用的要求来组织数据是不同的。如在生产企业中,同样是材料供应,在操作型数据库系统中,人们所关心的是怎样更方便和更快捷地进行材料供应的业务处理;而在进行分析处理时,人们就应该关心材料的不同采购渠道和材料供应是否及时,以及材料质量状况等。数据仓库面向在数据模型中已经定义好的公司的主要主题领域。典型的主题领域包括顾客、产品、订单和财务或是其他某项事务或活动。
1.2 数据仓库架构
数据采集层
参考我前面写的文章,大数据架构之端到端方案综述(1)数据采集。
数据存储与分析
以HDFS+MR的离线分析为主,参考我前面写的文章,大数据架构之端到端方案综述(2)数据处理。
数据共享
使用Hive、MR、Spark、SparkSQL分析和计算的结果,仍存储于HDFS,但大多业务和应用不能直接从HDFS获取数据,此时需要一个数据共享的地方,即关系型数据库如MySql或非关系型数据库NoSQL,使得各业务和产品能方便的获取数据。
数据应用
报表:报表所使用的数据,一般是已经统计汇总好的,存放于数据共享层。
接口:接口的数据都是直接查询数据,从共享层获取。
即席查询:即席查询通常是现有的报表和数据共享层的数据并不能满足需求,需要从数据存储层HDFS直接查询,一般都是直接操作SQL获取。
在这解释下报表&接口,与即席查询的区别:
批处理
又称批处理脚本。在数据仓库系统中,根据应用程序的需求,需要对源数据进行加工,这些加工过程往往是固定的处理原则,这种情况下,可以把数据的增删改查SQL语句写成一个批处理脚本,由调度程序定时执行。
特点:由于批处理脚本中的SQL语句是固定的,所以可以提前完成SQL语句的调优工作,使得批处理脚本的运行效率达到最佳。
即席查询
在数据仓库领域有一个概念叫Ad hoc queries,中文一般翻译为“即席查询”。
即席查询(Ad Hoc)是用户根据自己的需求,灵活的选择查询条件,系统能够根据用户的选择生成返回响应的结果,例如返回用户自定义的统计报表。
特点:即席查询与批处理脚本/普通应用查询最大的不同是普通的应用查询是定制开发的(即查询语句是预先写好的,不会临时变化),而即席查询是由用户自定义查询条件的。
即席查询与普通查询从SQL语句上来说,并没有本质的差别。它们之间的差别在于,普通查询在系统设计和实施时是已知的,所有可以在系统实施时通过建立索引、分区等技术来优化这些查询,使这些查询的效率很高。而即席查询是用户在使用时临时生产的,无法人工预先优化这些查询,需要数据库内部实时自动优化,所以即席查询也是评估数据仓库的一个重要指标。在一个数据仓库系统中,即席查询使用的越多,对数据仓库的要求就越高,对数据模型的对称性的要求也越高。
1.3 数据仓库设计步骤
1、确定主题
主题与业务密切相关,所以设计数仓之前应当充分了解业务有哪些方面的需求,据此确定主题
2、确定量度
在确定了主题以后,我们将考虑要分析的技术指标,诸如年销售额之类。量度是要统计的指标,必须事先选择恰当,基于不同的量度将直接产生不同的决策结果。
3、确定数据粒度
考虑到量度的聚合程度不同,我们将采用“最小粒度原则”,即将量度的粒度设置到最小。例如,如果知道某些数据细分到天就好了,那么设置其粒度到天;但是如果不确定的话,就将粒度设置为最小,即毫秒级别的。
4、确定维度
设计各个维度的主键、层次、层级,尽量减少