为什么说PostgreSQL前途无量?
作者:卡卷网发布时间:2025-01-03 15:36浏览数量:89次评论数量:0次
PostgreSQL并不是一个简单的关系型数据库,而是一个数据的抽象框架,具有吞噬整个数据库世界的力量。而这也是正在发生的事情——“一切皆用Postgres”已经不再是少数精英团队的前沿探索,而是成为了一种进入主流视野的最佳实践。
OLAP领域迎来踢馆者
在2016年的一次数据库沙龙里,我提出了一个观点:现在PostgreSQL生态的一个主要遗憾是,缺少一个<>足够好>的列式存储分析插件来做OLAP分析。尽管PostgreSQL本身提供了很强大的分析功能集,应付常规的分析任务绰绰有余。但在较大数据量下全量分析的<>性能>,相专用的实时数仓仍然有些不够看。
以分析领域的权威评测Clickench为例,我们在其中标注出了PostgreSQL与生态扩展插件以及兼容衍生数据库在其中的性能表现。原生未经过调优的PostgreSQL表现较为拉垮(<>x1050>),但经过调优后可以达到(<>x47>);此外还有三个与分析有关系的扩展:列存<>Hydra>(<>x42>),时序扩展<>TimescaleD>(<>x103>),以及分布式扩展<>Citus>(<>x262>)。
这样的分析性能表现不能说烂,因为起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先进,但Oracle也先进;PostgreSQL开源,但MySQL也开源。PostgreSQL<>先进且开源>,这是它与Oracle/MySQL竞争的底气,但要说其一无二的特点,那还得是它的<>极致可扩展性,与繁荣的扩展生态>!
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内核在作领域的状态。而各种开发者调研报告,数据库流行趋势都在印证着这一点。
在引领潮流的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生态扩展的协同增幅作用。
扩展是PostgreSQL的灵魂,无法自由使用扩展的Postgres就像做菜不放盐。只能和MySQL放在同一个RDS的框子里同台,龙游浅水,虎落平阳。而这正是我们想要解决的问题。
知行合一的实践:Pigsty
虽然接触MySQL和MSSQL要早得多,但我在2015年第一次上手PostgreSQL时,就相信它会是数据库领域的未来了。快十年过去,我也从PG的使用者,者,变为了贡献者,开发者。也不断见证着PG走向这一目标。
在与形形的用户沟通交流中,我早已发现数据库领域的木桶短板不是内核——现有的PostgreSQL已经足够好了,而是<>用好数据库内核本身的能力>,这也是RDS这样的服务赚的钵满盆翻的原因。
但我希望这样的能力,应该像自由软件运动所倡导的理念那样,像PostgreSQL内核本身一样——普及到每一个用户手中,而不是必须向赛博空间上的封建云领主花大价钱租赁。
所以我打造了<>Pigsty>——一个开箱即用的开源PostgreSQL数据库发行版,旨在凝聚PostgreSQL生态扩展的合力,并把提供优质数据库服务的能力普及到每个用户手中。
我们提出了六点核心价值主张,对应PostgreSQL数据库服务中的的六个核心问题:<>Postgres的可扩展性>,<>基础设施的可性>,<>图形化的可观测性>,<>服务的可用性>,<>工具的可性>,以及<>扩展模块和三方组件可组合性>。
Pigsty六点价值主张的首字母合起来,则为Pigsty提供了另外一种缩写解释:
<>可扩展的PostgreSQL>是这个发行版中最重要的价值主张。在刚刚发布的<>Pigstyv2.6>中,我们整合了上面提到的DuckdFDW与ParadeD扩展,这两个插件让PostgreSQL的分析能力得到史诗级增强,而我们确保每个用户都能轻松用得上这样的能力。
我们希望整合PostgreSQL生态里的各种力量,并将其凝聚在一起形成合力,打造一个数据库世界中的<>Uuntu>发行版。而我相信,内核之争早已尘埃落定,而这里才会是数据库世界的未来竞争焦点。
开发者朋友们,你们的选择会塑造数据库世界的未来。希望我的这些工作,可以帮助你们更好的用好这世界上最先进的开源数据库内核——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前途无量?
免责声明:本文由卡卷网编辑并发布,但不代表本站的观点和立场,只提供分享给大家。
相关推荐

你 发表评论:
欢迎