首页 > 解决方案 > 用于数据仓库的 Greenplum 与 Citus

问题描述

我正在尝试从将 Citus 和 Greenplum 用作数据仓库的角度来评估它们。总体思路是,来自多个 OLTP 系统的数据将通过 Kafka Connect 实时集成到中央仓库中以进行分析查询。

Citus 在这方面与 Greenplum 相比如何?我读过 Citus 有一些 SQL 限制,例如,如果相关性不在分布列上,则不支持相关子查询,Greenplum 是否有类似的 SQL 限制?如果将数据流式传输到 Greenplum 中(而不是批量更新),Greenplum 会运行良好吗?我只是感觉 Greenplum 更专注于分析并且可以牺牲一些特定于 OLTP 的东西,这是 Citus 无法承受的,因为他们将自己定位为 HTAP(而不是 OLAP)。Citus 还将自己定位为亚秒级查询时间的解决方案,这对我的用例来说不是必需的 - 每个查询几秒钟(最多 5 秒)就可以满足要求。

标签: data-warehousegreenplumcitus

解决方案


我不知道 Greenplum 的任何 SQL 限制,就像你上面提到的那样。在某些情况下,即CUBEpercentile_*窗口函数(有序集聚合函数)GPORCA(Greenplum 数据库查询优化器)将回退到 PostgreSQL 查询优化器,这些查询的性能不如启用 GPORCA 的查询——但您仍然会得到对您的查询的答复。

我想说获取流数据与批量更新是一回事 - 使用 Kafka Connection 和 JDBC,可以开箱即用,但不会利用 Greenplum 的并行分布式特性作为所有数据必须通过协调器。

最佳方案是使用像 Greenplum Streaming Server (GPSS) 这样的东西,它将从客户端传送的数据直接写入 Greenplum 数据库集群的各个部分,并允许最大的并行性和最佳的流加载性能。


推荐阅读