1. 前言

1.1. 背景

恒生聚焦的金融行业业务数据量通常非常大,需要高度安全性和可靠性,并且需要能够快速进行复杂查询和交易处理。以前Oracle是金融行业首选的数据库(稳定、高可靠、高性能、安全、市场份额高),但是在信创背景下,国产数据库的崛起正在逐步改变市场格局。恒生越来越多的客户有适配信创数据库的业务需求。虽然Oracle数据库主体上遵循SQL92/SQL99标准,但是也有不少特殊的方言、专有的内置函数,适配的难度高。

1.2. 简介

LightDB 统一SQL 是一款基于 Go 开发的 SQL 转换中间件,支持将 Oracle 常用 SQL 语法翻译转换为其他数据库的 SQL 。以主流数据库Oracle的SQL为基准,将SQL语句转换为其他信创数据库(LightDB、PostgreSQL、TDSQL、DM8、OceanBase、openGauss等)的SQL语句。目标是降低业务部门适配信创数据库的成本,让用户尽可能少地修改数据访问层代码,使基于Hibernate、JPA、MyBatis等框架的Java应用程序,基于oci、libmysqlclient、cres开发工具、hsdb的c/c++应用程序以及其它能够调用c函数的程序都能够直接切换到目标信创数据库,实现信创数据库之间的平滑迁移。

1.3. 目标

实现以下功能:

  • 支持目标数据库:LightDB、PostgreSQL、TDSQL、DM8、OceanBase、openGauss

  • 将Oracle SQL语句转换为目标数据库的SQL语句

  • 转换后的SQL语句可在Hibernate、JPA、MyBatis等框架的应用程序中正常运行,尽可能少修改业务代码

  • 转换后的SQL语句在语义上等价于原SQL语句,不引入新的语法错误或逻辑错误

  • 转换后的SQL语句性能不明显退化,满足业务需求