10.5.3. 多发比对 Java 接口

10.5.3.1. 简介

多发比对提供了 Java API,可供 JAVA 程序直接调用;用户只需要在Maven项目中引入sql-convert-runtime依赖即可使用 JAVA API。

10.5.3.2. 接口说明

接口签名:

public static Result<MultiplexOutput> multiplex(String sourceDialect, List<TargetDialect> targetDialectInfos, Boolean needTransfer, Boolean batchFlag, String traceId)

该接口方法位于sql-convert-runtime模块中的com.hundsun.lightdb.unisql.golang.Transformer类中

10.5.3.3. 接口请求参数

接口请求参数

参数名

类型

是否必须

说明

sourceDialect

String

源端数据库方言,取值范围为:oracle/mysql

targetDialectInfos

List<TargetDialect>

比对目标数据库方言,可以选多个,存储到list中,具体存储内容在下面表格介绍

needTransfer

Boolean

业务DML是否需要SQL多发转换到目标库,true表示需要转换,false表示不需要转换, 默认为true

batchFlag

Boolean

入参targetDialectInfos中是否已经包含了所有需要比对验证的多库信息,false表示本次接口调用已包含所有库信息,true表示需要组合10s内所有该入参标记为true的接口调用的库信息进行统一比对,默认为false(预留参数,尚未支持)

traceId

String

用于查询比对的ID。如果入参targetDialectInfo中仅有一个成员,则本traceId为必填项,用于表明本次传入的1个目标库准备和哪些具有相同traceId的源/目标库一起进行结果比较验证,没有填写null。

接口请求参数 TargetDialect 结构体信息

参数名

类型

是否必须

说明

targetDialect

String

目标数据库类型以及兼容模式(大小写均可),例如:gaussdb_oracle

targetDbVersion

String

目标数据库版本(目前只有gaussdb_oracle有两个版本:500、505,默认505),不填则按照数据源配置中的默认版本

schemaName

String

多发执行时,会在每个目标数据库下指定的业务库或schema下执行sql,不填则按照数据源配置中的dbname执行sql

sql

String

业务原始sql

sqlParameters

List<BindVariable>

预编译sql语句的参数信息(如果业务原始sql中有绑定变量,则此参数必填),BindVariable结构在下面表格介绍

接口请求参数 BindVariable 结构体信息

参数名

类型

是否必须

说明

name

String

sql语句的绑定变量名(伪代码SQL中的@绑定变量的名字)

type

Integer

预编译sql语句的绑定变量参数值类型(java.sql.Types中的具体值)支持范围见如下:数据类型支持范围和java.sql.Types映射值章节

value

Object

预编译sql语句的绑定变量参数的内容

10.5.3.4. 返回参数说明

返回参数 Result 结构体信息说明

参数名

类型

是否肯定有返回值

说明

code

Integer

状态码,0表示成功,非0表示异常

message

String

比对信息描述,包括比对结果及比对错误信息原因等

data

MultiplexOutput

目标库多发发送时候traceId信息,里面只有一个属性,String traceId