返回首页

gbase数据、南大通用产品文档:GBase8aconsumer 宽松模式

更新日期:2024年09月11日

使用场景:
kafka consumer
JSON 里的update 操作只带需要的列,非全部列,consumer 遇
到这种情况,会先根据JSON 里的主键去8A 库里查询这一行的所有列的值,然
后把要更新的列替换为新值,再根据主键执行delete,最后insert 一行。
宽松模式下consumer 对数据操作的支持情况:
1.
宽松模式设置,下面两个参数均设置为0 后,开启宽松模式:
_t_gcluster_kafka_consumer_force_compare_field 设置为0
该参数默认值为1,
代表打开,
consumer 会对每个json 消息都严格比对字段名称、
字段顺序,最大程度的确保源端数据库没有发生DDL。
_t_gcluster_kafka_consumer_compare_field_only_once 设置为0
该参数默认值为0,设置为1 代表打开,打开时表示让consumer 只在第一次遇到
t 表的json 消息时,对字段名称和顺序进行严格比对,比对通过后就不再比对,
直接按最早的JSON 解析,此时会用到一些优化手段。能够保证源端数据库不会
做DDL 操作时可以考虑打开,一般不建议打开。
2.
宽松模式下consumer 对字段名称和顺序的要求如下:
条件1:字段名称必须大写;
条件2:允许关于t 表的任何一个JSON 消息,只要每个字段都属于目标表(允许
字段名称和顺序变化)。如:
目标表:t (A not null, B not null, C default 2, D default null)
JSON_1: insert into t (A, C, B)
OK
JSON_2: insert into t (A, B, C)
OK
JSON_3: insert into t (A, B)
OK

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1283
JSON_4: insert into t (B, C)
解析OK,入库报错。
t 建表指定了A 列不允许为空,需要用户自己保证。JSON_4 等同于insert into
t(A,B,C) values(NULL,xx,xx)
条件3:条件2 中缺少的字段,建表时应该指定default 属性,否则入库阶段可能
出错,这个由用户自己保证。
3.
宽松模式下consumer 对DDL 支持不变:
consumer 不支持除truncate 外其他DDL 的同步
说明
以前版本非宽松模式下支持情况说明
1、字段名称必须大写
2、允许关于t 表的第一个JSON 消息中,不给出所有字段,也允许字段顺序
与8a 不一致,但是后面的消息也都必须保持这样,否则报错。
3、条件2 中缺少的字段,建表时应该指定default 属性,否则入库阶段可能出
错。这个由用户自己保证。

ifx_rc_create() 函数为行或集合创建缓冲区。
语法
ifx_rc_create(rchandle, typespec)
参数
该函数接受以下参数。
参数
类型
用于
描述

GBase 8s ODBC Driver 程序员指南
南大通用数据技术股份有限公司
- 179 -

参数
类型
用于
描述
rchandle
HINFX_RC
输出
行或集合缓冲区的句柄
typespec
SQL_CHAR
输入
缓冲区的类型规范。参见下表。
下表描述了 typespec 参数的语法。
缓冲区的类型
语法
示例
不固定型集合
COLLECTION
COLLECTION
固定型集合
COLLECTION {SET |
MULTISET |
LIST} (type not null)

{SET | MULTISET | LIST
(type not null)
type 是集合中元素的 GBase 8s
SQL 数据类型

COLLECTION SET (int not null)

SET (int not null)
不固定型集合
ROW
ROW
固定型集合
ROW [“name”] (field_id type [,
field_id type, ...])
其中:
7.
name 是整个行的可选名称
8.
field_id 是字段的名称
9.
type 是字段的 GBase 8s
SQL 数据类型
ROW “employee_t” (name
char(255), id_num int, dept int)
用法
ifx_rc_create() 函数为行和集合分片内存,并返回一个句柄到缓冲区。下表描述了函数初始
化缓冲区的方式。
缓冲区的类型
行或集合的初始值
行或集合的内容的初始值
Fixed-type collection
非空

Fixed-type row
非空
每个值都为空
Unfixed-type collection


Unfixed-type row


对于行,函数将第一个元素设置为查找位置。空集合缓冲区不具有查找位置。


GBase 8s ODBC Driver 程序员指南
南大通用数据技术股份有限公司
- 180 -

取值:[0|1]
默认值:0
说明:拉表评估时,当该值不为0 时,若小表拉表的数据行数大于该值,则进行
HASH 重分布JOIN。该参数的默认值是0,即不需要判断阈值。
修改方式:
可使用set 语句修改值也可在配置文件中修改值。
适用于session、
global
范围均可。

GBase 8a MPP Cluster 参数手册
文档版本2022-06-07
南大通用数据技术股份有限公司
65