查看原文
其他

RDS阉掉了PostgreSQL的灵魂

冯若航 非法加冯 2024-03-26

在上一篇《PostgreSQL正在吞噬数据库世界》中,我们提到,尽管 PostgreSQL 是世界上最先进的开源关系型数据库,但其独一无二的特点在于其极致可扩展性,与繁荣的扩展生态

不幸地是,云上的 RDS 阉割掉了 PostgreSQL 的灵魂 —— 用户无法在 RDS 上自由加装扩展,而一些强力扩展也注定不会出现在 RDS 中。使用 RDS 无法发挥出 PostgreSQL 真正的实力,而这是一个对云厂商来说无法解决的缺陷。

RDS 缺失重要扩展

在 PostgreSQL 生态中有着上千[1]的扩展插件,为 PostgreSQL 在各种方向上添加可选的功能模块。其中不乏一些超级强力的扩展(例如地理空间扩展 PostGIS 有170万行代码,而 PostgreSQL 内核只有一百万行)

我们为最新的 PostgreSQL 16 选出了 16 个具有代表性功能的生态扩展 —— 或者是提供某个细分领域的强力特性,或者是对于生产运维必不可少。并观察云厂商 RDS 对其支持的状态,而结果只能用惨不忍睹形容:

本地RDS / 阿里云RDS / AWS RDS 对16个主流扩展的支持情况

对于 PG 的杀手级特性 PostGIS,两家云厂商都有支持,阿里云海提供了自己的时空扩展 Ganos,把生态里其他一些相关的能力比如 PointCloud 也弄了进去。最近的当红炸子鸡向量数据库扩展 pgvector AWS 有跟进,但阿里云用的还是自家土法手搓的 pase。

作为本土云厂商,阿里云 RDS 提供了中文分词的扩展 zhparser 和 pg_jieba。最后是运维必不可少的两个扩展:治理膨胀的 pg_repack 和 wal2json AWS RDS 都齐全,但阿里云RDS依然没有提供 PG 16 的 wal2json 扩展。

然而,两家云厂商都只提供了 5/16 的重要扩展,其他一些重要的功能,比如时序数据库扩展 TimescaleDB,分布式数据库扩展 Citus,列式存储扩展 Hydra,库内机器学习 PGML,ElasticSearch全文检索扩展 pg_bm25,图数据库扩展 AGE,库内 GraphQL 查询扩展 PG GraphQL,OLAP 加速扩展 pg_analytics,消息队列 PGQ,嵌入式分析 DuckDB 支持全部缺位了!

更重要的是,云 RDS 不可能给用户自行加装扩展的能力。而这些缺失的扩展,也基本上不太可能出现在 RDS 中


为什么RDS不提供扩展?

RDS 不提供这些重要扩展的原因,也许与多租户安全策略与开源协议有关。因为这些扩展大多采用了 AGPLv3 开源协议。AGPLv3 协议的特点就是专治云厂商白嫖开源 —— 如果云厂商将这些扩展纳入 RDS 中,他们就必须将 RDS 管控软件开源

在《DBA会被云淘汰吗?》我们已经深度讨论过云 RDS 的商业模式,沉淀了 DBA 经验的管控软件,是云数据库的核心生产资料与摇钱树。核·月单位成本20块钱的硬件资源,套上管控软件,就能卖出 300~400(Aliyun),甚至 400~ 800(AWS)这样几十倍的天价——云厂商也许会把自己魔改的数据库内核与扩展开源,但是绝不可能把自己的真正核心软件 —— 管控开源的。

AGPLv3 是专门用于遏制云厂商和同业白嫖的开源协议,对于终端用户来说,AGPLv3 却没有什么影响 —— 终端用户既没有兴趣去魔改软件,也几乎没人会把数据库作为托管服务对外提供。而用户通过客户端、命令行、脚本使用、管理这些 AGPLv3 组件的代码并没有任何开源义务,作者也压根没有对云/同行之外的用户进行追索的兴趣。

不过从另一个角度来说,现在已经出现了开源的 RDS 管控 —— Pigsty, 那么云厂商开不开源管控其实也不重要了。正好比弹性算力调度有了 K8S 这个标准后,大家已经不在意底下到底是物理机、虚拟机,EC2还是 ECS 了。

范式转移:从云到本地优先


附录:RDS提供的扩展

上面我们列了16个重要扩展的支持情况,如果我们拉一个完整的扩展清单,这里面缺少的插件还要更多。

Contrib 模块作为 PostgreSQL 本体的一部分,已经包含了 73 个扩展插件,加上 PostgreSQL 官方仓库 PGDG 收录的约 100 个扩展,Pigsty 作为PG发行版自身维护打包了20个强力扩展插件,在 EL/Deb 平台上总共可用的扩展已经达到了 234 个 —— 覆盖了 PG 生态的主要有生力量。

然而云上的 RDS 却在这一方面存在极大的缺陷。例如,AWS RDS 只提供了 94 个扩展,阿里云 RDS 提供了 104 个扩展。在 PG 自带的 73 个扩展中,阿里云保留了23个阉割了49个;AWS 保留了 49 个,阉割了 24 个。

进一步刨除 PGDG 仓库里原本就有的扩展,阿里云独有的扩展仅有:ganos, tde,index-adviser, pasee, rds_ccl 等。AWS 独有的扩展稍微多一些:pg_transport, pgactive, pg_tle, log_fdw, flow_control, aws_s3, aws_lambda, aws_commons, rds_tools。

下面是刨除 PostgreSQL 16 自带的 73 个扩展后,开源本地优先的 Pigsty RDS ,阿里云 RDS ,AWS RDS 提供的扩展列表:

Pigsty 开源RDS 提供的扩展清单

完整清单:https://pigsty.io/zh/docs/reference/extension/

阿里云 RDS 提供的扩展清单

完整清单:https://help.aliyun.com/zh/rds/apsaradb-rds-for-postgresql/extensions-supported-by-apsaradb-rds-for-postgresql

AWS RDS 提供的扩展清单

完整清单:https://docs.aws.amazon.com/AmazonRDS/latest/PostgreSQLReleaseNotes/postgresql-extensions.html

References

[1] 1千个PG扩展列表: https://gist.github.com/joelonsql/e5aa27f8cc9bd22b8999b7de8aee9d47


点一个关注⭐️,精彩不迷路




参考阅读

PostgreSQL正在吞噬数据库世界
Pigsty v2.6:PostgreSQL 踢馆 OLAP
技术极简主义:一切皆用Postgres
PG生态新玩家ParadeDB
DBA会被云淘汰吗?
令人惊叹的PostgreSQL可伸缩性
中国对PostgreSQL的贡献约等于零吗?
展望PostgreSQL的2024 (Jonathan Katz)
2023年度数据库:PostgreSQL (DB-Engine)
MySQL的正确性为何如此拉垮?
向量数据库凉了吗?
重新拿回计算机硬件的红利
数据库真被卡脖子了吗?
PG查询优化:观宏之道 
FerretDB:假扮成MongoDB的PostgreSQL
如何用 pg_filedump 抢救数据?
PGSQL x Pigsty: 数据库全能王来了
Pigsty 特性与快速上手
PG先写脏页还是先写WAL?
PostgreSQL:世界上最成功的数据库
ISD数据集:分析全球120年气候变化
AI大模型与向量数据库 PGVECTOR
更好的开源RDS替代:Pigsty
PostgreSQL 到底有多强?
为什么PostgreSQL是最成功的数据库?
PG与Pigsty用户需求问卷调研结果
高可用PgSQL集群架构设计与落地
为什么说PostgreSQL前途无量?
Postgres本地化排序规则
PG复制标识详解(Replica Identity)
利用监控系统诊断PG慢查询
数据库集群管理概念与实体命名规范
PostgreSQL的KPI
PostgreSQL监控系统Pigsty概述
故障档案:PG安装扩展导致无法连接
PostgreSQL中的表锁
把PG放入Docker是一个好主意吗?
PostgreSQL监控系统概览
pg_dump导致的血案
PostgreSQL数据页面损坏修复
PostgreSQL关系膨胀:原理,监控与处理
探探PostgreSQL开发规约
并发异常那些事
PG好处都有啥?
IP归属地查询的高效实现
PostGIS高效解决行政区划归属查询问题





继续滑动看下一个
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存