实战总结理论之——ETL与数据仓库
什么是ETL
首先我们来说说什么是“ETL”,ETL的全称是“Extract-Transform-Load”,用来描述将数据从源端经过抽取、转换、加载至目的端的过程,ETL常用于数据仓库,但其对象并不限于数据仓库。
ETL主要的环节为数据抽取、数据转换、数据加载。在抽取过程中有以下两种方式:全量抽取和增量抽取。
全量抽取
将数据表或视图完全从源库中抽取出来,转换成ETL工具可识别的格式。
增量抽取
抽取自上次抽取结果变化的数据,包括增加或修改。因此捕获数据变化尤为关键,要准确性和高效性。
一般捕获数据变化有几种方式:
1) 触发器:一般建立新增、修改、删除三个触发器,当触发器检测到对应的库表操作时,抽取线程从临时表抽取数据。
2)时间戳:一种基于快照比较的变化数据捕捉方式,源表增加一个时间字段,更新数据时同时更新时间戳,这样在统计数据做对比时,可以根据系统时间与时间戳字段抽取数据做对比。
ETL工具
常见的ETL工具有:Powercenter,Apache Camel,Apache Kafka,Heka,Kettle
数据仓库更多的是对管理决策过程的支持,主要表现为四个特点:
面向主题
更多的是针对一个明确定义的主题,保留与其相关的数据,摒弃掉不相关的数据。
集成的
将不同的数据源集成到一个数据源,做统一的ETL处理。
不可修改的
数据装载以后很少做传统数据库增删改处理,更多的是查询工作。
随时间变化的
关键数据更多是反应随时间变化。
(图例来源网络)
整个数据仓库的实现大致为以下过程:
1、数据采集:首先为数据获取(包含结构化数据:关系数据库,半结构化数据:xml,json等 ,非结构化数据:图片,视频等)
2、缓冲区(贴源区)STG:这里不会对数据做过多的处理,目的为做数据备份,可添加一些字段作为标识使用,即成临时存储区。
3、原子区ODS:这里为了将之前获取到的数据标准化处理,并解决关联关系,截至到此多数使用关系型数据库(Oracle,Mysql等)做相关操作。
4、数据仓库:
1)主题:开始根据实际业务需求创建明确的主题模型。
2)量度:分析技术指标,获取要统计的指标,作用于以后的管理决策。
3)粒度:根据量度的聚合程度,对数据做更详细的粒度划分。
4)维度:设计数据的关联层次,层级,减少冗余。
这里需要分享的是维度建模的概念:分为星形模型和雪花模型
星形模型特点--架构相对简单,OLTP-DW环节不需要做多表关联,性能略高一些,会产生数据冗余。
雪花模型特点--架构相对复杂,DW-OLAP环节利于度量值聚合,性能略高一些,不会产生数据冗余。这里又存在两个概念:事实表和维表。
事实表用来分析记录的全量信息,包括每个事件的具体要素。维表则是围绕事实表的要素做发散式关联的表述信息,可从多角度观察事实表
建议在项目中,数据量极大或业务逻辑过于复杂时可采用雪花模型,业务逻辑比较清晰及节省存储空间。否则星形架构更适合于查询存储。
在从业务数据库向数据仓库抽取数据的后,数据并不是一成不变的,数据随时间缓慢的变化的维表称为缓慢变化维(1.记录所有历史 2.仅记录当前状态 3.记录之前两次的状态)。
5.数据集市:根据公司的具体业务分支,凭借原生数据或者企业数据仓库获取单独的数据集合针对该业务做数据分析处理等操作。
Pack Data
关于派客动力
独立企业数据集成和数据隐私保护软件提供商PackData让世界各地的企业获得最大化的数据投资回报,从而赢得竞争优势。众多的新型企业和新型数据管理项目选择PackData做为他们的合作伙伴管理其在本地的、云中的和社交网络上的信息资产.
详情资讯扫描上方二维码