MPP DB 是 大数据实时分析系统 未来的选择吗?

article/2025/9/27 12:55:22

大数据领域,实时分析系统(在线查询)是最常见的一种场景,前面写了一个《实时分析系统(HIVE/HBASE/IMPALA)浅析》讨论业界当前常见的方案。互联网公司用得比较多是HIVE/HBASE,如腾讯基于HIVE深度定制改造,改名为TDW,小米等公司选用HBASE等。关于HIVE/HBASE/IMPALA介绍等可以看我前面的文章。

当前在实时分析系统中,最难的是多维度复杂查询,目前没有一个很好的解决方案,这两天和人讨论到MPP DB(分布式数据库,以Greenplum为最典型代表)。如果从性能来讲,MPP DB在多维复杂查询性能确实要好于HIVE/HBASE/IMPALA等,因此有不少声音认为,MPP DB是适合这种场景的未来的解决方案。MPP DB看似对多维度复杂查询性能较好,但是同时有两个致命的缺点,大家选型的时候不得不考虑:

1、扩展性:

MPP DB都号称都能扩展到1000个节点以上,实际在应用过程中,就我目前从公开资料看到的不超过100个节点,如支付宝中用Greenplum来做财务数据分析的最大一个集群60多台机器。另外和Greenplum公司交流,在广东移动最大的用来做数据存储的,也就100台以内。这和hadoop动不动4,5千个节点一个节点集群简直不在一个数量级上。

为什么MPP DB扩展性不好?

有很多原因,有产品成熟度,也有应用广度的问题,但是最根本的还是架构本身的问题。讲到架构这里就要先讲下CAP原则:

Consistency(一致性), 数据一致更新,所有数据变动都是同步的
Availability(可用性), 好的响应性能
Partition tolerance(分区容错性可靠性

定理:任何分布式系统只可同时满足二点,没法三者兼顾。
忠告:架构师不要将精力浪费在如何设计能满足三者的完美分布式系统,而是应该进行取舍。

MPP DB还是基于原DB扩展而来,DB里面天然追求一致性(Consistency),必然带来分区容错性较差。集群规模变得太大,业务数据太多时,MPP DB的元数据管理就完全是一个灾难。元数据巨大无比,一旦出错很难恢复,动不动导致毁库。

所以MPP DB要在扩展性上有质的提示,要对元数据,以及数据存储有架构上的突破,降低对一致性的要求,这样扩展性才能提升,否则的话很难相信一个MPP DB数据库是可以容易扩展的。

 

2、并发的支持:

一个查询系统,设计出来就是提供人用的,所以能支持的同时并发越高越好。MPP DB核心原理是一个大的查询通过分析为一一个子查询,分布到底层的执行,最后再合并结果,说白了就是通过多线程并发来暴力SCAN来实现高速。这种暴力SCAN的方法,对单个查询来说,动用了整个系统的能力,单个查询比较快,但同时带来用力过猛的问题,整个系统能支持的并发必然不高,从目前实际使用的经验来说,也就支持50~100的并发能力。

当前HBASE/IMPALA应对复杂查询时,也是通过全盘SCAN的方法来实现的,这种场景下,硬盘数量越多越好,转速越快越好。HBASE为什么号称支持上千并发,这也是在特定的场景下(查询时带用户标示,即带row key)才能实现的,复杂查询场景下,什么系统都歇菜。

 

所以MPP DB应用场景已经非常明显了,适合小集群(100以内),低并发的(50左右)的场景。MPP DB未来是不是趋势,我不知道,但是至少目前来看,用MPP DB来应对大数据的实时分析系统是非常吃力的。

 
 


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

相关文章

MPPDB分布式结构化数据库

1.MPPDB简介 MPP,它是一款 Shared Nothing 架构的分布式并行数据库集群,具备高性能、高可用、高扩展特性,可以为超大规模数据管理提供高性价比的通用计算平台,并广泛地用于支撑各类数据仓库系统、BI 系统和决策支持系统。 2.MPPDB…

mppdbLibra

1:三种数据库架构、特征、应用 数据库架构中shared-nothing等三个之间的优缺点) 1.shared-everything 一般是针对单个主机,完全透明共享CPU/MEMORY/IO,并行处理能力是最差的,典型的代表是SMP技术 2.Shared-Disk&#…

MPPDB集群高可用设计

目录 1. 前言 2. 内核端高可用设计 2.1 GTM高可用 2.2 CN高可用 2.3 DN高可用 2.3.1 主、备、从高可用设计 2.3.2 数据复制 3. 集群管理端高可用设计 3.1 CMserver高可用 3.2 CMagent高可用 1. 前言 MPPDB集群服务组件主要分为内核端和集群管理端,内核端主要包括…

java JButton计算器布局

java JFrame大体框架 this.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //窗体退出关闭程序 this.frame.setVisible(true); //该框架显示 this.frame new JFrame(“簡易計算器”); // 该面板的名字 this.frame.setLocation(100,100); //最初该面板定位 this.frame.…

java jbutton 省略号_JButton显示省略号

我正在尝试使用Swing库在Java中设置GUI。我创建了一个自定义按钮类,它具有自定义初始化程序,使事情变得更容易。它在下面: public class JTButton extends JButton { char type; public JTButton(String title, ActionListener listener, cha…

java jbutton_Java JButton按钮使用

/** *JButton按钮按键 * */ package com.swing; import java.awt.BorderLayout; import javax.swing.JButton; import javax.swing.JFrame; class jbutton extends JFrame{ private JButton btn1,btn2,btn3,btn4,btn5; public static void main(String[] args){ jbutton jbnew …

JButton

JButton():设置一个没有文本图案的按钮 JButton(String text):创建一个带文本的按钮 getContentPane().add(组件) package apiapi;import javax.swing.*;public class api {public static void main(String[] args) {JFrame framenew JFrame();frame.setTitle(&q…

java按钮组件(JButton、JCheckBox)

按钮在Swing中是比较常见的组件,用于触发特定动作,Swing中提供多种按钮组件,如按钮、单选按钮、复选框等,这些按钮都是从AbstractButton类中继承而来的,下面将讲解这些按钮的应用。 1.JButton按钮组件 Swing中的按钮…

JButton部分常用的方法

本篇文章将会教会大家JButton常用的使用方法 JButton是Swing的组件所以需要导入包 import javax.swing.*;1创建JButton //创建JButton JButton jButton new JButton(); //将JButton添加到面板里 jPanel.add(jButton);2设置JButton大小以及坐标 //设置JButton大小 jButton.…

07.JavaSwing(常用基础组件——JButton类)

一、概述 JButton组件是最简单的按钮组件,在按下和释放2个状态之间进行切换,可以通过捕捉按下并释放的动作执行一些操作,从而完成和用户之间的交互。 二、构造函数 JButton();//创建不带有设置文本或图标的按钮。 JButton(Icon icon);//创建…

【CSS】使HTML页面表格中文字水平且垂直居中的方法(易错)

问题出现 因为是td直接写的文字,并不是套了标签才写,水平居中很清楚就是text-aline: center; 但是垂直居中始终没有得到很好地解决,查找了网上的样式是vertical-align: middle; 试了一下没有效果,很苦恼。 解决办法 …

css水平垂直居中方式总结

这里写目录标题 1. text-align: center;文字水平居中;margin: 0 auto;自身水平居中2. 绝对定位margin(元素需要固定宽高)3. 绝对定位 transform: translate(-50%,-50%);4. 绝对定位margin: auto;5.父元素设置display: flex;justify-content: …

CSS水平垂直居中的几种实现方式

水平垂直居中 1.利用 position:absolute2. 利用margin:auto3. 利用弹性盒子4. 利用水平对齐和行高5. 最简便的方法 1.利用 position:absolute <div class"father"><div class"son"></div> </div>当已知元素宽度和高度时&#xff…

div+css实现水平/垂直/水平垂直居中超详解

目录 一、水平居中1.块级元素水平居中方法一:设置margin:0 auto方法二:设置flex布局方法三:设置css3的transform 2.行内元素水平居中行内元素在块级元素中水平居中方法一&#xff1a;将外层块级元素设置为text-align&#xff1a;center方法二&#xff1a;将行内元素设置为块级元…

16种CSS水平垂直居中方法

16种css水平垂直居中方法以及应用&#xff08;文字、图片&#xff09; 一、垂直居中 1、行内元素 基本思想&#xff1a;单行文本子元素line-height 值为父元素 height 值 .parent {height: 200px; }.son {line-height: 200px; }2、块级元素 2.1行内块级元素 基本思想&…

【CSS】CSS实现水平垂直居中

元素水平垂直居中的场景很常见&#xff0c;常用的方法如下&#xff1a; &#xff08;以下方法在chorme测试可行&#xff09; 一、文本垂直居中 <div class"test">这是一段文字</div>.test {width: 200px;height: 200px;background: orange;text-align:…

CSS实现水平垂直居中

方法1&#xff1a;position transform 先设置一个父元素和一个子元素 <div class"father"><div class"child"></div> </div> 给父元素添加相对定位 .father {position: relative; /* 省略部分代码 */ } 给子元素添加绝对定位…

css grid布局实现水平垂直居中 文字水平垂直居中

原来一直使用flex布局来实现水平垂直居中&#xff0c;今天才知道还有grid也是很好用的&#xff0c;参考阮一峰大神的博客&#xff0c;简单记录一下学习&#xff1b; <div class"container"> <div class"item">1</div><…

html css实现文本水平垂直居中显示

这几天在工作中遇到了一个小问题&#xff1a;文本内容怎么能在div里水平垂直居中显示呢&#xff1f;同时群里的小伙伴恰巧也有提问这个问题的&#xff0c;所以我就总结了一下我知道的方法。 一、利用行高(line-height)和vertical-align配合实现 具体做法如下&#xff1a; ht…

CSS 布局 - 水平 垂直对齐

CSS 布局 - 水平 & 垂直对齐 那么怎样设置居中对齐呢? 我们可以用margin: auto来设置水平居中对其元素。auto可以防止 元素的宽高溢出&#xff0c;而且也可以平均分配两边的空白。 举例说明: .center {padding: 23px;border: 5px solid red;width: 41%;margin: auto; }那…