1.greenplum是一款基于postgreSQL的PB级开源分布式MPP数据库。
目前的OLAP数据库中,Teradata和greenplum是占有率较高的两款,Teradata是商业的,而greenplum是开源的。
2.基本架构
1)架构
master节点存储元数据信息,负责协调,数据存储在各segment节点上。
2)GP支持多模存储/多态存储
行存储:适合OLTP业务,适合频繁更新或者访问大部分字段的场景。
列存储:查询列子集时速度快;适合压缩,不同的列可以使用不同的压缩方式:gzip、quickly、delta、RLE、zstd等。
外部表:历史数据和不常访问的数据存储在HDFS或者其他外部系统中;包括CSV、Txt、binary、orc等。
3)查询计划
GP使用Apache ORCA进行查询优化。
4)GPKafka Connector 可以不经过主节点,直接将数据传输到segment节点上,效率更高。可以支持某证券项目
(18节点)每秒300w数据的输入.
某运行商案例,单表最大1000亿数据,日均5亿数据。
segment节点可以横向扩展,理论节点可以达到千台,目前一般在200个节点左右。
每个rack(16节点),每小时可以加载16TB的数据。
开源可视化工具superset、redash、达芬奇。
开源ETL工具-kettle。
数据库测试工具-HammerDB 应用测试工具-jmeter
3.GP的高可用性
1)管理节点HA
GP部署2台管理节点,为1主1备(standby)方式;主节点和standby节点自动同步数据;主管理节点失败时
切换到Standby管理节点。
2)数据节点HA
采用镜像技术,将数据节点的primary实例的数据自动镜像到其他数据节点的mirror实例中。
primary实例故障时,自动侦测并启用镜像实例。
3)网络HA
系统一般部署两台网络交换机;正常情况下,2台交换机同时工作,负载均衡;如果1台发生故障,另外一台
将提供冗余保护。
4)服务器
硬件组件冗余保护、磁盘raid5保护及data自动重建。
5)系统表gp_segment_configuration记录所有节点的相关信息,提供HA信息支持。
系统视图gp_stat_replication包含walsender进程的复制状态统计信息。
4.影响性能的因素
1)节点的木桶效应
某一台服务器配置较差,或数据倾斜,将拖慢整个集群的速度。
2)镜像分布策略
GROUP SPREAD
3)CPU开启超线程、提高磁盘IO性能、使用万兆网络。
4)数据膨胀
GP使用的是多版本并发控制MVCC的存储机制,删除和更新的行仅仅是逻辑删除,其实际数据仍然存储在
表中,只是不可见。
回收膨胀的空间
5)处理数据倾斜
6)避免锁阻塞
查看pg_stat_activity和pg_locks表,查找历史作业中存在锁的作业,进行优化。
7)SQL优化-避免重分布、如union、排序等。
5.增加segment节点
扩容前应先做一次全面检查,对严重倾斜的表进行纠正,扩容后,对表进行重分布。