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

"另类MySQL"-openHalo 初体验

韩锋频道 2025-04-10
169
近日,国内新锐数据库厂商 Halo 开源了自己首个开源项目-openHalo,它基于PG内核实现了兼容MySQL的能力,受到了业内的广泛关注。作为最大的两个开源项目,MySQL\PostgreSQL 拥有着庞大的用户群体。而这一开源项目,将两者统一起来,让很多MySQL生态用户,可以平滑迁移到PG生态上来。我也抽了点时间做个简单的评测,下面将从通讯协议、数据类型、数据对象、字符集、SQL语法、过程化语言、内置函数、系统视图及其他等角度进行阐述。也欢迎感兴趣的小伙伴,Fork/Star这一项目,支持国产数据库厂商。
https://github.com/HaloTech-Co-Ltd/openHalo


1. 准备篇:安装及初试化

在初始安装部分,基本可参考github上的步骤一路执行下来。只是在初始化时一直报权限不足,后跟Halo同学请教,修改为如下操作就可以了。


2. 体验篇:九个维度大测试

1).通讯协议

openHalo 原生支持了MySQL通讯协议,这对于用户来说无疑会非常方便。可以使用标准的MySQL Client连接openHalo,使用体感与MySQL无异。之前在观看直播时也谈到了,目前针对GUI Tools还有一定欠缺,尚不能完美支持,主要还是在一些数据字典的支持上,还没有做的很完善。

2).数据类型
数据类型方面,openHalo支持了绝大部分数据类型,基本可以满足日常的需要。
我将支持的字段类型整理为一张表格
3).字符集
从字符集兼容角度来看,MySQL 支持了多种字符集,如utf8mb4、gbk、latin1等;Halo处理上应该是做了简化处理,只保留了对utf8mb4的支持,其他会做忽略处理。
4).数据对象
openHalo 支持了大部分数据对象,常见的表、索引、约束、视图等都没问题。但对于MySQL一些个性化的能力,如前缀索引、全局索引还不支持。

✦ 表

普通表的创建,Halo是没有问题,但对分区表目前还不支持。


openHalo背后是基于PG构建的,那么在MySQL模式下创建的表又存到哪里了呢?其实是将MySQL中的dbname对应到PG下的schema,如下图就是在MySQL兼容模式下创建的表,在PG模式下查到的对应对象。

✦ 索引

✦ 约束

主流约束,如主键、外键、唯一、非空都支持了。

✦ 其他:自增

5).SQL语法
SQL语法是很复杂的,坦白讲很难保证一个数据库去完全兼容另一款数据库的语法。这其中是需要有大量的完善补充的工作。受精力所限,这里没有测试很多Case,拿了一个稍复杂些的SQL看了看。
但值得关注的是,不仅仅要满足语法兼容,更重要的是语义兼容性。例如下图就是针对NULL对排序的影响,可见在MySQL和PG的处理逻辑就不同,而openHalo则细心的做了适配。
6).过程化语言
针对过程化语言,之前在直播环节谈到是支持的,但我在测试时是有问题的,后面有时间再琢磨琢磨。
7).内置函数
针对大量的内置函数,兼容适配的工作量是不少的,可喜的是openHalo做了大量的适配,常见的函数基本都可以使用。
8).系统视图
系统视图的适配难度更大些,毕竟两个数据库的差异明显,这里没有具体探究适配情况,大体统计了一下当前的适配的对象。这其中有大量的细致工作,包括具体每个字段含义是否兼容。
9).其他方面
针对MySQL常用的一些命令,也做了一些测试。这些对于使用者会非常方便


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

评论