数据仓库
1.数据仓库概念
数据仓库( Data Warehouse ),是为企业制定决策,提供数据支持的。可以帮助企业,改进业务流程、提高产品质量等。
数据仓库的输入数据通常包括:业务数据、用户行为数据和爬虫数据等
业务数据: 就是各行业在处理事务过程中产生的数据。比如用户在电商网站中登录、下单、支付等过程中,需要和网站后台数据库进行增删改查交互,产生的数据就是业务数据。业务数据通常存储在MySQL、Oracle等数据库中。
用户行为数据: 用户在使用产品过程中,通过埋点收集与客户端产品交互过程中产生的数据,并发往日志服务器进行保存。比如页面浏览、点击、停留、评论、点赞、收藏等。用户行为数据通常存储在日志文件中。
爬虫数据: 通常事通过技术手段获取其他公司网站的数据。
2.数据仓库特点
面向主题:为数据分析提供服务,根据主题将原始数据集合在一起。 集成:原始数据来源于不同数据源,要整合成最终数据,需要经过抽取、清洗、转换的过程。 非易失:保存的数据是一系列历史快照,不允许被修改,只允许通过工具进行查询、分析。 时变性:数仓会定期接受、集成新的数据,从而反映出数据的最新变化。
3.数据仓库VS数据库
数据库面向事务设计,属于OLTP(在线事务处理)系统,主要操作是随机读写;在设计时尽量避免冗余,常采用符合范式规范来设计。 数据仓库是面向主题设计的,属于OLAP(在线分析处理)系统,主要操作是批量读写;关注数据整合,以及分析、处理性能;会有意引入冗余,采用反范式方式设计。
4.技术实现
数据仓库建设方案: 传统数据仓库 大数据数据仓库
4.1 传统数据仓库
由关系型数据库组成MPP(大规模并行处理)集群 缺点:扩展性有限(单机架构)、热点问题 常见的传统数据库: Oracle RAC、DB2、Teradata、Greenplum
4.2大数据数据仓库
利用大数据天然的扩展性,完成海量数据的存放 将SQL转换为大数据计算引擎任务,完成数据分析 常见的大数据数据仓库 Hive、Spark SQL、HBase、Impala、HAWQ、TIDB
5.数据仓库架构设计
5.1 ETL---- Extract、Transform、Load
将数据从来源端进行抽取、交互转换、加载至目的端的过程 构建数据仓库的重要一环,用户从数据源中抽取出所需的数据,经过数据清洗,最终按照预先定义好的数据仓库模型,讲数据加载大数据仓库中去 ETL规则的设计和实施约占整个数据仓库搭建工作量的60%——80%
数据抽取 抽取的数据源可以分为结构化数据,非结构化数据,半结构化数据 结构化数据一般采用JDBC(对数据库进行直连,会加重数据库的负载,会影响业务的运行,一般选在数据量产生较小的时间段)、数据库日志方式 非/半结构化数据会监听文件变动(半结构化比如像xml、json文件;非结构化文件像图像、音频)
抽取方式 数据抽取方式有全量同步、增量同步两种方式 全量同步会将全部数据进行抽取,一般用于初始化数据装置 增量同步方式会检测数据的变动,抽取发生变动的数据,一般用于数据更新
数据转换 数据转换要经历数据清洗和转换两个阶段 ——数据清洗主要是对出现的重复、二义性、不完整、违反业务或逻辑规则等问题的数据进行统一处理 ——数据转换主要是对数据进行标准化处理,进行字段、数据类型、数据定义的转换 结构化数据在转换过程中的逻辑较为简单,非/半结构化数据的转换会较为复杂
数据加载 将处理完成的数据导入到对应的目标源里
5.2 ODS(操作数据源层)
数据与原业务数据保持一致,可以增加字段用来进行数据管理 存储的历史数据是只读的,提供业务系统查询使用 业务系统对历史数据完成修改后,将update_type字段更新为UPDATE,追加回ODS中 在离线数仓中,业务数据定期通过ETL流程导入到ODS中,导入方式有全量、增量两种: 全量导入:数据第一次导入时,选择此种方式 增量导入:数据非第一次导入,每次只需要导入新增、更改的数据,建议使用外连接&全覆盖方式
5.3 CDM(公共维度层):
DWD(数据明细层)和DWS(数据汇总层)组成,完成数据分析功能。
5.3.1DWD(数据明细层)
数据明细层对ODS层的数据进行清洗、标准化、维度退化(时间、分类、地域) 数据仍满足3NF模型,为分析运算做准备
5.3.2DWD(数据汇总层)
数据汇总层的数据对数据明细层的数据,按照分析主题进行计算汇总,存放便于分析的宽表 存储模型并非3NF,而是注重数据聚合,复杂查询、处理性能更优的数仓模型,如维度模型
5.4 ADS(数据应用层)
数据应用层也被称为数据集市 存储数据分析结果,为不用业务场景提供接口,减轻数据仓库的负担 数据仓库擅长数据分析,直接开发业务查询接口,会加重其负担
6 建模方法
基本概念
6.1 OLTP系统建模方法
OLTP(在线事务处理)系统中,主要操作是随机读写 为了保证数据一致性、减少冗余,常使用关系模型 在关系模型中,使用三范式规则来减少冗余
OLAP(在线联机分析)
OLAP系统,主要操作是复杂分析查询;关注数据整合,以及分析、处理性能 OLAP根据数据存储的方式不同,又分为ROLAP、MOLAP、HOLAP
OLAP系统分类 ROLAP(Relation OLAP,关系型OLAP):使用关系模型构建,存储系统一般为RDBMS MOLAP(Mutlidimensional OLAP,多维型OLAP):预先聚合计算,使用多维数组的形式保存数据结果,加快查询分析时间 HOLAP(Hybrid OLAP,混合架构的OLAP):ROLAP和MOLAP两者的集成;如低层是关系型的,高层是多维矩阵型的;查询效率高于ROLAP,低于MOLAP。
ROLAP系统建模方法
典型的数据仓库建模方法有ER模型、维度模型、Data Value、Anchor
ER模型: 1.出发点是为了整合数据,为数据分析决策服务 2.需要全面了解业务和数据 3.实施周期长 4.对建模能力要求高
维度模型: 1.为分析需求服务,更快完成需求分析 2.具有较好大规模复杂查询相应性能 3.最流行的数仓建模经典
Data Value: 1.ER模型的衍生 2.强调数据的历史性、可追溯、原子性 3.弱化一致性处理和整合 4.引入范式、应对源系统的扩展性
Anchor: 1.Data Value模型的衍生 2.初衷为设计一个高度可扩展模型 3.会带来较多的join操作
MOLAP系统建模方法
MOLAP将数据进行预结算,并将聚合结果存储到CUBE模型中 CUBE模型以多维数组的形式,物化到存储系统中,加快后续的查询 生成CUBE需要大量的时间、空间,维度与处理可能会导致数据膨胀 常见的MOPLAP产品:Kylin、Druid
OLAP多维分析
OLAP主要操作时复杂查询,可以多表关联,使用COUNT、SUM、AVG等聚合函数 OLAP对复杂查询操作做了直观的定义,包括钻取、切片、切块、旋转
钻取 对维度不同层次的分析,通过改变维度的层次来变换分析的粒度 钻取包括上卷(Roll-up)、下钻(Drill-down) 上卷,也称向上钻取,指从低层次到高层次的切换 下钻,指从高层次到低层次的切换
切片、切块 选择某个维度进行分割称为切片 按照多维进行的切片称为切块
旋转 对维度方向的互换,类似于交换坐标轴上卷
|