数据仓库世界里面的massively parallel processing 大概定义:

  MPP 是将任务并行的分散到多个服务器和节点上,在每个节点上计算完成后,将各自部分的结果汇总在一起得到最终的结果。
  
  

  1. 首先MPP 必须消除手工切分数据的工作量。 这是MySQL 在互联网应用中的主要局限性。
      
  2. 另外MPP 的切分必须在任何时候都是平均的 , 不然某些节点处理的时间就明显多于另外一些节点。

    对于工作负载是不是要平均分布有同种和异种之分,同种就是所有节点在数据装载的时候都同时转载,异种就是可以指定部分节点专门用来装载数据(逻辑上的不 是物理上) , 而其他所有节点用来负责查询。 Aster Data 和Greenplum 都属于这种。 两者之间并没有明显的优势科研,同种的工作负载情况下,需要软件提供商保证所有节点的负载是平衡的。 而异种的工作负载可以在你觉得数据装载很慢的情况下手工指定更多节点装载数据 。 区别其实就是自动化和手工控制,看个人喜好而已。
      
      

  3. 另外一个问题是查询如何被初始化的。 比如要查询销售最好的10件商品,每个节点都要先计算出自己的最好的10件商品,然后向上汇总,汇总的过程,肯定有些节点做的工作比其他节点要多。

    上面只是一个简单的单表查询,如果是两个表的连接查询,可能还会涉及到节点之间计算的中间过程如何传递的问题。 是将大表和小表都平均分布,然后节点计算的时候将得到的结果汇总(可能要两次汇总),还是将大表平均分布,小表的数据传输给每个节点,这样汇总就只需要一 次。 (其中一个特例可以参考后面给出的Oracle Partition Wise Join) 。 两种执行计划很难说谁好谁坏,数据量的大小可能会产生不同的影响。 有些特定的厂商专门对这种执行计划做过了优化的,比如EMC Greenplum 和 HP Vertica 。 这其中涉及到很多取舍问题,比如数据分布模式,数据重新分布的成本,中间交换数据的网卡速度,储存介质读写的速度和数据量大小(计算过程一般都会用临时表 储存中间过程)。
     

一般在设计MPP 数据仓库的时候都会有一个指导原则用来得到比较好的性能,比如数据如何分布,customer 一般按照hash 分布比较好,而sales_order 一般按照时间分布。所以一般建议在选型做POC 的时候,针对你自己需要的典型查询模式和负载进行测试。 一般优化的时候会考虑如下问题:

  • 查询如何初始化?

  • 是否有足够的节点用来处理查询?

  • 同样的,数据装载的时候是否有足够节点用来装载数据 ?

  • 数据装载如何影响查询的 ?一些列数据库数据装载的时候一般不适合处理查询。

  • 数据该复制多少份?把常用的数据分布在更多的节点上显然会减少数据移动的影响

  • 一般用来做高可用的数据能用在查询上嘛?

  • 有什么工具能查看查询的执行计划吗?这些功能能帮助你定位性能瓶颈.

在开始使用MPP 的时候你至少应该明白几件事:

  • 不同的数据分布策略到底如何影响

  • 不同的工作负载模式如何影响你的设计

Share Everthing 和 Share Nothing

   数据仓库里面share everything 的代表是Oracle 的Exadata 。 Sybase 也从oracle 引入了rac 的套件,但是Sybase 本身没有硬件,所有架构上还是跟Exadata 有很大区别。 就跟普通所说的RAC 和 Exadata 的在架构上的区别一样。
   

Exadata 是用一个储存阵列来存放数据的,跟Oracle 10g 里面ASM Disk + Disk 是完全不同的。

  share nothing 的架构在数据仓库里面更多, Teradata,IBM Netezza , Vertica,Greenplum, Aster Data 基本都是。
  
  这个是比较传统的share nothing 架构, Sybase IQ , Vertica , Greenplum Community , Aster Data 基本都是这种,纯软件上实现的share nothing, 里面Disk 跟Disk 之间是分开的,Node 跟Node 之间就是纯的物理上的服务器。
  Teradata ,IBM Netazza ,将来可能出现的EMC Greenplum + 硬件(现在的Greenplum DCA不是 ) ,HP Vertica + 硬件 架构图是这样的:
  
   (IBM Netazza Architecture)
  里面的磁盘阵列是磁盘阵列,互相之间是可以转移数据的, 前面讲的几个(Sybase IQ) 这种Disk 跟Disk 之间是不能传数据的,要交换数据必须通过计算层面发送内部消息。
  他们之间最大的区别就是在执行计划里面数据重分布会非常不一样,具体这个后面我写Exadata vs Netezza 会详细说。 大家也可以参考最下面参考资料给出的连接
  
MPP 厂商纯软件和软件加硬件的share nothing 架构区别
   
  纯软件的MPP 理论上的伸缩性可能可以到比较高的级别,但是数据越大可能执行某些SQL 就没有在比较小数据量的时候优秀了。 大概的梯度在1P 跟200TB 左右吧。
  

各数据仓库MPP 的实现
  
  Microsoft 没有mpp , 他的集群甚至都不是线性伸缩的(坑爹啊), 但是他08 年就收购了在Linux+Ingres 上做MPP 的DATAllegro , 但是新版还没出来。
  
  Sybase IQ 最新版15.3 做出来MPP , 时间是今年7月份才发布,Sybase IQ 本身是共享磁盘,但是它跟RAC 的区别是它不共享节点的计算资源。
  

  VerticaGreenplumAster Data 的MPP 都是纯软件的share nothing 并且不共享磁盘的, 数据移动和重分布完全是靠计算机集群完成。
  
   TeradataIBM Netezza 以及将来可能出现的HP Vertica +硬件Greenplum + EMC 硬件Aster Data + Teradata 硬件都是完全的share nothing , 他们共享的是磁盘阵列, 但是部分数据传输和重分布是靠磁盘阵列完成。

参考资料

  节点计算中的数据分配和重新分配问题:Oracle Partition Wise Joiin
  
  数据库 MPP 的秘密
   
  Oracle Exadata
  
  InfoBright 的MPP 实现
  

数据仓库技术中的MPP相关推荐

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

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

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

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

  3. EDW on Hadoop(Hadoop上的数据仓库)技术选型和实践思考

    在这篇文章中, 将讨论EDW on Hadoop 有哪些备选方案, 以及我个人的倾向性, 最后是建构方法.  欢迎转载, 但必须注明原贴(刘忠武,  http://www.cnblogs.com/ha ...

  4. 【简介】数据仓库技术实现

    数据仓库建设方案有两种,一种是传统架构的数据仓库,一种是大数据架构的数据仓库. 传统数据仓库 传统数据仓库是由单机数据库发展而来的.业务数据库一般是关系型数据库(RDBMS),那数据仓库在建设初期,也 ...

  5. 浅谈数据仓库建设中的数据建模方法

    http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0803zhousb/ 所谓水无定势,兵无常法.不同的行业,有不同行 ...

  6. 数据仓库建设中的数据建模方法(转)

    简介: 本文的主要内容不是介绍现有的比较流行的主要行业的一些数据模型,而是将笔者在数据仓库建设项目中的一些经验,在这里分享给大家.希望帮助大家在数据仓库项目建设中总结出一套能够合乎目前业界规范的,满足 ...

  7. sql中什么时候应用临时表_SQL数据仓库环境中的临时表应用程序

    sql中什么时候应用临时表 Today the subject of investigation is the Temporal Table, which is a new feature in SQ ...

  8. 数据建模_浅谈数据仓库建设中的数据建模方法

    所谓水无定势,兵无常法.不同的行业,有不同行业的特点,因此,从业务角度看,其相应的数据模型是千差万别的.目前业界较为主流的是数据仓库厂商主要是 IBM 和 NCR,这两家公司的除了能够提供较为强大的数 ...

  9. Workflow 在数据仓库建设中的应用与优化

    导读:随着 IT 时代步入到 DT 时代,从数据中挖掘价值已经变得越来越重要.数据仓库系统长期以来一直是企业 IT 架构的重要组成部分,并且逐步与大数据等技术相融合,已然成为建设数据文化的智慧型企业的 ...

最新文章

  1. 计算机知识新闻稿,文科计算机大赛新闻稿
  2. 安全源于细节:云环境下如何保证应用安全
  3. android 无appid分享_App ID 和Bundle ID 有什么不同?ios面试攻克篇(六)
  4. C++new和delete实现原理(汇编解释)
  5. JQuery 中选择多选择框,和单选框,实现获取相应选择的值
  6. dabs是什么意思_cpdd是什么意思(网络语cpdd是什么梗啥意思)
  7. php使用curl发送请求时 添加header失效
  8. [USACO08MAR]土地征用Land Acquisition
  9. 添加简单的linux内核模块,操作系统实践 第12章-添加最简单的Linux内核模块.ppt
  10. Nginx SSI指令配置详解
  11. SQL:postgresql中合并多个geom数据ST_Union以及比较两个geom数据是否相同ST_Equals
  12. LA 2218 Triathlon(半平面交)
  13. java mapxtreme_mapxtreme的地图绘制概念
  14. 北京科技大学计算机控制实验报告,北科大计组原理实验报告.docx
  15. mysql默认数据库名_mysql默认数据库
  16. 离线底图瓦片,可用于Cesium加载使用【图说GIS】
  17. 【Windows】常用盗版软件的替代免费软件列表
  18. myeclipse2017 for Mac 破解版本
  19. 移动端app开发流程分析
  20. numpy python取表格的前几行前几列 某行某列

热门文章

  1. LeetCode刷题模板(1):《我要打10个》之二分法
  2. 计算机网络之数字签名、数字证书
  3. 数组名不代表首元素地址的两种例外情况
  4. jquery 下拉菜单
  5. 第7篇:SELECT条件查询
  6. 2021毓英中学高考成绩查询入口,福建省晋江市毓英中学2021届高三上学期12月份考试物理试卷 PDF版含答案.pdf...
  7. 【20210108期AI简报】技术宅硬核跨年,开源DIY墨水屏日历!
  8. 一加疑违反GPL协议,迟迟不公布OxygenOS 12源码惹怒网友
  9. MSSQLSERVER服务无法启动的解决方案
  10. 企业云安全的6个最佳实践