数据仓库

传统数据库

数据仓库

特征

用于操作处理,面向OLTP

用于信息处理,面向OLAP

用户

DBA、开发

经理、主管、数据分析人员

功能

日常操作

长期信息需求、决策支持

DB设计

基于ER模型,面向应用

星形、雪花模型,面向主题

ETL

ETL,是Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取、转换、加载至目的端的过程。负责将不同物理机、异构的数据,如文本文件、数据库文件等,经过ETL的抽取、转换、加载到数据仓库中。

数仓架构

ETL工具大全:Kettle、DataCleaner、canal、DataX_数据库

概念

名词解释

个人理解

ODS

操作性数据仓库,应用场景:

1、在业务系统和数据仓库之间形成一个隔离,ODS直接存放从业务系统抽取过来的数据,这些数据从结构和数据上与业务系统保持一致,降低了数据抽取的复杂性。

2、转移一部分业务系统的查询功能。因为ODS存放的数据与业务系统相同,原来有业务系统产生的报表,现在可以从ODS中产生。

完成数据仓库中不能完成的功能。ODS存放的是明细数据,数据仓库DW或DM存放的是汇聚数据,ODS提供查询明细的功能。

ODS提供冗余备份,原封不动的拷贝过来,只能写入,不能改变,一般会考虑HDFS。可以用时间版本来区分相同的数据。

DW

数据仓库,是为企业决策指定过程,提供所有类型数据支持的战略集合,是一个包含所有主题的通用的集合。要求效率足够高,要对进入的数据快速处理。数据质量要确保准确性、扩展性、完整性、可用性。面向主题。

DW主要提供查询服务,响应及时。DW的数据也是只允许增加,不允许删除和修改,删除和修改在分布式系统中会小号大量的性能资源。

DM

数据集市,以某项应用为出发点而建设的局部DW,只关心自己需要的数据,不会全盘考虑企业整体的数据架构和应用,每个应用有自己的DM。

DM结构清晰、针对性强、扩展性好。DM仅仅是单对某一个领域而建立,容易维护修改。

ETL工具

Kettle

开源免费
https://sourceforge.net/projects/pentaho/files/Pentaho-9.3/client-tools/

Kettle是一款国外开源的ETL工具,使用Java语言编写,可以运行在Windows、Linux、Unix上,数据抽取高效、稳定。Kettle包含Spoon、Pan、Chef、Encr和Kitchen等组件,Spoon是一个图形用户界面,可以方便直观地完成数据转换任务。Spoon可以运行转换和任务,转换用Pan来运行,任务用Kitchen运行。

DataCleaner

开源免费
​​​ https://datacleaner.github.io/documentation​

Datastage

IBM公司,收费

Informatica

收费

Sqoop

SQL-to-Hadoop 即 “SQL到Hadoop和Hadoop到SQL”。
是Apache开源的一款在Hadoop和关系数据库服务器之间传输数据的工具。主要用于在Hadoop与关系型数据库之间进行数据转移,可以将一个关系型数据库(MySQL ,Oracle等)中的数据导入到Hadoop的HDFS中,也可以将HDFS的数据导出到关系型数据库中。
sqoop命令的本质是转化为MapReduce程序。sqoop分为导入(import)和导出(export),策略分为table和query,模式分为增量和全量。

DataX

是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS 等各种异构数据源之间高效的数据同步功能。

​https://github.com/alibaba/DataX​

canal

是阿里巴巴旗下的一款开源项目,纯Java开发。基于数据库增量日志解析,提供增量数据实时订阅和消费,目前主要支持了MySQL,也支持mariaDB。一个非常成熟的**数据库同步方案,**基础的使用只需要进行简单的配置即可。
canal的工作原理就是把自己伪装成MySQL slave,模拟MySQL slave的交互协议向MySQL Mater发送 dump协议,MySQL mater收到canal发送过来的dump请求,开始推送binary log给canal,然后canal解析binary log,再发送到存储目的地,比如MySQL,Kafka,Elastic Search等等。

StreamSets

Streamsets是一个大数据实时采集ETL工具,可以实现不写一行代码完成数据的采集和流转。通过拖拽式的可视化界面,实现数据管道(Pipelines)的设计和定时任务调度。

数据源支持MySQL、Oracle等结构化和半/非结构化,目标源支持HDFS、Hive、Hbase、Kudu、Solr、Elasticserach等。创建一个Pipelines管道需要配置数据源(Origins)、操作(Processors)、目的地(Destinations)三部分。

参考

​https://www.jianshu.com/p/23ec3a386dc9​