数据仓库建设方案有两种,一种是传统架构的数据仓库,一种是大数据架构的数据仓库。

传统数据仓库

传统数据仓库是由单机数据库发展而来的。业务数据库一般是关系型数据库(RDBMS),那数据仓库在建设初期,也会选用关系型数据库,因为数据迁移起来方便,而且业务系统的改造成本也较小。

但历史数据较为庞大,单个 RDBMS 节点即使增加了大容量硬盘,也无法满足存储需求怎么办?那就多个 RDBMS 节点组成 MPP(大规模并行处理)集群进行存储。每个节点负责一部分数据的存储、计算任务,数据通过提前调度,分配到各个节点中进行存储;各个节点产生的部分结果,也会汇总成最终结果进行返回。

传统数仓的优点

传统数仓的优点在于 SQL 支持率高;且在一定数据规模下,性能很出色。

因为是单机关系型数据库改造而来,所以完全兼容原有的 SQL 语法,这样的话,业务迁移起来比较方便。在之后的使用上,也不需要增加很多额外的学习成本。

传统数据仓库在数据量没有达到某个量级时,是很优秀的解决方案,且继承了单机数据库优异的性能。但数据量一旦超过某个数量级时,它的问题就暴露出来了。

存在的问题

传统数据仓库存在的问题如下。

1. 扩展性有限

因为传统数据仓库的架构是由单机发展来的,在单机数据库上进行功能的扩展,或者增加中间件,从而形成 MPP(大规模并行处理)集群。

但这种 MPP 数据仓库,每个节点本质上还是一个数据库,需要考虑精细的内存管理;且独立进行计算,如果需要交换数据,则通过高速网络连接其它所有节点进行。这种连接所有节点的高速网络拓扑,直接限制了它节点的上限。

其次,它在数据存储时,采用的是分库分表策略(架构所限),将一个数据库中的表拆分到各个节点中进行存储,每张表存储的数据如果足够多的话,再将表进行拆分。

但分库分表也存在上限,因为分库分表的粒度越细,数据仓库在处理数据时,性能越差。所以为了保证性能,分库分表也不能无限进行。

2. 热点问题

传统数据仓库因为在存储时,会进行分库分表,所以一张表的会被拆分成多份,交由不同数据库节点进行保存。假设一张表有 100W 行数据,它在存储时被拆分成 10 份,一份有 10W 行。但恰巧,前 10W 行的数据是热点数据,在数据处理时被访问的频率是其它数据的两倍,且这一份数据被存储到了某个节点中。

那可想而知,这个节点承受的压力也是其它节点的两倍。那这个节点就容易出现宕机,或者超时的情况。而单节点瓶颈会导致整个系统短板。节点越多,节点出错频率就越高,整个集群的可用性就越低;这也限制了它的扩展性。

当然热点问题,可以通过数据加盐的方式进行解决,将表中的数据通过增加前缀打散,从而随机分布到各个节点中。但数据加盐本身会增加一些额外操作,并带来一些额外的问题。这个需要留意。

大数据数据仓库

大数据数据仓库是依托于大数据技术的一种新型数据仓库技术。

它是基于大数据天然的分布式存储、计算,并添加了 SQL 的支持而形成的一种架构。与传统数据仓库的架构是截然不同的。

大数据技术是为海量数据的存储、计算服务的,所以它有天生的分布式架构来解决数据存储问题,且有极强的扩展性。在数据处理方面,为了避免海量数据的移动造成的 IO、网络开销,使用了移动计算而非移动数据的架构,将计算任务分发到数据节点进行计算;因为一份数据是被拆分,并存放在多个节点的,所以每个节点的收到计算任务后,是并发执行的,计算得到的结果一定是部分结果。最后再将部分结果进行汇总,得到最终结果。

但大数据初期存在一个问题,易用性差。因为大数据处理,是有自己的特定语法的。而企业中大部分数据都是存储在数据库中的结构化数据,使用 SQL 进行处理。所以要使用大数据平台,就必须要做大量的业务迁移工作,即将 SQL 转化成大数据处理语法。

之后,基于大数据的数据仓库产品应运而生,这些产品完成了 SQL 对大数据处理语法的转化,且借助大数据分布式架构带来的天然的海量数据存储、处理能力,解决了传统数据仓库的痛点,成为将来数据仓库的一个发展趋势。

优势

1. 解决了扩展性问题

大数据平台的分布式架构的扩展性极强,海量数据的存储、运算,不再成为问题。

大数据平台负责存储的分布式文件系统,将数据库中的结构化数据统一视为文件进行存储,将文件自动进行拆分,分发到各节点进行存储。不用再顾虑分库分表的问题。在进行数据处理时,才在上层引擎中使用元数据对文件还原成表结构。

2. 解决了热点问题

底层分布式文件系统进行数据存储时,为了保证数据的安全性,会将数据进行备份,默认为 3 份。在进行计算时,会将任务分发到数据节点,因为 3 个副本的数据时一致的,所以可以选择一个最空闲的数据节点,将任务分发过去。在任务执行时,是可选择节点的,所以极大的降低了出现热点的可能性。

存在的问题

1. SQL 支持率低

因为大数据数据仓库架构是将 SQL 转换为大数据分布式处理语法,不是原生的 SQL 处理逻辑,所以 SQL 支持率没有传统数仓那么高。但随着技术的发展,现有大数据产品的 SQL 支持率也越来越高。

2. 缺少事务支持

当前大数据数据仓库因为是分布式架构,所以相对于单机数据库来说,事务的实现较难;大多数产品事务支持不全。但因为数据仓库主要是面向数据分析,对事务的要求并没有那么严格,所以也不存在什么问题。

3. 数据量较少时,计算速度慢

因为大数据架构是完全分布式的,为海量数据运算而设计的;在运行时,会对任务进行拆分、调度,最后对结果进行合并;所以在数据没有达到一定规模的时候,调度过程会花费大量的时间。但一旦数据量超过某个量级,调度时间远远小于计算时间,大数据架构的优势就体现出来了。

小结

总的来说,在数据量没有达到一定量级时,使用传统数据仓库方案是最优的,它性能好、SQL 支持率高、易用性好。但一旦企业数据达到某个量级,传统数据仓库运行效率就会变差,只能寻求大数据数据仓库的解决方案。

虽然大数据数据仓库的 SQL 支持库低、缺少事务支持,但综合它的使用场景,且随着技术的发展,这些问题都会被解决。长远来看,大数据数据仓库,一定会是将来的趋势所在。

【简介】数据仓库技术实现相关推荐

  1. ETL(数据仓库技术)

    ETL(数据仓库技术) ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过萃取(extract).转置(transform).加载(load)至目的端的过程. ...

  2. 数据产品设计专题(5)- 分布式数据仓库技术架构

    一.分布式数据仓库技术架构 二.核心内容解读 (1)分布式数据仓库存储技术:hive+hdfs: (2)事实计算平台技术框架:spark: (3)数据挖掘算法技术框架:mllib + sparkR

  3. 基于SQL on Hadoop的数据仓库技术

    http://www.uspeed.com.cn/958.html 数据仓库是企业统一的数据管理的方式,将不同的应用中的数据汇聚,然后对这些数据加工和多维度分析,并最终展现给用户.它帮助企业将纷繁浩杂 ...

  4. IT:后端进阶技术路线图(初级→中级→高级)、后端开发工程师(技术方向分类之后台业务开发/中间件/内核/分布式架构)基础知识简介、技术路线/技术趋势指南(如何选择自己的技术方向)之详细攻略

    IT:后端进阶技术路线图(初级→中级→高级).后端开发工程师(技术方向分类之后台业务开发/中间件/内核/分布式架构)基础知识简介.技术路线/技术趋势指南(如何选择自己的技术方向)之详细攻略 目录 后端 ...

  5. 电子商务中的数据仓库技术

    电子商务中的数据仓库技术 Data Warehousing for E-Business W.H. Inmon 1 电子商务的基于和挑战 ERP CRM EAI,数据仓库工程 挑战:数据量.数据周转速 ...

  6. 大数据仓库技术实训任务2

    大数据仓库技术实训--任务2 请按照要求完成以下内容: 1. 启动hadoop,hive start-all.sh hive 2. 在hive中创建数据库empdb和empdb1 create dat ...

  7. 数据库安全-分布式数据库-数据仓库技术-反规范化技术-大数据

    继续肝吧,本章主要讲的数据库安全,分布式数据库,数据仓库技术,反规范化技术,大数据,概念性的东西比较多. 1.数据库安全 考的不多,了解下补充自己的知识. 静态转储:即冷备份,指在转储期间不允许对数据 ...

  8. 大数据技术栈——ETL(数据仓库技术)

    ETL(数据仓库技术) ETL的概念 ETL的三个阶段 一. 数据的抽取(Extract) 二.数据的清洗转换(Cleaning.Transform) 三.ETL日志.警告发送 ETL特点 ETL的概 ...

  9. 数据仓库技术的发展历程

    定义 数据仓库是决策支持系统(dss)和联机分析应用数据源的结构化数据环境.数据仓库研究和解决从数据库中获取信息的问题.数据仓库的特征在于面向主题.集成性.稳定性和时变性. 数据仓库之父Bill In ...

最新文章

  1. HTML5学习笔记简明版(2):新元素之section,article,aside
  2. jmeter中生成UUID作为唯一标识符
  3. c#中调用Excel
  4. C#操作数据库(一)【连接SQL Server数据库】
  5. java应该怎么学习?
  6. 基于ASP.NET的开源Blog程序总结
  7. ie6-7下的li内有浮动元素后导致多出了4px的高度的bug
  8. NIO,一本难念的经——分布式系统基础
  9. 安装vbb的一些经验(包括mysql,apache)
  10. 两款扒站工具使用说明
  11. 趋势杀毒软件卸载方法(卸载密码破解)
  12. 小程序上传身份证正反照,竖排照片横向展示
  13. 多少资金能做股指期货?要交哪些费?
  14. 偶遇Chrome浏览器“喔唷,崩溃啦”,错误代码(STATUS_STACK_BUFFER_OVERRUN)
  15. python+appium爬取微信运动数据,并分析好友的日常步数情况
  16. 《中国迈向新一代人工智能》全文来了。道翰天琼认知智能平台为您揭秘新一代人工智能
  17. oracle预收核销,Oracle EBS AP取消核销
  18. 浏览器打开windows桌面应用
  19. html引入css文件和js文件方式
  20. 完全理解Unity中PreCompute Realtime GI及其优化(一)

热门文章

  1. 系统架构设计师-基于架构的软件设计
  2. 你眼中的魔术,也是美的吗?
  3. 学计算机这么课最大的收获是啥,学习软件工程课程的收获和体会
  4. python + wget多线程下载
  5. 用python实现带有透明通道的图片像PS图层那样进行叠加
  6. 【Android篇】 SDK 目录结构
  7. 【分享】微软面试题及答案 (很需要开放性思维啊)
  8. Android Studio开发安卓5.0以上应用,使用Intent类启动Service发现语法提示不存在setClass,setAction,setAction等方法的原因
  9. 小米相机部门崩溃:拍照世界第三只保持了一天
  10. 清华大学博士讲解Python数据结构与算法笔记