第一章 数据仓库简介
1.1什么是数据仓库 1.1.1数据仓库的概念
官方定义:
数据仓库是一个面向主题的、集成的、随时间变化的、但信息本身相对稳定的数据集合,用于对管理决策过程的支持。这个定义的确官方,但是却指出了数据仓库的四个特点。
特点:
面向主题:数据仓库都是基于某个明确主题,仅需要与该主题相关的数据,其他的无关细节数据将被排除掉
集成的:从不同的数据源采集数据到同一个数据源,此过程会有一些ETL操作 随时间变化:关键数据隐式或显式的基于时间变化
信息本身相对稳定:数据装入以后一般只进行查询操作,没有传统数据库的增删改操作
大白话:
数据仓库就是整合多个数据源的历史数据进行细粒度的、多维的分析,帮助高层管理者或者业务分析人员做出商业战略决策或商业报表。
1.1.2数据仓库的用途
? ? ? ? ? ? ?
整合公司所有业务数据,建立统一的数据中心 产生业务报表,用于作出决策 为网站运营提供运营上的数据支持
可以作为各个业务的数据源,形成业务数据互相反馈的良性循环 分析用户行为数据,通过数据挖掘来降低投入成本,提高投入效果 开发数据产品,直接或间接地为公司盈利 ?
1.1.3数据库和数据仓库的区别
差异项 特征 面向
数据库 操作处理 事务 数据仓库 信息处理 分析 1
差异项 用户 功能 DB设计 数据 汇总 视图 工作单元 访问 关注 操作 用户数 DB规模 优先 度量 数据库 DBA、开发 日常操作 基于ER模型,面向应用 当前的、最新的 原始的、高度详细 详细、一般关系 短的、简单事务 读/写 数据进入 主键索引操作 数百到数亿 GB到TB 高性能、高可用性 事务吞吐量 数据仓库 经理、主管、分析人员 长期信息需求、决策支持 星形/雪花模型,面向主题 历史的、跨时间维护 汇总的、统一的 汇总的、多维的 复杂查询 大多为读 信息输出 大量的磁盘扫描 数百 >=TB 高灵活性 查询吞吐量、响应时间 1.2数据仓库的架构 1.2.1理想架构
一个相对比较成熟的数据仓库架构模型如下:
2
图1-1数据仓库架构图
数据采集
数据采集层的任务就是把数据从各种数据源中采集和存储到数据存储上,期间有可能会做一些ETL操作,例如采用Flume收集日志,采用Sqoop将RDBMS以及NoSQL中的数据同步到HDFS上
数据源种类可以有多种: ? ? ? ?
日志:所占份额最大,存储在备份服务器上; 业务数据库:如Mysql、Oracle;
来自HTTP/FTP的数据:合作伙伴提供的接口; 其他数据源:如Excel等需要手工录入的数据;
数据存储与分析
? HDFS是大数据环境下数据仓库/数据平台最完美的数据存储解决方案; ? 离线数据分析与计算,也就是对实时性要求不高的部分,Hive是不错的选择; ? 使用Hadoop框架自然而然也提供了MapReduce接口,如果真的很乐意开发Java,或者
对SQL不熟,那么也可以使用MapReduce来做分析与计算; ? Spark性能比MapReduce好很多,同时使用SparkSQL操作Hive; ? 可以加入Kafka防止数据丢失;
? 实时计算使用Spark Streaming消费Kafka中收集的日志数据,实时计算结果大多保存
在Redis中;
3