分享嘉宾王志斌 瀚高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


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

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

墨天轮访谈 | IvorySQL王志斌—IvorySQL,一个基于PostgreSQL的兼容Oracle的开源数据库的更多相关文章

  1. HTML5移动开发即学即用(双色) 王志刚 pdf扫描版​

    HTML5已经广泛应用于各智能移动终端设备上,而且绝大部分技术已经被各种最新版本的测览器所支持:逐一剖析HTML5标准中包含的最新技术,详细介绍了HTML5新标准中提供的各种API,各种各样的应用实例 ...

  2. java课程设计——博客作业教学数据分析系统(201521123083 戴志斌)

    目录 一.团队课程设计博客链接 二.个人负责模块或任务说明 三.自己的代码提交记录截图 四.自己负责模块或任务详细说明 五.课程设计感想 (题外话,终于可以用markdown建目录) 一.团队课程设计 ...

  3. NoSQL专家王涛访谈:为什么我们还要做一个NoSQL?

    ChinaUnix:各位网友大家好,今天有幸请到王涛先生到CU做客,与大家交流一些工作经验.首先请王涛先介绍一下自己. 王涛:大家好,我是王涛.过去八年里我一直在IBM多伦多实验室从事DB2引擎研发的 ...

  4. 给小白的 PostgreSQL 容器化部署教程(上)

    作者:王志斌 编辑:钟华龙 本文来自社区小伙伴 王志斌 的投稿.从小白的角度,带你一步步实现将 RadonDB PostgreSQL 集群部署到 Kubernetes 上.文章分为上下两部分,第一部分 ...

  5. 给小白的 PG 容器化部署教程(下)

    作者:王志斌 编辑:钟华龙 本文来自社区小伙伴 王志斌 的投稿.从小白的角度,带你一步步实现将 RadonDB PostgreSQL 集群部署到 Kubernetes 上.文章分为上下两部分,< ...

  6. 从hadoop框架与MapReduce模式中谈海量数据处理

    http://blog.csdn.net/wind19/article/details/7716326 前言 几周前,当我最初听到,以致后来初次接触Hadoop与MapReduce这两个东西,我便稍显 ...

  7. 云计算平台简介(App Engine)

    云计算平台简介(App Engine)     1   简介 App Engine: 应用程序引擎,是托管网络应用程序的云计算平台. 1.1  什么是云 云计算通常简称为“云”,是一种通过 Inter ...

  8. 从Hadoop框架与MapReduce模式中谈海量数据处理(含淘宝技术架构) (转)

    转自:http://blog.csdn.net/v_july_v/article/details/6704077 从hadoop框架与MapReduce模式中谈海量数据处理 前言 几周前,当我最初听到 ...

  9. 从Hadoop骨架MapReduce在海量数据处理模式(包括淘宝技术架构)

    从hadoop框架与MapReduce模式中谈海量数据处理 前言 几周前,当我最初听到,以致后来初次接触Hadoop与MapReduce这两个东西,我便稍显兴奋,认为它们非常是神奇.而神奇的东西常能勾 ...

  10. Azure Devops/Tfs 编译的时候自动修改版本号

    看到阿迪王那边出品了一个基于Azure Devops自增版本号  链接 http://edi.wang/post/2019/3/1/incremental-build-number-for-net-c ...

随机推荐

  1. docker 6.1测试

    https://www.cnblogs.com/xiugeng/p/10193333.html#_label1 1.设置重启策略 [root@docker ~]# cat /etc/docker/da ...

  2. Python学习的个人笔记

    python基础知识 目录: Python基础语法: (1)打印出hello world (2)注释 (3)数据类型 (4)运算 (5)输入 (6)输出 (7)序列 (8)相等比较 (9)选择 (10 ...

  3. 【ActiveJdbc】05

    一.事务 通常在 Java ORM 中有一个显式连接或管理器对象(JPA 中的 EntityManager,Hibernate 中的 SessionManager 等). ActiveJDBC 中没有 ...

  4. 【Tutorial C】04 基本输入输出

    输出单个字符 putchar('a'); // 字符输出函数,其功能是在终端(显示器)输出单个字符. putchar('\n'); // 支持转义换行 putchar(77); // 可以直接注入AS ...

  5. 【C】Re05 指针

    一.变量 & 指针 变量 = 内存地址 + 存储值 指针变量 = 内存地址 + 存储值[变量的内存地址] 作用: 间接访问内存地址 内存地址 = 地址编号 地址编号:内存中的每个字节唯一的编号 ...

  6. 小米(xiaomi)自动驾驶技术的原始技术积累 —— CyberDog 仿生四足机器狗

    相关: https://www.youtube.com/watch?v=f0q8tfZ89Qo 小米公司一直没有加入到制造电动车的行列中,直到几年前才感觉造车是必须要走的路了,但是造车就一定是要造电动 ...

  7. 智能机器人(双足机器人、四足机器人、人形机器人humanoid)与自动驾驶技术/FSD(Full Self-Drive)“完全自动驾驶”在技术领域的相关性?

    前文: https://www.cnblogs.com/devilmaycry812839668/p/18079439 前文中已经说了,对于能力强大的机器人公司来说,软件和AI技术并不是难点,真正的难 ...

  8. baselines算法库common/vec_env/util.py模块分析

    util.py模块代码: """ Helpers for dealing with vectorized environments. """ ...

  9. Redis中的Hash类型常用命令

    一.hset命令作用:设置hash类型值:格式:hset key field value案例:192.168.0.111:0>hset product name 苹果"1" ...

  10. IntersectionObserver + scrollIntoView 实现电梯导航

    电梯导航也被称为锚点导航,当点击锚点元素时,页面内相应标记的元素滚动到视口.而且页面内元素滚动时相应锚点也会高亮.电梯导航一般把锚点放在左右两侧,类似电梯一样.常见的电梯导航效果如下,比如一些官方文档 ...