“G”术时刻:GBase 8a数据库集群透明网关与DBLINK-异构数据源

62 阅读2分钟

异构数据源

DBLink网关支持异构数据源oracle、mysql、hive、teradata、sybase等。

网关数据源配置

dblink网关oracle/mysql /teradata数据源:

图片

dblink查询语法约束

针对异构数据源,新增语法约束:

除union(也包括minus、union all、intersect)查询外,异构数据源dblink表只允许出现在from子查询中。假设olink 为异构数据源dblink对象,例如以下SQL:

图片

oracle/mysql /teradata语法兼容性

对于oracle/mysql /teradata的方言及专有函数等不作支持。

对于异构数据源 oracle :

参数 _t_gcluster_dblink_clear_syntax_constraints =2:不支持dblink查询中使用 group_concat 函数。

参数 _t_gcluster_dblink_clear_syntax_constraints =1:支持dblink查询中使用 group_concat 函数。

元数据兼容性

Oracle/mysql /teradata的大对象数据类型(如blob,clob等)、binary、long数据类型本期不支持。支持oracle基本数据类型(字符型、数字型及日期型等)。

gbase的decimal(p,s), p即精度最大值支持到65位,s即小数,最大值为 30;oracle 的number(p,s) 类型,s超过30 ,dblink网关将映射为gbase的double数据类型,由于double类型是非精确的数据类型,会有精度损失;

由于oracle的date类型可以存储时分秒信息,对于异构数据源oracle的date类型,会映射为GCluster的datetime类型。使用dblink查询oracle的date类型数据会带上时分秒信息,可以用to_date函数格式化输出去掉时分秒信息。

字符集

能够支持oracle/mysql /teradata源为UTF8及GBK/GB2312字符集,支持中文数据源。

SQL功能支持的场景

dblink异构数据源SQL功能支持的场景与同构数据源保持一致:

支持select语句查询dblink表;

支持create…select.. , select部分使用dblink查询;

支持insert..select ..,select 部分使用dblink查询;

支持多表关联delete,源部分使用dblink查询;

支持存储过程中使用dblink查询;

支持prepare语句对dblink查询进行预处理。

示例

图片

SQL功能不支持的场景

以下SQL功能和同构数据源一致,暂不支持:

不支持对dblink表进行DDL操作,如drop table,alter table等操作;

不支持使用dblink查询创建视图;

不支持使用dblink表或查询作为update的源关联更新本地表;

不支持merge语句using源部分使用dblink查询;

不支持function中使用dblink查询。

示例:

图片