博客 / 詳情

返回

IvorySQL 5.0 發佈:基於 PG 18.0,Oracle 兼容、生態組件、雲原生與易用性全面進化!

IvorySQL 開源社區小夥伴們,大家好,IvorySQL 開源社區今天激動的向大家宣佈:IvorySQL 5.0 發佈了!

IvorySQL 5.0 基於 PostgreSQL 18.0 全面升級:Oracle 兼容性再突破,生態組件集成再升級,雲原生深度支持,配合全平台安裝包與在線絲滑體驗,讓複雜變得簡單。

基於 PostgreSQL 18.0

PostgreSQL 18.0 核心升級:

  1. 引入異步 IO(AIO)子系統,可顯著提升順序掃描、位圖堆掃描、VACUUM 等操作的性能。
  2. pg_upgrade 工具:新增優化器統計信息保留功能。
  3. 支持跳躍掃描(skip scan),使多列 B-tree 索引在更多場景下可用。
  4. 新增 uuidv7() 函數:生成時間戳有序的 UUID。
  5. 虛擬生成列:讀取時動態計算列值,現已成為生成列的默認類型。
  6. 支持 OAuth 認證。
  7. RETURNING 子句增強:INSERT/UPDATE/DELETE/MERGE 命令支持 OLD 和 NEW 關鍵字。
  8. 時間範圍約束:為 PRIMARY KEY、UNIQUE、FOREIGN KEY 約束添加範圍級約束支持。

更多細節請查看 PostgreSQL 18.0 發行説明。

新特性

新增 21 個 Oracle 兼容功能

  • Oracle 兼容 ROWID 支持:確保 IvorySQL 行標識符與 Oracle 語義一致,便於跨數據庫工具無縫遷移。
  • PL/iSQL CALL 調用語法:新增 Oracle 風格的 CALL 入口點,實現存儲過程統一調用。
  • PL/iSQL %ROWTYPE 支持:允許變量映射整個表或遊標行結構,簡化 PL/iSQL 編碼。
  • PL/iSQL %TYPE 支持:支持變量繼承現有列或變量的數據類型,減少類型漂移。
  • 大小寫敏感兼容開關:按需保留標識符大小寫,以匹配 Oracle 行為。
  • NLS 參數兼容:支持 Oracle 風格的 NLS 設置,如 NLS_DATE_FORMATNLS_TIMESTAMP_FORMAT 等。
  • 空字符串轉 NULL:將零長度字符串自動轉換為 NULL,以符合 Oracle 的兼容性規則。
  • 解析器切換能力:新增在 Oracle 和 PostgreSQL 解析器之間切換的能力,實現會話級的靈活配置。
  • GB18030 數據庫編碼支持:新增 GB18030 初始化和數據庫創建選項,全面覆蓋中文市場需求。
  • Oracle 兼容 SYS_GUID 函數:實現 Oracle 的 SYS_GUID 函數,用於生成基於 RAW 的全局唯一標識符(GUID)。
  • Oracle 兼容 SYS_CONTEXT 函數:提供 Oracle SYS_CONTEXT API,用於查詢會話與環境元數據。
  • Oracle 兼容 USERENV 函數:增加 USERENV 函數,支持會話查詢 Oracle 風格的上下文信息。
  • Oracle 兼容函數語法:支持 EDITIONABLE/NONEDITIONABLE、RETURNISOUT ... NOCOPY 等 Oracle 語法結構。
  • Oracle 兼容存儲過程語法:支持含 Oracle 選項的存儲過程 DDL、EXEC 調用及 ALTER PROCEDURE 操作。
  • libpq OUT 參數支持:擴展客户端協議處理能力,使 OUT 參數可像 OCI 一樣被消費。
  • 存儲過程 OUT 參數支持:允許存儲過程按照 Oracle 規範聲明 IN、OUT 和 IN OUT 模式參數。
  • 函數 OUT 參數支持:支持函數中使用 Oracle 風格 OUT 參數,包括 IN OUT 組合模式。
  • 嵌套子程序:支持在子程序內部聲明函數或過程,並支持重載。
  • Oracle 兼容 INSTR 函數:匹配 Oracle INSTR 的子串搜索和位置檢查行為。
  • Oracle 兼容 FORCE VIEW:支持在引用對象不存在時創建視圖,模擬 Oracle 的 FORCE 選項。
  • Oracle 兼容 LIKE 運算符:使模式匹配語義與 Oracle 對齊,確保通配符行為可預測。

在線體驗與多平台發行包

  • 在線體驗環境:推出基於瀏覽器的交互式環境,無需安裝即可實時體驗 IvorySQL 5.0。
  • 全平台打包支持:提供 X86、ARM、MIPS、LoongArch 架構的多平台安裝包。

雲原生與容器化

  • 容器化部署支持(Docker Compose & podman & Docker Swarm):支持在 Docker Compose 、 podman 和 Docker Swarm 環境中部署單機版 IvorySQL 數據庫及高可用集羣。
  • 刪除已修復問題中的CREATE PACKAGE語法幫助,具體刪除行:使psql用户可通過h create package訪問 CREATE PACKAGE 語法幫助,填補 PL/iSQL 包相關的命令行文檔空白。
  • 容器化部署支持(Kubernetes):支持通過 Helm 在 Kubernetes(K8s)上部署單機版 IvorySQL 數據庫及高可用集羣。
  • IvorySQL Operator v5 發佈(Kubernetes 進階版):適配 IvorySQL 5.0,同步升級系統組件版本及數據庫擴展版本。
  • IvorySQL Cloud 5.0 發佈:支持 IvorySQL 5.0 數據庫的可視化託管控制平面,覆蓋訂閲、全生命週期管理以及生態集成。

擴展適配

  • pg_cron:通過集成 pg_cron 實現在數據庫層執行定時任務。
  • pgAudit:通過標準 PostgreSQL 日誌設施提供細粒度的會話與對象審計日誌。
  • PostGIS: 通過 PostGIS 兼容性支持空間數據處理與地理空間分析。
  • pgRouting:引入 pgRouting 支持,提供網絡與路徑分析功能。
  • PGroonga:增強全文搜索能力。
  • ddlx:支持 ddlx,實現高級模式自省與自動化 DDL 生成。
  • pgsql-http:允許數據庫內部發起 HTTP/HTTPS 請求,實現與外部 Web 服務的無縫通信。
  • system_stats:提供系統級統計信息。
  • plpgsql_check:對 PL/pgSQL 函數進行靜態代碼分析,在運行前發現錯誤、警告與潛在問題。
  • pgvector:集成 pgvector,原生支持向量相似度搜索,賦能 AI/ML 工作負載。

詳細的變化請查看:Complete Changelog

已修復問題

  • 修復 unused_oidsduplicate_oids 目錄工具,使頭文件掃描能準確檢測 OID 衝突,避免誤報。
  • libpqivytest 產物添加 .gitignore 規則,防止生成的二進制文件和日誌污染開發者工作目錄。
  • 擴展 GitHub workflow 迴歸測試,覆蓋 --with-libnuma 配置,防止未來在支持 NUMA 的主機上出現故障。
  • 使 psql 用户可通過 h create package 訪問 CREATE PACKAGE 語法幫助,填補 PL/iSQL 包相關的命令行文檔空白。
  • 消除了 MainLoop 中的懸空指針場景,解決了在高併發壓力下偶發的段錯誤。
  • 修復測試框架假設,重新啓用 oracle_test/modules/sql 測試用例,使 Oracle 兼容性測試套件可再次端到端執行。
  • 更新 README.mdREADME_CN.md,同步 IvorySQL v5 功能集、打包與入門指南。
  • 修正全局唯一索引強制約束邏輯,使相關回歸測試在所有支持平台穩定通過。

源碼倉庫

IvorySQL 的開發主要在以下四個倉庫進行維護:

  • IvorySQL 數據庫源碼:https://github.com/IvorySQL/IvorySQL
  • IvorySQL 官網:https://github.com/IvorySQL/Ivory-www
  • IvorySQL 文檔:https://github.com/IvorySQL/IvorySQL-docs
  • IvorySQL Docker:https://github.com/IvorySQL/docker_library

問題反饋

社區歡迎大家試用 IvorySQL 5.0,如果在使用的過程中出現問題或發現 bug,歡迎您在 GitHub 提交 issue,鏈接:https://github.com/IvorySQL/IvorySQL/issues

致謝

最後,致謝各位貢獻者!感謝大家在產品發佈的過程中作出貢獻,為社區發展添磚加瓦。

以下是該版本的貢獻者(排名不分先後):

  • Carlos Chong
  • ccwxl
  • Cédric Villemain
  • Fu Bei
  • Fawei Zhao
  • Ge Sui
  • Grant Zhou
  • Imran Zaheer
  • jerome-peng
  • luss
  • Martin Gerhardy
  • Mingran Feng
  • omstack
  • Oreo Yang
  • otegami
  • Ruike Sun
  • rophy
  • Shaolin Chu
  • Shawn Yan
  • Shuntian Jiao
  • Shuisen Tong
  • shlei6067
  • sjw1933
  • Steven Niu
  • Xiangyu Liang
  • Xiaohui Liu
  • Xinjie Lv
  • xuexiaoganghs
  • Xueyu Gao
  • yangchunwanwusheng
  • Yanliang Lei
  • Yasir Hussain Shah
  • Yuan Li
  • Zhe Zhang
  • Zheng Tao
  • Zhenhao Pan
  • Zhuoyan Shi
user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.