Greenplum 6:新功能回顾

图片 在过去的16年中,Greenplum是一个开放式的大规模并行DBMS,它已帮助各种企业基于数据分析做出决策。

在此期间,Greenplum渗透到各个业务领域,包括:零售,金融科技,电信,工业,电子商务。 水平扩展到数百个节点,容错能力,开放源代码,与PostgreSQL的完全兼容性,事务性和ANSI SQL-很难想象分析型DBMS可以更好地组合属性。 从全球大型公司的大型集群开始,例如Morgan Stanley(200个节点,25 Pb的数据)或Tinkoff(> 70个节点),到在舒适的初创企业中安装小型的两节点安装,最后,越来越多的公司选择Greenplum。 观察俄罗斯的这种趋势尤其令人愉快-在过去两年中,使用Greenplum的大型国内公司的数量增加了两倍。

在2019年秋季,发布了另一个主要的DBMS版本。 在本文中,我将简要介绍GP 6的主要新功能。

Greenplum版本5的先前主要发行版于2017年9月发布,有关详细信息,请参见本文 。 如果您仍然不知道Greenplum是什么,可以从本文中获得简要介绍。 它很旧,但是DBMS体系结构可以正确反映。

可以说,当前的发行版可以说是一个集体的想法:来自世界各地的多家公司参与了开发工作,其中包括Pivotal,Arenadata(本文的作者所在),阿里巴巴。

那么,Greenplum 6有什么新功能?

复制表


让我提醒您,在Greenplum中,集群中的表分布有两种类型:

  • 随机均匀分布
  • 分布在一个或多个领域

在大多数情况下,只有在查询执行期间在集群段之间进行数据重新分配的情况下,才执行联接两个表(JOIN),并且两个表最初都是由JOIN联接键分配的,并且仅在段上本地发生而没有在段之间传输数据。

GP 6为架构师提供了一种新的存储方案优化工具-复制表。 此类表在群集的所有段上都完全重复。 到右侧此类表的任何连接都将在本地执行,而无需重新分配数据。 基本上,该功能旨在存储大量目录。

具有复制表的查询示例
CREATE TABLE expand_replicated … DISTRIBUTED REPLICATED; CREATE TABLE expand_random … DISTRIBUTED RANDOMLY; explain select * from expand_rnd a2 left join expand_replicated a3 on a2.gen = a3.gen #  ,    redistribute/broadcast Limit (cost=0.00..1680.04 rows=1 width=22) -> Gather Motion 144:1 (slice1; segments: 144) (cost=0.00..1680.04 rows=2 width=22) -> Hash Left Join (cost=0.00..1680.04 rows=1 width=22) Hash Cond: (expand_rnd.gen = expand_replicated.gen) -> Seq Scan on expand_rnd (cost=0.00..431.00 rows=1 width=10) -> Hash (cost=459.60..459.60 rows=2000000 width=12) -> Seq Scan on expand_replicated (cost=0.00..459.60 rows=2000000 width=12) 


Zstandard压缩算法(ZSTD)


由Facebook开发人员于2016年提出的无损压缩算法几乎立即成为了我们Arenadata团队的核心,因为与Zlib(Greenplum中默认使用)相比,Zlib具有更高的压缩率,并且压缩和解压缩所需的时间更少:


资料来源: cnx-software.com

压缩效率是现代分析DBMS的最重要参数之一。 实际上,它允许您通过加载相对便宜的CPU来减少群集相对昂贵的磁盘子系统上的负载。 当顺序读取和写入大量数据时,这将大大降低系统的TCO。

在2017年,我们的团队增加了对Greenplum中的列表的ZSTD支持,但是,根据发布政策,此修订版未纳入Greenplum的官方次要版本中。 直到今天,它仅适用于Arenadata商业客户,随着6.0版本的发布,每个人都可以使用它。

集群扩展优化(扩展)


在以前的GP版本中,水平集群扩展(添加新节点)有一些限制:

  • 即使数据重新分配是在后台进行的,没有停机时间,但是在添加新节点时必须重新启动系统
  • 散列和数据分发算法需要在扩展期间完全重新分发所有表-对于大型群集,后台数据分发过程可能需要数小时甚至数天
  • 在后台分配表期间,仅分配了所有联接

Greenplum 6引入了一种全新的集群扩展算法,该算法具有以下优点:

  • 现在发生扩展而无需重新启动系统-无需停机
  • 一致的哈希算法允许您在添加节点时仅重新分配部分块,也就是说,表的后台重新分配速度快了很多倍
  • 更改系统目录的逻辑已更改-现在,即使在扩展过程中,所有连接(JOIN)都照常工作-本地和分布式

现在,Greenplum扩展仅需数分钟,而不是数小时,这将使集群能够顺应业务部门不断增长的需求。

列级安全


现在可以将权限分配给表中的特定列(该功能来自PostgreSQL):

 grant all (column_name) on public.table_name to gpadmin; 

杰森


GP现在提供了JSON类型对象的最佳二进制存储。 在此处阅读有关格式的更多信息。

自动说明


PostgreSQL对GP的另一个很好的扩展。 Arenadata团队对其进行了修改,使其可以在Greenplum集群上以分布式模式工作。

自动允许DBMS中的每个(或单独处理的)请求保存以下信息:

  • 要求计划;
  • 在每个段(节点)上执行查询的每个阶段消耗的资源;
  • 花时间
  • 每个段(节点)上查询的每个阶段处理的行数。

磁盘配额


PostgreSQL扩展,可让您限制单个用户和方案可使用的可用磁盘存储:

 select diskquota.set_schema_quota('schema_name', '1 MB'); select diskquota.set_role_quota('user_name', '1 MB'); 

新的Arenadata DB发行功能


免责声明-接下来会有几行广告 :)

让我提醒您,我们Arenadata正在开发,实施和支持基于开源技术-Greenplum,Kafka,Hadoop,Clickhouse的数据存储平台。 我们的客户是零售,电信,金融科技和其他领域最大的俄罗斯公司。 一方面,我们自己是开源项目的参与者(对内核进行更改),另一方面,我们正在开发仅适用于商业客户的附加功能。 此外,我们将讨论主要功能。

Tkhemali连接器又名连接器Greenplum-> Clickhouse


在项目中,我们经常使用Greenplum + Clickhouse一堆-一方面,这使我们可以使用构建数据仓库(从源到数据集市)的最佳经典模型,这些模型需要许多连接,开发的ANSI SQL语法,事务性和Greenplum具有的其他芯片,另一方面,向大量用户提供最大速度的内置宽范围商店窗口访问权限-Clickhouse在此方面没有竞争对手。

为了有效地使用这样的捆绑包,我们开发了一种特殊的并行连接器,该连接器通过事务处理(即使在回滚事务中也保持一致)允许您将数据从GP传输到KH。 通常,此连接器的体系结构值得单独撰写一篇纯技术文章-实际上,在内部,我们必须使用系统来实现并行异步队列,该系统用于动态选择每个插入和数据流的线程数。

结果是惊人的交互速度:在我们对典型SATA磁盘的测试中,一对Greenplum服务器-Clickhouse上每个插入的速度高达1 Gb / s。 鉴于我们客户的平均GP群集由20台以上的服务器组成,因此交互速度绰绰有余。

Kafka连接器


我们通过与Kafka消息代理的集成进行了相同的操作-我们经常遇到以近实时模式(几秒或几十秒)将数据从Kafka过载到Greenplum的任务。 但是,Kafka的连接器体系结构不同。 连接器是具有自动发现功能的独立同步进程(在Docker中启动)的集群,它们一方面是Kafka使用者,另一方面又将数据直接插入Greenplum段中。 该连接器可以与Kafka Registry配合使用,即使在硬件出现故障的情况下,也可以确保传输数据的完全一致性。

管理监控系统


生产中系统的运行对集群的部署,更新和监视提出了很高的要求。 重要的是,DBMS中发生的所有事情对于操作和DBA专家都是透明的。

我们的Arenadata Cluster Manager(ADCM)管理和监视系统为操作专业人员提供了他们所需的所有工具。 实际上,只需单击图形界面中的一个按钮即可完成Greenplum集群的部署和更新(所有操作系统,服务,磁盘安装和网络设置均自动完成),此外,您还可以获得一个完全配置的监控堆栈,可以与您的公司系统集成。 顺便说一句,Arenadata Cluster Manager不仅可以管理Greenplum,还可以管理Hadoop,Kafka,Clickhouse(需要我们提供这些服务的程序集。它们的免费版本,如ADCM本身,可以完全免费地在我们的网站上下载,只需填充弹出窗口即可)。

结论


如果您使用的是Greenplum 5.X,建议您考虑在未来2-3个月内将群集升级到当前版本6.X。

如果您尚未使用Greenplum,请加入我们! 我们,Arenadata,随时准备为您提供帮助。

参考文献


GitHub上的Greenplum
Greenplum俄罗斯电报频道 -直接向Greenplum用户提问
Greenplum 6文档

Source: https://habr.com/ru/post/zh-CN474008/


All Articles