http://greenplum.org
代码托管在GitHub上,链接为:
https://github.com/greenplum-db/gpdb
开放源码一方面可以为数据库用户和开发人员提供Greenplum数据库源码级的实现参考,另一方面可以吸引更多的数据库开发者参与到Greenplum社区维护中。
02 高扩展性
Greenplum数据库采用大规模无共享架构,将多台服务器组装成强大的计算平台,实现高效的海量并行运算。Greenplum数据库可以支持1000个以上的集群,管理的数据规模从TB级到PB级,可以满足多数企业的数据处理需求。
03 高查询性能
Greenplum的高性能不仅来自高效的并行处理框架,还有查询引擎的优化。Greenplum数据库除了支持基于PostgreSQL的查询优化之外,还专门开发了一个新的查询优化器ORCA。
ORCA是一款自顶向下的基于Cascades框架的查询优化器,目前已经成为企业版Greenplum数据库的默认优化器。相比基于PostgreSQL的查询优化器,ORCA查询优化器能使部分查询的性能提升10~1000倍。
04 高可用
Greenplum提供多级容错机制,确保整个系统的高可用性。Master节点通过Standby Master节点进行备份,每个数据节点的Primary Segment实例分别配置一个Mirror Segment实例作为备份,同时确保同一组Primary Segment实例和Mirror Segment实例不在同一物理机上,从而降低因为宕机而导致数据丢失的风险。
05 高效资源管理
Greenplum提供了高效的资源管理机制,根据用户的业务逻辑将资源合理地分配给查询任务,避免查询任务因查询资源不足而得不到响应。
Greenplum资源管理主要包括对并发查询数量的限制,查询执行时内存、CPU资源使用的限制等。Greenplum数据库提供了资源队列(Resource Queue)和资源组(Resource Group)两种资源管理方式,一般使用场景下采用默认配置即可。
06 多态存储
用户可以根据数据热度或者访问模式的不同使用不同的存储方式,以获得更好的查询性能。用户可以为一张表按照一定的规则(比如日期、月份)创建分区表,一张表的各个子分区表可以使用不同的物理存储方式。
支持的存储方式包括:
- 行存储,数据以行的形式存储在数据页里,适合频繁更新的查询;
- 列存储,数据以列的形式存储在数据页里,适合OLAP分析型查询;
- 外部表,数据保存在其他文件系中,如HDFS、S3,数据库只保留元数据信息。
07 生态完整
Greenplum数据库拥有完善的SQL标准支持,包括SQL92、SQL99、SQL2003以及OLAP扩展,是对SQL标准支持最好的开源商用数据库系统之一。同时,由于Greenplum数据库基于PostgreSQL,因此也继承了PostgreSQL对于JDBC、ODBC、C、Python API等接口的支持。
08 高效数据加载
Greenplum还有一个非常神奇的功能——GPload并行加载数据,即允许数据从多个文件系统通过多个主机上的多个网卡加载数据,从而达到非常高的数据传输率。笔者曾经在3个节点的集群上并行加载50GB、2亿行记录的数据,仅用时90s。
此外,Greenplum数据库可以读取和写入多种类型的外部数据源,包括文本文件、XML文件、S3平台文件、Gemfire、Web服务器以及Hadoop生态系统中的HDFS、Hive、HBase、Kafka、Spark等,同时支持数据压缩以及字符集间的自动转换。
09 高级数据分析功能
Greenplum数据库支持各种过程化编程语言,包括PL/PostgreSQL、PL/R、PL/Python、PL/Java、PL/Perl等语言扩展。在高级数据分析方面,通过Greenplum数据库的MADlib扩展模块,用户可以很方便地利用MPP架构完成大规模并行分析。
10 良好的监控管理和运维体验
Greenplum数据库提供基于Web的可视化工具—Greenplum Command Center(简称GPCC)。GPCC可以监控Greenplum数据库系统的性能、集群健康状态、查询执行及系统资源使用情况,如图2-4所示。
▲图2-4 Greenplum数据库资源监控中心界面
关于作者:王春波,资深架构师和数据仓库专家,现任上海启高信息科技有限公司大数据架构师,Apache Doris和openGauss贡献者,Greenplum中文社区参与者。具有十多年的数据仓库、数据集市、数据中台项目实战经验,对大数据主流技术架构、产品选型与解决方案有深入研究,尤其擅长用优雅的SQL实现复杂的逻辑。
本文摘编自《高效使用Greenplum:入门、进阶与数据中台》,经出版方授权发布。(ISBN:9787111696490)