`
weitao1026
  • 浏览: 1052277 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论
阅读更多

说起Greenplum这个产品,最早是SUN来推他们的数据仓库产品DWA时接触到的,对这个由PgSQL堆叠出来的数据库产品还不是很了解,当时的焦点还在DWA本身的硬件上,当然不可否认,DWA还是有一些特点的。

后来,我们发现普通的PC+SAS磁盘具备非常好的吞吐能力,完全不逊于某些昂贵的存储设备。这样我们就尝试用PC+Greenplum搭建了一个 环境,效果完全超出了我们的预期,吞吐量完全超过了我们的大型存储。从那时开始,我们不再迷信那些昂贵的主机和存储,开始尝试一些新的东西,比如用 PC+SAS/SATA来堆叠廉价存储,用Greenplum来搭建数据仓库计算环境,搜索的hadoop集群,PC+SSD搭建OLTP数据库,用 Intel Nehalem来替代小型机等等。

昨天,去参加了数据仓库部门关于Greenplum的一个技术分享,期间大量列举了一些性能数据的对比,尤其是和当前的一套Oracle RAC的对比。结果不言而喻,在数据仓库的应用上,尤其是大数据量的处理,性能相差悬殊。这时问题就来了,很多人感觉这个产品太神奇了,可以解决数据仓库 的一切问题,好像它就是上帝赐予我们的礼物。最后好多人都在问:Oracle太烂了,用这么好的设备,性能还这么差,我们干嘛还要用?呜呼哀 哉,Greenplum是好,但并不“神奇”,我们不要被这些”神奇“的数据挡住了视线。

对于Greenplum,我其实也处于一知半解的状态,给大家讲原理未免有些力不从心,这里只简单给大家分析一下Greenplum为什么会快?他用了什么”神奇“的技术?

如何提升数据仓库的处理能力,有以下两个主要因素:第一,吞吐能力,就是所谓的IO;第二,并行计算能力。

我们都知道Oracle RAC是shared everything架构,而Greenplum是shared nothing架构。整个集群由很多个segment host(数据节点)+master host(控制节点)组成,其中每个segment host上运行了很多个PgSQL数据库(segment)。

<iframe id="iframe_0.18789027263233343" style="border: medium; border-image: none; width: 578px; height: 408px;" src="data:text/html;charset=utf8,%3Cimg%20id=%22img%22%20src=%22http://www.hellodb.net/wp-content/uploads/2009/07/greenplum.jpg?_=2644290%22%20style=%22border:none;max-width:578px%22%3E%3Cscript%3Ewindow.onload%20=%20function%20()%20%7Bvar%20img%20=%20document.getElementById('img');%20window.parent.postMessage(%7BiframeId:'iframe_0.18789027263233343',width:img.width,height:img.height%7D,%20'http://www.cnblogs.com');%7D%3C/script%3E" frameborder="0" scrolling="no"></iframe>

数据在进入数据库时,首先要做数据分布的工作,即把一个表的数据尽可能均匀的分布到每个segment上,我们需要为每个表指定一个 distribute列,然后根据hash来做数据分布。这样做的目的就是要充分利用每个节点的IO能力,我们知道现在PC机的IO能力相当可观,象 DWA这种专门设计的数据节点,Sun Fire X4500 Server,在一个box内集成了48块SATA盘,号称“Scan 1 Terabyte of data in 60 seconds”。其实没必要买DWA,国内厂商都有那种磁盘密集型的PC,价格便宜量又足,我们一直用它。

<iframe id="iframe_0.840501765512368" style="border: medium; border-image: none; width: 578px; height: 385px;" src="data:text/html;charset=utf8,%3Cimg%20id=%22img%22%20src=%22http://www.hellodb.net/wp-content/uploads/2009/07/greenplum2.jpg?_=2644290%22%20style=%22border:none;max-width:578px%22%3E%3Cscript%3Ewindow.onload%20=%20function%20()%20%7Bvar%20img%20=%20document.getElementById('img');%20window.parent.postMessage(%7BiframeId:'iframe_0.840501765512368',width:img.width,height:img.height%7D,%20'http://www.cnblogs.com');%7D%3C/script%3E" frameborder="0" scrolling="no"></iframe>

很多人在看到Greenplum架构的时候,第一个问题就是master机器承担了什么功能?它会不会成为系统的瓶颈?这也是Greenplum系 统的一个重要特点,master只承担非常少量的控制功能,以及和客户端的交互,完全不承担任何计算。如果存在一个中心节点的话,那意味着这个系统根本没 有办法线性扩展,因为master一定会成为系统的瓶颈。而Greenplum不存在这个问题,节点间的数据交互,不需要经过master,而是直接在节 点间就完成了。

现在,如果我们要查询某个表的数据,只要把工作分配给每个节点就行了,IO不再是问题,接下来要解决并行计算的问题,核心问题是多表做join。因 为表是通过DT列做分布的,所以每个节点通过DT列就知道数据在某个节点上,假设两个表用DT列做join,因为相同的数据都在相同的节点上,所以只需要 对应节点计算,然后合并结果就可以了。如果是非DT列做join,因为节点间不知道数据的分布,所以就会做一个数据重分布的过程 (redistribute)。我们看下面的例子,三个表都是用id列作为DT列,首先用id做join,因为设计到非DT列的join,这时 Greenplum会作redistribute的工作,作用就是重新按照hash做数据分布,这样做的目的就是要让节点知道数据在哪个节点上,以便完成 join的动作。我们看到后面的group by也做了redistribute,因为group by的也是非DT列,而hash aggregate动作也需要节点间交互数据,节点间也必须知道数据的分布。如果有redistribute动作,效率会高吗?因为 redistribute仅仅只针对需要的数据,而且全部在节点cache中完成,肯定要比DT列做join慢一些,但是效率还是非常高的。

<iframe id="iframe_0.17964831515706808" style="border: medium; border-image: none; width: 578px; height: 344px;" src="data:text/html;charset=utf8,%3Cimg%20id=%22img%22%20src=%22http://www.hellodb.net/wp-content/uploads/2009/07/greenplum3.jpg?_=2644290%22%20style=%22border:none;max-width:578px%22%3E%3Cscript%3Ewindow.onload%20=%20function%20()%20%7Bvar%20img%20=%20document.getElementById('img');%20window.parent.postMessage(%7BiframeId:'iframe_0.17964831515706808',width:img.width,height:img.height%7D,%20'http://www.cnblogs.com');%7D%3C/script%3E" frameborder="0" scrolling="no"></iframe>

Greenplum真正发挥了并行无处不在的优势,在一个主机上同时启动多个PgSQL数据库,这样硬件上的多核CPU就可以充分发挥优势。有人问 我:Greenplum能并行处理多个任务吗?回答是:不可能。因为Greenplun已经将机器的IO和处理能力全部发挥出来了,再没有可能同时处理多 个任务。

Greenplum还有一个有意思的特性就是在数据装载时,不是我们一般想象的存在一个中心的数据分发节点,而是所有节点同时读取数据,然后根据hash算法,将属于自己的数据留下,将其他的节点的数据通过网络直接传送给他,所以数据装载的速度非常快。

Greenplum HA架构

<iframe id="iframe_0.6840042604336357" style="border: medium; border-image: none; width: 578px; height: 282px;" src="data:text/html;charset=utf8,%3Cimg%20id=%22img%22%20src=%22http://www.hellodb.net/wp-content/uploads/2009/07/greenplum4.jpg?_=2644290%22%20style=%22border:none;max-width:578px%22%3E%3Cscript%3Ewindow.onload%20=%20function%20()%20%7Bvar%20img%20=%20document.getElementById('img');%20window.parent.postMessage(%7BiframeId:'iframe_0.6840042604336357',width:img.width,height:img.height%7D,%20'http://www.cnblogs.com');%7D%3C/script%3E" frameborder="0" scrolling="no"></iframe>

现在来看Greenplum并不神奇,其实Oracle RAC也是数据仓库非常好的解决方案,类似的技术Oracle全部都有。我们可以这样来做一个假设,如果针对某个固定的SQL,我可以同样用Oracle RAC来做Greenplum做的事情,根据SQL,我们可以把表做 Hash+Range分区(事实上Greenplum也是hash+range分区,用hash将数据分布到不同的数据库上,然后再用range将每个数 据库上的表做分区),再利用RAC的并行处理能力。Oracle也有partition-wise join这种类似功能,但是没有数据redistribute的操作。Oracle最大的问题还是在于shared everything的架构,导致IO的处理能力有限,我们的大型存储吞吐量也就1.4GB/S,而且扩展能力也有限。以前曾经介绍过的Oracle database machine,就是Oracle专门为数据仓库的提供的解决方案。

其实并存在什么神奇的技术,Greenplum之所以神奇是因为我们的场景发挥了他的特点,其实我们也可以设计一个场景来得到Greenplum很烂的结论,所以不要相信厂商的数据,不要相信什么可以解决一切问题的技术,那根本不存在。

”不要迷恋哥,哥只是传说。“

分享到:
评论

相关推荐

    greenplum 简介及数据库对比

    greenplum 简介及数据库对比 。 greenplum hive infobright 对比。

    大规模并行处理系统GreenplumDB.zip

    Greenplum 之前是一家总部位于美国加利福尼亚州,为全球大型企业用户提供新型企业级数据仓库(EDW)、企业级数据云(EDC)和商务智能(BI)提供解决方案和咨询服务的公司。目前 Greenplum 已经归属 Pivotal。 Greenplum ...

    Greenplum底层是postgresql,客户端自然也是psql。由于psql本身不支持通过参数来指定密码进行登录,所以需要

    在IT领域,特别是数据库管理中,Greenplum是一个基于PostgreSQL的分布式数据库系统,它用于大规模数据仓库和分析工作负载。由于Greenplum的底层架构是PostgreSQL,因此它的默认客户端工具也是`psql`。然而,`psql`...

    基于Greenplum Hadoop- 分布式平台的大数据解决方案19.定义数据库对象(9)-维护分区表.zip

    2. **分区策略**:深入讨论不同类型的分区策略,例如范围分区、列表分区和哈希分区的适用场景及优缺点。 3. **分区操作示例**:展示实际的SQL语句,演示如何创建、修改和删除分区,以及如何调整分区策略以适应数据...

    Greenplum对JSON的支持1

    在 Greenplum 中,JSON 数据可以存储为两种形式:JSON 和 JSONB,每种都有其特定的优缺点和应用场景。 1. JSON 的概述: JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时...

    数据仓库产品优缺点分析.pptx

    本文主要分析了四个主流的数据仓库产品:Teradata、GreenPlum、Netezza和Exadata,分别探讨了它们的特性和优缺点。 首先,Teradata是大数据分析和数据仓库领域的领头羊,其产品线广泛,适合不同规模的企业。...

    数据仓库产品优缺点分析及技术发展展望.doc

    数据仓库产品优缺点分析及技术发展展望 数据仓库是企业级数据管理的核心组件,对企业的数据分析和决策过程产生着深远的影响。近年来,数据仓库产品的发展日益繁荣,各种产品涌现,为企业提供了多样化的选择。然而,...

    最新MPP数据库对比 (2).pdf

    总结来说,Greenplum和Vertica都是强大的MPP数据库解决方案,各有优缺点。Greenplum更侧重于大数据的快速处理和高扩展性,而Vertica则在列存储和分析性能上表现出色。企业在选择时应根据自身的需求,比如数据处理量...

    08.角色权限及客户端认证管理(2).rar

    视频教程可能会详细阐述每种认证方式的优缺点,以及如何在实际环境中进行设置和配置。 在学习这个视频教程的过程中,你可能会学到如何创建和管理数据库角色,如何为角色分配和撤销权限,以及如何根据网络环境和安全...

    3-9+impala打造交互查询系统.pdf

    这些系统各有优缺点,例如,Hive适合批处理但响应时间较长,Spark则在内存计算方面表现出色,而Impala以其交互式查询能力著称。Presto和GreenPlum同样适用于分布式查询,但在特定场景下,如实时分析和OLAP操作,它们...

    一份全面的企业数据产品选型对比(含数仓、报表、BI、中台、数据治理).docx

    数据存储方案多样化,如Oracle、DB2、Greenplum和TeraData等,其中Greenplum以其高性能和高性价比受到青睐,许多企业正从TeraData转向Greenplum。ETL(提取、转换、加载)工具中,kettle、Tablend和Pentaho较为常见...

    数据仓库技术.pptx

    数据仓库技术是现代企业信息化建设的关键组成部分,主要用于存储、管理和分析大量的历史数据,为企业决策提供支持。本篇内容主要介绍了数据仓库...不同的架构和技术各有优缺点,需根据具体业务需求和资源状况进行选择。

    人工智能-数据分析-海量数据分析处理方法的研究.pdf

    本文对 Greenplum 并行数据库进行了详细的测试,测试数据以真实的一家证券公司的业务数据为基础,从数据加载、统计分析执行等几个方面进行了性能比较。结果表明,Greenplum 并行数据库可以提供高性能的数据处理能力...

    谢麟炯+-+唯品会海量数据实时OLAP分析实践.pdf

    每个阶段都有其优点和缺点,谢麟炯通过实际经验分享了唯品会大数据实时OLAP升级过程的详细过程。 在唯品会大数据实时OLAP升级过程中,谢麟炯提出了多个解决方案,包括使用商业敏捷BI工具、GreenPlum MPP数据库作为...

    一份全面的企业数据产品选型对比(含数仓、报表、BI、中台、数据治理).pdf

    Talend、Kettle(Pentaho的一部分)和Tableau是常见的选择,它们各有优缺点,如Talend的扩展性和定制性较强,而Pentaho则易于使用但扩展性相对较弱。 报表工具和BI(Business Intelligence)平台为企业提供数据可视...

    7-3+ClickHouse在腾讯游戏营销效果分析中的应用实践.pdf

    为了解决这些问题,团队考虑了包括Presto、Impala、Greenplum在内的多种OLAP工具,最终选择了ClickHouse,因其具备高性能、高压缩比和丰富的表引擎特性,且可以直接处理多种数据源。 ClickHouse的优势在于其列式...

    分布式数据库技术及发展趋势研究.docx

    初期的数据库都是单机软件,跑在专有的硬件之上,但这种体系的缺点是开放性不够,与通用 x86 服务器体系上的开发环境兼容性差,另外当业务量增长过快时,其扩展能力有限。 2000 年以后,随着互联网在线业务的发展,...

Global site tag (gtag.js) - Google Analytics