codefollower/My-Blog

可以开始初步像使用MySQL一样使用Lealone了

codefollower opened this issue · 0 comments

因为很多年以前已经做过MySQL的商业级别的分库分表中间件了,所以后来做新的NewSQL数据库时就想换一种玩法。

加上不喜欢用C++写代码更偏爱java,同时又不想从零开始一行行堆代码,最后选择了H2数据库作为研究和实验的对象。

Lealone就是这六年时间内从H2陆陆续续演化来的,现在两者的差异远大于共性,就剩下SQL语法比较像了。

目前单机关系数据库MySQL才是主流,用户已经养成难以改变的使用习惯了,为了兼容MySQL至少得实现相同的client到server的网络协议,然后兼容尽可能多的SQL语法,不基于MySQL的代码是很难很难做到100%兼容的。

就算兼容绝大多数常用的功能也是个体力活,而且使用落后的MySQL协议也有很多限制,比如不能在一个TCP连接中管理多个session,客户端就必须延用古老的连接池技术,原有的MySQL驱动也还是用传统的同步模型。更别说做一个smart client了。

虽然兼容MySQL有种种缺点,但考虑到用户习惯,同时从推广角度想一想,还是可以做一做的。

Lealone通过插件的方式兼容MySQL,目前实现了基本的协议,协议的实现代码是从cobar项目剥离改造来的,SQL parser是手写的,因为Lealone的语法跟MySQL挺像的,所以后续只需要把差异性补上就可以了。
这里是具体代码

PostgreSQL的协议从H2那里很早就有初步的支持了,后续有强烈的需求再逐步完善,包括语法支持。