首页 > 代码库 > 搭建数据仓库:01数据仓库解决方案

搭建数据仓库:01数据仓库解决方案

整个数据仓库搭建起来的结构大体是这样子的,如下图某公司的数据仓库的总体架构图。

   技术分享

  1. 最底层是数据源,一般是在线的数据库或者是文件系统。对于在线数据库,一般是操作型数据库,比如mysql,oracle等,一般是存在主库和从库,从库用来做备份,主库出现问题时切换到从库,从而尽可能的避免影响线上的应用,从库的数据是从主库使用工具同步过来的,比如oracle的shareplex等,所以从库有一定的延迟。文件系统一般使用的格式是csv或者txt。不推荐excle格式的文件,容易出现格式问题。
  2. 数据仓库层包含ODS,EDW,DM,接口数据,归档数据以及调度监控,元数据管理,主数据管理和数据质量监控
    • ODS层是从数据源抽取(E),经过格式的转换(T),最后加载(L)到数据仓库中的。
      • ETL过程中数据的粒度不会变化,一般除了简单的格式变化,跟线上的数据库的表基本一致。
      • 抽取是对从库的表的数据进行抽取,抽取的时候需要对主从库是否存在延迟进行监测。
      • 有的时候是加载操作在转换操作之前,也就是ELT,这取决于转换操作在数据仓库中是否更加容易操作,在一般的TB、PB的数据仓库中,数据的转换函数并不是很丰富,即便是有,有时候性能也不是很好,所以都是在抽取数据到文件之后,对文件进行转换操作处理。
      • 抽取的时候一般可以选择增量抽取还是全量抽取,增量抽取一般需要根据时间戳,全量抽取的时候可以通过ROW NUM字段进行批量式的抽取。
      • 加载的目标表可以是临时表staging table,全量ODS表,分区ODS表。加载到临时表一般是针对增量抽取而言的,通过将增量数据全部load到临时表之后,通过merge操作更新ODS表。加载到全量ODS表,如果是增量抽取,那么就用新增数据merge历史全量数据,此时确保没有应删除操作;如果是全量抽取,那么直接用新抽取的数据覆盖历史数据。 分区ODS表分为增量分区(每个分区是增量数据)和全量分区(每个分区是历史全量数据),增量分区表可以选择增量抽取,全量分区,在没有硬删除的时候可以采用增量抽取,然后merge前一个分区的数据生成最新的分区,有硬删除的情况下只能采用全量抽取,然后直接生成最新的分区。
    • EDW层是将ODS层的数据按照主题来生成基础数据。EDW之上的是DM层。针对特殊的APP应用或者部门等,可以通过EDW的数据生成接口数据,专门服务于应用软件等。
    • 任务调度,从数据源—>ODS—>EDW—>DM/接口层的数据流的计算都需要使用工具或者编写脚本来执行,执行的过程需要调度系统来安排,过程中需要管理任务的执行频率,优先级,任务的依赖,以及任务运行时的监控(失败或者延迟)等等。
    • 元数据和主数据的管理,这一块是比较难于管理的部分。
    • 数据质量监控
  3. 数据应用层主要是数据的分析、挖掘和展示。

 

在了解了整个数据仓库自上而下的框架之后,数据的同步,数据的存储计算,数据的计算,数据的分析,数据的展现,这些阶段上建设数据仓库采用什么样的解决方案呢?

  1. 首先是数据同步(数据源-ODS层):ETL工具的选择
  • 主流的ETL工具有Informatica,Datastage,Kettle

主流ETL工具 是否开源 优势 劣势
Informatica

1.安装方便:图形化安装
2.支持多系统平台:Windows、Linux、Unix
3.性能好、处理效率高:并行能力较强,能轻松处理大数据
4.稳定性强,支持多种数据源
5.完善的元数据管理:可做到字段级的元数据各项分析,有广泛的元数据采集接口,图形化无需编程,并可自动维护变更
6.操作便捷:全图形化开发,无需编码
7.强大的权限管理体系:多范围的用户角色和操作权限,权限可以分到用户或组
8.支持多种字符集
9.支持各种复杂数据转换
10.应用需求变化,调整作业后,直接可以运行,不需要重新编译
11.自动Workflow Recovery功能,自动Session Recovery功能

1.价格较高,大约需要70~130万
2.对CPU和内存、硬盘空间的要求较高

Datastage

1.安装方便:图形化安装
2.支持多系统平台:Windows、Linux、Unix
3.性能好、处理效率高:并行能力较强,能轻松处理大数据
4.稳定性强,支持多种数据源
5.完善的元数据管理:元数据信息不公开
6.操作便捷:全图形化开发,无需编码
7.具有权限管理体系:提供两个角色‘Developer’和‘Operator‘
8.支持多种字符集
9.支持各种复杂数据转换

1.价格较高,大约需要40~80万
2.没有断点恢复的能力
3.自身调度、监控客户端功能略薄弱,在庞大的作业数量和复杂的调度需求下需要单独开发调度与监控程序便于维护

Kettle

1.安装方便:图形化安装2.价格免费
3.支持多系统平台:Windows、Linux、Unix
4.支持多种数据源
5.支持多种字符集
6.系统开源,支持外部开发完善
7.具有简单的权限管理8.支持各种复杂数据转换

1.稳定性较差,不间断性发现系统异常重启,所以需要定期重启软件;
2.处理性能差:使用JDBC,性能比datastage、informatic相比差很多,只能适用于数据量较小的处理
3.缺乏元数据管理

  • 其他的ETL工具有ODI,Beenload,Cognos等等
  • 其次是数据的存储计算(EDW-DM):数据仓库
    • 数据仓库主流有Teradata,Exadata,GreenPlum,SybaseIQ,Hive
    • 主流数据仓库 是否开源 优势 劣势
      Teradata

      1.大数据量处理性能较强
      2.可线性扩展,实现投资保护
      3.数据库易于管理和维护
      4.第三方软件产品丰富
      5.有一套完整的ETL方案(ETL Automation),配置灵活

      1.专用设备,环境搭建复杂,扩展时停机时间较长
      2.混合负载控制存在问题
      3.各系列产品互联困难
      4.价格较高
      5.ETL环境搭建复杂,非图形化
      6.数据库做线性扩展时,数据需要重新分布,消耗资源大,时间长

      Exadata

      1.事务类任务处理性能较好
      2.混合负载控制较好
      3.兼容Oracle产品和工具,易于使用

      1.大数量处理性能上存在不足
      2.部署和管理复杂,且扩展能力差
      3.价格和维护成本较高

      Netezza

      1.针对数据分析设计,性价比高
      2.兼容Oracle语句和主流BI工具
      3.系统已于管理和维护
      4.刀片式结构,扩展简单
      5.数据库备份方便
      6.SQL语法更简单

      1.混合负载控制存在不足
      2.主流技术是在数据分析,对精确分析存在不足
      3.当表的数据发生大的变化时,性能会下降
      4.磁盘数据是两两互相备份,一旦都损坏,数据很难恢复

      SybaseIQ

      1.“列存储”技术
      2.混合负载控制较好
      3.并行查询及扩展能力强
      4.集成数据挖掘工具,适合实时分析

      1.列存储的一些问题(如载速度、复杂查询等方面较差) ?
      2.硬件厂商和第三方软件支持力度正在减弱

      GreenPlum

      1.支持行列混合存储,消除了单独行存储和列存储的缺陷
      2.可在线扩容和维护,无需停机
      3.数据加载速度快,可实现实时分析
      4.基于PosgreSQL开发,工具和应用资源丰富
      5.符合“云计算”发展方向

      1.使用开放平台实现,稳定性相对较差
      2.大数据量在节点间重分布时,其非专用网络设计易导致性能瓶颈
      3.开发客户端功能不完善,功能灵活性不足
      4.函数运算性能不高
      5.创建表空间和文件空间不方便
      6.对其他操作系统支持差

      Hive

      1.基于Hadoop平台,使用低廉的PC机,成本低
      2.有很好的Hive SQL支持ETL和数据的查询
      3.水平可扩展
      4.容错性好

      1.使用的计算框架是Mapreduce,查询速度比较慢
      2.不能使用索引
      3.连接到 Hive 的外部报告或分析系统是一个巨大的问题
      4.可视化界面不友好,毕竟开源

  • 数据的分析:OLAP
  • 数据的展示,比如报表
  • 搭建数据仓库:01数据仓库解决方案