首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >回复群友问题,PostgreSQL Extensions 那些是常用的

回复群友问题,PostgreSQL Extensions 那些是常用的

作者头像
AustinDatabases
发布2025-11-14 16:13:12
发布2025-11-14 16:13:12
820
举报
文章被收录于专栏:AustinDatabasesAustinDatabases

最近群里发了一些PostgreSQL的PDF的电子书,平时出来说话少的同学都出来了,有的对书是英文版报以唏嘘,希望是中文的。另外还有一些同学提出了问题,从最近开始我们的文章将以回答群里的同学的问题为主。

群友问题回答(1)提问 初入DBA职场,我到底应该学点什么?

主要回答问题

1 技术相关 2 职业发展有关

今天是一篇关于PostgreSQL Extension 的问题回馈。问题是PostgreSQL常用的Extension有哪些。有的同学回答的可能比较干脆,也比较武断。这里我想分分类,在开始分类之前,我们需要知道的是,extension 他有一些官方的建议还,PGDG是POSTGRESQL的官方,他们对于extension有一些官方的建议,另外就是我们国内的 Pigsty 他也有一些建议,当然Pigsty是咱们PostgreSQL行业里面的冯老师所创。

好了话不多说,我们来对PostgreSQL Extension来进行一下分类。

这里主要我个人的分类是2大类,

第一类是,将PostgreSQL 变为其他大型数据库功能类的extension,比如 PostGIS,Gitus,TimescaleDB,pgvector ,zhparser,pg_jieba 这些类型可以将PostgreSQL 完全变为其他类的数据库,比如地理位图数据库PostGIS,时序数据库TimescaleDB,向量数据库pgvector,以及全文索引数据库zhparser,pg_jieba。

另一类是,扩展类的,也就是并未将PG变为其他类型的数据库,对数据库功能扩展的部分。这里我对PGDG里面的列表中的Extension下拉并分析了一下。

我又把这些分为两类

1 大家知晓的,有大量被使用的

2 不知道,没用过,不敢用的

这主要基于extension的开放性,每个开发者都可以基于PG的接口开发出extension,而有的不少都是个人兴趣上来开发一个,但是后续就消失了,没主了。下面我们仅仅对于大众知晓的,还有主的一些extension来进行分析。

1 提供数据库变成语言的类型: PL/pgSQL(内置), PL/Python, PL/Perl, PL/V8, PL/R, PL/Java

2 提供数据库单项功能,如运维,数据库功能,等pg_stat_statements, hstore, pg_trgm,uuid-ossp, citext,hypopg, pgaudit, pg_hint_plan,pg_bm25, pg_ivfflat,pg_stat_statements, pg_buffercache, pg_freespacemap,pg_stat_monitor, pg_profile, pg_wait_sampling, pgpro_stats, pgmetrics,pg_squeeze, pg_repack, pg_dirtyread, pg_agent,Grafana, Metabase, Redash, Superset。

这里举几个简单的例子

1 我们日常去查询慢查询语句,或者想了解每个SQL语句运行的时间,实际一些详细的信息,我们多会用到 pg_stat_statements, 在比如开发不想用雪花算法写主键,希望数据库自己提供,那么就可以考虑 uuid-ossp, 在比如PG的大小写敏感,导致查询和其他数据库提供不敏感的英文查询,我们用citext来模拟符合大小写不铭感的字段类型,在比如我们想查看数据库底层的一些存储信息,内存的buffer信息等等,使用 pg_freespacemap, pg_buffercache都可以,还有一些如pg_prewarm 数据预热缓冲区,在比如表空间收缩的 pg_squeeze,pg_repack,还有模拟ORACLE数据库可以读取曾经修改前的历史数据的功能 pg_dirtyread,执行定时任务的pg_agent ,pg_corn ,等等。

除此以外还有PG的特有的fdw,foreign data wapper ,ORACLE ,MYSQL,DUCKDB,众多数据库都提供PG到他们这些数据库的文件直接访问extension。

所以常用的这个部分要看你干什么,比如向量,全文搜素pg_bm25,pg_ivfflat,pg_vector。

基于PG的extension的灵活性和信息的变动性,我们建议有需要就查询一下当前你希望的工作有没有extension提供,而不是全部都装,之前应该是前年我曾经写过一篇关于如何做一个假的,“病毒”的extension的文章,里面通过加载一个假的extension,我就可以在你加载了一些不知名的extension后让你的PostgreSQL中毒,比如一些命令如 pg_terminate_backend()函数失效,让你根本无法查杀数据库连接,而达到我下一步可以控制你的数据库的目的,你却无法消灭我的企图。

所以,建议使用extension尽量使用官方认可标注的,一些“孤魂野鬼”类的extension 产品还是慎用。

最后一句,在每个PostgreSQL源代码里面的目录里面有一个专有的目录提供官方在安装时就提供的支持的extensions,那些在你编译安装后就直接到你的数据库里面了,你先把那些extension是干什么的先弄清楚。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-11-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AustinDatabases 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档