搭建数据仓库: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
  • 数据的展示,比如报表
  • 时间: 2024-10-11 01:38:49

    搭建数据仓库:01数据仓库解决方案的相关文章

    spring-websocket框架搭建遇到的问题解决方案汇总

    问题1 org.apache.tomcat.websocket.server.WsServerContainer cannot be cast to javax.websocket.server 严重: Servlet.service() for servlet [SpringMVC] in context with path [/ZHDM] threw exception [Request processing failed; nested exception is org.springfra

    大数据数据仓库-独一无二的数据仓库建模指

    简介: 本文的主要内容不是介绍现有的比较流行的主要行业的一些数据模型,而是将笔者在数据仓库建设项目中的一些经验,在这里分享给大家.希望帮助大家在数据仓库项目建设中总结出一套能够合乎目前业界规范的,满足大部分行业数据仓库建设标准的一种方法. 所谓水无定势,兵无常法.不同的行业,有不同行业的特点,因此,从业务角度看,其相应的数据模型是千差万别的.目前业界较为主流的是数据仓库厂商主要是 IBM 和 NCR,这两家公司的除了能够提供较为强大的数据仓库平台之外,也有各自的针对某个行业的数据模型. 例如,在

    快速搭建多线程Windows服务解决方案

    一.引言 在软件开发过程中windows服务有的时候非常有用,用于同步数据,发送邮件,宿主WF引擎服务等,但是快速搭建一个好用多线程进行多任务处理的程序往往是一个项目必须考虑的问题.自己在项目中也经常碰到类似的问题,但是一直没有做过这方面总结,每次需要相关windows服务,也重头写一次.自己几乎没有写博客的习惯,前不久看到博客园中有篇关于windows服务的框架写的非常好(抱歉,当时看完以后忘记收藏),感觉自己这些年对它也有一定的认识,但是很少拿出来和大家分享.其实大家都知道通过分享才能找到问

    【数据仓库】——数据仓库概念篇

    一.简介 1.什么是数据仓库 数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented ).集成的(Integrated).相对稳定的(Non-Volatile).反映历史变化(Time Variant)的数据集合,用于支持管理决策和信息的全局共享. //请熟练记忆粗体字! 二.特点 1.数据仓库的特点 1.数据仓库的数据是面向主题的 与传统数据库面向应用进行数据组织的特点相对应,数据仓库中的数据是面向主题进行组织的.什么是主题呢?首先,主题是一个抽象的概念,是

    数据仓库 - 2.数据仓库设计思路及ETL设计思路

    一.数据仓库构建思想 构造数据仓库有两种方式:一是自上而下,一是自下而上. Bill Inmon先生推崇"自上而下"的方式,即一个企业建立唯一的数据中心,就像一个数据的仓库,其中数据是经过整合.经过清洗.去掉脏数据的.标准的,能够提供统一的视图.要建立这样的数据仓库,并不从它需要支持哪些应用入手,而是要从整个企业的环境入手,分析其中的概念,应该有什么样的数据,达成概念完成整:(会考虑到很全面的设计) Ralph Kimball先生推崇"自下而上"的方式,他认为建设数

    普教云机房搭建采购专用终端解决方案

    随着科技信息化的发展,国家的中小学教育主管部门.教育一线的老师们也都迫切地认识到,必须对教育行业进行信息化改造,才能赶超国际信息化发展潮流.教育手段的信息化改造,是教育信息化改造最为基础.最先进行的一部分. 那么该如何利用先进的信息技术和现代教育?普教云机房搭建专用NComputing云终端解决方案: NComputing云终端具有高度集成的体系,机体轻薄瘦小,可以悬挂在显示器背面,使用NComputing云终端机替代云传统PC机可以大大提高电子网络教室的整洁性和美感,使学生轻松获得计算体验和别

    【数据仓库】——数据仓库命名规范

    一.概述 数据模型是数据管理的分析工具和交流的有力手段:同时,还能够很好地保证数据的一致性,是实现商务智能(Business Intelligence)的重要基础.因此建立.管理一个企业级的数据模型,应该遵循标准的命名和设计规范. 原文地址:https://www.cnblogs.com/jiangbei/p/8484434.html

    数据仓库| 概述| 集群环境搭建

    数据仓库DW数据来源:爬虫 日志采集系统 业务数据 财务系统 数据去向:报表系统.用户画像推荐系统.机器学习.风控系统 项目需求分析 ① 数据采集平台搭建② 实现用户行为数据仓库的分层搭建③ 实现业务数据仓库的分层搭建④ 针对数据仓库中的数据进行,留存.转化率.GMV(每天交易额).复购率.活跃等报表行为: 项目框架 技术选型 Hadoop集群 端口号.配置文件.JDK.读写流程 采集:方式一: log日志--->flume--->kafka(API)--->hdfs: 方式二: Log

    干货:阿里云高级技术专家李金波:我们该如何做好一个数据仓库?

    介然(李金波),阿里云高级技术专家,现任阿里云大数据数仓解决方案总架构师.8年以上互联网数据仓库经历,对系统架构.数据架构拥有丰富的实战经验,曾经数据魔方.淘宝指数的数据架构设计专家. 与阿里云大数据数仓结缘 介然之前在一家软件公司给企业客户做软件开发和数仓开发实施,数仓开发和实施都是基于传统的基础架构.2008年加入阿里进入淘宝数据平台部后,他开始接触分布式计算平台Hadoop. 初始时在Hadoop平台上构建数仓主要解决企业内部数据分析的需求,在2010年公司决定对外开放数据后,开始于201