关键字:
中电科金仓、KingbaseFlySync、KDTS、迁移、数据迁移、存量迁移、DWS
1. 使用场景
DWS存储数据,采用了水平分表的方式,将业务数据表的元组打散存储到各个节点内,且DWS支持的数据分布策略为:复制表(replication)、哈希表(hash)、轮询表(Roundrobin)。
当用户采哈希表存储方式时,就需要指定一列作为分布列,并且DWS要求:
1、如果表存在主键,分布列必须是主键列(如果表是联合主键,那么可以是联合主键中的一列)
2、分布列不能被更新
但是在实际业务场景中,是存在更新主键的情况的。基于此,KDTS工具支持在DWS表中新增一列,作为分布列:
1、新增列是自增列
2、如果原表是无主键表,则新增的列作为单列主键
3、如果原表有主键,则新增列和原表的主键列整合,作为新表的联合主键
2. 配置使用方式介绍
2.1. WEB配置方式


2.2. SHELL版本配置方式

3. 参数生效的规则
如果不dwsTableHashDistributeKey,那么数据迁移到KDTS时,将不会自动新增列作为分布键
4. 实际迁移效果
源端表结构:
create table key_int(id int primary key,a int);
create table nokey(id int ,a int);
配置dwsTableHashDistributeKey为kfstest后,迁移到DWS中的表结构:
SET search_path = public;
CREATE TABLE key_int (
id integer NOT NULL,
a integer,
kfstest integer DEFAULT nextval('key_int_kfstest_seq'::regclass) NOT NULL
)
WITH (orientation=row, compression=no)
DISTRIBUTE BY HASH(kfstest)
TO GROUP group_version1;
ALTER TABLE key_int ADD CONSTRAINT "PRIMARY_4F1013B5" PRIMARY KEY (id, kfstest);
SET search_path = public;
CREATE TABLE nokey(
id integer,
a integer,
kfstest integer DEFAULT nextval('nokey_1_kfstest_seq'::regclass) NOT NULL
)
WITH (orientation=row, compression=no)
DISTRIBUTE BY HASH(kfstest)
TO GROUP group_version1;
ALTER TABLE nokey_1 ADD CONSTRAINT "nokey_1_pkey_kfstest_70B5444C" PRIMARY KEY (kfstest);
不配置dwsTableHashDistributeKey为ptag后,迁移到DWS中的表结构:
SET search_path = public;
CREATE TABLE key_int (
id integer NOT NULL,
a integer
)
WITH (orientation=row, compression=no)
TO GROUP group_version1;
ALTER TABLE key_int ADD CONSTRAINT "PRIMARY_4F1013B5" PRIMARY KEY (id);
SET search_path = public;
CREATE TABLE nokey(
id integer,
a integer
)
WITH (orientation=row, compression=no)
TO GROUP group_version1;




