假期小长假,哪里都没去,三天都在出门和朋友吃饭,在家打发时间的循环中度过。而这三天的时间里实际上却做了两件和国产数据库相关的两件事。
HaloDB的体验
因为拖延症,本来去年就该去测试的HaloDB一直拖延到最近开源,才在自己的测试环境中部署测试。
首先要说的是,这是我用过的国产数据库安装手册写的最好的,从操作系统参数的配置到用户的建立文件目录的建立以及权限的修改,一步一步只需要复制粘贴,在执行之前确认一下即可。而安装配置完的初始化以及服务参数的配置,对于有过生产环境部署PG的我来说,也很熟悉,所以整个过程非常丝滑,从创建数据库用户到完成Oracle兼容模式的配置并启动服务,10分钟左右完成。

让我总结一下安装部署的几个特点:
1. 步骤明确。每一步的目的是什么,要做什么,都很明确,无论对于新手还是数据库老鸟,都可以有据可依,不会出现个别数据库产品猜谜的情况。
2. 参数配置。参数配置会告诉用户,每一步配置的意义以及参数建议,能够照顾到不同类型的数据库用户。
3. 复制。如果在生产环境上部署,高可用是必须的。但是很遗憾的是,很多数据库安装配置手册把安装并启动服务与高可用这两部分是完全分开的,可是实际上很多时候这两部分可能是同时要做的。
在开启了Oracle兼容性模式之后,又做了一些实验,并且跑了几个之前的命令或者脚本,兼容性整体令人满意。而作为曾经的产品经理,去拆解产品文档和配置文件也是我的一个兴趣,这里值得一提的是,HaloDB目前支持的数据库兼容模式有MySQL/Oracle/PostgreSQL三种模式,而在参数文件里,还有尚未支持的SQL Server等其他数据库,能看出团队的未来规划,期待这些模式都能一个个实现。
而在通读的产品文档,以及做了一些相关实验之后,我能总结出如下几个特点:
1. 高度兼容性。尤其是文档中提出的多模解析引擎,支持 Oracle/MySQL/PostgreSQL 等主流数据库语法、函数、视图和包,对数据库迁移带来的便捷十分可观。而且通过参数 database_compat_mode 可快速切换兼容模式(如 Oracle 或 MySQL),这个功能我很喜欢,也是之前用过的数据库里不曾体验的。
2. 插件扩展性强。既然是和PG有源,那么PG生态最大的优势,插件功能就可以无缝使用,无论是需要分布式架构还是各种扩展功能,都可以从开源网站的各种PG插件中去寻找自己想要的,这一点极大提高了潜在功能的范围。
3. 高可用。同时支持物理备份和逻辑备份,同步复制和异步复制等方式,提供了很多可选择的余地。而手册里面读写分离方案(Halo dlb),是我在阅读过程中着力去研究的部分,用负载均衡提升查询效率,很值得一试。
4. 优化与诊断工具。HWR,顾名思义,就是HaloDB版的AWR报告,用过AWR报告的朋友都很清楚这个工具有多重要,HWR提供了类似的工具,也许当下功能还没有我预期中的完善,但是我觉得未来不是问题。
国产数据库的兼容性
无独有偶,这几天前公司的同事来北京跟我吃饭,我们讨论起国产数据库出海去抢其他产品市场这件事情时,有一个很有意思的话题:国产数据库为什么非得去兼容谁谁谁?比如HaloDB除了原生的PostgreSQL,为什么还要去兼容MySQL或者Oracle?
放到2025年,还去聊这个话题,是不是有点老生常谈了?实际上这也暴露了一个问题,相当多的国产数据库从业者,对于为什么先从兼容其他数据库开始,并没有一个确定的认知。
其实还是要和国产数据库的发展有关。中国数据库的爆发式增长也就是过去几年的事情,而根据盖总写的《数据库简史》,最早的数据库雏形,距离今天已经超过半个世纪。还是拿我最常举例的国产车为例,(家用车的)油门和刹车都在右脚,这是汽车从发展至今大家制定下来的行业标准。而新的品牌进来,能不能改成两个都在左边?能不能改成方程式赛车的一左一右?技术上也许可以,但是在面习惯和国家标准以及法律法规面前,去强行让司机去适应,无异于自寻死路。
数据库发展到今天,SQL语法已经有了好几版标准,方言分支也有好几个,各种数据库的最大公约数和行业标准早已经有了定论。国产数据库想要从头做起,搞一套单独的语法肯定不现实,模仿某个主流语法开开始,再到内核功能的模仿,由表及里最后看起来像某个数据库,但是实际用起来以及内核,早已经有了自己的体系。大家通过这个学习过程,逐步学习并掌握新的数据库,是一个最现实的路径。
就好比现在的新能源汽车,其实三电和过去的发动机变速箱早已经不是一回事,而司机也好,车厂也好,已经通过前期的模仿,逐渐走出了属于自己的路。
为什么有些数据库兼容性做的好,最终却失败了?
兼容性带来的争议,同样也不可小觑,过度兼容可能导致国产数据库成为“仿制品”,削弱核心技术竞争力。比如我知道有些厂商,模仿MySQL,却没有学到MySQL简单易用部署方便的特性,模仿Oracle,却没有学到Oracle稳定可靠的内核,模仿PG……哦,PG直接可以拉代码。学来学去,学了个样子,但是却没有搞清楚为什么这些数据库会成功。徒有其表最终还是活不下去。
回到HaloDB的兼容性,怎么样?
我觉得能做到三个模式的兼容,已经很不容易了。基于PG原生功能的基础上,能够通过参数切换,更是让我眼前一亮,根据实际需要,来切换兼容模式。还有诸如完整支持 REPLACE INTO、INSERT IGNORE、ON DUPLICATE KEY UPDATE 等特性这些都是相当实用的功能,在过去我做数据库产品经理的时候,这些看似简单的语句兼容,可能背后就是计算引擎乃至存储引擎的调整,实际工作量不小。
结尾我想说的是,我在HaloDB的吐槽群里潜水了很久,这是一家画风不同的数据库企业,只要说的有理有据,原厂的工作人员都会虚心接受。




