暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

金仓数据库KDTS迁移到DWS时自动新增列作为分布列

原创 KFS补给站 2024-12-20
68


关键字:

中电科金仓、KingbaseFlySync、KDTS、迁移、数据迁移、存量迁移、DWS

1. 使用场景

DWS存储数据,采用了水平分表的方式,将业务数据表的元组打散存储到各个节点内,且DWS支持的数据分布策略为:复制表(replication)、哈希表(hash)、轮询表(Roundrobin)。

当用户采哈希表存储方式时,就需要指定一列作为分布列,并且DWS要求:

1、如果表存在主键,分布列必须是主键列(如果表是联合主键,那么可以是联合主键中的一列)

2、分布列不能被更新

但是在实际业务场景中,是存在更新主键的情况的。基于此,KDTS工具支持在DWS表中新增一列,作为分布列:

1、新增列是自增列

2、如果原表是无主键表,则新增的列作为单列主键

3、如果原表有主键,则新增列和原表的主键列整合,作为新表的联合主键

2. 配置使用方式介绍

2.1. WEB配置方式

图片.png

2.2. SHELL版本配置方式

 

图片.png

 

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;





「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论