<ruby id="9ue20"></ruby>

  1. 
    

      国产午夜福利免费入口,国产日韩综合av在线,精品久久人人妻人人做精品,蜜臀av一区二区三区精品,亚洲欧美中文日韩在线v日本,人妻av中文字幕无码专区 ,亚洲精品国产av一区二区,久久精品国产清自在天天线
      網(wǎng)易首頁(yè) > 網(wǎng)易號(hào) > 正文 申請(qǐng)入駐

      504個(gè)擴(kuò)展,PostgreSQL 的天花板在哪里?

      0
      分享至

      一個(gè) Issue ,引發(fā)擴(kuò)展馬拉松;32 個(gè)新擴(kuò)展告訴你,PostgreSQL 正在變成什么;504 個(gè)擴(kuò)展,PostgreSQL 生態(tài)的天花板在哪?

      從一個(gè)化學(xué)擴(kuò)展說(shuō)起

      兩天前,一位用戶在 GitHub 上給我提了個(gè) Issue:他在用 RDKit —— 化學(xué)信息學(xué)領(lǐng)域的事實(shí)標(biāo)準(zhǔn)庫(kù),能在 PostgreSQL 里做分子結(jié)構(gòu)存儲(chǔ)、子結(jié)構(gòu)檢索和相似性計(jì)算。 但他發(fā)現(xiàn) PGDG 官方打包的版本缺了 InChI 功能,他自己折騰了半天,加上編譯參數(shù)后總算跑通了,但還是希望 Pigsty 能原生支持。


      但 RDKit 確實(shí)是個(gè)硬骨頭。大約兩年前我就試過(guò)一次,想把它收進(jìn) Pigsty 的擴(kuò)展倉(cāng)庫(kù),從 Debian 移植到 EL。 結(jié)果依賴太多了:Boost、Eigen、RapidJSON、Cairo,外加 InChI、Avalon 等可選模塊, 每個(gè)都有自己的編譯開(kāi)關(guān)和操作系統(tǒng)默認(rèn)庫(kù)版本兼容問(wèn)題。折騰了一會(huì)沒(méi)跑通,就先擱置了。

      但這次不一樣。有 Coding Agent 了。

      用 Codex / Claude Code 處理這類"構(gòu)建系統(tǒng)考古"任務(wù)簡(jiǎn)直是降維打擊 —— 以前需要反復(fù)試錯(cuò)的東西,現(xiàn)在基本一兩輪對(duì)話然后等著就行了。 這次發(fā)布,把 PGDG 打包到 InChI 支持的問(wèn)題也一并解決了,本質(zhì)上就是編譯時(shí)多開(kāi)一個(gè)標(biāo)志位再帶上 InChI 源碼。一把過(guò),用戶也很滿意。


      說(shuō)實(shí)話,看到這種反饋挺開(kāi)心的。做開(kāi)源最開(kāi)心的就是這個(gè)時(shí)候。

      趁熱打鐵

      既然手熱了,我就順便把積壓已久的幾個(gè)"歷史疑難雜癥"也一起清了。

      plv8:V8 引擎的 PostgreSQL 綁定,之前在 EL10 上死活編譯不過(guò),這次打了好幾個(gè)補(bǔ)丁終于搞定了穩(wěn)定構(gòu)建。

      duckdb_fdw:允許從 PG 內(nèi)部讀寫(xiě)外部 DuckDB 文件,但之前會(huì)和 DuckDB 官方的 pg_duckdb 擴(kuò)展?fàn)帗尮蚕韼?kù),我只能忍痛臨時(shí)隱藏。這次把 duckdb_fdw 掛成了 pg_duckdb 的子擴(kuò)展,共享同一份 libduckdb,沖突問(wèn)題優(yōu)雅解決,倆擴(kuò)展又能并存了。

      然后我就想:既然工具鏈都熱好了,不如把 PostgreSQL 生態(tài)里剩下那些值得收錄但一直沒(méi)啃的擴(kuò)展也一并搞進(jìn)來(lái)吧。 于是就有了這次的大更新 —— 新增 32 個(gè)擴(kuò)展,更新 22 個(gè),Pigsty 擴(kuò)展倉(cāng)庫(kù)總數(shù)正式突破 500,達(dá)到 504 個(gè)

      擴(kuò)展目錄: pigsty.cc/ext[2]
      分類 All PGDG PIGSTY CONTRIB MISS PG18 PG17 PG16 PG15 PG14 全部

      504

      155

      332

      71

      0

      481

      488

      479

      473

      457

      EL

      499

      150

      332

      71

      5

      472

      482

      474

      468

      452

      Debian

      489

      107

      311

      71

      15

      466

      474

      464

      458

      442

      這五百個(gè)擴(kuò)展中,一部分是 PG 自帶的擴(kuò)展(70個(gè)),PGDG 官方打包的擴(kuò)展(150 個(gè)),剩下的 330 個(gè)都是老馮自己收錄,打包,維護(hù)構(gòu)建的第三方擴(kuò)展。 基本上,Pigsty 在這個(gè)賽道上已經(jīng)做到了前無(wú)古人,后無(wú)來(lái)者了。

      這是啥概念?一般 RDS PG 上也就是幾十個(gè)擴(kuò)展。比如最近火爆的 Supabase 上,去掉 PG 自帶的的 35 個(gè) Contrib 擴(kuò)展,實(shí)際上也就提供了 30 個(gè)不到的第三方 PG 擴(kuò)展。

      新擴(kuò)展

      這批新增擴(kuò)展的畫(huà)風(fēng)相當(dāng)硬核。按大類可以分四組:

      數(shù)據(jù)域擴(kuò)展:把化學(xué)分子、RDF 三元組、BSON、Protobuf、循環(huán)日程這些"復(fù)雜對(duì)象"變成數(shù)據(jù)庫(kù)一等公民;

      查詢能力擴(kuò)展:稀疏線代與圖算法、Datalog 圖查詢、全文檢索、混合排序融合、遞歸 SQL 模板引擎;

      生產(chǎn)工程擴(kuò)展: 深度可觀測(cè)性、查詢遙測(cè)導(dǎo)出、CDC 到 MQTT、COPY 命令攔截、DDL 邏輯復(fù)制補(bǔ)全、輕量分布式鎖、軟告警式數(shù)據(jù)質(zhì)量管理;

      開(kāi)發(fā)者體驗(yàn)擴(kuò)展: 會(huì)話變量、偽自治事務(wù)日志、自然語(yǔ)言時(shí)間解析,以及壓軸的 —— 在數(shù)據(jù)庫(kù)里跑 TypeScript。

      這些擴(kuò)展共同指向一個(gè)趨勢(shì):PostgreSQL 的擴(kuò)展層正在把數(shù)據(jù)庫(kù)推向應(yīng)用與數(shù)據(jù)平臺(tái)的中間地帶。很多原本需要獨(dú)立服務(wù)才能解決的問(wèn)題,現(xiàn)在可以在一條 SQL 事務(wù)邊界內(nèi)搞定。

      這就是 PostgreSQL 極致可擴(kuò)展性的魅力所在。

      新擴(kuò)展大觀園

      這次新加入了 32 個(gè)新擴(kuò)展,下面的部分是請(qǐng) Claude/Codex/Gemini 三劍客進(jìn)行研究匯總摘要,用于幫助讀者快速了解每個(gè)擴(kuò)展的核心功能、技術(shù)實(shí)現(xiàn)和適用場(chǎng)景。

      1. rdkit —— 把化學(xué)信息學(xué)搬進(jìn) PostgreSQL

      RDKit 是開(kāi)源化學(xué)信息學(xué)領(lǐng)域的事實(shí)標(biāo)準(zhǔn)庫(kù),由 Greg Landrum 發(fā)起(最初在 Novartis,現(xiàn)屬 T5 Informatics),其 PostgreSQL cartridge 模塊將分子結(jié)構(gòu)存儲(chǔ)、子結(jié)構(gòu)檢索和相似性計(jì)算直接帶入關(guān)系數(shù)據(jù)庫(kù)。對(duì)于制藥公司和化學(xué)研究機(jī)構(gòu)而言,這意味著可以用標(biāo)準(zhǔn) SQL 查詢數(shù)百萬(wàn)化合物,無(wú)需借助外部工具鏈。

      RDKit cartridge 引入了兩組核心數(shù)據(jù)類型:mol(分子)和 qmol(查詢分子,即 SMARTS 模式),以及 bfp/sfp(位指紋/稀疏指紋)。操作符方面,@> 用于子結(jié)構(gòu)匹配,% 用于 Tanimoto 相似性判斷,<%> 作為距離運(yùn)算符。所有這些操作都可以通過(guò) GiST 索引加速——索引內(nèi)部基于指紋篩選進(jìn)行快速預(yù)過(guò)濾,再做精確匹配。關(guān)鍵函數(shù)包括 mol_from_smiles()morganbv_fp()(Morgan 指紋)、tanimoto_sml() 等,配合 rdkit.tanimoto_threshold 等 GUC 參數(shù)可以調(diào)節(jié)檢索靈敏度。

      以 ChEMBL 數(shù)據(jù)庫(kù)(187 萬(wàn)化合物)為例:

      SELECT * FROM rdk.mols WHERE m @> 'c1[o,s]ncn1'::qmol LIMIT 500;

      應(yīng)用場(chǎng)景集中在藥物研發(fā)的幾個(gè)關(guān)鍵環(huán)節(jié):先導(dǎo)化合物骨架搜索(在百萬(wàn)級(jí)化合物庫(kù)中做子結(jié)構(gòu)匹配)、SAR 分析(通過(guò)相似性檢索尋找活性類似物)、化合物注冊(cè)系統(tǒng)(利用結(jié)構(gòu)指紋做重復(fù)性檢查)、以及商業(yè)化合物目錄檢索(如 eMolecules 的 600 萬(wàn)+化合物數(shù)據(jù)集)。

      工程落地時(shí)需要注意:cartridge 的重點(diǎn)不在"能不能算",而在"能不能被索引、能不能被 planner 正確利用"。索引策略與查詢模板需要提前固定下來(lái),否則很容易寫(xiě)出正確但慢的結(jié)構(gòu)過(guò)濾。在 187 萬(wàn)化合物上子結(jié)構(gòu)檢索耗時(shí)在 88ms 至 1900ms 之間,經(jīng)過(guò)優(yōu)化可以處理 600 萬(wàn)+化合物規(guī)模的數(shù)據(jù)集。BSD 許可證,Docker 鏡像(如 mcs07/postgres-rdkit)和 conda 安裝均已就緒。

      2. provsql —— 半環(huán)溯源讓查詢結(jié)果"可追溯"

      ProvSQL 由巴黎高等師范學(xué)校教授 Pierre Senellart 和 INRIA Valda 團(tuán)隊(duì)開(kāi)發(fā),發(fā)表于 VLDB 2018。它為 PostgreSQL 添加 (m-)半環(huán)溯源(semiring provenance) 和不確定性管理——能自動(dòng)追蹤每個(gè)查詢結(jié)果是由哪些基礎(chǔ)元組"推導(dǎo)"出來(lái)的,并支持在不同代數(shù)結(jié)構(gòu)(布爾、安全等級(jí)、計(jì)數(shù)、概率)下對(duì)溯源信息進(jìn)行求值。

      核心機(jī)制是通過(guò) PostgreSQL hook 攔截查詢執(zhí)行,為每個(gè)表自動(dòng)添加一個(gè)隱藏的 provsql 列,存儲(chǔ)指向溯源電路(provenance circuit)的 UUID。支持的 SQL 子集相當(dāng)廣泛:SELECT-FROM-WHERE、JOIN、GROUP BY、DISTINCT、UNION/EXCEPT、聚合、HAVING,甚至在 PG 14+ 上支持 INSERT/DELETE/UPDATE 的溯源追蹤。核心函數(shù)包括 add_provenance() 啟用追蹤、provenance_evaluate() 對(duì)溯源進(jìn)行求值、formula() 輸出布爾公式、probability_evaluate() 計(jì)算概率。概率求值支持多種算法:從樸素求值到 Monte-Carlo 采樣,再到 d-DNNF 編譯(借助 d4c2d 等外部求解器)。

      SELECT city, probability_evaluate(provenance()) FROM result;

      ProvSQL 適合四類場(chǎng)景:安全分級(jí)傳播——查詢結(jié)果自動(dòng)繼承源數(shù)據(jù)中最高的安全等級(jí);概率數(shù)據(jù)庫(kù)——當(dāng)基礎(chǔ)數(shù)據(jù)帶有可信度評(píng)分時(shí),計(jì)算查詢結(jié)果的正確概率;數(shù)據(jù)血緣審計(jì)——精確追蹤每個(gè)結(jié)果行來(lái)源于哪些源元組,并支持 PROV-XML 標(biāo)準(zhǔn)導(dǎo)出;可信度評(píng)估——例如在刑事調(diào)查場(chǎng)景中,通過(guò)溯源加權(quán)評(píng)估目擊者陳述的可靠性。

      ProvSQL 的價(jià)值往往體現(xiàn)在"可組合性":溯源結(jié)果不是字符串日志,而是可以繼續(xù)被函數(shù)處理的對(duì)象。建議用于關(guān)鍵鏈路(核心報(bào)表/模型特征/合規(guī)計(jì)算),而非全庫(kù)無(wú)差別開(kāi)啟。C/C++ 實(shí)現(xiàn)(依賴 Boost 庫(kù)),溯源電路存儲(chǔ)在共享內(nèi)存中。支持 PG 10–18,MIT 許可證。

      3. onesparse —— 在 SQL 里跑十億邊級(jí)圖算法

      OneSparse 將高性能稀疏線性代數(shù)帶入 PostgreSQL,封裝了 SuiteSparse:GraphBLAS 庫(kù)。開(kāi)發(fā)者 Michel Pelletier 是 GraphBLAS C API 委員會(huì)成員,顧問(wèn)團(tuán)隊(duì)包括 SuiteSparse 作者 Timothy A. Davis 教授(SIAM/ACM/IEEE Fellow)。核心理念是將圖表示為稀疏矩陣,用矩陣乘法實(shí)現(xiàn) BFS、PageRank、三角中心性等圖算法——而這一切都在 SQL 中完成。

      擴(kuò)展引入了 matrix(稀疏矩陣)、vector(稀疏向量)、scalarsemiringmonoid 等數(shù)據(jù)類型,以及 @(矩陣乘法/plus_times 半環(huán))等操作符。圖算法方面內(nèi)置了 BFS(層級(jí)和父節(jié)點(diǎn)兩種模式)、PageRank、三角中心性、度中心性、單源最短路徑等,均來(lái)自 LAGraph 庫(kù)。技術(shù)上,它將 GraphBLAS 的不透明句柄封裝在 PostgreSQL 的 Expanded Object Header 結(jié)構(gòu)中,小圖(<1GB)使用 TOAST 存儲(chǔ),大圖支持 Large Object 或文件系統(tǒng)。內(nèi)置 JIT 編譯器支持 NVIDIA CUDA GPU 加速

      SELECT pagerank(graph) FROM karate;

      在 GAP benchmark 上,對(duì) 43 億邊的圖執(zhí)行 BFS 時(shí)達(dá)到了 每秒 70 億+邊的吞吐量(48 核 AMD EPYC 服務(wù)器)。應(yīng)用場(chǎng)景包括金融反欺詐(交易網(wǎng)絡(luò)環(huán)檢測(cè))、社交網(wǎng)絡(luò)分析、Graph RAG 等。不過(guò),這類擴(kuò)展是否"真好用",取決于數(shù)據(jù)裝載/序列化格式是否與現(xiàn)有管道匹配,以及算子能否與 SQL Planner/并行執(zhí)行相處融洽——建議先用小規(guī)模樣例把端到端鏈路跑通。

      OneSparse 要求 PG 18 Beta 或更新版本,當(dāng)前處于 Alpha 階段。Apache 2.0 許可證。

      4. pg_datasentinel —— 容器時(shí)代的 PostgreSQL 深度可觀測(cè)性

      pg_datasentinel 由 Datasentinel 公司的 Christophe Reveillère 開(kāi)發(fā),于 2026 年 4 月 10 日發(fā)布 1.0 版本。它為 PostgreSQL 添加了四大可觀測(cè)性能力,填補(bǔ)了原生監(jiān)控視圖在容器化環(huán)境和運(yùn)維預(yù)警方面的空白。

      第一,擴(kuò)展活動(dòng)監(jiān)控:在 pg_stat_activity 基礎(chǔ)上增加每個(gè)后端進(jìn)程的內(nèi)存使用量、實(shí)時(shí)臨時(shí)文件字節(jié)數(shù),以及在 PG 18+ 上顯示當(dāng)前執(zhí)行計(jì)劃 ID。第二,容器資源可見(jiàn)性:報(bào)告 CPU 配額、內(nèi)存限制、當(dāng)前內(nèi)存使用和 CPU 壓力,適用于 Docker、Kubernetes、OpenShift 或任何 cgroup 管理的環(huán)境。第三,事務(wù)回卷風(fēng)險(xiǎn)預(yù)估:追蹤 XID 和 MXID 消耗速率,提供到 aggressive-vacuum 和回卷限制的實(shí)時(shí) ETA。第四,日志捕獲視圖:將 vacuum、analyze、臨時(shí)文件、checkpoint 事件記錄到共享內(nèi)存環(huán)形緩沖區(qū),解析為結(jié)構(gòu)化計(jì)數(shù)和計(jì)時(shí)信息,支持實(shí)時(shí) SQL 查詢。

      FROM pg_datasentinel_wraparound;

      對(duì)于在 Kubernetes 上運(yùn)行 PostgreSQL 的團(tuán)隊(duì),pg_datasentinel 提供了無(wú)需外部監(jiān)控代理即可獲得的容器級(jí)資源可見(jiàn)性。XID 回卷預(yù)警功能對(duì)運(yùn)維尤為關(guān)鍵——眾所周知,XID 回卷會(huì)導(dǎo)致數(shù)據(jù)庫(kù)強(qiáng)制關(guān)閉,而 pg_datasentinel 通過(guò)追蹤消耗速率提供預(yù)測(cè)性告警,將"救火"變?yōu)?防火"。3-Clause BSD 許可證,要求 PG 15+。

      5. datasketches —— Apache 出品的億級(jí)近似分析利器

      Apache DataSketches 是 Apache 基金會(huì)項(xiàng)目(源自 Yahoo/Verizon Media),其 PostgreSQL 擴(kuò)展將多種近似分析數(shù)據(jù)結(jié)構(gòu)(Sketch)引入 SQL 世界。核心問(wèn)題很明確:在海量數(shù)據(jù)上做精確的 COUNT(DISTINCT)、分位數(shù)計(jì)算和頻繁項(xiàng)統(tǒng)計(jì)太慢或太耗內(nèi)存。

      擴(kuò)展提供七種 Sketch 類型:cpc_sketch(Compressed Probabilistic Counting)、hll_sketch(HyperLogLog)、theta_sketch(支持集合交并差運(yùn)算的去重計(jì)數(shù))、aod_sketch(Tuple sketch)、kll_float_sketch/kll_double_sketch(分位數(shù)估算)、req_float_sketch(尾部高精度分位數(shù))、frequent_strings_sketch(頻繁項(xiàng))。每種 Sketch 都提供 *_sketch_build()*_sketch_union()*_sketch_get_estimate() 等標(biāo)準(zhǔn)接口。

      關(guān)鍵點(diǎn)不是"有個(gè)函數(shù)返回估計(jì)值",而是 Sketch 作為可序列化對(duì)象可以被聚合合并,因此特別適合數(shù)據(jù)立方體式的近似指標(biāo):按維度切片預(yù)聚合 Sketch,查詢時(shí)按任意維度組合做 union 即可得到去重?cái)?shù)。Sketch 在內(nèi)存中是亞線性的,且可跨語(yǔ)言(Java、C++、Python、Rust、Go)做二進(jìn)制兼容序列化。

      ) bar GROUP BY flavor;

      典型應(yīng)用:實(shí)時(shí) UV 統(tǒng)計(jì)——不存儲(chǔ)用戶 ID 即可跨時(shí)間窗口合并去重;分布分析——在數(shù)十億事件上計(jì)算 p50/p95/p99 延遲而無(wú)需排序;受眾重疊分析——用 Theta Sketch 的交集運(yùn)算計(jì)算"看過(guò)廣告 A 且訪問(wèn)過(guò)網(wǎng)站 B"的用戶數(shù)。在 1 億行數(shù)據(jù)上,CPC Sketch 的去重計(jì)數(shù)約 20 秒完成(精確 COUNT(DISTINCT) 約 2 分鐘),相對(duì)誤差在個(gè)位數(shù)百分比范圍內(nèi)。

      6. pghydro —— 巴西國(guó)家水務(wù)局的排水網(wǎng)絡(luò)分析引擎

      PgHydro 由巴西國(guó)家水務(wù)衛(wèi)生局(ANA)的 GIS 專家 Alexandre de Amorim Teixeira 開(kāi)發(fā),構(gòu)建在 PostGIS 之上,被 ANA 作為水資源管理的官方工具在全國(guó)范圍內(nèi)使用,也在 FOSS4G 2022 上做過(guò)展示。

      核心能力圍繞水文網(wǎng)絡(luò)的完整工作流展開(kāi):從原始 GIS 數(shù)據(jù)的導(dǎo)入和一致性校驗(yàn),到流向計(jì)算、Otto Pfafstetter 流域編碼(一種國(guó)際通用的分層流域分類系統(tǒng))、上下游分析、匯水面積計(jì)算、Strahler 河流分級(jí)等。架構(gòu)上采用模塊化設(shè)計(jì),包含五個(gè)子擴(kuò)展:pghydro(核心)、pgh_raster(DEM 柵格分析)、pgh_hgm(水文地貌特征)、pgh_consistency(拓?fù)湟恢滦孕r?yàn))和 pgh_output(數(shù)據(jù)導(dǎo)出)。

      SELECT pghydro.pghfn_calculatestrahlernumber();

      適用于國(guó)家級(jí)水文數(shù)據(jù)庫(kù)管理、流域規(guī)劃與編碼、上下游污染影響分析(如確定某污染源上游的所有河段)、以及排水網(wǎng)絡(luò)拓?fù)湟恢滦则?yàn)證。它更像一套專業(yè)領(lǐng)域的數(shù)據(jù)庫(kù)內(nèi) ETL/分析流水線——數(shù)據(jù)在 PostGIS 中管理,分析過(guò)程可在 SQL 里自動(dòng)化,當(dāng)原始地形/河網(wǎng)數(shù)據(jù)更新時(shí),按函數(shù)流水線重算比手動(dòng)腳本更可靠。配合 QGIS 的 PgHydroTools 插件可實(shí)現(xiàn)可視化操作。完全用 PL/pgSQL 編寫(xiě),GPLv2 許可證。

      7. pg_stat_ch —— ClickHouse 官方出品的 PostgreSQL 查詢遙測(cè)

      pg_stat_ch 由 ClickHouse 公司開(kāi)發(fā)并開(kāi)源(2025 年 2 月,"Postgres Week at ClickHouse"活動(dòng)),作者是 Kaushik Iska。與 pg_stat_statements 在 PostgreSQL 內(nèi)部做聚合統(tǒng)計(jì)不同,pg_stat_ch 將每條查詢的原始執(zhí)行事件(包含 45 個(gè)字段、固定 4.6KB)實(shí)時(shí)流式導(dǎo)出到 ClickHouse,讓所有聚合分析(p50/p95/p99、Top 查詢、錯(cuò)誤分析)在 ClickHouse 的分析引擎中完成。

      數(shù)據(jù)管道架構(gòu)為:PostgreSQL Hooks(前臺(tái))→ 共享內(nèi)存環(huán)形緩沖區(qū) → 后臺(tái) Worker → ClickHouse。45 個(gè)遙測(cè)字段覆蓋查詢計(jì)時(shí)、行數(shù)、緩沖區(qū)使用、WAL 使用、CPU 時(shí)間、JIT 指標(biāo)(PG15+)、并行 Worker 統(tǒng)計(jì)(PG18+)、客戶端上下文(應(yīng)用名、IP)、錯(cuò)誤捕獲(SQLSTATE 碼)等。擴(kuò)展使用 ClickHouse 原生二進(jìn)制協(xié)議加 LZ4 壓縮,靜態(tài)鏈接 clickhouse-cpp 庫(kù)。為避免對(duì) PostgreSQL 造成背壓,隊(duì)列溢出時(shí)丟棄事件(計(jì)數(shù)器記錄丟棄數(shù))而非減慢數(shù)據(jù)庫(kù)——與 StatsD 的設(shè)計(jì)哲學(xué)一致。

      GROUP BY query_id ORDER BY p99_ms DESC LIMIT 10;

      ClickHouse 側(cè)預(yù)置了四個(gè)物化視圖:events_recent_1h(滾動(dòng) 1 小時(shí)副本)、query_stats_5m(5 分鐘桶 + TDigest 分位數(shù))、db_app_user_1m(按數(shù)據(jù)庫(kù)/應(yīng)用/用戶的負(fù)載歸因)、errors_recent(7 天滾動(dòng)錯(cuò)誤窗口)。

      性能令人印象深刻:p99 開(kāi)銷約 5μs/條,在 pgbench 32 客戶端 36.6K TPS 下,30 秒內(nèi)捕獲 770 萬(wàn)事件且零丟棄,對(duì) TPS 影響 <1%(36,658 vs 36,913 基線)。三層鎖爭(zhēng)用最小化策略:原子溢出檢查 → 非阻塞 LWLock 嘗試 → 每后端本地緩沖區(qū)(每事務(wù)刷新,減少約 5 倍鎖獲取次數(shù))。把 PostgreSQL 做成"事務(wù)系統(tǒng)",ClickHouse 做成"遙測(cè)倉(cāng)庫(kù)",職責(zé)分離,比從日志文件逆向解析穩(wěn)定得多。支持 PG 16–18,Apache 2.0 許可證。

      8. pg_rrf —— 一個(gè)函數(shù)搞定混合檢索的排序融合

      pg_rrf 由日本開(kāi)發(fā)者 yuiseki 開(kāi)發(fā)(2026 年 1 月發(fā)布),用 Rust(pgrx)實(shí)現(xiàn)。它將 Reciprocal Rank Fusion(RRF) 封裝為原生 PostgreSQL 函數(shù),解決混合檢索場(chǎng)景中"分?jǐn)?shù)不可比"的工程痛點(diǎn):不同檢索器輸出尺度不同,直接加權(quán)不好調(diào),而 RRF 只依賴 rank。公式為 score(d) = Σ 1/(k + rank_i(d)),k 默認(rèn) 60(Cormack et al., SIGIR 2009)。

      擴(kuò)展提供四個(gè)函數(shù):rrf(rank_a, rank_b, k) 計(jì)算兩路融合分?jǐn)?shù)、rrf3() 三路融合、rrfn(ranks[], k) N 路融合、以及最實(shí)用的 rrf_fuse(ids_a bigint[], ids_b bigint[], k)——接收兩個(gè)排序后的 ID 數(shù)組,返回融合后的 (id, score) 表。NULL 安全:只在一路出現(xiàn)的 ID 僅使用該路的排名計(jì)算得分。

      ORDER BY fused.score DESC LIMIT 20;

      這將原本需要 FULL OUTER JOIN + COALESCE 鏈 + 手動(dòng)評(píng)分公式的 20+ 行 CTE 壓縮為一個(gè)函數(shù)調(diào)用。應(yīng)用場(chǎng)景覆蓋 RAG 混合檢索(語(yǔ)義搜索 + 全文搜索融合)、電商產(chǎn)品搜索、多信號(hào)文檔排序等。把融合邏輯移到數(shù)據(jù)庫(kù)側(cè),尤其當(dāng)結(jié)果要繼續(xù) JOIN 業(yè)務(wù)表時(shí),減少了應(yīng)用層拼接與排序的開(kāi)銷。當(dāng)前 v0.0.3,MIT 許可證。

      9. pg_kazsearch —— 哈薩克語(yǔ)全文檢索的"從無(wú)到有"

      pg_kazsearch 是首個(gè) PostgreSQL 哈薩克語(yǔ)全文檢索擴(kuò)展。哈薩克語(yǔ)是高度黏著語(yǔ)(agglutinative),一個(gè)詞如 мектептер?м?зде 承載了復(fù)數(shù)、領(lǐng)屬、位格等多層后綴,必須全部剝離才能到達(dá)詞根 мектеп。現(xiàn)有的 PostgreSQL 或 Elasticsearch 分析器都無(wú)法處理這一點(diǎn)。

      擴(kuò)展用 Rust(pgrx)實(shí)現(xiàn),提供 kazakh_cfg 文本搜索配置和 pg_kazsearch_dict 詞典。詞干提取算法采用 BFS 后綴剝離,配合元音和諧驗(yàn)證和基于 Apertium-kaz 的 21,863 個(gè)詞性標(biāo)注詞根詞典防止過(guò)度詞干化。運(yùn)行時(shí)可通過(guò) ALTER TEXT SEARCH DICTIONARY 調(diào)整權(quán)重參數(shù)。

      LIMIT 10;

      在 2,999 篇文章上的基準(zhǔn)測(cè)試顯示:查詢延遲 0.5ms(比 pg_trgm 快 2.8 倍),nDCG@10 提升 25%,Recall@10 提升 23%。適用于哈薩克語(yǔ)新聞/政府文檔檢索、電商搜索等場(chǎng)景——在多語(yǔ)種系統(tǒng)里把"低資源語(yǔ)言"檢索能力補(bǔ)齊,避免回退到粗糙的 trigram 模糊匹配。

      10. pg_liquid —— Datalog 風(fēng)格的圖查詢

      pg_liquid 由 Michael Golfi(西雅圖)開(kāi)發(fā),把 Liquid/Datalog 風(fēng)格的聲明式圖查詢帶進(jìn) PostgreSQL。你可以用 liquid.query(...) 在一次調(diào)用里聲明事實(shí)、定義規(guī)則并執(zhí)行終止查詢,不必單獨(dú)搭圖數(shù)據(jù)庫(kù)。規(guī)則是 query-local(只在一次 liquid.query 中有效),支持事實(shí)斷言、遞歸傳遞閉包、復(fù)合查詢(compounds)和行規(guī)范化器。

      ORDER BY 1;

      它還支持把本體謂詞定義(如 DefPred)與 compound(如 OntologyClaim@(...))結(jié)合,用 compound 攜帶溯源/置信信息,靠規(guī)則做 subclass closure 等推理。適合知識(shí)圖譜查詢、層級(jí)數(shù)據(jù)遍歷(組織架構(gòu)、分類樹(shù))、基于規(guī)則的業(yè)務(wù)邏輯系統(tǒng)等場(chǎng)景——當(dāng)你不想引入獨(dú)立圖引擎時(shí),用擴(kuò)展把最關(guān)鍵的遞歸查詢補(bǔ)上。完全用 PL/pgSQL 實(shí)現(xiàn),無(wú)外部依賴,項(xiàng)目處于早期階段。

      11. logical_ddl —— 讓邏輯復(fù)制也能同步 DDL

      PostgreSQL 的邏輯復(fù)制只處理 DML(INSERT/UPDATE/DELETE),不處理 DDL(ALTER TABLE 等),這是運(yùn)維中的一大痛點(diǎn)——表結(jié)構(gòu)不同步會(huì)直接中斷復(fù)制。logical_ddl 由 Samed Yildirim 開(kāi)發(fā),通過(guò)事件觸發(fā)器攔截 DDL 命令,將其反解析并保存到可被邏輯復(fù)制傳播的表中,訂閱端接收后生成等效 SQL 并執(zhí)行。

      支持的 DDL 操作包括:ALTER TABLE RENAME TO/RENAME COLUMN/ADD COLUMN/ALTER COLUMN TYPE/DROP COLUMN。數(shù)據(jù)類型兼容性方面:內(nèi)建類型、數(shù)組、復(fù)合/域/枚舉類型可用,但這些類型的"定義復(fù)制"(如 CREATE TYPE)不在覆蓋范圍內(nèi)。可通過(guò) logical_ddl.publish_tablelist 按表和命令類型精細(xì)控制捕獲范圍。

      VALUES ('my_table'::regclass, ARRAY['ADD COLUMN', 'DROP COLUMN']);

      適用于邏輯復(fù)制環(huán)境的自動(dòng)化 DDL 同步、零停機(jī)遷移、多數(shù)據(jù)中心 PostgreSQL 架構(gòu)等。把"DDL 同步"從流程管理變成可審計(jì)的數(shù)據(jù)流,降低復(fù)制事故概率。MIT 許可證,PGXN 可用。約束、索引、默認(rèn)值等尚未實(shí)現(xiàn)。

      12. rdf_fdw —— 用 SQL 查詢語(yǔ)義網(wǎng)

      rdf_fdw 由 Jim Jones 開(kāi)發(fā),是一個(gè)通過(guò) SPARQL 端點(diǎn)訪問(wèn) RDF 三元組存儲(chǔ)的 Foreign Data Wrapper,架起關(guān)系型 SQL 世界與語(yǔ)義網(wǎng)/關(guān)聯(lián)數(shù)據(jù)世界之間的橋梁。它引入 rdfnode 數(shù)據(jù)類型處理 RDF 術(shù)語(yǔ)(IRI、語(yǔ)言標(biāo)簽、數(shù)據(jù)類型),支持 WHERE/LIMIT/ORDER BY/DISTINCT 等條件的 SQL-to-SPARQL 下推,以及通過(guò) SPARQL UPDATE 端點(diǎn)執(zhí)行 INSERT/UPDATE/DELETE。

      SELECT * FROM dbpedia_query WHERE o = 'some_value' LIMIT 10;

      rdf_fdw_clone_table() 存儲(chǔ)過(guò)程支持將外部表數(shù)據(jù)分批克隆到本地表。需要注意的是,實(shí)現(xiàn)層面會(huì)把拉取到的數(shù)據(jù)加載到內(nèi)存再轉(zhuǎn)換,面對(duì)大體量數(shù)據(jù)要謹(jǐn)慎評(píng)估內(nèi)存與下推效果。適合關(guān)聯(lián)數(shù)據(jù)集成(DBpedia、Wikidata)、用 SQL/BI 工具鏈直接消費(fèi) SPARQL 端點(diǎn)等場(chǎng)景。MIT 許可證,支持 PG 9.5–18。

      13. pgbson —— 比 JSONB 更精確的二進(jìn)制文檔類型

      pgbson(postgresbson)由 buzzm 開(kāi)發(fā),為 PostgreSQL 引入原生 BSON(Binary JSON)數(shù)據(jù)類型。BSON 相比 JSON 提供了一等公民的 datetime、decimal128、int32/int64、binary 等類型,解決了 JSON 在分布式系統(tǒng)數(shù)據(jù)交換中的精度丟失和類型模糊問(wèn)題,保證二進(jìn)制完美往返(BSON in = BSON out)。

      核心 API 是兩類訪問(wèn)方式:一類是高性能的 dotpath 函數(shù)——bson_get_string(bson, 'd.recordId')bson_get_datetime()bson_get_decimal128() 等,直接在底層結(jié)構(gòu)上行走,只在終點(diǎn)分配內(nèi)存;另一類是類似 JSON 的 -> / ->> 鏈?zhǔn)讲僮鞣恳徊蕉家獦?gòu)造中間子結(jié)構(gòu),深層路徑會(huì)放大成本。兩者配合 B-Tree 和 HASH 索引,函數(shù)索引可實(shí)現(xiàn) 10,000 倍的查詢加速(相對(duì)于順序掃描)。輸入端支持 EJSON 格式。

      SELECT (data->'d'->'amt'->>'$numberDecimal')::numeric FROM data_collection;

      典型場(chǎng)景包括跨語(yǔ)言事件/文檔管道(Java → Kafka → Python → PostgreSQL)的精確類型保持、金融數(shù)據(jù)(decimal128 精確到分)、數(shù)字簽名(BSON 的確定性二進(jìn)制格式支持可靠哈希)等。MIT 許可證,支持 PG 14–18。

      14. pg_when —— 用自然語(yǔ)言描述時(shí)間

      pg_when 由 frectonz 開(kāi)發(fā),把自然語(yǔ)言時(shí)間表達(dá)解析成 PostgreSQL 的 timestamptz 或 epoch。核心函數(shù) when_is(text) 返回標(biāo)準(zhǔn) timestamp,語(yǔ)法由三部分組成:日期 + at + 時(shí)間 + in + 時(shí)區(qū)。未指定時(shí)區(qū)時(shí)默認(rèn) UTC。

      SELECT when_is('December 31, 2026 at evening');

      另有 seconds_at()millis_at()micros_at()nanos_at() 返回 UNIX 時(shí)間戳的不同精度。這不是調(diào)度器,而是解析器。適用于面向運(yùn)營(yíng)/客服的"人類時(shí)間輸入"落庫(kù)、數(shù)據(jù)修復(fù)/回填腳本中用自然語(yǔ)言代替拼日期函數(shù)、以及統(tǒng)一時(shí)區(qū)處理等場(chǎng)景。MIT 許可證。

      15. pgmqtt —— 數(shù)據(jù)庫(kù)變更直推 MQTT

      pgmqtt 由 RayElg 開(kāi)發(fā)(Rust 實(shí)現(xiàn)),把 PostgreSQL 的變更(INSERT/UPDATE/DELETE)通過(guò) CDC 直接變成 MQTT 消息推給訂閱者,同時(shí)也支持 MQTT 入站消息按映射寫(xiě)回表。它不是通用 MQTT 客戶端,而是把"變更流"與"消息 broker"嵌到數(shù)據(jù)庫(kù)側(cè),用 SQL 配置 topic 映射與 payload 模板。

      );

      IoT 場(chǎng)景尤其合適——無(wú)需外部中間件即可將數(shù)據(jù)庫(kù)狀態(tài)變化推送到邊緣設(shè)備,或?qū)鞲衅鲾?shù)據(jù)通過(guò) MQTT 協(xié)議直接寫(xiě)入表。也適用于事件驅(qū)動(dòng)架構(gòu)中的輕量消息分發(fā),減少應(yīng)用層的 glue code。Elastic License 2.0。

      16. pg_query_rewrite —— 透明地偷梁換柱

      pg_query_rewrite 由 Pierre Forstmann 開(kāi)發(fā),利用 ProcessUtility hook 實(shí)現(xiàn) SQL 語(yǔ)句的運(yùn)行時(shí)透明替換。規(guī)則基于精確字符串匹配(大小寫(xiě)和空格敏感)存儲(chǔ)在共享內(nèi)存中。

      SELECT pgqr_rules();

      這是一個(gè)"很鋒利"的工具:不支持帶參數(shù)的語(yǔ)句、最大長(zhǎng)度約 32KB、匹配對(duì)大小寫(xiě)/空格/分號(hào)敏感、規(guī)則不持久化(重啟丟失,需借助啟動(dòng) SQL 機(jī)制恢復(fù))。適用于數(shù)據(jù)庫(kù)遷移期間對(duì)歷史系統(tǒng)發(fā)出的固定 SQL 做透明重定向、危險(xiǎn)查詢臨時(shí)攔截、查詢 A/B 測(cè)試等。默認(rèn)最多 10 條規(guī)則,支持 PG 9.5–18。

      17. pgclone —— 一鍵克隆數(shù)據(jù)庫(kù)對(duì)象

      pgclone 由 valehdba 開(kāi)發(fā)(PGXN 上發(fā)布 2.0.0 版),定位非常直給:不用 pg_dump/pg_restore、不用 shell 腳本,直接從 SQL 調(diào)用函數(shù)把表、schema、數(shù)據(jù)庫(kù)、函數(shù)(甚至角色與權(quán)限)從源實(shí)例克隆到目標(biāo)環(huán)境。

      它使用 COPY 協(xié)議進(jìn)行快速數(shù)據(jù)傳輸,支持異步操作與進(jìn)度跟蹤,支持選擇性克隆(列/行過(guò)濾),DDL 也在覆蓋范圍內(nèi)(索引、約束、觸發(fā)器、視圖、物化視圖、序列等),還提供數(shù)據(jù)脫敏與敏感列自動(dòng)發(fā)現(xiàn)能力。

      );

      適用于開(kāi)發(fā)/測(cè)試環(huán)境快速搭建(含 DDL、索引)、生產(chǎn)到預(yù)發(fā)的"帶脫敏克隆"、多庫(kù)遷移與驗(yàn)證等。相比 pg_dump/pg_restore,它完全在數(shù)據(jù)庫(kù)內(nèi)部完成,簡(jiǎn)化了 DevOps 流程。

      18. pgproto —— 原生 Protobuf 支持

      pgproto 由 Apaezmx 開(kāi)發(fā),為 PostgreSQL 提供原生 Protocol Buffers(proto3)存儲(chǔ)、查詢、修改和索引支持。核心機(jī)制是"運(yùn)行時(shí) Schema 注冊(cè) + 二進(jìn)制遍歷":把 FileDescriptorSet 注冊(cè)到 pb_schemas 后,protobuf 類型的列就能通過(guò)路徑數(shù)組提取嵌套字段。引入 -> 字段導(dǎo)航、#> 嵌套路徑訪問(wèn)、|| 消息合并等操作符,以及 pb_set()/pb_insert()/pb_delete()/pb_to_json() 等函數(shù)。

      CREATE INDEX idx_pb ON items ((data #> '{Outer, inner, id}'::text[]));

      在 10 萬(wàn)行基準(zhǔn)測(cè)試中,pgproto 存儲(chǔ)僅 16 MB(JSONB 46 MB,原生關(guān)系 25 MB),全文檔檢索 5.9ms(關(guān)系模型 33.1ms 需多表 JOIN)。想保留 Protobuf 生態(tài)(RPC/消息)又希望數(shù)據(jù)庫(kù)側(cè)可索引可過(guò)濾時(shí),這是一個(gè)有吸引力的選擇。適合 IoT 數(shù)據(jù)存儲(chǔ)、微服務(wù)事件倉(cāng)庫(kù)、gRPC 數(shù)據(jù)層等。PostgreSQL License。

      19. pg_fsql —— JSONB 驅(qū)動(dòng)的遞歸 SQL 模板引擎

      pg_fsql 由 yurc 開(kāi)發(fā),把"SQL 模板渲染 + 安全參數(shù)化執(zhí)行 + 模板樹(shù)遞歸組合"做成擴(kuò)展。模板按 dot-path 組成樹(shù),子模板產(chǎn)出片段或 JSON,再注入父模板。支持占位符語(yǔ)法({d[key]} 及不同轉(zhuǎn)義 !r/!j/!i)、SPI plan cache(按模板可選緩存)、多種命令類型(exec/ref/if/exec_tpl/map/NULL),以及 fsql.run 執(zhí)行、fsql.render dry-run、fsql.treefsql.explain 等公共 API。不需要 superuser。

      SELECT fsql.render('user_count', '{"status":"active"}');

      這不是函數(shù)式 SQL,而是層次化模板引擎:目標(biāo)是讓你用 JSON 請(qǐng)求體驅(qū)動(dòng) SQL 生成,減少應(yīng)用層代碼分支。適用于動(dòng)態(tài)報(bào)表生成、ETL 管道編排、多租戶查詢生成、以及把差異化 SQL 固化在模板表中配合權(quán)限管理等場(chǎng)景。

      20. pg_dispatch —— 基于 pg_cron 的異步 SQL 分發(fā)

      pg_dispatch 由 Snehil Shah 開(kāi)發(fā),是一個(gè)異步任務(wù)分發(fā)器,定位為 TLE 兼容的 pg_later 替代品,底層依賴 pg_cron。核心函數(shù) pgdispatch.fire(command) 立即異步執(zhí)行 SQL,pgdispatch.snooze(command, delay) 延遲執(zhí)行。設(shè)計(jì)目標(biāo)是解鎖主事務(wù)——當(dāng) AFTER INSERT 觸發(fā)器需要執(zhí)行重操作時(shí),將其卸載為后臺(tái)任務(wù)。

      SELECT pgdispatch.snooze('SELECT pg_sleep(20);', '20 seconds');

      TLE 兼容(純 PL/pgSQL),可在 Supabase 和 AWS RDS 等沙盒環(huán)境使用。依賴 pg_cron >= 1.5。適合觸發(fā)器/函數(shù)內(nèi)的異步副作用(通知、異步匯總、寫(xiě)審計(jì)表等),避免長(zhǎng)事務(wù)占用連接。

      21. block_copy_command —— 安全加固:阻止 COPY 命令

      block_copy_command 由 rustwizard 開(kāi)發(fā)(Rust/pgrx),通過(guò) ProcessUtility hook 集群范圍內(nèi)攔截 COPY 命令。在安全敏感環(huán)境(PCI-DSS、HIPAA 合規(guī))中防止通過(guò) COPY TO 進(jìn)行數(shù)據(jù)外泄或通過(guò) COPY FROM 進(jìn)行未授權(quán)數(shù)據(jù)導(dǎo)入。

      它提供基于角色的 blocklist、方向控制(block_to/block_from),以及對(duì) COPY ... TO PROGRAM 的強(qiáng)制阻斷(默認(rèn)對(duì)所有用戶攔截)。blocked_roles 甚至能阻止 superuser。支持審計(jì)日志記錄。

      ORDER BY ts DESC;

      適用于托管/共享環(huán)境(防止租戶用 COPY 導(dǎo)數(shù)據(jù))、企業(yè)合規(guī)(統(tǒng)一攔截與審計(jì))、ETL 權(quán)限收斂(通過(guò) GUC/角色配置精確允許導(dǎo)入、阻斷導(dǎo)出)。作者還維護(hù)了更全面的命令防火墻擴(kuò)展 pg_command_fw

      22. pg_isok —— 數(shù)據(jù)質(zhì)量的"軟告警"系統(tǒng)

      pg_isok(Isok)由 Karl O. Pinc 開(kāi)發(fā),已在生產(chǎn)環(huán)境使用超過(guò)十年。它不是傳統(tǒng)約束/觸發(fā)器,而是"軟觸發(fā)器"式的數(shù)據(jù)完整性管理:你寫(xiě)一條能找出可疑數(shù)據(jù)模式的 SQL,Isok 負(fù)責(zé)記錄/分類/延后這些發(fā)現(xiàn),并報(bào)告"新增問(wèn)題或已接受數(shù)據(jù)的變化",避免你反復(fù)審閱同一批歷史問(wèn)題。

      );

      與硬約束(拒絕數(shù)據(jù))不同,它允許存在可疑數(shù)據(jù)但持續(xù)追蹤和管理——通過(guò) isok_queriesisok_results 等表組織工作流,run_isok_queries 函數(shù)執(zhí)行檢查,逐行接受或延遲告警。適合"臟數(shù)據(jù)導(dǎo)入后逐步清理""業(yè)務(wù)規(guī)則模糊、需要人工裁決"的場(chǎng)景。能寫(xiě) SQL 就能上線一套"告警 + 去重 + 延期"機(jī)制。

      23. external_file —— PostgreSQL 版的 Oracle BFILE

      external_file 由 Gilles Darold(HexaCluster Corp)維護(hù),提供與 Oracle BFILE 等效的功能:通過(guò)目錄別名 + 文件名的 EFILE 類型引用服務(wù)器端外部文件,支持讀取(readEfile())、寫(xiě)入(writeEfile())和復(fù)制(copyEfile())。通過(guò) lo_* 相關(guān)機(jī)制執(zhí)行讀寫(xiě),并用目錄別名表與權(quán)限表控制可訪問(wèn)范圍。

      SELECT writeEfile(my_bytea_column, efilename('MY_DIR', 'output.bin')) FROM my_table;

      為 Ora2Pg 遷移場(chǎng)景量身定制,也適合"文件在庫(kù)外、元數(shù)據(jù)在庫(kù)內(nèi)"的遺留系統(tǒng),以及數(shù)據(jù)庫(kù)側(cè)管理外部大對(duì)象的批處理導(dǎo)入導(dǎo)出。

      24. byteamagic —— 檢測(cè) bytea 的文件類型

      byteamagic 由 Nico Mandery 開(kāi)發(fā),封裝 libmagic(Unix file 命令背后的庫(kù)),提供兩個(gè)函數(shù):byteamagic_mime(bytea) 返回 MIME 類型,byteamagic_text(bytea) 返回人類可讀的文件描述。

      FROM uploads GROUP BY 1 ORDER BY 2 DESC;

      當(dāng)你不得不在表里存 bytea/BLOB 時(shí),可以在 SQL 里識(shí)別這段二進(jìn)制到底是 PDF、PNG 還是其它格式。適合附件/上傳內(nèi)容治理(識(shí)別真實(shí)類型、防止偽裝)、Content-Type 自動(dòng)識(shí)別、歷史 BLOB 數(shù)據(jù)清理等。

      25. pg_text_semver —— 語(yǔ)義版本號(hào)的原生支持

      pg_text_semver 由 Rowan Rodrik van der Molen 開(kāi)發(fā),基于 text DOMAIN 實(shí)現(xiàn)完全符合 Semantic Versioning 2.0.0 規(guī)范的版本類型。與 C 實(shí)現(xiàn)的 semver 擴(kuò)展不同,它對(duì)版本號(hào)各部分沒(méi)有 32 位整數(shù)的大小限制

      -- (1, 0, 0, 'a.1', 'commit-y')

      純 SQL 實(shí)現(xiàn),支持 min/max 聚合和 PGXN Version Range 檢查。適用于擴(kuò)展/包版本管理、依賴約束校驗(yàn)、版本分布統(tǒng)計(jì)等。

      26. parray_gin —— text[] 的子串匹配索引

      parray_gin 由 Eugene Seliverstov 開(kāi)發(fā),為 text[] 數(shù)組列提供基于 GIN 索引的部分匹配操作符。標(biāo)準(zhǔn) PostgreSQL 的 GIN 數(shù)組操作符只支持精確元素匹配,parray_gin 新增的 @@> 操作符支持子串包含判斷,底層基于 trigram 分解(復(fù)用 pg_trgm 的實(shí)現(xiàn)),并通過(guò) recheck 處理 false positive。

      SELECT * FROM test_table WHERE val @@> array['%ar%'];

      適合標(biāo)簽系統(tǒng)自動(dòng)補(bǔ)全、模糊標(biāo)簽搜索等場(chǎng)景——讓數(shù)組模糊匹配進(jìn)入索引路徑,替代應(yīng)用層掃描。支持 PG 9.1–18。

      27. pg_slug_gen —— 加密安全的時(shí)間戳短標(biāo)識(shí)

      pg_slug_gen 由 Fernando Olle 開(kāi)發(fā),生成基于時(shí)間戳的加密安全唯一短標(biāo)識(shí)。使用 pg_strong_random() 選擇字符,slug 長(zhǎng)度決定時(shí)間戳精度:10 字符(秒)、13(毫秒)、16(微秒,默認(rèn))、19(納秒)。

      SELECT gen_random_slug(19);    -- 納秒精度

      注意這不是 URL slug 生成器(從標(biāo)題轉(zhuǎn)寫(xiě)),而是面向"安全短 ID"的方案。適合邀請(qǐng)碼/短鏈接/公開(kāi)資源 ID(避免自增 ID 暴露業(yè)務(wù)規(guī)模)、分布式寫(xiě)入(用時(shí)間戳維度做可控的無(wú)碰撞窗口)等。比 base62(序列) 更難預(yù)測(cè)。

      28. pglock —— PostgreSQL 內(nèi)的輕量級(jí)分布式鎖

      pglock 由 fraruiz 開(kāi)發(fā),在 PostgreSQL 內(nèi)部實(shí)現(xiàn)輕量級(jí)分布式鎖服務(wù)。它基于一張鎖表和一組函數(shù)(pglock.lock/pglock.unlock/pglock.ttl/pglock.set_serializable)實(shí)現(xiàn),支持 TTL 過(guò)期機(jī)制(默認(rèn) 5 分鐘),可選配合 pg_cron 定時(shí)執(zhí)行 pglock.ttl() 清理過(guò)期鎖。建議使用 SERIALIZABLE 隔離級(jí)別以保證并發(fā)語(yǔ)義正確。

      SELECT pglock.ttl();

      無(wú)需外部依賴(Redis、ZooKeeper 等),適用于多實(shí)例應(yīng)用搶占任務(wù)/資源(定時(shí)任務(wù)、冪等消費(fèi)者)、Leader 選舉、防止重復(fù)任務(wù)執(zhí)行等場(chǎng)景。鎖行為與業(yè)務(wù)寫(xiě)入可在同一數(shù)據(jù)庫(kù)生態(tài)里治理。純 SQL 實(shí)現(xiàn)。

      29. regresql —— 與語(yǔ)言無(wú)關(guān)的 SQL 回歸測(cè)試工具

      regresql 由 boringSQL(Radim Marek)開(kāi)發(fā),是一個(gè)獨(dú)立的 CLI 工具(Go 編寫(xiě)),不是 PostgreSQL 擴(kuò)展。它掃描項(xiàng)目中的 *.sql 文件,運(yùn)行它們并保存輸出快照與 EXPLAIN 計(jì)劃基線,后續(xù)運(yùn)行時(shí)對(duì)比差異,在 CI 中捕獲查詢結(jié)果變化與性能回退。支持 JUnit/GitHub Actions/pgTAP 輸出格式。

      SELECT * FROM users WHERE active = true;

      工作流圍繞 discover/add/update/test/baseline/snapshot 等命令組織。適合圍繞 SQL 的快照測(cè)試(遷移/重構(gòu)后快速發(fā)現(xiàn)結(jié)果差異)、EXPLAIN 基線(在 CI 里抓 plan flip 或 seq scan 退化)、把"SQL 真正確認(rèn)過(guò)的輸出"版本化。

      30. pgcalendar —— 循環(huán)日程的無(wú)限投影

      pgcalendar 由 h4kbas 開(kāi)發(fā),提供完整的循環(huán)事件日歷系統(tǒng):事件(events)是邏輯實(shí)體,日程(schedules)定義循環(huán)模式(每日/每周/每月/每年),投影(projections)生成實(shí)際發(fā)生時(shí)間,例外(exceptions)修改單個(gè)實(shí)例(取消、改期)。

      );

      "無(wú)限投影""多段 schedule 配置切換""例外處理"這類能力在排班、會(huì)議、計(jì)費(fèi)周期等場(chǎng)景很常見(jiàn),但靠應(yīng)用層自己拼往往細(xì)節(jié)爆炸。把日程邏輯放數(shù)據(jù)庫(kù)后,權(quán)限、審計(jì)與一致性約束更容易統(tǒng)一。

      31. pg_variables —— 比臨時(shí)表更快的會(huì)話變量

      pg_variables 由 Postgres Professional 開(kāi)發(fā),提供會(huì)話級(jí)變量支持,涵蓋標(biāo)量、數(shù)組和記錄(集合)類型。變量按命名包(package)組織,"是否事務(wù)性"可配置:默認(rèn)變量不隨 BEGIN/ROLLBACK 回滾,但 is_transactional = true 時(shí)遵守 ROLLBACK/SAVEPOINT。

      SELECT * FROM pgv_select('pack', 'employees');

      作為臨時(shí)表的高性能替代,避免了目錄膨脹(catalog bloat)。適合復(fù)雜存儲(chǔ)過(guò)程/批處理中保存中間狀態(tài)、連接級(jí)信息緩存,也作為其它擴(kuò)展的基礎(chǔ)設(shè)施(如 pgelog 用它緩存 dblink 連接)。

      32. pgelog —— 回滾也丟不掉的日志

      pgelog 由 anfiau 開(kāi)發(fā),通過(guò) dblink 實(shí)現(xiàn)偽自治事務(wù),使日志記錄在調(diào)用事務(wù)回滾時(shí)依然存活。這解決了 PL/pgSQL EXCEPTION 塊中的日志在 ROLLBACK 后丟失的經(jīng)典問(wèn)題。dblink 連接通過(guò) pg_variables 做會(huì)話級(jí)緩存優(yōu)化。

      SELECT pgelog_set_param('pgelog_ttl_minutes', '2880');

      關(guān)鍵流程審計(jì)時(shí),你不想因?yàn)闃I(yè)務(wù)事務(wù)回滾就丟失診斷線索。批處理/遷移腳本中,階段性日志比單純 RAISE NOTICE 更可查詢。依賴 dblink 和 pg_variables 擴(kuò)展,每個(gè)會(huì)話可能額外打開(kāi)一個(gè)連接,需評(píng)估 max_connections

      總結(jié)

      這 33 個(gè)擴(kuò)展背后有幾條清晰的趨勢(shì)線。

      第一,PostgreSQL 正在通過(guò)擴(kuò)展把"專業(yè)對(duì)象"內(nèi)建化。 BSON、Protobuf、RDF、循環(huán)日程、化學(xué)分子、圖/本體關(guān)系——這些擴(kuò)展把數(shù)據(jù)庫(kù)從"結(jié)構(gòu)化表"推向"可查詢的復(fù)雜對(duì)象存儲(chǔ)"。權(quán)限、審計(jì)、備份、事務(wù)語(yǔ)義都沿用數(shù)據(jù)庫(kù)基礎(chǔ)設(shè)施,減少了數(shù)據(jù)搬運(yùn)和外部服務(wù)依賴。

      第二,查詢能力在向"組合式 API"演化。 RRF 融合、SQL 模板樹(shù)、查詢重寫(xiě)、稀疏計(jì)算、近似摘要結(jié)構(gòu)——這些擴(kuò)展的共同目標(biāo)是讓復(fù)雜邏輯以更少、更穩(wěn)定的 SQL 片段表達(dá),同時(shí)保持可審計(jì)、可復(fù)跑和可優(yōu)化。

      第三,生產(chǎn)工程與平臺(tái)化在加速。 從 pg_stat_ch 的實(shí)時(shí)遙測(cè)外送、pg_datasentinel 的容器資源可見(jiàn)性,到 block_copy_command 的安全鉤子、pg_isok 的軟告警治理——擴(kuò)展層正在承接越來(lái)越多"原本要靠外部系統(tǒng)"的能力。

      第四,垂直領(lǐng)域滲透持續(xù)加深。 從化學(xué)信息學(xué)(rdkit)、水文分析(pghydro)到哈薩克語(yǔ) NLP(pg_kazsearch),PostgreSQL 正在成為越來(lái)越多專業(yè)領(lǐng)域的計(jì)算底座。

      第五,新語(yǔ)言運(yùn)行時(shí)的探索值得關(guān)注。 pg_typescript 將 Deno/V8 嵌入 PostgreSQL 的實(shí)驗(yàn),可能預(yù)示著存儲(chǔ)過(guò)程開(kāi)發(fā)體驗(yàn)的下一次變革——數(shù)據(jù)庫(kù)函數(shù)第一次可以用與應(yīng)用層完全相同的語(yǔ)言和工具鏈來(lái)編寫(xiě)。

      PostgreSQL 的擴(kuò)展生態(tài)就是這樣:既有大教堂(Apache 基金會(huì)項(xiàng)目),也有集市(個(gè)人開(kāi)發(fā)者的周末項(xiàng)目),共同構(gòu)建著世界上最先進(jìn)的開(kāi)源數(shù)據(jù)庫(kù)。

      數(shù)據(jù)庫(kù)老司機(jī)

      點(diǎn)一個(gè)關(guān)注 ??,精彩不迷路

      對(duì) PostgreSQL, Pigsty,下云 感興趣的朋友

      歡迎加入 PGSQL x Pigsty 交流群(搜pigsty-cc)

      特別聲明:以上內(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.

      相關(guān)推薦
      熱點(diǎn)推薦
      官方通報(bào)“離奇消失”?南通住建局這波操作引發(fā)質(zhì)疑

      官方通報(bào)“離奇消失”?南通住建局這波操作引發(fā)質(zhì)疑

      好通網(wǎng)
      2026-05-15 10:15:10
      中美會(huì)晤結(jié)束,中方一錘定音,特朗普通告全世界,美媒:美國(guó)變了

      中美會(huì)晤結(jié)束,中方一錘定音,特朗普通告全世界,美媒:美國(guó)變了

      星夜?jié)i漪
      2026-05-15 03:29:27
      AI預(yù)測(cè)世界杯小組賽結(jié)果:英阿法德西葡荷均晉級(jí),巴西、摩洛哥同分

      AI預(yù)測(cè)世界杯小組賽結(jié)果:英阿法德西葡荷均晉級(jí),巴西、摩洛哥同分

      懂球帝
      2026-05-14 19:00:47
      美伊戰(zhàn)爭(zhēng)打醒了所有人,原來(lái)中國(guó)真正的“護(hù)城河”,竟然是山西?

      美伊戰(zhàn)爭(zhēng)打醒了所有人,原來(lái)中國(guó)真正的“護(hù)城河”,竟然是山西?

      蜉蝣說(shuō)
      2026-05-14 18:32:25
      拉亞已完成18場(chǎng)零封,英超史上有6位門(mén)將曾解鎖單賽季20+零封

      拉亞已完成18場(chǎng)零封,英超史上有6位門(mén)將曾解鎖單賽季20+零封

      懂球帝
      2026-05-15 07:58:07
      “扶弟魔”姐姐十年買(mǎi)房又給錢(qián),卻被弟弟一怒砍殺:錢(qián)給的不夠花

      “扶弟魔”姐姐十年買(mǎi)房又給錢(qián),卻被弟弟一怒砍殺:錢(qián)給的不夠花

      莫地方
      2026-05-13 00:40:03
      米體:伊瓜因單季36球破紀(jì)錄,十年前成那不勒斯告別夜

      米體:伊瓜因單季36球破紀(jì)錄,十年前成那不勒斯告別夜

      懂球帝
      2026-05-14 22:55:13
      蔣萬(wàn)安和江啟臣在向鄭麗文的兩岸和平路線上靠近

      蔣萬(wàn)安和江啟臣在向鄭麗文的兩岸和平路線上靠近

      縱擁千千晚星
      2026-05-13 07:13:47
      絕色美人艾梅柏:曾經(jīng)迷倒德普和馬斯克,如今帶著3個(gè)娃“隱居”

      絕色美人艾梅柏:曾經(jīng)迷倒德普和馬斯克,如今帶著3個(gè)娃“隱居”

      小書(shū)生吃瓜
      2026-05-02 22:22:47
      首個(gè)國(guó)有大行信用卡APP下月關(guān)停

      首個(gè)國(guó)有大行信用卡APP下月關(guān)停

      21世紀(jì)經(jīng)濟(jì)報(bào)道
      2026-05-14 21:39:56
      劉松仁發(fā)文致歉米雪,半個(gè)世紀(jì)搭檔情誼引熱議

      劉松仁發(fā)文致歉米雪,半個(gè)世紀(jì)搭檔情誼引熱議

      北青網(wǎng)-北京青年報(bào)
      2026-05-15 11:16:07
      141:0全票通過(guò)!法國(guó)連夜通過(guò)重大草案,中國(guó)這次的回應(yīng)很不一般

      141:0全票通過(guò)!法國(guó)連夜通過(guò)重大草案,中國(guó)這次的回應(yīng)很不一般

      潮鹿逐夢(mèng)
      2026-05-12 17:14:43
      100年前喪國(guó)辱權(quán)的協(xié)議卻成100年后的金鑰匙,國(guó)運(yùn)來(lái)了擋都擋不住

      100年前喪國(guó)辱權(quán)的協(xié)議卻成100年后的金鑰匙,國(guó)運(yùn)來(lái)了擋都擋不住

      富強(qiáng)巨靠譜
      2025-03-21 17:01:22
      移動(dòng)8元保號(hào)+120元包年流量卡,熱點(diǎn)替代寬帶,一年200多夠用

      移動(dòng)8元保號(hào)+120元包年流量卡,熱點(diǎn)替代寬帶,一年200多夠用

      粵語(yǔ)音樂(lè)噴泉
      2026-05-15 09:51:09
      WTA1000羅馬站:斯瓦泰克1-2不敵低排名選手,世界第3無(wú)緣決賽

      WTA1000羅馬站:斯瓦泰克1-2不敵低排名選手,世界第3無(wú)緣決賽

      側(cè)身凌空斬
      2026-05-15 06:34:06
      夫妻能夠相互喂飽,才是最好的婚姻!

      夫妻能夠相互喂飽,才是最好的婚姻!

      燈錦年
      2026-05-15 10:55:19
      “你的孩子,大概率是個(gè)普通人”,為啥我不能接納孩子的平凡?

      “你的孩子,大概率是個(gè)普通人”,為啥我不能接納孩子的平凡?

      枕邊聊育兒
      2026-05-15 09:21:06
      【日運(yùn)】十二星座2026年5月16日運(yùn)勢(shì)播報(bào)

      【日運(yùn)】十二星座2026年5月16日運(yùn)勢(shì)播報(bào)

      別人都叫我阿螫
      2026-05-15 10:38:19
      他套現(xiàn)百億,留下27萬(wàn)股民和一張ST廢紙,聞泰科技給投資者上了一課

      他套現(xiàn)百億,留下27萬(wàn)股民和一張ST廢紙,聞泰科技給投資者上了一課

      A活著
      2026-05-09 20:47:26
      全球獨(dú)一份?為何全世界,只有中國(guó)敢從殲7一步換到殲20

      全球獨(dú)一份?為何全世界,只有中國(guó)敢從殲7一步換到殲20

      聊歷史的阿稼
      2026-05-15 09:27:13
      2026-05-15 11:56:49
      老馮云數(shù) incentive-icons
      老馮云數(shù)
      數(shù)據(jù)庫(kù)老司機(jī),云計(jì)算泥石流,PostgreSQL大法師
      179文章數(shù) 55關(guān)注度
      往期回顧 全部

      科技要聞

      兩年聯(lián)姻一地雞毛,傳蘋(píng)果OpenAI瀕臨決裂

      頭條要聞

      103歲和86歲老人認(rèn)識(shí)3個(gè)月"閃婚":孤獨(dú)感消失了

      頭條要聞

      103歲和86歲老人認(rèn)識(shí)3個(gè)月"閃婚":孤獨(dú)感消失了

      體育要聞

      德約科維奇買(mǎi)的球隊(duì),從第6級(jí)聯(lián)賽升入法甲

      娛樂(lè)要聞

      方媛回應(yīng)住男生單人間:女孩的配得感

      財(cái)經(jīng)要聞

      特朗普的北京時(shí)刻

      汽車要聞

      雙零重力座椅/AI智能體/調(diào)光天幕 啟境GT7內(nèi)飾發(fā)布

      態(tài)度原創(chuàng)

      親子
      藝術(shù)
      教育
      旅游
      公開(kāi)課

      親子要聞

      帶納糖一起去日本公園玩,兄妹倆年紀(jì)相差大,但是玩的很開(kāi)心

      藝術(shù)要聞

      15幅 丹麥畫(huà)家Carsten Henrichsen風(fēng)景油畫(huà)

      教育要聞

      初升高訪校高峰已到!這些門(mén)門(mén)道道要搞清楚

      旅游要聞

      今年的恭王府海棠依舊

      公開(kāi)課

      李玫瑾:為什么性格比能力更重要?

      無(wú)障礙瀏覽 進(jìn)入關(guān)懷版 主站蜘蛛池模板: 精品中文字幕人妻一二| 人妻少妇精品中文字幕av| 九九在线精品国产| 十八禁国产精品一区二区| 无码色偷偷亚洲国内自拍| 久久发布国产伦子伦精品| 日韩国产成人精品视频| 亚洲国产成人久久77| 国产真实伦视频在线视频| XXXXXHD亚洲日本HD| 宅男宅女精品国产AV天堂| 久久九九有精品国产| 亚洲国产超清无码专区| 九九热在线观看精品视频| 久久久久女教师免费一区| 国产成+人综合+亚洲专区| 国产丨熟女丨国产熟女??在线| 麻豆一区二区三区精品视频| 亚洲中文国产字幕| 欧美日韩国产综合视频在线| 国产精品老熟女乱一区二区| 日韩人妻无码一区二区三区久久| 人妻系列无码专区久久五月天| 国产对白熟女受不了了| 成人3p在线观看| A天堂视频在线| 性欧美老人牲交XXXXX视频| 鲁丝片一区二区三区免费| 色性av| www.日本H视频在线| 在线播放亚洲一区二区三区| 久久亚洲女同第一区综合| 番名:亲戚の子とお泊まりだから共两集[头盔] | 中文无码第一页| 天堂av资源在线免费| 日韩精品国产另类专区| 久久天天躁夜夜躁狠狠I女人| 久久精品国产福利一区二区| 美腿丝袜亚洲综合在线视频| 久久人妻精品大屁股一区| 精品无码国产AV一区二区|