2.1 Greenplum的前世今生
Greenplum数据库是基于MPP架构的开源大数据平台,具有良好的弹性和线性扩展能力,内置并行存储、并行通信、并行计算和并行优化功能,兼容SQL标准,具有强大、高效的PB级数据存储、处理和实时分析能力,同时支持涵盖OLTP型业务的混合负载,可部署于企业裸机、容器、私有云和公有云中,已为全球金融、电信、制造等行业核心生产系统提供支撑。
Greenplum出现于2002年左右,和Hadoop是同一时期的产物。(Hadoop诞生于2004年前后,早期的Nutch项目可追溯到2002年。)当时,互联网大潮刚刚兴起,数据呈爆发式增长,企业迫切需要一种海量数据的解决方案。业界认识到通过纵向扩展机器性能已经到达了瓶颈,横向扩展的分布式并行计算技术成为了业内共识。
当时,开放的x86服务器技术已经可以很好地支持商用,借助高速网络(当时是千兆以太网)组建的x86集群在整体上提供的计算能力已大幅高于传统SMP主机,并且成本明显低于SMP主机,横向扩展还给系统带来了良好的成长性。于是衍生出了两种基于x86集群实现的并行计算框架,即后来的MapReduce计算框架和MPP计算框架。Greenplum正是在这一背景下基于MPP计算框架(包括分布式存储和并行计算)的软件实现。
和其他计算机专有名称一样,Greenplum这个名字背后也有一个故事:Greenplum创始人的家门口有一棵青梅树(greenplum)。Greenplum的创始团队聚集了十几位业界大咖(来自Google、Yahoo、IBM和Teradata)。他们耗费一年多的时间完成了最初版本的设计和开发,用软件实现了在开放x86平台上的分布式并行计算。Greenplum不依赖于任何专有硬件,性能却远远超过传统造价高昂的专有系统。
Greenplum数据库最核心的组件就是Interconnect,它使得Greenplum实现了对同一个集群中多个PostgreSQL实例的高效协同和并行计算。Interconnect承载了并行查询计划的生成和分发、协调数据节点上查询引擎的并行工作,以及数据分布、Pipeline计算、镜像复制、健康探测等任务。
Greenplum的数据库引擎基于著名的开源数据库PostgreSQL。我们先简单介绍一下PostgreSQL的发展历程,这有助于我们理解为什么60%以上的MPP架构都选择PostgreSQL作为底座。
PostgreSQL是一个功能强大、源代码完全开放的客户/服务器关系型数据库管理系统(RDBMS)。Postgres DBMS的实现始于1986年,当时被叫作Berkley Postgres Project,由Michael Stonebraker教授领导。该项目一直到1994年都处于演进和修改中,直到开发人员Andrew Yu和Jolly Chen为其添加了一个SQL翻译程序,该版本为Postgres95,在开源社区发布。1996年,开源团队再次对Postgres95做了较大的改动,并作为PostgreSQL 6.0版发布。该版本提高了数据库的读写速度,包括增强型SQL92标准以及重要的后端特性(包括子选择、默认值、约束和触发器)。此后,PostgreSQL开始持续稳定地发布新版本,在新版本中做了很多改进。2005年1月19日,PostgreSQL 8.0发布,从这个版本开始,PostgreSQL以原生的方式(即不需要模拟中间层的支持)支持Windows操作系统。
自Michael Stonebraker教授开始,越来越多的数据库专家和优秀的黑客为PostgreSQL的发展做出了杰出的贡献,使PostgreSQL项目充满活力,不断发展成为如今最好的开源数据库管理系统之一。图2-1所示是PostgreSQL发展的里程碑事件。
图2-1 PostgreSQL发展的里程碑事件
PostgreSQL是与MySQL齐名的开源数据库,虽然早期PostgreSQL性能明显优于MySQL,但是市场份额一直落后于MySQL。MySQL自2015年发布5.7版后,性能大幅提升,才勉强可以和PostgreSQL一决高下。同时,PostgreSQL生态非常好,具备非常强大的SQL功能,还拥有出色的扩展能力,支持Python、C、Perl、TCL、PLSQL等语言来扩展功能,并且PostgreSQL许可是仿照BSD许可模式的,没有被大公司控制,版本和路线控制得非常好,基于PostgreSQL,用户可以拥有更多自主性。
正是基于以上原因,Greenplum创始团队选择PostgreSQL作为数据库引擎。Greenplum公司成立于2003年,于2008年正式发布了Greenplum数据库产品。2010年Greenplum的创始团队被存储领域巨头EMC公司收购。同年,EMC在中国组建了Greenplum研发团队,致力于Greenplum数据库产品的升级迭代和推广使用。2014年,Greenplum数据库从EMC公司独立出来,成为Pivotal公司的产品。
2015年10月,Pivotal公司正式把投资超过10年的Greenplum产品开源,Greenplum成为世界上第一款成熟的开源MPP数据库。开源之后,Greenplum社区非常活跃,短短两年时间,在全球已有来自美国、中国、俄罗斯、日本、英国、德国等国家的大批贡献者,获得了广泛的关注。其中,Greenplum中文社区尤为活跃,不仅有来自阿里云、中国移动等大公司的社区贡献者,也包括诸多中小公司的数据库爱好者。
开源以后,Greenplum团队把敏捷软件开发方法引入分布式数据库的开发中,高效快速地完成产品功能迭代和用户建议反馈,极大地提高了产品质量和用户满意度。2017年3月,Greenplum发布5.0版。Greenplum 5.0是开源之后发布的第一个稳定版本,Greenplum 5.x保持大约1.5个月一个版本的迭代速度。图2-2所示是Greenplum数据库发展的关键历程。
图2-2 Greenplum数据库发展关键历程
Greenplum 6.0于2019年9月正式发布,包含诸多重要特性。例如,Greenplum 6.0的内核升级到PostgreSQL 9.4.20,大幅提升了HTAP(OLAP+OLTP)性能,支持复制表、Zstandard压缩算法、灵活数据分布、基于流复制的全新高可用机制等。此后,Greenplum继续保持高效、快速迭代的方式,陆续发布了多个版本。Greenplum 6.16于2021年5月发布,Greenplum 7.0将于2022年第一季度发布。