数据仓库技术中的MPP
数据仓库世界里面的massively parallel processing 大概定义: MPP 是将任务并行的分散到多个服务器和节点上,在每个节点上计算完成后,将各自部分的结果汇总在一起得到最终的结果。 首先MPP 必须消除手工切分数据的工作量。 这是MySQL 在互联网应用中的主要
数据仓库世界里面的massively parallel processing 大概定义:
MPP 是将任务并行的分散到多个服务器和节点上,在每个节点上计算完成后,将各自部分的结果汇总在一起得到最终的结果。
首先MPP 必须消除手工切分数据的工作量。 这是MySQL 在互联网应用中的主要局限性。
另外MPP 的切分必须在任何时候都是平均的 , 不然某些节点处理的时间就明显多于另外一些节点。
对于工作负载是不是要平均分布有同种和异种之分,同种就是所有节点在数据装载的时候都同时转载,异种就是可以指定部分节点专门用来装载数据(逻辑上的不 是物理上) , 而其他所有节点用来负责查询。 Aster Data 和Greenplum 都属于这种。 两者之间并没有明显的优势科研,同种的工作负载情况下,需要软件提供商保证所有节点的负载是平衡的。 而异种的工作负载可以在你觉得数据装载很慢的情况下手工指定更多节点装载数据 。 区别其实就是自动化和手工控制,看个人喜好而已。
另外一个问题是查询如何被初始化的。 比如要查询销售最好的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 左右吧。
软件+硬件的伸缩性更好,但是他硬件必须是一开始就预订好的,不能今天加一台机器,明天加两个磁盘的,里面使用的私有化硬件也都是专门为特殊目的而造 的,比如内部通道一般使用Cisco 的InfiniBand , 磁盘阵列也基本都是一些高端磁盘(但不是NetAPP 那么高端的), 不是简单的任意服务器安装软件就算数据仓库了。
各数据仓库MPP 的实现
Microsoft 没有mpp , 他的集群甚至都不是线性伸缩的(坑爹啊), 但是他08 年就收购了在Linux+Ingres 上做MPP 的DATAllegro , 但是新版还没出来。
Sybase IQ 最新版15。3 做出来MPP , 时间是今年7月份才发布,Sybase IQ 本身是共享磁盘,但是它跟RAC 的区别是它不共享节点的计算资源。
基于Mysql 的InfoBright 没有MPP , 但是非常有名的Percona 给了他们一个MPP 的解决方案, 完全的share nothing ,不共享磁盘,但是由于Mysql 本身并没有parallel query 的能力,所以其实这个MPP 计算能力很有限。
Vertica , Greenplum , Aster Data 的MPP 都是纯软件的share nothing 并且不共享磁盘的, 数据移动和重分布完全是靠计算机集群完成。
Teradata , IBM Netezza 以及将来可能出现的HP Vertica +硬件, Greenplum + EMC 硬件 , Aster Data + Teradata 硬件都是完全的share nothing , 他们共享的是磁盘阵列, 但是部分数据传输和重分布是靠磁盘阵列完成。
参考资料
节点计算中的数据分配和重新分配问题:Oracle Partition Wise Joiin
http://blogs.oracle.com/datawarehousing/entry/partition_wise_joins
数据库 MPP 的秘密
http://davidmenninger.ventanaresearch.com/2011/01/19/secrets-revealed-in-massively-parallel-processing-and-database-technology/
Oracle Exadata
http://www.netezza.com/eBooks/Exadata-TwinFin-Compared.pdf
InfoBright 的MPP 实现
http://www.infobright.org/Blog/Entry/shard_query_infobright_open-source_mpp_solution
相关推荐
### 数据仓库与数据挖掘课程设计知识点详解 #### 一、项目背景及提出问题 ...数据仓库与数据挖掘技术的发展对于现代企业来说至关重要,特别是在大数据日益普及的今天,这些技术的应用范围将越来越广泛。
### 基于数据仓库Web日志的数据挖掘实例解析 #### 一、引言 随着互联网的普及和发展,大量的用户行为数据被记录下来,成为宝贵的商业资源。如何有效地利用这些数据,提取有价值的信息,成为了现代商业竞争的关键之...
科普文章主要目的在于普及科学知识,它以说明文体为主,具有科学性、知识性和趣味性。在高考中,科普文章的阅读理解和分析已经成为一个重要的考察点,但全国课标卷尚未将其作为单独的考试类型,主要在地方高考如广东...
文章中提到了著名的尿布与啤酒的故事,这是一个关于沃尔玛(WalMart)利用数据仓库技术发现并利用商品关联规律的经典案例。通过分析交易数据,沃尔玛发现了购买尿布的顾客也倾向于购买啤酒这一关联性,并据此在商店...
它的出现源于20世纪60年代至90年代的数据存储技术演变,从最初的磁带存储到磁盘存储器(DASD)和数据库管理系统(DBMS),再到联机事务处理(OLTP)系统的普及。随着个人计算机的发展和数据需求的增长,数据抽取技术...
"《数据仓库与数据挖掘》课程教学大纲.docx" 本课程教学大纲旨在让学生掌握数据仓库和数据挖掘的基本概念、技术和算法,并能够使用数据挖掘工具进行商业智能系统中的知识发现和分析。 一、课程基本信息 * 课程...
总的来说,数据仓库与数据挖掘是现代信息社会中的核心技术,它们帮助企业从数据中获取竞争优势,促进科学研究的进步,并在日常生活中创造价值。随着数据科学的不断发展,这两个领域将继续发挥关键作用,推动社会的...
科普日通常是为了普及科学知识,提高公众的科学素养而举办的活动。这份压缩包可能包含的是一系列关于科学、技术、工程和数学(STEM)领域的题目,旨在测试参与者对这些领域的理解和掌握程度。 在"描述"中,我们同样...
【科普文章的定义】科普文章,全称为科学技术普及文章,是科技工作中不可或缺的一部分。它旨在将科学研究成果、科学方法以及蕴含的科学思想和精神以通俗易懂的形式传播给大众,以促进公众的智力开发、素质提升和科技...
### 数据仓库(Immon):决策支持系统的演进与数据管理革新 #### 决策支持系统(DSS)的演进历程 数据仓库的概念及其在决策支持系统中的核心作用,是IT行业发展的重要里程碑,由被誉为“数据仓库之父”的比尔·英蒙...
随着计算机的普及和信息时代的发展,传统的数据库已经无法满足大容量历史数据和不同部分数据集成的需求,数据仓库技术因此应运而生。数据仓库提供了一组以分析为主的工具,主要用来存储大容量的只读数据分析性数据库...
科普文章通常涉及自然科学、社会科学等领域的知识,要求考生具备一定的理解和分析能力。这些练习题可能包含多篇科普文章,每篇文章后设有若干题目,涵盖主旨理解、细节判断、推理判断等多种题型,旨在提升考生在短...
【科普文章阅读】是高考语文中的一个重要专题,主要考察学生对科学小品的理解能力。科普文章,特别是科学小品,通常以简洁的形式和生动的语言,介绍科学知识,兼具知识性和趣味性。高考中常见的热点题型包括赏析科普...
5. 预测建模:结合机器学习算法,动态数据仓库可以支持预测分析,帮助企业预测未来的趋势和可能性,为决策提供科学依据。 6. 自助式分析:现代BI工具往往提供用户友好的界面,非技术背景的员工也能通过拖拽和自定义...
首先,科普文章的本质在于其“科普”二字,即科普文的主要目的是介绍和普及科学知识。这类文章通常以简洁明快的笔触,将复杂的科学原理和现象解释得浅显易懂,旨在让读者在轻松阅读中增长知识,拓宽视野。因此,科普...
统等信息手段进行科学、高效地业务运作,这些以各类数据库为基础的信息系统的投产运行, 不仅为推动企业与政府机构的业务发展做出了巨大的贡献,而且积累下来了大量宝贵的数据, 这些数据包括了企业与政府机构很多...
现代科技馆数据仓库建设方案是针对科技馆数据管理和应用的一套完整体系,它涵盖了数据采集、报送、整合、治理、服务以及数据挖掘等多个关键环节。通过这些环节的建设,科技馆能够高效地管理和利用其数据资源,从而更...
国立台湾大学数学系的众多教授写的数学科普文章。对想学习和了解现代数学概念的同学很有帮助。文章写的深入浅出,易于理解现代数学概念,而又很少涉及繁杂的数学公式。 涉及和代数,几何,分析,微积分,概率,数论...