几个月前,我们让Citus完全开源。对于Citus数据库引擎团队的所有人来说,这是一个非常激动人心的里程碑。与那些认为Postgres是一块无法扩展的巨石的人相反,Postgres实际上拥有一个完全开放的分布式扩展解决方案,这也是Postgres的原生解决方案。它叫Citus!这篇文章将更详细地介绍为什么我们在Citus 11中开源了我们剩下的几个企业功能,我们到底开源了什么,以及最终需要什么来真正开源我们的代码。如果您对代码更感兴趣,您可以在我们的GitHub repo中找到它(请随意给Citus项目一颗星)
为什么现在让Citus的最后一部分开源?
我们将Citus 11中最后几项企业功能开源的原因之一是我们的商业模式已经改变。当Citus于2011年首次启动时,其商业模式包括销售企业许可证和支持合同。2016年,我们将Citus从Postgres中分离出来,并将大部分Citus开源。在此之后,我们通过包含一些额外的封闭源代码企业特性,将我们的企业许可软件与开放源代码版本区别开来。但随着时间的推移,我们的商业模式已经从销售企业许可证转向了销售。
目前,我们的业务模型围绕着我们的托管服务:Azure Database for PostgreSQL-Hyperscale(Citus)。正如您可能想象的那样,我们的托管服务建立在Citus开源的基础上,添加了“托管”功能,即节省您时间的功能,使您不再需要担心数据库。
使用Azure服务,您只需单击一个按钮即可创建和扩展Postgres集群;您的Postgres设置已经进行了调整,以获得硬件的额外性能;您可以获得自动备份,从中可以轻松恢复;如果集群中的某个节点崩溃,则会自动故障切换到另一个节点,前提是启用了高可用性(HA)。您还可以轻松地与其他Azure云服务集成,如ADF、Azure流分析、Azure Kubernetes服务、应用服务等。如果您遇到问题,您可以随时联系知识渊博的Azure支持团队。
由于商业模式的改变,我们开始怀疑:如果客户主要为我们的托管服务付费,这是否意味着我们可以让Citus完全开源?让Citus完全开源有什么好处?
使Citus完全开源的优势
即使开放式采购没有任何大的不利因素,那么开放式采购也需要有一些优势,使我们能够花费精力摆脱现状。
正如您所想象的,使Citus完全开源有许多好处。
更多的开源特性意味着更多的开源用户
可能从完全开源的Citus中受益的最明显的人群是那些已经使用开源版本的CITU的人。如果你是这群人中的一员,你只需升级到Citus 11,就会突然获得额外的功能。谁不喜欢很多新功能呢?
但如果你还没有使用Citus,这个版本也可能是一个转折点。有了这些额外的功能,如在线碎片重新平衡器和更好的用户管理,我们希望更多的人能尝试一下Citus。对于您中的一些人来说,Azure上的Citus可能还不适合您的计划,或者您选择不使用Citus,因为它缺少一些对您至关重要的功能。好吧,不再是了!我们已经消除了障碍!
我们希望尽可能多的人(包括您)使用Citus构建和部署应用程序,无论您是在Azure上使用Citus还是Citus开源。为什么?由于以下原因:
-
更多的人从Citus中受益:我们认为Citus很棒(我们有点偏见),我们认为更多的人可以从使用它中受益。对于像我这样的Citus工程师来说,让人们从我们正在开发的软件中获益本身就是一种奖励。
-
更多贡献:作为用户,您很可能直接为Citus及其社区做出贡献。您可以在我们的Slack频道或堆栈溢出上帮助其他人,您可以报告您遇到的错误,甚至可以贡献代码。所有这些都使Citus对每个人都更好。当然,所有这些都是可选的,但从经验来看,我们知道你们中的一些人极大地改进了Citus并增加了社区。
-
更多的客户:这可能是最违反直觉的原因,但从长远来看,我们预计更多的开源应用将导致更多的客户在Azure上使用Citus。也许你现在是一个开源的Citus用户,但想在未来迁移到Azure,或者你告诉朋友Citus有多棒,这会导致你的朋友在Azure上采用Citus。因此,如果你是一个开源用户,你很可能会影响人们在未来使用Citus托管服务。
笔记本电脑和Azure之间的功能对等
如果您已经在Azure上使用Citus托管服务,那么新的开源功能已经在那里为您提供。但如果你是开发人员,那么Azure可能不是你使用Citus的唯一地方。您可能还在开发机器上安装了Citus的开源版本,以开发和测试您的应用程序。因此,在过去,开发机器上的环境与生产环境略有不同。这是不可取的,因为许多开发人员希望开发环境尽可能接近生产环境,因此您可以捕获最多的bug。
通过开源Citus 11中剩余的Citus功能,您现在可以在云端和笔记本电脑上实现Citus功能的完全对等。
开发人员花费更多时间改进Citus
通过对所有Citus进行开源,我们显著提高了我们自己的开发人员(包括我自己)的幸福感和生产力。
在Citus 11之前,我们有两个git存储库。一个公共GitHub repo,用于Citus的开源版本,一个包含Citus“企业”版本的私有repo。
因此,在Citus 11之前,每一个新的Citus发行版都需要大量的开发人员时间用于将公共回购的变更合并到私有回购的重复任务。这通常会导致恼人的合并冲突,或者在测试过程中出现轻微的行为差异。这不是我们任何人最喜欢的工作。而且也很费时。现在一切都是开源的,我和我的同事们可以更加专注于我们热爱的工作:改进Citus和发布PostgreSQL!
我们表明我们热爱开源
虽然我的一些同事为PostgreSQL和Citus开发Azure托管服务,但我在微软的许多工程同事大部分时间都是作为Postgres开源项目的提交人。我们还维护Postgres的其他开源扩展,如pg_cron、hyperloglog和TopN。尽管Citus已经基本上是开源的,但我们觉得我们可以通过让Citus完全开源来更好地展示我们对开源的热爱。
那幺,我们在Citus 11中到底开源了什么?
Citus的大部分代码在Citus 11之前已经是开源的。我们已经从Postgres中取消了Citus,并在2016年将Citus作为Postgres的扩展进行了开源。那么,Citus 11中究竟有哪些新功能是开源的?新开源功能的完整列表可以在我们的更新页面上找到,但我强调了以下我认为您可能从中受益最多的功能:
-
非阻塞碎片再平衡器允许您在不停机的情况下扩展集群。在Citus 10中,我们开源了碎片再平衡器,但它只允许您在阻止写入正在移动的碎片时进行再平衡。有了Citus 11,当您需要向集群添加更多计算能力或磁盘空间不足时,就不再需要进行这种部分停机。使用非阻塞碎片重新平衡器,您的集群可以在您想要重新平衡集群中的数据时完全在线。
-
创建/更改/删除角色的传播在多用户Postgres环境中非常有用。在Citus的开源版本中,设置多个Postgres用户的集群相当麻烦。您必须在每个节点上创建每个角色,当您添加新节点时,也必须将其添加到该节点。现在不是这样了!您现在可以在协调器上创建或编辑角色,您的更改也将自动显示在集群中的所有其他节点上。
-
GRANT语句的传播允许您轻松管理集群中用户的权限。现在,在分布式表上执行的GRANT语句所做的正是您希望它们做的事情:它们向所有底层碎片授予相同的权限。同样,当您授予对整个模式的访问权限时,这些相同的权限现在将传播到所有工作者。
-
带有pg_dist_authinfo的身份验证选项允许您轻松配置节点之间的身份验证方式。以前,在使用开源Citus时,需要使用.pgpass文件来配置用于在节点之间进行身份验证的密码。随着Citus 11现在完全开源,您可以使用更容易使用和更强大的替代方案:pg_dist_authinfo表。在此表中,您可以将用于向其他节点进行身份验证的凭据放入。这些凭证可以是Postgres支持的任何身份验证选项,如密码或TLS证书。使pg_dist_authinfo特别易于使用的是,您可以为每个用户创建一个共享的单行,用于对集群中的任何节点进行身份验证,而使用.pgpass方法时,每个节点和用户组合需要一行。
-
行级安全性(RLS)不是大多数Postgres用户使用的功能。但对于你们中的一些人来说,这是一个关键功能,允许您精确配置谁可以读取什么数据。在Citus 11中,我们对分布式表的这一功能提供了开源支持。您在分布式表上创建的任何RLS规则现在也会自动在所有碎片上创建。所以,如果这阻碍了你迁移到Citus,那就少了一个原因。
我们如何完全开放Citus的源代码?
事后看来,上述论点和推理现在似乎很明显,但需要一些时间才能让利益相关者保持一致。但最终团队同意了,每个人都对这一巨大的进步感到非常兴奋。
剩下要做的唯一决定是何时开放代码:Citus 11.0版本是明显的候选者。实际上,由于git的强大功能,开源所有代码非常容易。它几乎与以下四个命令一样简单:
之后,我们仍然需要再次检查提交的内容。以确保在代码注释或类似的内容中没有对特定客户的引用。而且,我们还可以创建一个全面的列表,列出我们正在开源的所有特性(其中一些甚至让我们感到惊讶)。
最后,剩下的就是在我们的开源repo上创建一个提交请求,Citus是完全开源的。
享受使用Citus的乐趣!
通过在Citus 11中开源我们的所有代码,我们试图让您作为Citus用户的生活变得更好,无论您是在prem、云、Azure还是笔记本电脑上使用它。因此,请尝试Citus 11版本。如果您不知道从哪里开始,请查看我们的入门页面。如果您有任何问题,请加入我们的Slack频道或将您的问题放到Stack Overflow上。
原文标题:Distributed Postgres goes full open source with Citus: why, what & how
原文作者:Jelte Fennema
原文链接:https://www.citusdata.com/blog/2022/09/12/distributed-postgres-goes-full-open-source-with-citus/