数据仓库技术中的MPP

article/2025/9/30 19:53:52

数据仓库世界里面的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 实现
  


http://chatgpt.dhexx.cn/article/AFGw6rDD.shtml

相关文章

数据挖掘和数据仓库之间的区别

数据挖掘和仓储对于任何希望在全球或国家层面获得认可的组织来说都是必不可少的两个过程。这两种技术都有助于防止数据欺诈并提高管理统计数据和排名。数据挖掘用于依靠在数据仓库阶段收集的数据来检测重要模式。 数据挖掘和数据仓库都被视为数据分析的一部分。但它们以不同的方…

数据仓库ETL技术探究

ETL概述 在构建商业智能系统的时候,如何正确有效地将分散在各个不同数据源中的信息整合到系统中成为了整个系统成败的关键,直接影响到系统的运行效率和最终结果。 ETL正是解决这一问题的有力工具。 ETL是指把数据从数据源装人数据仓库的过程&#xff0c…

数据仓库与数据挖掘知识点梳理

数据仓库与数据挖掘知识点梳理 一:数据挖掘 1:什么是数据挖掘 数据挖掘是从大量的数据中挖掘出隐含的、未知的、用户可能感兴趣的和对决策有潜在价值的知识和规则。 ----简单的说,数据挖掘就是从大量的数据中发现有用信息的过程 数据的丰富…

Greenplum 实时数据仓库实践(1)——数据仓库简介

目录 1.1 什么是数据仓库 1.2 操作型系统与分析型系统 1.2.1 操作型系统 1.2.2 分析型系统 1.2.3 操作型系统和分析型系统对比 1.3 抽取-转换-装载 1.3.1 数据抽取 1.3.2 数据转换 1.3.3 数据装载 1.3.4 开发ETL系统的方法 1.4 数据仓库架构 1.4.1 基本架构 …

数据仓库 OLAP

一、数据库 vs. 数据仓库 1. 构建目的不同:数据库主要用于实现企业的日常业务管理,提高业务运营的效率 数据仓库用于将多个数据源的数据进行集成,用于分析,结果辅助决策 2. 管理数据不同:数据库通常只包含当前数据&…

数据仓库基本知识

目录 1.数据仓库 1.1 数据仓库起源 1.1.1 联机事务处理系统(On-Line Transaction Processing,OLTP) 1.1.2 联机分析处理系统(On-Line Analytical Processing,OLAP) 1.1.3 建立DW的基本条件 1.2 数据仓…

数据仓库框架指导

目录 1, 数据仓库 DW 2, 数据库 vs 数据仓库 3,数据仓库历史 3.1,历史 4,维度建模 4.1,概念 4.2,建模模型 4.3,结构 4.4,事实表 4.5&#xff…

Oracle 数据仓库详解

文章目录 1 概述2 数据仓库2.1 数仓分层2.2 维度建模 1 概述 数据库 VS 数据仓库 数据库是面向事务设计的,属于 OLTP(在线事务处理)系统,主要操作是随机读写;在设计时尽量避免冗余,常采用范式规范来设计数…

数据仓库原理

1.简介 1.1诞生背景 历史数据积存:历史数据使用频率 低,堆积在业务科中,导致性能下降;企业数据分析需要:各个部门自己建立独立的数据抽取系统,导致数据不一致; 1.2基本概述(Data …

数据仓库入门介绍

🍊最近很多学弟学妹问我,我实习的工作是内容是什么?有没有一些可参考的学习路线?每次我都说是数仓开发,但是很多同学不太了解什么是数据仓库,于是我就写一篇博客,来介绍一下数据仓库&#xff0c…

大数据开发---数据仓库技术

1、什么是数据仓库 数据仓库,英文名称为Data Warehouse,可简写为DW或DWH。数据仓库,是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合。它出于分析性报告和决策支持目的而创建。为需要业务智能的企业,提…

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

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

数据仓库需要的技术

数据仓库和技术 首先对于数仓我们应该知道,相比较于传统数据库来说,它需要的操作要相对简单一些,在数仓中没有联机更新数据的需要,只有一些非常少的锁定需要 然后了解一下数据仓库都有什么需求 1、管理大量的数据 对于数仓而言…

使用fprobe生成Netflow

可以在https://sourceforge.net/projects/fprobe/下载fprobe ubuntu deb下载地址 http://ftp.uni-bayreuth.de/debian/pool/main/f/fprobe/ centos rpm下载地址,可以使用以下地址搜索fprobe http://rpm.pbone.net/index.php3 fprobe的使用 假设eth2为流量镜像口&am…

Netflow、Netstream、sflow

理论性概念自行百度即可。 Netflow是cisco搞出来的,Netstream是HW搞出来的。不一定的点:netflow只能进行入方向的分析,Netstream可以进行出入方向的分析。Sflow是基于芯片的,降低了设备的CUP的压力。 NetFlow更多的是在路由器上得…

NetFlow网络流量分析

NetFlow是思科开发的协议。它用于记录有关穿越网络设备(如路由器,交换机或主机)的IP流量的元数据。启用NetFlow的设备会在接口级别生成元数据,并将此信息发送到流收集器,在流收集器中存储流记录以启用网络流量分析。网…

NetFlow学习总结

NetFlow学习总结 标签: netflow 由于工作需要,对NetFlow做了一些学习和调研,并总结成文档以供学习分享。 背景:随着系统的升级与漏洞的修补,入侵主机进而进行破坏的病毒攻击方式在攻击中所占比例逐渐减少,…

CentOS 7部署nfsen监控netflow

转载来源 :部署nfsen监控netflow : https://www.jianshu.com/p/011258907081 介绍 netflow和sflow可以帮助我们分析网络中的流量构成,抓取实施带宽使用情况,帮我们找出"hog"。作为collector的软件一般都是收费的&…

【NetFlow】NetFlow V9协议详细分析

无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点这里可以跳转到教程。 摘自百度百科 Netflow技术最…

NETFLOW 与 SNMP两种不同的网络监控方法

SNMP(简单网络管理协议)和Netflow都是管理员常用的协议,因其能够提供网络可见性以及在某些情况下识别网络性能问题、网络瓶颈、系统资源分配问题等的原因而备受赞誉。在Netflow方面,像ManageEngine这样的第三方软件供应商可以极大…