Greenplum 6.0新特性加持UDW,企业构建云数据仓库之首选 | U刻
产品动态/

Greenplum 6.0新特性加持UDW,企业构建云数据仓库之首选

  • Greenplum 6.0新特性加持UDW,企业构建云数据仓库之首选

    ​前言

    近年来,Greenplum凭借其优秀的数据存储、处理和实时分析能力,已被广泛应用于数据仓库领域,去年还被Gartner评为全球排名第三的分析型数据库和排名第四的实时分析数据库。作为主打OLAP和数据分析的开源型MPP数据库, Greenplum经过十多年的打磨,于2019年12月底进行了6.0版本的大升级,TPC-B性能相比5.x提升60倍,单条查找提升350%,拥有了更强的HTAP能力。

    (数据对比图来源于Greenplum官方测试)
    UCloud 数据仓库(UDW)是在开源Greenplum基础上开发的大规模并行处理、可完全托管的PB级数据仓库服务。UDW一直与开源Greenplum的更新保持同步,并已于近期围绕Greenplum6.0版本的新特性,完成了UDW的重大升级。

    Greenplum的特点

    Greenplum是基于PostgreSQL的分布式数据仓库,我们先来看下它的基本特点:

    • MPP架构:Greenplum采用MPP架构,具备线性扩展存储能力及分布式任务处理能力,支持数据的大规模并行计算。
    • 高可用:支持主节点与计算节点增加冗余备份,节点宕机时可自动快速切换,降低整体数据仓库服务宕机风险确保数据不丢失。
    • 多种数据存储方式:同时支持行存储及列存储的数据存储方式以及外部表存储,满足不同场景下的数据存储需求。
    • 简单易用:高度兼容PostgreSQL语法,提供可视化的管理控制台,方便快捷管理监控数据仓库,降低入门成本。

    Greenplum 6.0新特性

    升级到Greenplum 6.0版本之后,首先其内核更新到PostgreSQL 9.4版本,具体包括:

    • 移植了大量PostgreSQL的新特性在既有JSON类型上,支持JSONB存储格式,实现高性能的JSON数据处理及更丰富的JSON函数;
    • 新增GIN索引和SP-GiST索引可以更高性能支持模糊匹配,以及中文检索;
    • 支持了 schema 级别以及 column 列级别权限控制和授权等。

    其次,Greenplum 6.0的混合事务和分析处理 HTAP能力得到进一步提升:

    • 引入全局死锁检查机制,动态的收集和分析锁的信息来检查和解除全局死锁。基于此,HEAP表的更新修改操作可以只借助细粒度行锁完成;
    • 支持大并发的更改删除查询,提高整个系统的并发度和吞吐量;
    • 同时还对事务锁进行了优化,减少了开始事务和结束事务时的锁竞争,在既有高性能 OLAP分析基础上,也可以提供高吞吐交易事务处理。

    另外,在OLAP 方面的新增功能包括支持复制表:

    • 针对数仓中的维度表,通过建立复制表,可以大量减少数据传输,提升查询效率;
    • 支持zstandard压缩算法:ZSTD压缩算法,较之前 zlib 压缩算法,提升三倍的压缩和解压性能;
    • 采用一致性hash,扩容速度更快;扩容无需停机。

    Greenplum 典型应用场景

    • 数据仓库

    可以通过数据收集工具,把数据离线批量/实时同步到Greenplum,实现离线/实时数仓,同时它还支持高性能的在线分析能力,可以通过superset、Tableau、等BI工具即时查询数据,并将数据以报表形式展现。

    • 数据分析平台

    可以通过SQL简单方便的实现高性能分析处理和在线数据探索。

    • 地理信息数据分析

    通过PostGIS插件支持地理信息数据分析。

    • 机器学习

    可以充分利用其内置的MADlib算法库进行机器学习。

    数据分析场景案例


    某物流平台是国内最早的进出口物流服务商之一,目前已成为全网电商平台覆盖最广的服务商,连接了国内外的一线电商。随着其业务规模的扩大,数据量快速增长,即时查询也越来越多,原先采用MySQL的方式下,查询越来越慢,不仅严重影响体验,而且扩容起来也很麻烦。最终,该客户选择了使用UDW。通过UDW的分区表、列存储、表压缩、合适的索引来构建其数据分析系统。基本流程如下:

    步骤一:创建表格

    如上所示,在创建表的时候可以指定:

    • 分布策略:支持哈希分布(DISTRIBUTED BY(key))和随机分布(DISTRIBUTED RANDOMLY),复制表【6.x版本的新特性】;
    • 存储方式:行存储、列存储、HDFS外部表;
    • 压缩:可以支持字段级别的压缩;
    • 索引:可以加快查询,需要额外的存储空间;
    • 分区:
      • range分区:把数据根据指定的范围进行分区,例如:时间范围、数值范围
      • list分区:把数据按照一个list的值进行分区,例如:产品的种类、地区

    在数据分析场景下,数据入库之后基本很少更新,因此可以通过UDW创建一个列存储+压缩+分区表的表格。列存储、压缩、分区可以减少磁盘IO,从而减少查询和分析时处理的数据量,大大提高查询效率,另外根据查询条件适当地建立索引从而进一步优化查询效率。
    步骤二:导入数据

    通过Greenplum的copy方法把数据写入UDW,除了用Greenplum的copy方法把数据写入UDW,还可以通过工具Datax/mysql2udw把数据库中的数据导入到UDW,通过gpfdist实时并行的高效的数据导入。
    步骤三:分析数据通过标准的PostgreSQL的SQL,很方便地实现对数据的分析。

    选择UDW不仅可以解决用MySQL做数据分析的痛点,还能充分体现云上托管数据仓库服务的其他优势:

    • 简单易用:通过可视化的管理控制台,快速的搭建一套Greenplum系统,无需关注复杂的安装和运维,在控制台上很方便的实现集群管理和运维监控等工作。
    • 高可用:主节点与计算节点增加冗余备份,节点宕机时可自动快速切换,降低整体数据仓库服务宕机风险确保数据不丢失。
    • 弹性伸缩:通过控制台增加节点很方便的实现计算能力和存储能力的快速扩容
    • 低成本:支持数据压缩、深度优化的软硬件方案,按实际数据处理需求开通节点实例,无需为搭建数据仓库一次性投入高额成本,同时降低运维人力成本。
    • 完善的监控和异常自动处理:UDW经历了多年的积累,从硬件、系统、软件层面进行了各个维度的监控,便于及时发现问题。同时借助异常自动处理机制,快速处理各种异常,例如:segment的自动恢复,segment发生主从切换之后自动rebalance、故障节点的自动迁移等等。