Pigsty v4.2 正式發(fā)布,
本次更新同時(shí)交付了三款全新 PG 內(nèi)核 —— 圖數(shù)據(jù)庫 AgensGraph、多寫分布式 pgEdge、MPP 數(shù)倉 Cloudberry —— 并重建了 Babelfish、OrioleDB、OpenHalo 三款既有內(nèi)核。至此,Pigsty 支持的內(nèi)核總數(shù)達(dá)到了 12 個(gè)。
![]()
你可以用一份配置文件,把所有這些不同風(fēng)味的 PostgreSQL 部署為自帶監(jiān)控、高可用、時(shí)間點(diǎn)恢復(fù)與 IaC 的企業(yè)級(jí)數(shù)據(jù)庫服務(wù)。這就是 "Meta PG 發(fā)行版" 的含義。
內(nèi)核大觀園
PostgreSQL 以極致的可擴(kuò)展性聞名。生態(tài)中有超過 1000 個(gè)擴(kuò)展,Pigsty 則提供了其中 461 個(gè)開箱即用。
但有些能力是擴(kuò)展做不到的 —— 比如定制語法。如果你想在 PostgreSQL 里原生使用 Oracle 的 PL/SQL、SQL Server 的 T-SQL、MongoDB 的 BSON 協(xié)議、或者 Cypher 圖查詢語法,而不是通過函數(shù)調(diào)用來模擬,那你就需要修改內(nèi)核。這也是為什么 Pigsty 不僅提供生態(tài)中數(shù)量最多的擴(kuò)展,還要支持不同的內(nèi)核分支。
![]()
![]()
在 Pigsty 里使用這些內(nèi)核,和使用原版 PostgreSQL 幾乎沒有區(qū)別 —— 同樣的部署流程、同樣的監(jiān)控面板、同樣的高可用機(jī)制、同樣的備份恢復(fù)。區(qū)別只是配置文件里改一個(gè) pg_mode 的值。一行配置的差異,工程上的大一統(tǒng)。
十二內(nèi)核,一份配置。下面逐個(gè)展開。
原生 PostgreSQL
這次 PostgreSQL 的小版本更新值得單獨(dú)提一下。
18.2 系列引入了 substring 與 WAL 回放相關(guān)的回歸問題 —— 修漏洞的時(shí)候帶進(jìn)了新 bug。社區(qū)反應(yīng)很快,兩周后緊急發(fā)布了 18.3 / 17.9 / 16.13 / 15.17 / 14.22 補(bǔ)丁版本。Pigsty 的做法還是老規(guī)矩 —— 新版本發(fā)布次日,離線安裝包就緒、所有擴(kuò)展重新編譯驗(yàn)證、文檔同步更新。你要做的就是一行命令的事。
擴(kuò)展總數(shù)也順勢(shì)推到了 461 個(gè)。
如果你追求極致的可擴(kuò)展性和最佳的穩(wěn)定性,原生 PostgreSQL 始終是最佳默認(rèn)選擇。Pigsty 支持處于生命周期內(nèi)的 PG 14 到 PG 18。值得一提的是,本版本是最后一個(gè)支持 PG 13 的版本,后續(xù)最低版本將升至 PG 14。
pgEdge:原生多主復(fù)制
pgEdge 是本次新增的重量級(jí)選手。
傳統(tǒng) PostgreSQL 高可用是一主多從 —— 寫操作只能發(fā)往主節(jié)點(diǎn)。pgEdge 的核心擴(kuò)展 Spock 打破了這個(gè)限制:集群中的每個(gè)節(jié)點(diǎn)都可以讀寫,數(shù)據(jù)通過邏輯復(fù)制在節(jié)點(diǎn)間異步同步,沖突通過可配置策略自動(dòng)解決。
嚴(yán)格來說,pgEdge 不是一個(gè)全新的內(nèi)核,而是基于標(biāo)準(zhǔn) PostgreSQL + Spock 擴(kuò)展的多主方案。但由于多主復(fù)制的一些底層能力需要內(nèi)核補(bǔ)丁(這些 Patch 尚未合并到 PostgreSQL 主干),它目前不得不以"Patch 內(nèi)核 + 擴(kuò)展"的方式發(fā)布。這一點(diǎn)和 OrioleDB、Percona TDE 類似 —— 如果 PostgreSQL 主干未來合并了這些 Patch,它們都可以轉(zhuǎn)變?yōu)榧償U(kuò)展形態(tài)工作,這是非常值得期待的趨勢(shì)。
![]()
我很看好這個(gè)項(xiàng)目。pgEdge 團(tuán)隊(duì)有幾位 PostgreSQL 社區(qū)的內(nèi)核老將,技術(shù)功底很扎實(shí)。關(guān)于它的開源歷程也值得一說:之前它使用的是類似 Confluent 風(fēng)格的 Source Available 協(xié)議(pgEdge Community License),嚴(yán)格來說不算開源。但 2025 年 9 月,它全面轉(zhuǎn)向了 PostgreSQL License。
不過有個(gè)細(xì)節(jié)需要注意:源代碼遵循 PostgreSQL 協(xié)議,但官方提供的二進(jìn)制包依然受商業(yè)許可約束。具體來說,開發(fā)環(huán)境可以免費(fèi)使用,但生產(chǎn)環(huán)境必須付費(fèi)訂閱。
老馮直接基于 PostgreSQL 協(xié)議的源碼自行打包 —— 制作了帶 Patch 的 PostgreSQL 內(nèi)核包,并在 Pigsty 支持的全部主流操作系統(tǒng)上完成適配。沒有外部依賴,從 Pigsty 倉庫直接裝就行,不存在生產(chǎn)環(huán)境的許可問題。當(dāng)然,如果你想用他們的云服務(wù)和商業(yè)支持,也歡迎去打錢支持一下。
pgEdge 由三個(gè)核心擴(kuò)展組成:
?Spock 5.0.5:多主邏輯復(fù)制引擎,每個(gè)節(jié)點(diǎn)同時(shí)處理讀寫?Lolor 1.2.2:大對(duì)象邏輯復(fù)制?Snowflake 2.4:分布式序列號(hào)生成
沖突解決方面,pgEdge 提供了多種策略:最簡(jiǎn)單的"最后寫入獲勝"(LWW)、專門的 CRDT 方案、沖突日志表、以及用戶自定義策略。如果你有全球地理分布的需求 —— 比如北京、法蘭克福、弗吉尼亞各放一個(gè)節(jié)點(diǎn),用戶就近讀寫 —— 這種多主模式非常合適。它相當(dāng)于在 PostgreSQL 生態(tài)里原生提供了類似 CockroachDB / TiDB 的多寫能力,只不過底座還是那個(gè)你熟悉的 PostgreSQL。
在 Pigsty 中使用只需要:configure -c pgedge。
AgensGraph:圖數(shù)據(jù)庫
AgensGraph 的定位是基于 PostgreSQL 的多模型圖數(shù)據(jù)庫 —— 在一個(gè)引擎內(nèi)同時(shí)原生支持關(guān)系模型和屬性圖模型,而不是像 Neo4j 那樣另起爐灶。這是由韓國 Bitnine 團(tuán)隊(duì)發(fā)起主導(dǎo)的項(xiàng)目。
有人會(huì)問:PostgreSQL 生態(tài)里不是有 Apache AGE 這個(gè)圖擴(kuò)展嗎?為什么還要做 fork 內(nèi)核?
這里有個(gè)有意思的淵源:AGE 和 AgensGraph 其實(shí)是同一個(gè)團(tuán)隊(duì)做的。最初他們做的是 AgensGraph 這個(gè)內(nèi)核 fork,大概 1000 多個(gè) Star。后來他們嘗試以擴(kuò)展形式實(shí)現(xiàn)類似功能,做了 AGE 并捐獻(xiàn)給 Apache。結(jié)果擴(kuò)展形式反而更受歡迎,拿到了 4000 多個(gè) Star。AGE 雖然去年經(jīng)歷了一陣維護(hù)風(fēng)波,但最近已恢復(fù)更新,發(fā)布了針對(duì) PG 17/18 的 1.7.0 版本。
那 fork 版本還有什么存在價(jià)值?至少四個(gè)方面:
![]()
一是原生語法。在 AGE 里,你需要用函數(shù)調(diào)用來執(zhí)行 Cypher 查詢(把查詢字符串傳進(jìn)去);而在 AgensGraph 里,你可以直接寫 CREATE GRAPH,Cypher 是一等公民語法。
二是存儲(chǔ)優(yōu)化。它的存儲(chǔ)引擎針對(duì)圖屬性做了專門優(yōu)化,理論上性能更好(雖然我還沒實(shí)際 bench 過)。
三是查詢優(yōu)化統(tǒng)一。Cypher、JSON、SQL 三種查詢語言在優(yōu)化器層面是統(tǒng)一處理的,這種原生實(shí)現(xiàn)方式很有意思。
四是向量兼容。AgensGraph 最近宣稱支持了 pgvector 兼容,意味著可以在同一個(gè)庫里做 Graph RAG —— 圖 + 向量的組合檢索。這是當(dāng)下非常火的前沿方向。這個(gè)專門的 vector 插件我還沒打包進(jìn)來,后面可能會(huì)補(bǔ)上。
當(dāng)然,fork 路徑的代價(jià)也很明顯:版本跟進(jìn) PG 主線的難度很高。目前 PG 已經(jīng)到 18 了,AgensGraph 還是基于 PG 16。這始終是 fork 方案的宿命,要落后一兩個(gè)大版本。
在 Pigsty 中使用:configure -c agens。
Cloudberry:MPP 數(shù)倉
Cloudberry 是本次新增的第三款內(nèi)核。它是一個(gè) Apache 項(xiàng)目,由 HashData 團(tuán)隊(duì)主導(dǎo),本質(zhì)上是 Greenplum 7 的 fork —— 但做了不少改進(jìn),比如內(nèi)核從 Greenplum 的 PG 12 升級(jí)到了 PG 14,補(bǔ)上了不少好用的新特性。
![]()
Cloudberry 2.0 發(fā)布后就不再提供官方二進(jìn)制包了 —— 之前 1.18 和 1.19 還有 RPM,現(xiàn)在也沒了。我等了幾個(gè)月沒見到官方有計(jì)劃解決這個(gè)問題,就決定在 Claude 的幫助下自己動(dòng)手。打包過程整體順利,只是在個(gè)別較新的操作系統(tǒng)上需要改些代碼、打幾個(gè)補(bǔ)丁。之前只有 RPM,現(xiàn)在 DEB 也有了,Pigsty 支持的 14 個(gè) Linux 發(fā)行版上全部可用。
![]()
關(guān)于 Cloudberry/Greenplum 的部署腳本和監(jiān)控方案,其實(shí)早在 Pigsty v1.4 就做過,后來因?yàn)橛脩籼倬腿サ袅恕.吘股?MPP 數(shù)倉的體量不是一般公司能達(dá)到的。所以我們思忖再三,先將其作為 Beta 模塊按需提供 —— 包已經(jīng)打好放在倉庫里了,你可以直接下載使用;完整的部署劇本會(huì)在后續(xù)版本中擇機(jī)提供。
Babelfish:SQL Server 兼容
說完三個(gè)新增內(nèi)核,再來聊三個(gè)重建的內(nèi)核。
Babelfish 是 AWS 開源的 SQL Server 兼容層 —— 讓 PostgreSQL 理解 T-SQL 語法和 TDS 協(xié)議,你的 SQL Server 應(yīng)用不改驅(qū)動(dòng)、不改大部分查詢,就能連上 PostgreSQL 跑起來。好項(xiàng)目,但打包構(gòu)建實(shí)在是復(fù)雜,復(fù)雜到專門有一個(gè)開源項(xiàng)目 WiltonDB 就是干這件事的。
![]()
老馮之前偷懶,直接用了 WiltonDB 打的包。說實(shí)話,那個(gè)包的質(zhì)量一直讓我不太舒服:不支持 Debian 全系列和 EL10,依賴體系跟標(biāo)準(zhǔn) PG 不一樣,而且版本還停留在 PG15 —— 但 Babelfish 上游都已經(jīng)支持 PG17 了。
![]()
這次一不做二不休,自己打。有了前面幾個(gè)內(nèi)核的打包經(jīng)驗(yàn),這個(gè)反而簡(jiǎn)單了 —— 把 Babelfish 的四個(gè)核心擴(kuò)展打成一個(gè)包,配合一個(gè) Patch 內(nèi)核包,開箱即用。現(xiàn)在不再依賴外部 WiltonDB 倉庫,直接從 Pigsty 倉庫安裝即可。版本升級(jí)到了 Babelfish 5.5 + PG17。
在 Pigsty 中使用:configure -c mssql。
OrioleDB:新存儲(chǔ)引擎
OrioleDB 是被 Supabase 收購的新一代 PostgreSQL 存儲(chǔ)引擎項(xiàng)目,目標(biāo)是從根本上解決 MVCC 膨脹問題 —— 用 Undo Log 替代傳統(tǒng)的 Dead Tuple + VACUUM 機(jī)制。
本次重建升級(jí)到了 OrioleDB Beta14,基于 OriolePG 17.16 構(gòu)建。新版本的一個(gè)重要進(jìn)展是支持了 PITR 增量備份恢復(fù)能力。仍處于 Beta 階段,不建議關(guān)鍵生產(chǎn)環(huán)境使用。但作為 PostgreSQL 存儲(chǔ)引擎的未來演進(jìn)方向之一,值得持續(xù)關(guān)注和實(shí)驗(yàn)。
![]()
在 Pigsty 中使用:configure -c oriole。
OpenHalo:MySQL 協(xié)議兼容
OpenHalo 是重建的第三個(gè)內(nèi)核。它提供了 MySQL 線纜協(xié)議兼容 —— 你可以同時(shí)用 MySQL 客戶端和 PG 客戶端讀寫同一個(gè)數(shù)據(jù)庫,這個(gè)能力非常有意思。
由易景羲和團(tuán)隊(duì)開發(fā),是少數(shù)幾家踏踏實(shí)實(shí)做事、并且愿意把成果開源出來的國產(chǎn)數(shù)據(jù)庫公司,很難得。這次更新的變化:
?版本從 PG 14.10 升級(jí)到 PG 14.18?版本號(hào)正式更新為 1.0,按照 Pigsty 打包規(guī)范重新調(diào)整了命名
![]()
雖然基線版本是 PG14,稍顯陳舊,但在 MySQL 遷移場(chǎng)景下確實(shí)是一個(gè)值得考慮的選擇。
在 Pigsty 中使用:configure -c mysql。
其余六位常駐選手
除了本次新增和重建的六款內(nèi)核,Pigsty 還有六位一直在的"常駐選手":
IvorySQL(pg_mode: ivory)—— 瀚高出品的 Oracle PL/SQL 兼容內(nèi)核,目前基于 PG 18.1。
Percona TDE(pg_mode: tde)—— 透明數(shù)據(jù)加密,滿足合規(guī)場(chǎng)景中"落盤加密"的剛需。更新節(jié)奏稍慢于 PG 主線,后續(xù)會(huì)跟進(jìn)到最新版本。
PolarDB(pg_mode: polar)—— 阿里開源的共享存儲(chǔ)架構(gòu) PG 內(nèi)核,更新了小版本。
Citus(pg_mode: citus)—— 微軟出品的分布式擴(kuò)展,正式發(fā)布 14.0.0 版本,支持 PG 18。
Ferret / DocumentDB(pg_mode: mongo)—— MongoDB 協(xié)議兼容方案,讓你用 MongoDB 驅(qū)動(dòng)直連 PostgreSQL。
Supabase 自建模板也例行升級(jí)到了最新版本。
![]()
一份配置,十核齊飛
說了這么多內(nèi)核,最好玩的事情其實(shí)是這個(gè)
我們做了一個(gè) demo/kernel.yml 配置文件,
可以用這個(gè)模板一鍵拉起 10 個(gè)不同的 PG 內(nèi)核。
![]()
每個(gè)集群都有獨(dú)立的監(jiān)控面板、高可用、備份恢復(fù),就像管理 10 個(gè)標(biāo)準(zhǔn) PostgreSQL 一樣。純屬炫耀—— 看,俺能一鍵同時(shí)拉起這么多風(fēng)味的內(nèi)核。
不過這也是一個(gè)很好的參考模板:如果你想在一套 Pigsty 部署里混合使用多種內(nèi)核,具體該怎么配置,看這個(gè)就對(duì)了。
企業(yè)級(jí) PG 發(fā)行版
眼尖的朋友可能已經(jīng)發(fā)現(xiàn),網(wǎng)站首頁的 Slogan 換了。
以前叫 "Battery-Included, Local-First FLOSS RDS",現(xiàn)在改成了:"開箱即用的企業(yè)級(jí)開源 PostgreSQL 發(fā)行版,自帶高可用、PITR、IaC 監(jiān)控與 461 個(gè)擴(kuò)展"。
![]()
老馮之前一直不喜歡 “企業(yè)級(jí)” 這三個(gè)字,感覺似乎是比 “云” 還要狠的 “殺豬盤” —— 但奈何很多客戶就吃這一套。實(shí)際上老馮在 里面也提到了,有些標(biāo)著企業(yè)級(jí)高可用的方案其實(shí)底下就是 “patroni”,企業(yè)級(jí)備份底下就是個(gè) pgbackrest,甚至參數(shù)都沒優(yōu)化過。既然如此,實(shí)力到位,該戴的帽子就應(yīng)該理直氣壯的戴上。
另一個(gè)變化是去掉了"RDS 替代"的說法。以前叫自己"開源 RDS 替代",是一種借力定位——用人們熟悉的品類錨點(diǎn)(云數(shù)據(jù)庫)來解釋 “Pigsty 是什么”。但到了今天,老馮有信心說:不需要用別人的東西來定義自己。Pigsty 就是 Pigsty,它應(yīng)該自己開創(chuàng)自己的品類,而不是借用別人的定義。
從 GitHub Star 上看,Pigsty 已經(jīng)是 Linux 原生賽道的 No.1,增長(zhǎng)速度也開始重新與 EDB 老大哥的 K8S 云原生賽道 CloudNativePG 看齊。
![]()
順便一提,Pigsty 目前也算是中國開發(fā)者/廠商在 PostgreSQL 生態(tài)中最有影響力的開源項(xiàng)目了。
![]()
其他改進(jìn)
除了內(nèi)核大戲,v4.2 還有一些值得注意的工程改進(jìn):
Redis 目錄規(guī)范化:默認(rèn)目錄從 /data 調(diào)整為 /data/redis。存量配置如果還用 /data,需要先改過來再升級(jí),部署階段會(huì)阻止舊路徑繼續(xù)使用。
Configure 腳本優(yōu)化:支持 -o 絕對(duì)路徑輸出并自動(dòng)建目錄;區(qū)域探測(cè)改為三態(tài)(境內(nèi)/境外/離線回退),修復(fù)了 behind_gfw() 卡住的問題。
pgBackRest 初始化容錯(cuò):stanza-create 增加重試(2 次、間隔 5 秒),緩解與 archive-push 的鎖競(jìng)爭(zhēng)。踩過這個(gè)坑的人知道它有多煩。
Supabase 應(yīng)用棧升級(jí):PostgREST 14.5、Vector 0.53.0,S3 訪問密鑰變量補(bǔ)齊。
Vibe 模板更新:內(nèi)置 @anthropic-ai/claude-code、@openai/codex、happy-coder 等工具,AI 編碼沙箱開箱即用。
基礎(chǔ)設(shè)施例行升級(jí):Grafana 12.4、Prometheus 3.10、VictoriaMetrics 1.136、etcd 3.6.8、Kafka 4.2 等。注意 Grafana 12.4 有 data link 合并行為變化,自定義面板需檢查。
首頁改版:之前用 Claude Code 糊了一版,有人反映太丑了,批評(píng)得很有道理。這次讓 Codex 重新優(yōu)化了一輪,好看不少。后面有空會(huì)繼續(xù)打磨。
后續(xù)展望
Pigsty 作為開源項(xiàng)目,我覺得已經(jīng)達(dá)到了相當(dāng)完善的程度。后續(xù)的工作重心會(huì)逐漸轉(zhuǎn)向子項(xiàng)目:
Pig CLI 最近更新了很多強(qiáng)大功能 —— 把 PostgreSQL、Patroni、PgBouncer、pgBackRest 的管理全部封裝成了命令行工具,方便 Claude Code 這樣的 DBA Agent 調(diào)用。這種同時(shí)為人類 DBA 和 AI Agent 設(shè)計(jì)的命令行工具,我稱之為 Agent-Native CLI。
DBA Agent 方面,最近寫了一些 Claude Skills 和提示詞模板,讓 Pigsty 環(huán)境可以被 AI 工具感知。這樣你就可以把 Claude Code 放進(jìn) Pigsty 環(huán)境里,讓它幫你干活。
Pigsty 本身會(huì)繼續(xù)跟著 PG 小版本的節(jié)奏走。下個(gè)版本可能會(huì)正式補(bǔ)上 Cloudberry 的部署劇本,加上本地 SMTP 服務(wù)器支持(maddy / stalwart)。大的新功能暫時(shí)不急 —— 當(dāng)前這個(gè)架構(gòu)持續(xù)穩(wěn)定地跑下去,就挺好。
![]()
數(shù)據(jù)庫老司機(jī)
點(diǎn)一個(gè)關(guān)注 ??,精彩不迷路
對(duì) PostgreSQL, Pigsty,下云 感興趣的朋友
歡迎加入 PGSQL x Pigsty 交流群 (QQ 619377403)
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.