暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

兼容 Oracle 的开源 PostgreSQL?

本文转自公众号【老冯云数】。

今天在 PostgreSQL 技术峰会上有人问,什么数据库可以替代 Oracle ?当然有很多数据库都号称自己可以 “替代” Oracle,商业产品这里就不说了,但开源的目前我了解到的只有 IvorySQL。

IvorySQL 是一个开源的“Oracle兼容” PostgreSQL 内核,由瀚高出品,使用 Apache 2.0 许可证。目前Pigsty支持在自建本地 RDS 时使用 IvorySQL 内核替代原生的 PostgreSQL 内核,提供和原版一样的监控,备份,高可用,IaC 等能力,并运行 “Oracle 兼容模式”。

当然这里的 Oracle 兼容是 Pl/SQL,语法,内置函数、数据类型、系统视图、MERGE 以及 GUC参数层面上的兼容, 不是BabelfishopenHaloFerretDB那种可以不改客户端驱动的缆协议兼容。

所以用户还是要使用 PostgreSQL 的客户端工具来访问 IvorySQL,但是可以使用 Oracle 兼容的语法。


目前 IvorySQL 最新版本 4.4 与 PostgreSQL 最新小版本 17.4 保持兼容,并且提供了主流 Linux 上的二进制 RPM/DEB 包。 而 Pigsty 提供了在 PG RDS 中将原生 PostgreSQL 替换为 IvorySQL 内核的选项。

快速上手

使用标准流程安装Pigsty,并使用ivory
配置模板:

curl -fsSL https://repo.pigsty.cc/get | bash; cd ~/pigsty ./bootstrap              # 安装 Pigsty 依赖 ./configure -c ivory     # 使用 IvorySQL 配置模板 ./install.yml            # 使用剧本执行部署  

啊是的,就是这么简单,只要使用 IvorySQL 配置模板替代默认的配置模板,你就可以拉起 “Oracle” 兼容的 PG RDS 了。

对于生产环境部署,您应当在执行./install.yml
进行部署前,编辑自动生成的pigsty.yml
配置文件,修改密码等参数。

当前最新的 IvorySQL 4.4 等效于 PostgreSQL 17,任何兼容 PostgreSQL 线缆协议的客户端工具都可以访问 IvorySQL 集群。

不过,默认情况下,你可以使用 PostgreSQL 客户端从另一个1521
端口访问,这种情况下默认使用 Oracle 兼容模式。


配置说明

在 Pigsty 中要使用 IvorySQL 内核,需要修改以下四个配置参数:

  • pg_mode:使用ivory

    兼容模式
  • repo_extra_packages:下载ivroysql

    软件包
  • pg_packages: 安装ivorysql

    软件包
  • pg_libs:加载 Oracle 语法兼容扩展

是的就是这么简单,你只需要在配置文件的全局变量中加上这四行,Pigsty 就会使用 IvorySQL 替换原生的 PostgreSQL 内核了。

pg_mode: ivory                           # IvorySQL 兼容模式,使用 IvorySQL 的二进制pg_packages:[ ivorysql, pgsql-common ]  # 安装 ivorysql,替换 pgsql-main 主内核pg_libs:'liboracle_parser, pg_stat_statements, auto_explain'  # 加载 Oracle 兼容扩展repo_extra_packages:[ ivorysql ]        # 下载 ivorysql 软件包

IvorySQL 还提供了一系列新增 GUC 参数变量,可以在pg_parameters
中指定。


扩展

绝大多数 PGSQL 模块的扩展插件(非纯 SQL 类)都无法直接在 IvorySQL 内核上使用,如果需要使用,需要针对新内核从源码重新编译安装。

备注说明

  • 目前 IvorySQL 的软件包位于pigsty-infra
    仓库,而非pigsty-pgsql
    pigsty-ivory
    仓库。

  • IvorySQL 4.4 的默认 FHS 发生改变,请从老版本升级上来的用户留意。

  • IvorySQL 4.4 需要 gibc 版本 >= 2.17 即可,目前 Pigsty 支持的系统版本都满足这个条件

  • 最后一个支持 EL7 的 IvorySQL 版本为 3.3,对应 PostgreSQL 16.3,目前 IvorySQL 4.x 已经不再提供对 EL7 的支持了。

  • Pigsty 不对使用 IvorySQL 内核承担任何质保责任,使用此内核遇到的任何问题与需求请联系原厂解决。



当然,PostgreSQL 能 “兼容” 的可不仅仅是 Oracle 一个。实际上头部的数据库 PostgreSQL 已经兼容了个遍,而且除了 Oracle 之外都是不用改客户端的 “线缆协议” 级别兼容。

关注公众号,了解更多社区动态

推荐阅读 -

深入 PostgreSQL 内部:5 个关键阶段拆解查询处理全流程

突破关系型边界:PostgreSQL 的 JSON 如何重新定义数据敏捷性

手把手教你在 openKylin 上部署 IvorySQL 4.4

在 PostgreSQL 中设置调试环境以更好地理解 OpenSSL API

深入理解 PostgreSQL Planner:简化扫描路径与查询计划

IvorySQL 增量备份与合并增量备份功能解析

DeepSeek 加持!IvorySQL 文档智能助手正式上线!

如何在 PostgreSQL 中运行 TLS 回归测试

版本发布| IvorySQL 4.4 发布

如何利用 PostgreSQL 的 JSONB API 作为扩展的轻量级 JSON 解析器

IvorySQL v4 逻辑复制槽同步功能解析:高可用场景下的数据连续性保障

表访问方法:PostgreSQL 中数据更新的处理方式

「2024 年度技术精华盘点」IvorySQL & PostgreSQL 技术干货全解析!

版本发布 | IvorySQL 4.2 发布

IvorySQL 4.0 之 Invisible Column 功能解析

从 PostgreSQL 升级至 IvorySQL 4.0

IvorySQL 4.0 之兼容 Oracle 包功能设计思路解读

IvorySQL 升级指南:从 3.x 到 4.0 的平滑过渡

IvorySQL 4.0 发布:全面支持 PostgreSQL 17

- 关于 IvorySQL -
IvorySQL 是由瀚高股份主导研发的一款开源的兼容 Oracle 的 PostgreSQL。IvorySQL 与 PostgreSQL 国际社区紧密合作,保持与最新 PG 版本内核同步,为用户提供便捷的升级体验。基于双 Parser 架构设计,100% 与原生 PostgreSQL 兼容,支持丰富的 PostgreSQL 周边工具和扩展,并根据用户需求提供定制化工具。同时,IvorySQL 提供更全面灵活的 Oracle 兼容功能,具备高度的 SQL 和 PL/SQL 兼容性能够为企业构建更加高效、稳定和灵活的数据库解决方案。
官网:https://www.ivorysql.org
GitHub(欢迎点击 star 收藏哦):https://github.com/IvorySQL/IvorySQL
社群:微信搜索“ivorysql_official” 添加小助理进群


文章转载自IvorySQL开源数据库社区,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论