墨天轮社区 · 2022年06月23日

墨天轮访谈|瀚高王志斌—IvorySQL,一个基于PostgreSQL的兼容Oracle的开源数据库

分享嘉宾王志斌 瀚高IvorySQL产品经理
整理墨天轮社区

导读

大家好,我是瀚高IvorySQL产品经理王志斌,IvorySQL是基于PostgreSQL的衍生开源项目。
我今天分享的内容主要分为三个部分:我们是谁?我们做了什么?以及对IvorySQL详细介绍。

我们是谁

1、瀚高是谁

瀚高作为以数据库为核心业务的企业一直致力于客户提供具有核心竞争力的解决方案。我们从最开始的数据库维保服务起步,在服务的过程中收集到了很多数据库产品的需求,同时我们也看到了国产数据库的一个商业前景。通过不断的学习探索,瀚高最后确定了基于PostgreSQL数据库来研发数据库产品。

目前瀚高总部设立在济南,同时我们在北京、济南、青岛、成都、保定这五个地方都有研发中心,具备覆盖全国的一个本地化服务能力,从而快速响应客户的需求。

同时瀚高为了加强和国际社区合作,在海外也设立了北美研究院、西雅图研发中心和伊斯兰堡的研发中心。


图1 瀚高企业简介

2、瀚高的发展历程

我大概为大家介绍一下瀚高的发展历程。在初创期,我们还是以Oracle的维保服务为主,主要为客户提供专业化的服务。但是在实际过程中,我们也发现了大量的客户需求,包括功能性、安全性等方面。

随着国产化进程的不断推进,我们看到在数据库的专业的领域中没有核心产品,发展其实是受到很大局限性。因此公司在2009年开始转型,从传统的运维服务转向研发自主可控的一个国产数据库产品,并于2011年推出了自己的数据库产品HighGo Database。在进入发展期后,我们在产品功能上做不断的迭代,努力的去打造一个产品的生态圈。

目前公司进入了创新的突破期,在各个业务领域拓展产品应用场景,从而更好地服务客户。从目前国内数据库市场的核心需求来看,迫切需要一个能够替代Oracle的一个关系型的数据库产品,这个产品呢,既可以被我们本土的一个技术资源掌控,同时也能够有全球性生态空间的支撑,具有完备的生态环境。


图2 瀚高发展历程

我们做了什么

瀚高在开源上的贡献主要分为三个方面:国际交流合作、开源贡献以及人才培养。

开源离不开社区建设,瀚高积极参与国际的社区活动,从最开始的外围服务到贡献代码以及核心参与。截止到目前为止,我们在博客系统已经发表了100多篇技术文章,向PostgreSQL开源社区提交了将10万余行的代码。


图3 瀚高积极开展国际交流合作

在开源建设方面,从PG9.3.1开始参与文档的翻译工作,下图为主要版本文档翻译链接。


图4 瀚高积极参与开源建设

而在人才培养方向,我们与高等院校有着紧密的合作,和北京大学、深圳大学等学校开展了相关的开源通识课以及开发实践课程,同时瀚高的高级工程师参与教案编制、课件制作,以及实践课题拟定等工作,助力打造开源生态圈。


图5 瀚高积极进行人才培养建设

IvorySQL 是什么

1、IvorySQL 项目背景

IvorySQL 项目是如何诞生的?主要是基于这四个背景:数据安全、服务经验、开发诉求、产品需求。

首先,数据安全已经成为保障国家安全的重要组成部分。数据库作为信息系统的底层存储平台,责任重大。同时国家也在大力提倡自主可控,不同领域与行业都在提及“信创”,瀚高也参与其中。

第二个背景是瀚高服务经验的积累。瀚高通过客户服务积累了非常丰富的需求。按照以往通过应用迁移来改造客户,但是这样的做法对造成不好的用户体验,实际上对用户的业务系统也具有很大的侵入性,造成一些问题。

第三个背景是产品需求。一些客户有兼容性产品需求,具体来说是将原有的商业版数据库迁移到PG数据库上,这样也会面临着兼容性的问题。

第四个背景来自于开发者。实际上一部分第三方的开发组织和个人完成了兼容性的功能代码,但国际社区并不认可纳入到PG的主版本,所以我们提出了IvorySQL开源项目,希望通过合作共建的方式来解决上述提到的这些问题。


图6 IvorySQL项目背景

2、IvorySQL 项目介绍

IvorySQL 项目由瀚高发起,基于的是PostgreSQL的开源分支。当前版本是IvorySQL Release 1.3,我们遵循Apache 2.0 开源协议,同时100%与PostgreSQL兼容。

下图所示,我们既要保留PostgreSQL的基本功能,也要加入一些兼容性,同时还要有新增特性,这也是 IvorySQL 的整体愿景。


图7 IvorySQL项目介绍

3、IvorySQL 发展历程

自IvorySQL发布到如今的1.3版本,一共历经了四个里程碑,而整个项目采用敏捷开发的方式。

2021年12月15号,IvorySQL 1.0版本正式发布,侧重在数据类型和函数。IvorySQL 1.1的版本发布于2022年的1月25号,该版本解决了1.0版本出现的一些bug,同时修正了小的特性。2022年2月28号,我们发布了1.2版本,与前面的版本相比,我们新增了层次查询这个较大的特性。最新的1.3版本在2022年5月27号发布,增加了匿名块支持。

从版本发布的时间线来出,基本上是遵循着PostgreSQL的发展路线,并且随着它的版本所做出一些特性开发工作。这也实现了我们刚才所讲的IvorySQL 100%和PostgreSQL兼容,并且能够提升、增加它的功能与兼容性。


图8 IvorySQL项目历程

4、IvorySQL 1.3版本介绍

目前最新的版本是IvorySQL 1.3,新版本是基于PostgreSQL 14.3,它包括如下特性:

  • Oracle兼容-包和函数
  • Oracle兼容-PL/iSQL过程语言
  • 通过GUC参数切换Oracle和PostgreSQL模式
  • Oracle兼容-多种DDL和DML语法
  • Oracle兼容-日期/时间函数
  • 支持层次查询
  • 支持匿名块

我们研发团队实际上是从外部和内部进行IvorySQL的项目规划。我们会从github外部渠道上接收一些意见和建议,然后通过整理分析汇总纳入到规划内;另一方面,我们根据之前的一些经验积累从内部也进行了一些研发规划。最终我们希望通过这种内外结合的方式,打造出更好的开源项。


图9 IvorySQL路线图

从整体架构出发,我们努力做到了让IvorySQL100%与PostgreSQL的整体架构兼容,保证原有的工作不受影响,并且支持更多的兼容性。


图10 IvorySQL整体架构

IvorySQL 在 PostgreSQL 的基础上增加的主要功能特点包括:

  • Oracle 兼容包
  • Oracle 兼容 PL/iSQL 过程语言
  • GUC 在 Oracle 和 PostgreSQL 模式之间切换
  • Oracle 兼容各种 DDL 操作的语法
  • Oracle 兼容的日期 / 时间函数
  • 内置 Orafce

欢迎大家参与到IvorySQL 开源项目中来,以下是贡献途径与报告问题的方式。


图11 IvorySQL贡献途径


图12 IvorySQL问题报告途径

其实通过前面的介绍,大家应该也能了解到瀚高在开源领域的这种持续投入态度。我们也希望越来越多的伙伴能够参与进来,让IvorySQL这个开源项目能够持续发展。

我们是很愿意做开源项目的付出者,做开源我们是认真的,谢谢大家!

更多精彩内容,欢迎大家观看现场视频回放与会议资料
视频回放:https://www.modb.pro/video/6500
会议资料:https://www.modb.pro/doc/64403

欲了解更多可以进入墨天轮社区,围绕数据人的学习成长提供一站式的全面服务,打造集新闻资讯、在线问答、活动直播、在线课程、文档阅览、资源下载、知识分享及在线运维为一体的统一平台,持续促进数据领域的知识传播和技术创新。

关注官方公众号: 墨天轮、 墨天轮平台、墨天轮成长营、数据库国产化 、数据库资讯

推荐阅读
关注数
8
内容数
152
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息