卡卷网
当前位置:卡卷网 / 每日看点 / 正文

为什么说PostgreSQL前途无量?

作者:卡卷网发布时间:2025-01-03 15:36浏览数量:89次评论数量:0次

PostgreSQL并不是一个简单的关系型数据库,而是一个数据的抽象框架,具有吞噬整个数据库世界的力量。而这也是正在发生的事情——“一切皆用Postgres”已经不再是少数精英团队的前沿探索,而是成为了一种进入主流视野的最佳实践。

PostgreSQL正在吞噬数据库世界


OLAP领域迎来踢馆者

在2016年的一次数据库沙龙里,我提出了一个观点:现在PostgreSQL生态的一个主要遗憾是,缺少一个<>足够好的列式存储分析插件来做OLAP分析。尽管PostgreSQL本身提供了很强大的分析功能集,应付常规的分析任务绰绰有余。但在较大数据量下全量分析的<>性能,相专用的实时数仓仍然有些不够看。

以分析领域的权威评测Clickench为例,我们在其中标注出了PostgreSQL与生态扩展插件以及兼容衍生数据库在其中的性能表现。原生未经过调优的PostgreSQL表现较为拉垮(<>x1050),但经过调优后可以达到(<>x47);此外还有三个与分析有关系的扩展:列存<>Hydra(<>x42),时序扩展<>TimescaleD(<>x103),以及分布式扩展<>Citus(<>x262)。

Clickenchc6a.4xlarge500Ggp2

这样的分析性能表现不能说烂,因为起MySQL,MariaD这样的纯OLTP数据库的辣眼表现(<>x3065,x19700)确实好很多;但第三梯队的性能表现也绝对说不上足够好,与专注于OLAP的第一梯队组件:Umra,ClickHouse,Dataend,SelectD(<>x3~x4)相,在分析性能上仍然有十几倍的性能差距。食之无味,弃之可惜。

<>然而,<>ParadeD<>和<>DuckD<>的出现改变了这一点!

<>ParadeD提供的PG原生扩展<>pg_yti实现了第二梯队(<>x10)的性能水准,与第一梯队只有3~4倍的性能差距。相对于功能上的收益,这种程度的性能差距通常是可以接受的——ACID,新鲜性与实时性,无需ETL、额外学习成本、的新服务,更别提它还提供了Elastiearch质量的全文检索能力。

而<>DuckD则专注于OLAP,将分析性能这件事做到了极致(<>x3.2)——略过第一名Umra这种学术研究型闭源数据库,DuckD也许是OLAP实战性能最快的数据库了。它并不是PG的扩展插件,但它是一个嵌入式文件数据库,而<>DuckDFDW以及<>pg_quack这样的PG生态项目,能让PostgreSQL充分利用DuckD带来的完整分析性能红利!

ParadeD与DuckD的出现让PostgreSQL的分析性能来到了OLAP的第一梯队与金字塔尖,弥补了PostgreSQL在OLAP性能这最后一块关键短板。


分久必合的数据库领域

数据库诞生伊始,并没有OLTP与OLAP的分野。OLAP数据仓库从数据库中“”出来,已经是上世纪九十年代时候的事了——因为传的OLTP数据库难以支撑起分析场景下的查询模式,数据量与性能要求。

在相当一段时间里,数据处理的最佳实践是使用MySQL/PG处理OLTP工作负载,并通过ETL将数据同步到专用的OLAP组件中去处理,如Greenplum,ClickHouse,Doris,Snowflake等等。

与许多“专用数据库”一样,专业的OLAP组件的优势往往在于<>性能——相原生PG、MySQL上有1~3个数量级的提升;而代价则是数据冗余、大量不必要的数据搬运工作、分布式组件之间缺乏一致性、额外的专业技能带来的复杂度成本、学习成本、以及人力成本、额外的软件许可费用、极其有限的查询语言能力、可编程性、可扩展性、有限的工具链、以及与OLTP数据库相更差的数据完整性和可用性——<>但这是一个合理的利弊权衡。

然而天下大势,<>分久必合,合久必分。硬件遵循摩尔定律又发展了三十年,性能翻了几个数量级,成本下降了几个数量级。在2024年的当下,x86单机可以达到512核几个T的内存,单卡NVMeSSD可达64T,全闪单机柜2P;S3这样对象存储更是能实现几乎没有上限的存储。

硬件的发展解决了数据量的问题,而数据库软件的发展(PostgreSQL,ParadeD,DuckD)解决了查询模式的问题,而这导致分析领域——所谓的“大数据”行业基本工作假设面临挑战。

正如DuckD发表的宣言《<>大数据已死》所主张的:<>大数据时代已经结束了——大多数人并没有那么多的数据,大多数数据也很少被查询。大数据的前沿随着软硬件发展不断后退,99%的场景已经不再需要所谓“大数据”了。

如果99%的场景甚至都可以放在一台计算机上用单机/主从的DuckD或PostgreSQL搞定,那么使用专用的分析组件还有多少意义?如果每台都可以自由自主收发短信,那么P机还有什么存在价值?(北美医院还在用P机,正好也还有1%不到的场景也许的需要“大数据”)

基本工作假设的变化,将重新推动数据库世界从百花齐放的“合久必分”阶段,走向“分久必合”的阶段,从大爆发到大灭绝,大浪淘沙中,新的大一超融合数据库将会出现,重新一OLTP与OLAP。而承担重新整合数据库领域这一使命的会是谁?


吞食天地的PostgreSQL

数据库领域有许多“细分领域”:时序数据库,地理空间数据库,文档数据库,搜索数据库,图数据库,向量数据库,消息队列,对象数据库。而PostgreSQL在任何一个领域都不会缺席。

一个PostG插件,成为了地理空间事实标准;一个TimescaleD扩展,让一堆“通用”时序数据库尴尬的说不出话来;一个向量扩展<>PGVector插件,更是让整个<>专用向量数据库细分领域变成笑话。

同样的事情已经发生过很多次,而现在,我们将在拆分最早,地盘最大的一个子领域OLAP分析中再次见证这一点。但PostgreSQL要替代的可不仅仅是OLAP数仓,它的野望是整个数据库世界!

PostgreSQL生态

然PostgreSQL有何德何能,可当此大任?诚然PostgreSQL先进,但Oracle也先进;PostgreSQL开源,但MySQL也开源。PostgreSQL<>先进且开源,这是它与Oracle/MySQL竞争的底气,但要说其一无二的特点,那还得是它的<>极致可扩展性,与繁荣的扩展生态!

用户选择PostgreSQL的原因:开源,先进,扩展。

PostgreSQL并不是一个简单的关系型数据库,而是一个数据的抽象框架,<>具有囊括一切,吞噬整个数据库世界的力量。而它的核心竞争力(除了开源与先进)来自<>可扩展性,即基础设施的<>可复用性与扩展插件的<>可组合性。


PostgreSQL允许用户开发功能模块,复用数据库公共基础设施,以最低的成本交付功能。例如,仅有两千行代码的向量数据库扩展pgvector与百万行代码的PostgreSQL在复杂度上相可以说微不足道,但正是这“微不足道”的扩展,实现了完整的向量数据类型与索引能力,干翻了几乎所有专用向量数据库。

为什么?因为PGVECTOR作者不需要心数据库的通用额外复杂度:事务ACID,故障恢复,备份PITR,高可用,访问控制,监控,部署,三方生态工具,客户端驱动这些需要成百上千万行代码才能解决好的问题,只需要关注自己所需问题的本质复杂度即可。

向量数据库哪家强?

再如,Elastiearch基于Lucene搜索库开发,而Rust生态有一个改进版的下一代Tantivy全文搜索库作为Lucene的替代;而ParadeD只需要将其封装对接到PostgreSQL的接口上,即可提供肩Elastiearch的搜索服务。更重要的是,它可以站在PostgreSQL巨人的肩膀上,借用PG生态的全部合力(例如,与PGVector做混合检索),不讲武德地用数据库全能王的力量,去与一个专用数据库单品来对。

可扩展性带来的另一点巨大优势是扩展的<>可组合性,让不同扩展相互合作,产生出1+1»2的协同效应。例如,TimescaleD可以与PostG组合使用,提供时空数据支持;再如,提供全文检索能力的M25扩展可以和提供语义模糊检索的PGVector扩展组合使用,提供混合检索能力。

再如,<>分布式扩展Citus可以将单机主从数据库集群,原地升级改造为透明水平分片的分布式数据库集群。而这个能力是可以与功能正交组合的,因此,PostG可以成为分布式地理数据库,PGVector可以成为分布式向量数据库,ParadeD可以成为分布式全文搜索数据库,诸如此类。

更强大的地方在于,扩展插件是<>演进的,不需要繁琐的主干合并,联调协作。因此可以Scale——PG的可扩展性允许无数个团队并行探索数据库前研发展方向,而扩展全部都是的可选的,不会影响主干核心能力的稳定性。那些非常强大成熟的特性,则有机会以稳定的形态进入主干中。

通过极致可扩展性的魔法,PostgreSQL做到了**守正出奇,实现了主干极致稳定性与功能敏捷性的一。**扎实的基本盘配上惊人的演进速度,让它成为了数据库世界中的一个异数,改变了数据库世界的游戏规则。


改变游戏规则的玩家

<>PostgreSQL的出现,改变了数据库领域的游戏规则:任何试图开发“新数据库内核”的团队,都需要经过这道试炼与考验——相开源免费、功能齐备的Postgres,价值点在哪里?

至少到硬件出现性突破前,实用的通用数据库新内核都不太可能诞生了,因为任何单一数据库都无法与所有扩展加持下的PG在<>整体实力上相抗衡——包括Oracle,因为PG还有开源免费的必技。

而某个细分领域的数据库产品,如果能在单点属性(通常是性能)上相PostgreSQL实现超过一个数量级的优势,那也许还有一个专用数据库的生态位存在。但通常用不了多久,便会有PostgreSQL生态的开源替代扩展插件而来。因为选择开发PG扩展,而不是一个完整数据库的团队会在追赶复刻速度上有碾压性优势!

因此,如果按照这样的逻辑展开,PostgreSQL生态的雪球只会越越大,随着优势的积累,不可避免地进入一家大的状态。在几年的时间内,实现Linux内核在作领域的状态。而各种开发者调研报告,数据库流行趋势都在印证着这一点。

StackOverflow2023调研结果,PostgreSQL三项全能王

StackOverflow过去7年的数据库指标走势

在引领潮流的HackerNewsStackOverflow上,PostgreSQL早已成为了最受欢迎的数据库。许多新的开源项目都默认使用PostgreSQL作为首要,甚至唯一的数据库——例如,给各种数据库做模式的ytease。《云时代数据库DevOps:硅谷调研》也提出,许多新一代互联网公司都开始积极拥抱并AllinPostgreSQL。

正如《<>技术极简:一切皆用Postgres》所言:简化技术栈、减少组件、加快开发速度、降低风险并提供更多功能特性的方法之一就是<>“一切皆用Postgres”。Postgres能够取代许多后端技术,包括MySQL,Kafka、RaitMQ、Elastiearch,Mongo和Redis,至少到数百万用户时都毫无问题。<>一切皆用Postgres,已经不再是少数精英团队的前沿探索,而是成为了一种进入主流视野的最佳实践。


还有什么可以做的?

我们已经不难预见到数据库领域的终局。但我们又能做什么,又应该做什么呢?

PostgreSQL对于绝大多数场景都已经是一个足够完美的数据库内核了,在这个前提下,数据库内核卡脖子纯属无稽之谈。这些ForkPostgreSQL和MySQL并以内核魔改作为点的所谓“数据库”基本没啥出息。

这好今天我们看Linux作内核一样,尽管市面上有这么多的Linux作发行版,但大家都选择使用同样的Linux内核,吃饱了撑着魔改内核属于没有困难创造困难也要上,会被业界当成山炮看待。

同理,数据库内核本身已经不再是主要矛盾,焦点将会集中到两个方向上——数据库<>扩展与数据库<>服务!前者体现为数据库内部的可扩展性,后者体现为数据库外部的可组合性。而竞争的形式,正如作生态一样——集中于<>数据库发行版上。对于数据库领域来说,只有那些以扩展和服务作为核心价值主张的发行版,才有最终成功的可能。

做内核的厂商不温不火,MariaD作为MySQL的亲Fork甚至都已经濒临退市,而白嫖内核自己做服务与扩展RDS的AWS可以赚的钵满盆翻。投资机构已经出手了许多PG生态的扩展插件与服务发行版:Citus,TimescaleD,Hydra,PostgresML,ParadeD,FerretD,StackGres,Aiven,Neon,Supaase,Temo,PostgresAI,以及我们正在做的Pigsty。


PostgreSQL生态中的一个困境就是,许多扩展插件,生态工具都是演进,各自为战的,没有一个整合者能将他们凝聚起来形成合力。例如,提供分析的Hydra会打一个包一个Docker镜像,PostgresML也会打自己的包和镜像,各家只发行加装了自己扩展的Postgres镜像。而这些朴素的镜像与包也距离RDS这样完整的数据库服务相距甚远。

即使是类似于AWSRDS这样的服务提供商与生态整合者,在诸多扩展面前也依然力有所不逮,只能提供其中的少数。更多的强力扩展出于各种原因(AGPLv3协议,多租户租赁带来的安全挑战)而无法使用。从而难以发挥PostgreSQL生态扩展的协同增幅作用。

这里列出了一些重要扩展,对基于最新的PostgreSQL16主干版本进行,截止至2024-02-28
    <>Pigsty扩展列表<>AWSRDS扩展列表:<>阿里云RDS扩展列表

许多关键扩展在RDS中并不可用

扩展是PostgreSQL的灵魂,无法自由使用扩展的Postgres就像做菜不放盐。只能和MySQL放在同一个RDS的框子里同台,龙游浅水,虎落平阳。而这正是我们想要解决的问题。


知行合一的实践:Pigsty

虽然接触MySQL和MSSQL要早得多,但我在2015年第一次上手PostgreSQL时,就相信它会是数据库领域的未来了。快十年过去,我也从PG的使用者,者,变为了贡献者,开发者。也不断见证着PG走向这一目标。

在与形形的用户沟通交流中,我早已发现数据库领域的木桶短板不是内核——现有的PostgreSQL已经足够好了,而是<>用好数据库内核本身的能力,这也是RDS这样的服务赚的钵满盆翻的原因。

但我希望这样的能力,应该像自由软件运动所倡导的理念那样,像PostgreSQL内核本身一样——普及到每一个用户手中,而不是必须向赛博空间上的封建云领主花大价钱租赁。

所以我打造了<>Pigsty——一个开箱即用的开源PostgreSQL数据库发行版,旨在凝聚PostgreSQL生态扩展的合力,并把提供优质数据库服务的能力普及到每个用户手中。

Pigsty是PostgreSQLinGreatSTYle的缩写,意为PostgreSQL的全盛状态。

我们提出了六点核心价值主张,对应PostgreSQL数据库服务中的的六个核心问题:<>Postgres的可扩展性,<>基础设施的可性,<>图形化的可观测性,<>服务的可用性,<>工具的可性,以及<>扩展模块和三方组件可组合性。

Pigsty六点价值主张的首字母合起来,则为Pigsty提供了另外一种缩写解释:

<>Postgres,<>Infras,<>Graphi,<>Serv,<>Toolox,<>Yos.属于你的图形化Postgres基础设施服务工具箱。

s://pigsty.io/zh/

<>可扩展的PostgreSQL是这个发行版中最重要的价值主张。在刚刚发布的<>Pigstyv2.6中,我们整合了上面提到的DuckdFDW与ParadeD扩展,这两个插件让PostgreSQL的分析能力得到史诗级增强,而我们确保每个用户都能轻松用得上这样的能力。

来自ParadeD创始人与DuckdFDW作者的感谢致意

我们希望整合PostgreSQL生态里的各种力量,并将其凝聚在一起形成合力,打造一个数据库世界中的<>Uuntu发行版。而我相信,内核之争早已尘埃落定,而这里才会是数据库世界的未来竞争焦点。

一些重要的扩展插件

Pigsty支持的180+<>扩展列表

开发者朋友们,你们的选择会塑造数据库世界的未来。希望我的这些工作,可以帮助你们更好的用好这世界上最先进的开源数据库内核——PostgreSQL。


参考阅读

Pigstyv2.6:PostgreSQL踢馆OLAP

技术极简:一切皆用Postgres

PG生态新玩家ParadeD

令人惊叹的PostgreSQL可伸缩性

中国对PostgreSQL的贡献约等于零吗?

展望PostgreSQL的2024(JonathanKatz)

2023年度数据库:PostgreSQL(D-Engine)

MySQL的正确性为何如此拉垮?

向量数据库凉了吗?

重新拿回计算机硬件的红利

数据库被卡脖子了吗?

PG查询优化:观宏之道

FerretD:假扮成MongoD的PostgreSQL

如何用pg_filedump抢救数据?

PGSQLxPigsty:数据库全能王来了

PostgreSQL:世界上最成功的数据库

AI大模型与向量数据库PGVECTOR

更好的开源RDS替代:Pigsty

PostgreSQL到底有多强?

为什么PostgreSQL是最成功的数据库?

为什么说PostgreSQL前途无量?

END

免责声明:本文由卡卷网编辑并发布,但不代表本站的观点和立场,只提供分享给大家。

卡卷网

卡卷网 主页 联系他吧

请记住:卡卷网 Www.Kajuan.Net

欢迎 发表评论:

请填写验证码