Greenplum能做什么?
- 数仓 / OLAP / 即席查询
- 混合负载 / HTAP
- 流数据
- 集成数据分析
- 数据库内嵌机器学习
- 现代 SQL
核心架构
数据分布
多级分区

多模存储 / 多态存储
- 通常情况下, 数据价值随着时间越来越低, 所以会有不同的对应处理模式。
- 就比如说一张销售表:
- 最近3个月的数据, 我们可能要做的是对数据的完善及更新。
- 距今3个月到1年的数据, 我们可能做的最多的是做一些查询, 聚集, 报表。
- 1年前+数据, 访问较少。
- 对应存储模式:
- 1年前+数据:
- 采用外部表技术, 数据不放在Greenplum中, 比如hdfs, amazon S3中。
- 无缝查询所有数据:
- Text, CSV, Binary, Avro, Parquet, ORC格式
- 距今3个月到1年的数据:
- 使用列存储, 更适合压缩(不同列可以使用不同压缩方式: gzip, quickz, delta, RLE, zstd), 查询列子集时速度快。
- 最近3个月的数据:
- 使用行存储, 适合OLTP业务, 适合频繁更新或者访问大部分字段的场景。
查询支持
混合负载 / HTAP
OLTP 优化技术
- 全局死锁检测 (GDD): 6版本之前用表锁, 优化有使用行锁。
- 锁优化: 有一个锁竞争比较严重, 优化。
- 事务优化
- 复制表
- 多模存储
- 灵活索引
- OLTP 友好的优化器
- 内核升级: PostgreSQL 9.4
资源管理
| 并发控制 |
事务级别 |
语句级别 |
| 死锁 |
无 |
极端情况下会出现 |
| CPU管理 |
基于比例、基于cgroup |
基于粗粒度的优先级 |
| CPU 空闲利用率 |
可以充分利用空闲CPU |
部分利用 |
| 内存限制 |
精细 |
粗粒度 |
| 组内内存共享 |
T |
F |
| 动态修改资源配置 |
T |
部分 |
| 排队 |
无并发槽位或者内存配额时 |
无并发槽位时 |
| 管理DDL、Utility语句 |
T |
F |
| Segment级别监控管理 |
T |
F |
| 基于规则的资源管理 |
T |
F |
细粒度多级内存管理

企业案例

- 如果对TP业务不是追求极致, 可以考虑Greenplum。
流数据(准实时)
集成数据分析
各种数据类型: 结构化、半结构化、非结构化

数据融合

- 数据全都放到Greenplum中的话代价还是很大的。
- 过去会将全部数据从别的平台拉取到Greenplum, 涉及比较复杂的etl过程
- 4版本后的数据融合功能, 不需要拉取数据到Greenplum, 只要在Greenplum上写SQL就可以查询存储在不同数据中的数据。
PXF 架构

- 可以在Greenplum中定义一个外部表, 此外部表通过PXF协议指定到hadoop, hive, hbase, 数据库s3等。
- 我们只需要在Greenplum上写一个SQL, 底层就会自动去对应的存储系统中拿取数据。
- 如果底层是Hive的话, PXF还可以做到谓词下推。
基于 SQL 的数据库内嵌机器学习
数据量越大, 模型精度越大。
SAS: 需要对数据进行抽样后再训练, 会损失部分精度, 只能用一个节点进行训练。
希望对全量数据进行运算, 将算法内嵌到数据库中, 可以使用数据库的并行计算能力。
apache madlib

- 在每个Segment上集成成成Keras或者tensorFlow, 可以使用每个节点上的GPU资源。
Greenplum简介
原文:https://www.cnblogs.com/ronnieyuan/p/12208988.html