在数据仓库专用设备已经越来越受到关注,很多收购行为,如sun收购greenplum, 微软收购datallegro;也有独立出来的,去年teradata从ncr分出来;还有跟云计算搅在一起的,比如vertica;还有创造世界纪录的,那是sun跟IQ干的事情。
上次介绍sun收购绿梅花的时候,我曾经提到在专用设备领域的两种不同的技术,专门用来提升数据存储、访问性能的技术——MPP跟列式存储。这个领域是比较技术化的,对于这两个名词我其实只知大概而不解其详。最近得空,想了解一些更多的信息,关于MPP的,在此更大家分享一下。
MPP的全称叫大规模并行计算(Massively Parallel Processing),从名字可以看出来,专门用来干大事的。当然,不能光从名字来判断,还得看看原理。通常跟MPP相对的叫做SMP,Symmetric Multi Processing。两者都是搞并行处理的,但有区别。据说,SMP比较适合干OLTP系统,MPP适合服务于OLAP系统(也就是数据仓库了)。为什么呢?因为SMP是多个CPU共享内存、存储和总线,OLTP系统的特点,就是访问细节数据,一次访问的结果不多,但非常频繁。而MPP呢,是一个处理单元各自访问各自的内存、存储,之间不共享资源,所以通常MPP后面还跟着Shared-nothing。
以上的说法我自己感觉有些勉强。但显然的一点,OLTP操作跟OLAP操作的差异肯定是存在的。既然mpp的处理单元之间不共享资源,那么就得有一些通信。如果通信太多,mpp的能力就体现不出来了。反之,通信少但每次处理的量大,就是他的强项。这就怪不得mpp叫做大规模了,有点搞批发的意思。你要是想买一丁点儿数据,我还不值得卖呢。mpp的价值得在计算量大的情况下才能发挥出来。
好像看到一篇关于超级计算机的文章,说目前排名靠前25的超级计算机,都是mpp架构的。
无共享模式好啊,有人专门研究他的好处。没有共享,只要增加一个计算单元,就可以干活了。举个例子,比如一位老先生写了本书,但字写的不太好看,于是想找一帮人重新誊写一遍。500多页,分配好了给十个人干,一人誊写50页。这个人物各自不相干,分工分好了,干活,干完了,整个工作也就完了,这是mpp。而如果是这位先生要编辑杂志,也划分任务,有人负责总体控制,有人负责美术编辑,有人负责文字编辑,有人负责校稿…这事儿就麻烦,互相之间有依赖。杂志版面就那么多,文字编辑说,这块留给我,美编说,那块得弄个图。版面是大家共享的,这工作smp适合干。
如此看来,还是跟任务的类型有关系。誊写文字是简单任务,可以分解成互不相干的若干份,很容易并行。但编写杂志是个复杂任务,难以分解成不相干的(不过这只是难而已,如果细细考虑,复杂任务总是能够分成简单任务的)。不管如何,数据仓库的任务是相对简单的,大数据查询,批量装载。从一亿条记录里面进行sum、count,这种操作其实都可以分解成互相不相干的任务,然后组装。比如sum,一亿条记录分成10份,每一份单独sum,然后再sum,这必然比单独处理一亿条记录要快得多。
理解上去基本如此,抛出几个没有想明白的问题,哪位高手给解答解答:
1、 既然是无共享,那么数据是怎么存储的呢?是每个处理单元各自存储一部分数据吗?那如果一个单元歇菜了咋办?
2、 为什么不同的厂商,基于这个原理作出来东西的效果也不一样呢?应该还有些细节的区别吧?