本文作者:Craig Kerstiens ,目前在负责 @citusdata 的云团队。Citus 将 Postgres 扩展为可水平扩展的分布式数据库。本文是他之前一个好友采访他的记录(英文原文请看这里)。
以下是采访内容:
我之前时常跟各种开发者共进晚餐,基本上都认为开发者(包括他们自己)可能会有些自以为是。例如,有人说:“我爱Postgres,但我不知道为什么。” 我想他们应该是坐错了餐桌,以 Postgres 为例。。。经常有人问 我为什么选择 Postgres。
实际上,一年多以前,好朋友 Dimitri Fontaine 在写一本 Postgres 的书,他询问是否可以采访我。我一直说他们缺少关于 Postgres 的好书,不过这个好友做了一件非常好的事,这本书提供针对开发人员(也包括 DBA)提供了很好的指南。但他希望能做得更好。
接下来是本书访谈的摘录。
介绍
自从被 Microsoft 收购以来, Craig 领导了@citusdata 云团队 ,该团队现在正在运行 Azure Postgres 的产品。Citus 将 Postgres 扩展为可水平扩展的分布式数据库。如果您有一个数据库,尤其是Postgres,则需要扩展到更多的节点(通常在100GB以上),Craig 总是很乐意聊天,看看 Citus 是否可以提供帮助。
Craig 之前在 @heroku PaaS 平台上工作了很多年,这个平台消耗了大量的 IT 资源,使得开发人员专注于构建功能和增加价值。Craig 在 Heroku 的大部分时间都花在了 Heroku Data 的产品和营销上。
您认为 PostgreSQL 开源项目和生态系统的扩展有多重要?
对我而言,扩展API和不断扩展的扩展生态系统可能是过去10年 Postgres 的最大进步。扩展功能使 Postgres 可以从传统的关系数据库扩展到更多的数据平台。无论是 hstore 中的初始 NoSQL 数据类型(不包括XML),还是GIS地理空间中丰富的功能集,或者近似算法(例如HyperLogLog或TopN),您都可以通过扩展本身将Postgres带入新的领域。
扩展功能使得数据库核心本身可以以较慢的速度发展。核心中的每个新功能都意味着它必须经过全面测试和安全。这并不是说扩展没有,而是可以存在于核心之外,这样才使得这些扩展的功能可以快速增长。
您最喜欢的 PostgreSQL 扩展是什么,为什么?
我最喜欢的三个扩展是:
- pg_stat_statements
- Citus
- HyperLogLog
pg_stat_statements
对于应用程序开发人员而言,它无疑是最强大的扩展,无需深入了解数据库内部知识即可获得洞察力以优化其数据库。对于许多应用程序开发人员来说,数据库是一个黑匣子,而pg_stat_statements
使用 AI 的强大基础,可以让您的数据库能够得到及时改进。Citus:我当然会因为在那儿工作而有偏见,但是在加入之前,我关注了Citus和pg_shard长达三年。Citus将Postgres变成了一个水平可扩展的数据库。在后台进行分片,但应用程序开发人员不必考虑或了解这种复杂性。有了Citus,Postgres可以处理比以往更大的负荷量,因为以前的Postgres都被限制在一个盒子或过于复杂的架构中。
HyperLogLog:我要坦白。在某种程度上,我只是喜欢这么说:当您了解算法本身后,你会觉得自己很傻逼。“ K最小值,可观察的位模式,随机平均,谐波平均。”我的意思是当我们在用这些特性时候,干嘛一定非得很熟悉这些算法本身呢?简而言之,HyperLogLog 足够独特,而且占用的存储空间很小。如果您要构建类似Web分析的工具,那么HyperLogLog无疑是一个不错的选择。
您通常如何找到可能需要的扩展?或者说,您怎么知道您可能首先需要PostgreSQL扩展?
pgxn.org和github是我的两个建议。尽管Google往往也表现良好。当然,我还通过PostgresWeekly.com来了解最新消息。
实际上我常常不总是意识到自己需要一个。我搜索我要解决的问题并发现它。我可能永远不会搜索HyperLogLog,但是搜索Postgres近似计数或近似非重复的时候就能很快找到它。
您的应用程序代码库现在依赖某些PostgreSQL扩展才能运行时,您是否会想到任何弊端?例如,我可能需要扩展在云和SaaS产品中的可用性。
这个要看具体是什么扩展,有些扩展问题比较多,而有些扩展则更加成熟。许多主要的云提供商都支持一系列扩展,但它们不支持更多新的扩展。如果支持它,那么使用上就不会有太大的弊端。如果没有,您需要权衡自己运行和管理Postgres的成本,以及该扩展所提供的价值。就像管理所有事物与不管理所有事物一样,这里需要权衡取舍,您需要确定哪一个适合您。
如果您正在寻找有关Postgres的更深入的资源,我建议您读《PostgreSQL的艺术》一书。它是由一个私人朋友设计的,旨在从开发人员的角度为Postgres创建权威指南。如果使用代码CRAIG15,您还将获得15%的折扣。