中间件速查手册
数据仓库与 OLAP大规模并行处理

MPP 是什么?

一条查询拆到所有节点并行算,再汇总结果

类比:一百个人分头数钱,最后把结果加起来

核心思路

Shared-Nothing 架构:每个节点有自己的 CPU、内存、磁盘,互不共享。查询被切成多个 fragment 下发到所有节点,每个节点只算自己那部分数据,最后汇总。

因为数据本地就能算,省掉了大量网络传输,这是 MPP 数据库比“单机数据库 + 中间件分库分表”快得多的原因。

对 SQL 的要求

MPP 依赖“数据分布均匀”和“join 键与分桶键对齐”。如果 join 的两张表分桶键不一致,就要做数据重分布(shuffle),代价很大。所以建模时要让大表按同一个维度分桶。

和 Hadoop 的区别

Hadoop/Spark 是“存算分离 + 弹性调度”,适合超大规模离线批处理,但延迟高;MPP 数据库是“存算一体 + 常驻进程”,延迟低但扩容不如 Hadoop 灵活。实时报表用 MPP,离线跑批用 Spark。

它出现在这些中间件里

相关概念