JOOQ可以完成JDBC数据源包装,实现方言转换,但是对于SQLServer,Oracle等方言的转换是收费的
Apache Druid也可以实现SQL字符串转换,但是不完整
Jboss Teiid也可以转换方言,比较复杂
Apache Calcite是Mycat2的默认分布式查询器,Mycat2在判断执行计划只涉及一个节点的时候,会直接使用原SQL发送到后端数据库数据源,而涉及多个节点的时候,会使用Calcite把执行计划变成SQL,此时会使用Calcite的方言转换功能
涉及一个数据源的SQL:
Mycat2->Alibaba Druid 解析MySQL方言 SQL->MySQL Jdbc Connection
Mycat2->Alibaba Druid 解析MySQL方言 SQL->Jooq 包装的Jdbc Connection把MySQL 方言SQL转换成目标方言SQL->比如Postgres SQL
涉及多数据源的SQL:
Mycat2->Alibaba Druid 解析MySQL方言 SQL->Apache Calcite根据执行计划生成目标方言的SQL->Jooq 包装的Jdbc Connection把Apache Calcite生成的SQL转换成方言SQL->比如Postgres SQL