MPP (Massively Parallel Processing),即大规模并行处理,在数据库非共享集群(传统的单节点不属于集群,双机热备或Oracle RAC等,均是基于共享存储的)中,每个节点都有独立的磁盘存储系统和内存系统,业务数据根据数据库模型和应用特点划分到各个节点上,每台数据节点通过专用网络或者商业通用网络互相连接,彼此协同计算,作为整体提供数据库服务。非共享数据库集群有完全的可伸缩性、高可用、高性能、优秀的性价比、资源共享等优势。
简单来说,MPP是将任务并行的分散到多个服务器和节点上,在每个节点上计算完成后,将各自部分的结果汇总在一起得到最终的结果(与Hadoop相似)。
个人理解:
下面两张图描述Oracle RAC是基于(网络)共享存储的,MPP是各节点分别带计算(有cpu和内存)和存储(有磁盘)的。
图 Oracle RAC集群架构图
图 MPP 架构
谈到MPP,就要提及Hadoop。MPPDB与Hadoop都是将运算分布到节点中独立运算后进行结果合并(分布式计算),但由于依据的理论和采用的技术路线不同而有各自的优缺点和适用范围。(个人理解:MPP应该是传统数据库方案/厂商升级转型的产物,而Hadoop是Google开源后形成的另一条技术路线的产物)。
两种技术以及传统数据库技术的对比如下:
OLTP(On-line transaction processing):在线事务处理/联机事务处理。
OLAP(On-Line Analytical Processing): 在线分析处理/联机分析处理。
数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing)、联机分析处理OLAP(On-Line Analytical Processing)。OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。
OLTP 系统强调数据库内存效率,强调内存各种指标的命令率,强调绑定变量,强调并发操作;
OLAP 系统则强调数据分析,强调SQL执行市场,强调磁盘I/O,强调分区等。
OLTP与OLAP之间的比较:
OLTP和OLAP在实际场景中的应用:传统的INSERT、Update、DELETE等都属于OLTP,主要是涉及事务处理,SELECT中的count(*)、MAX()、MIN()、Group By、Order By等函数都属于OLAP的范畴。
总的来说,先有OLTP,然后才发展OLAP。目前主流的关系型数据库(Oracle、SQLServer、MySQL等均同时具有两者的特征。
以Mysql为例,Mysql安装时,会有 Decision Support(DSS)/OLAP(决策支持)和Online Transaction Processing(OLTP)(联机事务分析)等选项,如下图所示:
OLTP和OLAP的发展是伴随关系型数据库的发展一起发展的。
60年代,关系数据库之父E.F.Codd提出了关系模型,促进了联机事务处理(OLTP)的发展(数据以表格的形式而非文件方式存储)。1993年,E.F.Codd提出了OLAP概念,认为OLTP已不能满足终端用户对数据库查询分析的需要,SQL对大型数据库进行的简单查询也不能满足终端用户分析的要求。用户的决策分析需要对关系数据库进行大量计算才能得到结果,而查询的结果并不能满足决策者提出的需求。因此,E.F.Codd提出了多维数据库和多维分析的概念,即OLAP。
在过去的十年当中,根据Codd的关于OLAP的十二条准则,OLAP技术有了很大的发展,市场上的各种OLAP产品可以说是层出不穷。在开始探讨OLAP 技术的新方向之前,我们有必要回顾一下OLAP技术在过去一段时间的发展和演化:
1970年 第一个OLAP工具Express出现,后来被ORACLE公司收购并重写,但是在此时已经奠定了它的雏形。
1982年 Comshare出现,它应该算是一个面向金融行业的OLAP工具,熟悉IBM解决方案的朋友应该对这个名称比较熟悉,在数据仓库刚进入中国之初,comshare还是势头很猛,目前只在IBM的主机市场上出现了。
1984年,第一个基于Mac的ROLAP工具metaphor出现,由于该产品在当时昂贵的价格以及以后Mac机用户市场的下滑,现在已经没有人在使用这个东西了。
1985年pilot面世,这是第一个高举着EIS旗帜的OLAP供应商,属于典型的C/S结构,主机为Vax也算是把 OLAP向用户更加推进了一步。不过遗憾的是好像没有进入中国市场。
1990年 cognos Powerplay终于出现,把OLAP技术又向前推进了一步,一方面提出desktop olap的概念,同时也是第一个基于windows的OLAP工具。为OLAP提供了更加强劲的可扩展性。
1991年 IBM收购了metaohor,成为第一个转手的OLAP产品,虽然没有什么太大的影响,但是也算是为OLAP产品的收购开了先河。
1992年 Essbase发布,当时应该还是Arbor公司,但是在当时谁都没有想到它会成为后来的市场领先者。
1993年 划时代的一年,Codd博士发表了关于OLAP的白皮书,传统上一般都会认为这是OLAP技术开始发展的一年,其实在此之前,已经有如此多的厂商尝试过这个领域了。但是白皮书发表过之后,越来越多的人开始理解多维分析的概念。
1994年 MicroStrategy 发布,这是第一个完全基于关系型数据库的OLAP工具,所有的olap请求都被后台分割成一个或者多个SQL语句来执行。可以说是OLAP技术和关系数据库技术的第一次亲密接触。
1995年 holos 4.0发布,这个产品应该是第一个混合性的OLAP工具,目前holos属于Crystal Decisions
1995年 Oracle 收购Express,这是业界第一个大型的产品收购,同时也是第一数据库厂商对OLAP技术市场的冲击,这次收购对其他数据库厂商的触动很大。后来几乎每一家数据库厂商都成为数据仓库市场的强劲竞争者。
1996年,BO 4.0发布,第一个同时支持OLAP和关系型数据库查询报表的工具,这再一次拉近了关系型数据库和多维OLAP分析的距离,意味着用户以后有可能不需要购买OLAP的专业展现工具了。
1997年,也就是这一年,MicroSoft又一次尝试统一标准,发布了OLE DB标准,虽然没有正式产品发布,但是这使OLAP领域第一次有了一个统一的标准。现在的OLAP展现软件大多都支持这个标准。
1998 IBM姗姗来迟,推出自己的OLAP解决方案,其间OEM了EssBase作为OLAP Server的引擎,曾经尝试把MOLAP结构保存在关系型数据库当中,遗憾的是,这个很好的想法在当时没能很好的实现,极差的性能导致IBM也不怎么推荐它的这一款产品。另一方面IBM开始在中国全面推行它的商业智能的概念。在国内掀起了一次数据仓库的热潮。
1998年,Hyperion公司与Arbor公司合并,这可能是业界的一次比较巨大的公司合并,Hyperion公司再此之后,一跃成为OLAP市场的领头羊,并持续保持领先位置。
1999年 在这一年,一共发生了两件事情,一件是Microsoft的Plato正式面世,这一随SQL Server 7免费赠送的策略,让数据仓库放下它昂贵的架子,让越来越多的人能够熟悉和使用它。另外一件事就是在国内如日中天的Platinum被CA 收购,而再此之前Platinum刚刚收购了一家OLAP工具叫做Prodea Beacon,而这也创出了软件企业收购的记录35亿美金,次年,CA又收购了另外一家 数据仓库厂商 Sterling,从此CA正式进入OLAP市场。
2000年,在SQL2000中,Microsoft把Plato改名为Analysis Services.
2001年,ORACLE推出ORACLE 9i OLAP Option,实现了把多维数据库保存在关系型数据库当中的承诺。成为业界第一个实现这种功能的产品。OLAP技术终于可以和关系型数据库完全融合在一起了,在接下来的9i第二版当中,这个特性更是被发挥的淋漓尽致。
MPP和Hadoop均可作为在数据的存储和计算基础平台。
Hadoop和MPP两种技术的特定和适用场景为:
● Hadoop在处理非结构化和半结构化数据上具备优势,尤其适合海量数据批处理等应用要求。
● MPP适合替代现有关系数据机构下的大数据处理,具有较高的效率。
MPP适合多维度数据自助分析、数据集市等;Hadoop适合海量数据存储查询、批量数据ETL、非机构化数据分析(日志分析、文本分析)等。
由上述对比可预见未来大数据存储与处理趋势:MPPDB+Hadoop混搭使用,用MPP处理PB级别的、高质量的结构化数据,同时为应用提供丰富的SQL和事物支持能力;用Hadoop实现半结构化、非结构化数据处理。这样可以同时满足结构化、半结构化和非结构化数据的高效处理需求。