微软开源Citus企业版全部功能:提供分布式Postgres数据库功能

article/2025/9/19 7:51:09

6 月份时,CitusData 推出了 Citus 11.0,并宣布将所有企业版的特性进行开源。Citus 是 PostgreSQL 的一个扩展,将 Postgres 转变为分布式数据库,用户可以在任何规模下实现高性能。

在公布该消息数月后,当地时间 9 月 12 日,微软的 Postgres 和 Citus 开发人员 Jelte Fennema 发文表示,团队已经完成了 Citus 的完全开源。“事后看来,Citus 的全面开源简直是势在必行,但实际操作中还是需要逐步让各利益相关方达成一致,团队最终同意了这项尝试。”

Citus 11.0 到底开源了什么?

实际上,Citus 的大部分代码在版本 11.0 之前就已经开源了。Citus 项目最早拆分自 Postgres,并在 2016 年以 Postgres 扩展的形式进行了开源。那么,这次到底全面开源了哪些功能?

Citus 11.0 中的完整开源功能列表:

https://www.citusdata.com/updates/v11-0/#enterprise-opensource

Fennema 介绍了几项 Citus 刚刚转向开源的重要功能:

  • 非阻塞分片重新负载均衡器,允许用户在不停机的情况下横向扩展集群。在 Citus 10 当中,团队开源了分片重新负载均衡器,但当时在对分片进行重新负载均衡器,会暂时阻塞写入操作。而在 Citus 11.0 版本中,如果用户需要为集群添加更多计算容量、或者可用磁盘空间不足,则无需部分停机也能完成扩展。使用非阻塞分片重新负载均衡器,集群能够随时随地实现数据的重新均衡,而且始终保持在线。

  • CREATE/ALTER/DROP ROLE 广播在多用户 Postgres 环境中属于常见操作。在 Citus 的开源版本中,设置一个包含多个 Postgres 用户的集群非常麻烦。用户需要在各个节点上创建各个角色,在添加新节点时再额外创建。现在问题终于得以解决,用于可以在协调器上创建或编辑角色,做出的变更将被自动广播到集群内的全部其他节点。

  • GRANT 语句广播,能帮助用户轻松管理集群内的用户权限。现在,用户在分布式表上执行的 GRANT 语句将以完全符合预期的方式执行:向所有底层分片授权相同的权限。同样,当用户使用 GRANT 向整个 schemas 授予访问权限时,同样的权限现在也将被广播给所有 worker。

  • pg_dist_authinfo 身份验证选项,能帮助用户轻松对节点间的身份验证方式做出配置。以往的开源版 Citus 需要使用.pgpass 文件才能配置各节点间的身份验证密码。随着 Citus 11.0 的全面开源,用户有了更易用、功能更强大的新选项:pg_dist_authinfo 表。在此表中,用户可以添加用于向其他节点进行身份验证的凭证,这些凭证可以是 Postgres 所支持的任何身份验证选项,例如密码或者 TLS 证书。pg_dist_authinfo 之所以特别易用,原因是可以为每个用户创建一条共享单行,借此对集群中的任意节点进行身份验证。反观以往的.pgpass 方法,需要为每个节点和用户组合添加单独的一行。

  • 行级安全(RLS)对大多数 Postgres 用户来说可能有点陌生,少数经常使用的朋友知道其重要意义。行级安全的作用就是精确配置谁能够读取哪些数据。在 Citus 11.0 中,团队在分布式表上开源了这一功能支持。因此,用户可以在分布式表上创建的任何 RLS 规则,现在也会自动被创建至所有分片。

“我们已经不再销售企业许可证”

根据 Fennema 的介绍,之所以把 Citus 11.0 中最后几项企业功能也开源,重要原因之一就是 Citus 的商业模式已经改变。

“在 2011 年 Citus 刚刚诞生时,我们的商业模式主要是向企业客户销售许可证,还有提供技术支持服务。2016 年,我们将 Citus 从 Postgres 中拆分了出来,并开源了其中大部分功能。之后,我们继续闭源一部分企业功能,借此将企业许可证跟开源版本区分开来。但随着时间推移,我们已经不再销售企业许可证,商业模式的变化自然改变了我们的开源思路。” Fennema 说道。

目前,Citus 的商业模式主要以托管服务为核心,即 Azure Database for PostgreSQL——Hyperscale(Citus),这本质上就是以 Citus 开源为基础添加“托管”选项,帮助用户打理数据库、节约时间。借助这项 Azure 服务,用户只需单击一个按钮即可创建和扩展 Postgres 集群:

用户使用的 Postgres 设置已经过调优,能够从硬件中挖掘出额外的性能。用户还能获得自动备份功能,轻松完成数据恢复。如果集群中某个节点发生崩溃,只要启用高可用性(HA)功能,系统就会自动故障转移至另一节点。用户还可以轻松与其他 Azure 云服务相集成,包括 ADF、Azure Stream Analytics、Azure Kubernetes Service、App Service 等等……而且无论遇到什么问题,用户都可以随时求助的 Azure 技术支持团队。

“伴随着商业模式的变化,我们也萌生出新的想法:如果客户主要为托管服务付费,那我们要不要让 Citus 完全开源?”Fennema 表示。显而易见,Citus 团队最终决定按照这个思路运行。那么,这条全面开源的路线,又会为 Citus 带来怎样的优势?

全面开源有什么好处?

“虽然开源本身肯定不会是坏事,但毕竟也对应着相当可观的工作量,所以自然要有相应的好处作为驱动力。”Fennema 表示,Citus 全面拥抱开源毫无疑问会带来诸多助益。

首先,开源功能越多,开源的用户也越多。Citus 全面开源的最大受益者就是那些已经在使用之前 Citus 开源版本的开发者,他们只需要升级至 Citus 11 .0 就能直接获得大量额外功能。但是借助在线分片重新负载均衡器和更好的用户管理功能,团队也希望能吸引到更多人来体验 Citus。

在 Fennema 看来,以往,Azure 上的 Citus 可能并不太适合相当一部分朋友的应用需求,或者 Citus 原本的开源版本缺少一些至关重要的功能。现在问题解决了,开源 Citus 就是完全体,可以吸引更多开发者使用。

另外,Fennema 认为,完全开源可以为 Citus 带来更多的客户。“这可能是最反直觉的,但从长远来看,预计全面开源反而会让更多客户在 Azure 上使用 Citus。比方说,您目前只是 Citus 开源版的用户,短期内还没有转向 Azure 的打算。但您可能会在闲聊时向朋友推荐 Citus,而对方正好想要上云,于是就选择了 Azure、选择了 Citus。这就是开源用户推广开源项目,帮助 Citus 托管服务占领市场的一种可能方式。”

其次,无论是个人设备还是在 Azure 云端,Citus 都将提供同等功能。Fennema 表示,对于开发者,Citus 的使用范围不会只局限在 Azure 上。开发者可能需要在开发设备上安装 Citus 开源版,用来开发和测试自己的应用程序。但过去,尚未全面开源的 Citus 会导致开发环境和生产环境间存在差异。在 Citus 11.0 将剩余的功能开源后,开发者现在可以在云端和开发设备之间获得完全对等的 Citus 功能。

最后,将有更多开发者投入精力,帮助改进 Citus。Fennema 表示,通过全面开源 Citus,团队显著提高了项目开发者的幸福感和生产效率,包括他自己。

“在 Citus 11.0 版本之前,我们其实维护着两套 git repo:一个是公共 GitHub repo,用于容纳 Citus 开源版本;另一个则是企业版,对应一套私有 Citus repo。所以在 Citus 11.0 发布之前,每次推出新版本时,开发者都需要承担起将公共 repo 中的变更合并至私有 repo 的重复性劳动。期间不单会出现种种烦人的合并冲突,而且最终成效还经常跟测试期间有所不同。没人愿意被这类工作定期折磨,纯属浪费时间。如今全面开源之后,我和同事们可以更多专注于真正热爱的工作:改进 Citus 与分布式 PostgreSQL。”

Citus 迎来全面开源

Citus 团队认为,Citus 11.0 版本明显是开源代码的好机会。Fennema 介绍,凭借着 git 的强大功能,代码的全面开源其实非常轻松,只使用了以下四行命令:

在完成之后,Citus 团队对提交内容进行了检查,确保代码注释等内容中不会引用到特定客户。在此期间,团队还创建出一份完整清单,列出了实际开源的所有功能。最后一步,就是在开源 repo 中使用上述提交创建一个 PR。至此,Citus 已经完全开源。


http://chatgpt.dhexx.cn/article/0P8mPiKc.shtml

相关文章

O2OA中如何使用PostgreSQL + Citus 实现分布式数据库实现方案?

虽然 O2OA 数据表高效的表结构以及索引的设计已经极大程度地保障了数据存取操作的性能,但是随着使用时间从增长,数据表存放的数据量也会急剧增长。此时,仍然需要有合适的方案来解决数据量产生的系统性能瓶颈。本文介绍通过 PostgreSQL Citus…

数据中台Citus集群压测报告

作者简介: 迪颉科技是专注于企业数字化转型数据价值及数据治理,并在大数据、数据中台(零售、制造行业)、dataops/数仓以及数据驱动的应用等,提供专业解决方案的团队。在以往外企的从业经验中,将原来的Terad…

Citus高可用方案演进介绍

点击上方"数据和云" 关注我们,享更多干货! 1. Citus的复制功能 Citus支持两种数据复制方案: Citus的Shard Replication:通过将DML语句复制到多个Worker节点执行,实现对shard分片数据的复制,仅适用…

Python 基于sicpy求解定积分 ,不定积分以及多重积分

1.SciPy是什么 SciPy是python的一个著名的开源科学库,SciPy一般都是操纵NumPy数组来进行科学计算,统计分析,可以说是基于NumPy之上。SciPy提供了许多科学计算的库函数,如线性代数,微分方程,信号处理&#x…

多重积分积分区域奇偶对称性化简积分

说白了就是根据积分区域的对称性,去看被积函数满足的性质。

java二重积分_《University Calculus》-chaper13-多重积分-二重积分的计算

之前关于二重积分的笔记,介绍了二重积分概念的引入,但是对于它的计算方法(化为累次积分),介绍的较为模糊,它在《概率论基础教程》中一系列的推导中发挥着很重要的作用。 回想先前关于二重积分的几何含义,求解一个曲顶圆…

考研数学多重积分计算秒杀(对称性化简以及雅可比球坐标)

先利用镜面对称性化简交叉项,只需要计算平方项,在利用轮换对称性只算一个二次积分,然后在用雅可比和球坐标积分来算,其中球坐标积分会涉及到三角函数幂次积分,使用华莱士公式来速算。 先平移成标准球面,x^2…

哈密顿算子和拉普拉斯算子 格林公式高斯公式和斯托克斯公式 多重积分的分部积分公式

目录 哈密顿算子(Hamiltionian) ∇ \nabla ∇标量性质矢量性质 拉普拉斯算子(Laplace) Δ \Delta Δ标量性质矢量性质 格林公式高斯公式和斯托克斯公式多重积分的分部积分公式 哈密顿算子(Hamiltionian) …

java二重积分_《University Calculus》-chaper13-多重积分-二重积分的引入

这一章节我们开始对多重积分的研究。 在此之前,我们首先来回忆起积分的过程,在平面中,面临求解不规则图形的面积(常叫曲边梯形)的时候,我们可以采取建立直角坐标系,然后通过得到不规则图形边界的函数表达式f(x)&#x…

基于MATLAB的隐函数偏导与多重积分(附代码)

一. 隐函数的偏导数 给定隐函数: 隐函数的偏导可得: MATLAB格式: F-diff(f,xj)/diff(f,xi) 例题1 已知: 求: 解: MATLAB代码: clc;clear; syms x y; f(x^2-2*x)*exp(-x^2-y^2-x*y); prett…

关于在多重积分以及曲线曲面积分中对称性的应用

引言 在最近的期末复习中经常做到一类需要用对称性来简化计算的题目,而我翻书后却发现书上并没有对这种简化方法有多少介绍,老师倒是在课上讲过,但由于期中以后太摆了也没听,因此经过查找资料后对这种方法也是进行了学习和总结。 …

高斯勒让德(Gauss-legendre)求解多重积分(python,数值积分)

第四十四篇 高斯勒让德求解多重积分 多重积分 在工程分析中,经常需要在一个面积或体积上对函数进行积分。多重积分的解析方法在有限的情况下是可能的,但在这一篇中使用数值积分去求解。一维的函数积分详见重复牛顿-科特斯积分,重复高斯勒让…

数学基础:多重积分

简介 标准定义(参考同济版教材自己给出的定义): 设 f ( x , y , z . . . . ) f(x,y,z....) f(x,y,z....)是有界区域D上的有界函数,讲闭区间D任意分成n个小闭区域 σ n \sigma _n σn​ 在每个小闭区域中任取一点,把小…

多变量微积分(4)——多重积分之三重积分

文章目录 4. 多重积分之三重积分4.1 三种正交坐标系下的三重积分4.1.1 直角坐标系下三重积分4.1.2 柱坐标系下三重积分4.1.3 球坐标系下三重积分4.1.4 积分上下限的选择4.1.5 任意曲面的面积元方法一方法二 4.2 矢量场中的多重积分(重点)4.2.1 三维矢量场…

多重积分中的换元法

34.多重积分中的换元法 34.多重积分中的换元法34.1 二重积分中的换元法34.2 三重积分中的换元法34.2.1 柱面坐标系中的换元法34.2.2 球面坐标系中的换元法 34.多重积分中的换元法 坐标变换中通过换元求多重积分.这个方法用更容易计算的积分来代替复杂的积分。 换元法通过简化被…

matlab多重积分如何使用方法,MATLAB在《高等数学》中的应用_多重积分

论文导读::MATLAB是矩阵实验室的简称,在图形处理方面表现突出。《高等数学》是大学教育中重要的基础理论课之一,图形在《高等数学》的学习中占有重要的位置。在《高等数学》中使用MATLAB可以将复杂的问题变的直观、明了。 关键词:MATLAB,泰勒公式,多重积分 MATLAB是矩阵实…

latex多重积分

重积分 二重积分可以使用\iint表示 ∬ \iint ∬ 三重积分使用\iiint表示 ∭ \iiint ∭ 环路积分使用\oint表示 ∮ \oint ∮ 多重环路同理,但是需要在amsmath宏包后加上esint宏包 下标 一般直接使用\iint_D显示 ∬ D \iint_D ∬D​ 想要让D在正下方&#xff0…

高等数学(总结9-多重积分)

1)二重积分的性质&#xff1a; A&#xff09; &#xfeff;&#xfeff; B)可加性 C) D)如果f(x,y)<φ(x,y)E)M,m分别是f(x,y)的最大值和最小值: F)积分中值定理 2)二次积分公式&#xff1a;注意积分形状&#xff0c;x,y可以调换。 3&#xff09;极坐标也可以采用二次…

多重积分的理解以及转动惯量的求解

多重积分的理解以及转动惯量的求解 一、积分 学到这里应该对与积分的概念很熟悉这里就不过多赘述。 二、二重积分 二重积分的一般形式为     ∬ S f ( x , y ) d x d y \iint_S f(x,y)\,{\rm d}x\,{\rm d}y ∬S​f(x,y)dxdy 一般理解为一个物体的体积&#xff0c;这里…