深度拆解 IvorySQL 去 O 核心解决方案

发布时间:2026/7/15 17:12:27
深度拆解 IvorySQL 去 O 核心解决方案 本文整理于 HOW 2026 矫顺田演讲内容。1. 背景与项目概况1.1 Oracle去O的需求与挑战Oracle长期作为企业核心业务系统的数据库基座尤其在能源、电信、制造等行业占据主导地位。在“去O”迁移过程中主要面临以下四类阻力直接决定迁移项目的成败语法不兼容导致应用代码需大量改动。语义行为差异导致程序虽能运行但结果错误。资产难以复用PL/SQL业务逻辑迁移成本高。运维复杂度高驱动、工具不统一增加协同难度。1.2 IvorySQL项目概况IvorySQL于2021年由浪潮软件集团瀚高股份发起2025年正式捐献给开放原子开源基金会遵循Apache 2.0开源协议。其核心定位与特点包括定位并非独立DBMS而是基于PostgreSQL内核深度演进避免重复造轮子。使命用开源连接世界提供Oracle替代的开放方案。目标降低迁移门槛保留PG生态与可持续升级路径。版本节奏紧跟PG内核发布约40天跟随PG最新版本发版小版本修复Bug大版本发布重大兼容特性。最新版本IvorySQL 5.3基于PostgreSQL 18.3。注目前已发布 IvorySQL 5.4基于 PostgreSQL 18.41.3 核心特性与社区进展IvorySQL提供全面灵活的Oracle兼容功能覆盖常见数据类型、字符/时间函数、NLS参数等内置能力。社区自2021年12月发布1.0版本以来已持续更新至5.4版本。项目提供全平台介质包支持x86、ARM、MIPS、LoongArch等主流环境并通过Docker镜像、K8s Operator及浏览器在线体验等方式降低用户评估门槛。2. 核心架构与设计理念2.1 双模式设计IvorySQL采用“双模式”架构初始化时通过initdb -m pg/oracle指定两种模式PG模式保持与原生PostgreSQL完全兼容。Oracle模式默认提供Oracle兼容语法及增强功能。动态切换可通过SET ivorysql.compatible_mode语句实时动态切换模式互不牺牲稳定性。2.2 双端口与双解析器设计IvorySQL提供双端口协同解析架构5432端口原生PostgreSQL兼容保障业务无缝迁移。1521端口Oracle模式默认端口企业级Oracle语法支持开箱即用。在此基础上采用专利级隔离的双语法解析核心通过新增Parser模块处理Oracle语法最大限度降低PostgreSQL与Oracle语法间的相互干扰。2.3 PL/iSQL的实现思路IvorySQL在系统表pg_language中新增plisql语言用于承接Oracle风格过程语言。其设计思路是复用并演进PostgreSQL的plpgsql机制而不是完全重写。Oracle模式初始化时自动注册相关插件与语言能力通过插件式架构降低对主线内核的侵入度。2.4 五层兼容体系IvorySQL的兼容体系分为五个层次前两层解决“能否跑起来”后三层解决“跑得对不对、好不好”SQL语法兼容覆盖高频DDL/DML如表创建、修改、查询及MERGE、q转义、LIKE等Oracle语法表达。对象与存储过程兼容支持Package、系统视图及对象访问习惯。执行语义兼容对齐NULL处理、空串转NULL、函数细节与关键边界条件。过程语言兼容适配Oracle执行模型支持Procedure、Function、Cursor、匿名块等核心能力与PL/pgSQL共存。迁移与运维工具工具生态的完整闭环。3. 关键兼容特性详解3.1 SQL语法与对象兼容基础DDL/DML覆盖建表、修改、查询、写入等典型迁移语句。Package兼容支持Oracle自定义包的功能包括包和包体的创建、修改和描述并通过\dk等增强命令提升包管理体验。View等对象语法降低对象层改造成本。3.2 语义与行为兼容——真正的难点语义行为差异是迁移中最隐蔽的风险。Oracle与PostgreSQL在以下方面存在关键差异差异点Oracle习惯IvorySQL处理NULL处理空字符串按NULL处理兼容模式下对齐Oracle行为空串 vs NULL空串视为NULL通过兼容逻辑减少行为偏移函数一致性同名函数细节不同优先覆盖高频函数并持续验证日期/数值格式、精度影响业务结果重点保障核心口径稳定语句能解析只是迁移的开始结果是否一致才决定业务是否敢切换。3.3 高级功能兼容序列与系统视图支持CACHE/NOCACHE、SCALE、SESSION、GLOBAL等选项兼容NEXTVAL和CURRVAL伪列使用习惯提供ALL_SEQUENCES、DBA_SEQUENCES、USER_SEQUENCES视图。Invisible Column不可见列默认不出现在SELECT *结果中需显式引用适合应用升级过程中平滑增加列。XML函数新增11个XML函数覆盖APPENDCHILDXML、UPDATEXML、EXISTSNODE等高频函数增强企业对XML数据的处理能力。系统视图与元数据路线规划中包含ALL_TAB_COLUMNS、ALL_CONSTRAINTS、ALL_INDEXES等常用视图兼容DBA_/USER_体系。3.4 未来高级特性规划IvorySQL计划持续补齐以下高级特性自治事务Autonomous TransactionROWNUM伪列Outer Join语法Synonym同义词Reverse Key Index、CREATE INDEX ONLINEPivot/Unpivot、Trigger语法、Bitmap Index、IOT等3.5 测试框架与质量保障IvorySQL建立了双框架协同的测试体系Oracle test framework用Oracle侧测试保障关键兼容点行为对齐。pg test framework复用PG侧成熟验证体系保持内核稳定性。通过工程化测试减少“能跑但不一致”的风险。4. 迁移实践与方法论4.1 迁移工具链闭环IvorySQL将迁移过程划分为四个阶段评估阶段识别对象差异、风险点与改造范围。转换阶段完成SQL、对象与过程逻辑的自动或半自动转换。接入阶段适配JDBC、ODBC、libpq等驱动验证PostGIS、FDW、pg_stat_statements等生态组件适配Kylin、UOS、Anolis等国产环境。运维阶段完成监控、备份、管理与日常交付闭环。4.2 全平台交付与云原生能力IvorySQL提供开箱即用的全平台安装包降低部署摩擦。在云原生方面通过Docker镜像、K8s Operator等方式适配现代交付模式。同时提供完善的文档、迁移指南、FAQ及最佳实践支撑规模化推广。4.3 案例金融核心系统迁移实践某金融系统涉及总账等多个核心系统的Oracle替换需求。项目中深度兼容Oracle Package、集合数据类型、系统视图和分区索引。经过严格测试新平台性能指标与稳定性指标达到预期要求。实践证明兼容能力能够直接转化为核心业务迁移成功率。5. 社区治理与未来路线5.1 社区治理与开放协作IvorySQL于2025年捐赠给开放原子开源基金会治理结构更公开透明。社区欢迎代码、测试、文档、Issue、PR等多类型贡献GitHub Project与公开协作流程提升了全球开发者协同效率。文档、论坛、FAQ、最佳实践共同构成社区支撑体系。5.2 生态合作与国际化IvorySQL与法国Data Bene签署为期两年的MOU合作备忘录。Data Bene看重的是PG高兼容接入能力以及Oracle兼容与云原生优势将在Oracle迁移项目中推广IvorySQL并参与社区能力建设。这说明兼容体系正在从国内项目走向国际生态合作。5.3 IvorySQL 6.0预览与版本规划2026年版本规划如下2026年3月IvorySQL v5.3PG 18.32026年6月IvorySQL v5.4PG 18.42026年9月IvorySQL v5.5PG 18.52026年11月IvorySQL v6.0PG 19.02026年12月IvorySQL v6.1PG 19.1IvorySQL 6.0重点功能包括自治事务在主事务中独立开启的子事务可独立提交或回滚。ROWNUMOracle伪列用于返回查询结果集中每一行的行号。Rebuild index重建索引以消除碎片、释放空间。DBMS_OUTPUT用于在程序中输出调试信息。组件适配wal2json、pgbouncer、pg_ai_query、pg_textsearch等。5.4 2026年产品与生态重点AI生态打造推动数据库能力与AI/Agent场景融合。新增国产平台适配继续扩展认证与适配覆盖面。云及容器化完整生态各版本持续提供云原生适配能力。文档与解决方案建设迁移指南、调优指南、最佳实践与行业方案。5.5 IvorySQL创新试验田IvorySQL面向真实业务需求的功能孵化平台汇聚国内客户痛点与前沿实践将社区暂未接纳的优秀方案快速落地逻辑复制新增表无主键自动添加identity属性避免报错中断。创建视图后修改表结构允许在视图语义仍有效的前提下安全变更。全局唯一索引在分区表上创建跨所有分区的唯一约束。