Postgres 中的扩展与大多数其他数据库不同,它允许您修改或很好地扩展标准 Postgres 行为。您可以构建其他存储后端、新类型等。
Postgres 本身在“contrib”中附带了许多扩展。contrib 扩展列表最近没有改变,但即使是 contrib 也只是可能实现的一小部分。除了核心之外,还有整个扩展世界,我想从核心中的几个开始深入研究一小部分……
1、pg_stat_statements是最有用的扩展。它记录了运行了哪些查询、查询花费了多长时间以及有关查询的许多其他详细信息。这是管理数据库性能的关键扩展。
2、auto_explain是 contrib 中另一个有助于提高性能的插件。对于运行时间超过一定期限的查询,将自动记录解释计划——有助于性能调试。
3、pg_prewarm 有助于在故障转移之前预热缓存。
现在让我们稍微跳出 contrib。当然,这并不是 Postgres 附带的全部内容,还有更多内容,请自行探索。
4、Citus是迄今为止最高级的扩展之一。Citus 将 postgres 转变为分片、分布式、水平可扩展的数据库。Citus 专为 B2B 风格的多租户应用而构建,多年前被收购后,现已成为 Microsoft 的一部分。
5、Pg_search扩展了 Postgres,支持直接在 Postgres 中进行 elastic 质量的全文搜索。我经常说 Postgres 几乎可以做所有事情,而且非常强大。时间序列和搜索等功能大约相当于目前同类最佳选项的 80%,但 pg_search 更进一步,使其成为 elastic 的全面竞争对手,但 Postgres 却并非如此。这些都是较大的问题,但您也有很多小问题需要关注。
6、Pg_cron非常方便。它最初由@marcoslot在 Citus 时创建,是一个小型扩展,其功能类似于在 Postgres 中运行计划作业。它现在已成为所有主要云提供商的标准。我们在@crunchydata大量利用了它,但更进一步,在其基础上构建了一个 UI,这样您就不必担心作业的 crontab 样式。
7、就在昨天,我们在 Crunchy Data 发布了pg_parquet。有人问过其他扩展怎么样,它们的作用类似但不完全相同,但也做了很多其他的事情。这允许您使用 Postgres 无缝地复制 Parquet 文件。它遵循了 Linux 的小利器哲学。Marco 很好地描述了原因:
我们希望创建轻量级的 Parquet 实现,这样就不会将多线程库引入每个 Postgres 进程。当您使用更复杂的功能时,许多有关权衡、用户体验和部署模型的问题开始出现。
总结:
如果您想知道 Postgres 的未来在哪里,我无法想象一个扩展没有发挥重要作用的世界。