目录
1. MPPDB历史
MPPDB最早起源于12-13年开始的POC预研,最初把开源PG-XC社区版本作为基线,在此版本上研发。主要预研分布式执行框架(注明的stream算子应该就源于此)、向量化引擎、列存储等OLAP领域中较重要的特征。
PG-XC介绍:PG-XC社区源于日本人铃木发起,并主导开发,主要致力于研发一个分布式OLTP式系统(目前的多CN架构遍源于此),由于社区平淡,后来美国人在此基础上发展PG-XL,致力于在XC的架构下发展OLAP能力,再后来铃木看XL发展还好,于15年又将XC更名为X2,致力于将XC和XL的代码合并,间距两个分支的优良特性。但好景不长,15年9月GP开源后,对X2社区起了巨大的冲击。至今,X2shequ发展仍然平平。
14年我们开始以PG-XC1.1 release版本作为基线,开始正式商业产品化,14年6月份发布第一个商业产品,江湖名称530版本,寓意5月30日发布,何如的主要特性有分布式执行框架,DN中HA功能、GTM批量导入、CM(集群管理)、OM(集群自动化安装),主要是满足产品化功能,此时MPPDB在产品上有了一个基本的模型。14年下半年主要何如向量化引擎、列式存储、HA中数据复制、主备从复制、扩容充分布及各个模块增强。15年主要以稳定上一个版本为主,合入SCTP新一代通信方式、MPP on Hadoop二期、LLVM动态编译、ADIO,ETCD等。17年主要合入了SMP、MPP on Cloud、动态资源管理,nodegroup,事务性能优化,就地升级,列存支持btree等。
2. MPPDB的各个组件
MPPDB是一个较复杂的系统,目前核心代码量大概在百万行左右,从特性角度来看需要比较详细的介绍,但基本遵循传统关系型数据库的架构。这里从MPPDB整体架构来看,简单描述各个组件基本功能,这样更有利于初学者快速入门,了解整体架构,方便以后继续深入研究各个细节。
2.1 GTM组件
GTM名为全局事务管理器,系统中只有一个,采用主备方式,系统中常驻的服务进程,多线程架构。主要用来分发xid与snapshot,保证系统中全局事务的一致性。GTM是被动接受连接的,通常只有CN会主动连接GTM,DN在autovaccumwork时连接GTM。