news 2026/11/5 15:52:40

2.1.2-2、V8R3迁移到V8R6-迁移介绍

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
2.1.2-2、V8R3迁移到V8R6-迁移介绍

一、迁移工具介绍

1、数据迁移工具

​ 金仓支持应用系统离线迁移、在线迁移。

  • 离线迁移(业务停机)一般使用 KDTS 完成全量迁移(所有对象定义和数据的迁移);
  • 在线迁移(业务不停机)使用 KFS,实现全量数据搬迁、增量数据同步,将源数据库的对象定义和数据搬迁到目的数据库。
工具特性对比KDTSKFS
是否支持迁移存储过程等对象定义迁移支持所有对象定义的迁移支持表结构和主键的定义的迁移
同步一次,还是持续同步一次同步持续同步
是否需要初始状态同步不需要需要
跨平台支持支持
迁移部分表支持支持
迁移一个表的部分数据支持支持
断点续传不支持支持

2、调试工具

  • 命令行的ksql
  • 图形化的KStudio
工具特性对比ksqlKstudio
执行 SQL支持支持
直接编辑数据需要写 SQL 语句支持,通过图形界面直接编辑
执行存储过程支持支持
查看 SQL 执行计划支持支持
调试 plsql支持支持
数据库状态分析不支持不支持
慢 SQL 分析不支持不支持

3、数据同步工具

  • 自带的物理同步
  • KFS
工具特性对比物理同步功能KFS
跨 CPU支持支持
断点续传支持支持
同步部分对象不支持支持
同步所有操作支持支持
  • 自带物理同步,用于两套 KingbaseES 之间同步,以整个 data 目录为单位,无法单独同步部分对象;可同步全部用户操作,支持断点续传与事务重放。
  • KFS 用于 V8R3 与 V8R6 跨版本同步,支持筛选部分对象,同步粒度更灵活。业务割接需双轨运行时,可按需选用物理同步或 KFS。

4、备份工具

  • 逻辑备份:sys_dump
  • 物理备份:sys_rman
工具特性对比sys_dumpsys_rman
异构数据源不支持不支持
支持增量不支持支持
支持根据日志恢复到指定时间点不支持支持
备份单个表支持不支持
可以不备份指定表支持不支持
  • sys_dump 是逻辑备份,对象选择灵活、支持单表备份,无增量能力,不能配合 redo 日志;
  • sys_rman 为物理备份,整实例备份,不支持单表,支持增量。

二、支持产品能力

1、模式对象和数据类型

模式对象

序号模式下对象创建示例 SQL
1表和分区create table t1(id int) partition by range(id);
2视图(包含 force view)create force view v1 as select * from t1;
3可更新视图create view v_update as select id from t1;
4触发器create trigger tr1 before insert on t1 for each row execute function func_test();
5规则create rule r1 as on insert to t1 do nothing;
6约束alter table t1 add constraint pk_t1 primary key(id);
7索引create index idx_t1 on t1(id);
8数据库连接 dblinkcreate extension dblink; create database link link1 connect to system using 'host=127.0.0.1 port=5432 dbname=test';
9函数create function func_test() returns void as $$ begin end; $$ language plsql;
10存储过程create procedure proc_test() as $$ begin end; $$ language plsql;
11操作符create operator +> (leftarg=int, rightarg=int, procedure=int4add);
12包create package pkg_test is procedure p1; end pkg_test;
13序列create sequence seq1 start with 1;
14同义词create synonym syn_t1 for t1;
15外部数据源create foreign data wrapper fdw_test; create server srv1 foreign data wrapper fdw_test;
16数据类型create type typ1 as (col1 int, col2 text);
17标记和策略alter table t1 enable row level security; create policy pol1 on t1 for select using(true);
18域 domaincreate domain domain_int as int check(value>0);
19扩展包create extension pg_stat_statements;
20全局临时表create global temporary table gtt1(id int) on commit preserve rows;
21DUAL 表内置,无需创建,查询示例:select 1 from dual;
22ROWNUM, LEVEL 等伪列内置,无需创建,查询示例:select rownum,level from t1 connect by level<=10;
23匿名块do $$ begin raise notice 'hello'; end $$;
24表达式,包括条件表达式等内置,无需创建,示例:select case when id>1 then 1 else 0 end from t1;

数据类型

序号分类KingbaseES 数据类型作用建表示例 SQL
1数值型smallint短整型,占用 2 字节,存储小范围整数create table t(id smallint);
2数值型integer整型,占用 4 字节,常用整数类型create table t(id integer);
3数值型bigint长整型,占用 8 字节,存储大范围整数create table t(id bigint);
4数值型decimal定点高精度数值,适合金额财务数据create table t(val decimal(10,2));
5数值型numeric和 decimal 等价,任意精度小数,无精度丢失create table t(val numeric(10,2));
6数值型numberOracle 兼容定点数,支持精度与刻度定义create table t(val number(10,2));
7数值型real单精度浮点数,4 字节,存在精度损失create table t(val real);
8数值型float浮点数,可指定精度,Oracle 兼容浮点类型create table t(val float);
9数值型double precision双精度浮点数,8 字节create table t(val double precision);
10数值型double等价 double precision,双精度浮点简写形式create table t(val double);
11数值型smallserial自增短整型,自动生成递增序列号create table t(id smallserial);
12数值型serial自增整型,常用主键自增类型create table t(id serial);
13数值型bigserial自增长整型,适合海量数据主键自增create table t(id bigserial);
14字符型character(n[char|byte]), char(n[char|byte])定长字符,不足长度自动补空格create table t(name char(10));
15字符型character varying(n[char|byte]), varchar(n[char|byte]), varchar2(n[char|byte])变长字符,varchar2 为 oracle 兼容变长字符串create table t(name varchar2(50));
16字符型nvarchar(n[char|byte])unicode 变长字符,存储多语言中文create table t(name nvarchar(50));
17字符型text无上限变长文本,存储大段文字内容create table t(content text);
18大对象型clob, nclob字符大对象,oracle 兼容,存储超大文本create table t(big_text clob);
19大对象型blob二进制大对象,存储文件、图片二进制流create table t(big_data blob);
20日期时间型timestamp [§] [ without time zone ]不带时区时间戳,保存年月日时分秒create table t(ts timestamp);
21日期时间型timestamp [§] with time zone带时区时间戳,跨时区业务使用create table t(ts timestamptz);
22日期时间型date仅保存年月日日期,不含时分秒create table t(dt date);
23日期时间型time [§] [ without time zone]不带时区时间,仅存时分秒create table t(tm time);
24日期时间型time [§] with time zone带时区的时分秒时间类型create table t(tm timetz);
25日期时间型interval year时间间隔,以年为单位create table t(itv interval year);
26日期时间型interval month时间间隔,以月为单位create table t(itv interval month);
27日期时间型interval day时间间隔,以天为单位create table t(itv interval day);
28日期时间型interval hour时间间隔,以小时为单位create table t(itv interval hour);
29日期时间型interval minute时间间隔,以分钟为单位create table t(itv interval minute);
30日期时间型interval second时间间隔,以秒为单位create table t(itv interval second);
31日期时间型interval year to month时间间隔,年 + 月组合create table t(itv interval year to month);
32日期时间型interval day to second时间间隔,天 + 时 + 分 + 秒组合create table t(itv interval day to second);
33布尔型boolean布尔类型,取值 true/false/nullcreate table t(flag boolean);
34二进制型bit(n)定长二进制位串,存储比特数据create table t(bits bit(8));
35二进制型bit varying(n)变长二进制位串create table t(bits bit varying(100));
36XML 型xmlxml 数据专用类型,支持 xml 解析查询create table t(xml_data xml);
37数组型array数组类型,一列存储多个同类型元素create table t(arr int[]);
38枚举型enum自定义枚举,限定字段只能取预设值create type color as enum('red','blue'); create table t(c color);
39JSON 型jsonjson 文本存储,原始 json 字符串create table t(j_data json);
40JSON 型jsonb二进制 json,支持索引,查询性能更高create table t(j_data jsonb);
41UUID 型uuid全局唯一 id,分布式场景主键create table t(uid uuid);
42GIS 型point空间点坐标类型,地理信息create table t(geo point);
43GIS 型line空间线段类型create table t(geo line);
44GIS 型box空间矩形框类型create table t(geo box);
45GIS 型path空间路径类型create table t(geo path);
46GIS 型circle空间圆形类型create table t(geo circle);
47GIS 型polygon空间多边形类型create table t(geo polygon);
48GIS 型geometry通用空间几何类型,postgis 扩展使用create table t(geo geometry);

2、SQL

分类语法项作用示例 sql
数据操作insert | update | delete新增、修改、删除表内数据insert into t1(id) values(1); update t1 set id=2 where id=1; delete from t1 where id=2;
数据操作truncate快速清空整张表数据,不记录单行日志truncate table t1;
数据操作merge into合并数据,匹配则更新、不匹配则插入(upsert)merge into t1 using t2 on (t1.id = t2.id) when matched then update set name=t2.name when not matched then insert(id,name) values(t2.id,t2.name);
数据操作insert first/all多条件分支插入数据,first 匹配第一条即终止;all 匹配全部条件insert first when id<10 then into t1(id) values(id) else into t2(id) values(id) select id from t_src;
数据操作copy批量导入 / 导出表数据,适合大批量文件数据交换copy t1 from '/data/file.csv' with (format csv);
数据操作cluster根据索引物理重排表数据,使数据按索引有序存储cluster t1 using idx_t1;
数据查询select查询数据表中的数据select id,name from t1 where id>1;
数据查询层次查询 connect by树形、层级递归查询(oracle 风格层级查询)select id,level from t1 connect by prior id = pid start with id=1;
数据查询lateral 子句支持关联前面表的字段,执行子查询select * from t1 left join lateral (select name from t2 where t2.t1_id = t1.id limit 1) sub on true;
数据查询外连接操作符 (+)oracle 风格简写外连接语法,标记一侧为驱动表的附属表select * from t1,t2 where t1.id = t2.t1_id(+);
数据查询with [recursive] 子句cte 公用表表达式,recursive 支持递归查询with recursive cte as (select 1 as n union all select n+1 from cte where n<10) select * from cte;
数据查询prepare, execute预编译 sql,一次编译多次执行,提升重复查询性能prepare p1(int) as select * from t1 where id=$1; execute p1(1);
数据查询values 子句构造临时数据集,可直接用于查询、关联select * from values (1,'a'),(2,'b') as tmp(id,name);
数据查询explain查看 sql 执行计划,用于 sql 性能分析调优explain select * from t1 where id>1;
数据整理analyze收集表、索引统计信息,供优化器生成执行计划analyze t1;
数据整理vacuum清理表过期元组,回收存储空间,更新可见性映射vacuum t1;
数据整理reindex重建索引,修复索引碎片、损坏索引reindex table t1;
事务控制语句begin, start transaction开启数据库事务begin;
事务控制语句commit提交事务,持久化事务内所有修改commit;
事务控制语句rollback回滚事务,撤销事务内所有未提交修改rollback;
事务控制语句savepoint | release savepoint | rollback to savepoint设置保存点,支持局部回滚到指定节点,不回滚整个事务begin; savepoint sp1; insert into t1 values(1); rollback to savepoint sp1; release savepoint sp1; commit;
事务控制语句set transaction { read only | read write }设置事务读写属性,只读事务禁止 dml 修改set transaction read only;
事务控制语句prepare transaction两阶段事务提交,分布式事务预提交prepare transaction 'tx_001';
权限语句grant授予用户对象权限或系统权限grant select on t1 to user1;
权限语句revoke回收已经授予用户的权限revoke select on t1 from user1;

3、PL/SQL

序号分类语法项作用示例 sql
1PL/SQL 基础语句赋值语句给变量赋予指定值,支持变量之间赋值declare v_num integer; begin v_num := 10; end;
2PL/SQL 基础语句if-then-else 语句条件分支判断,满足条件执行对应代码块declare v_num integer:=5; begin if v_num>0 then raise notice '大于0'; else raise notice '小于等于0'; end if; end;
3PL/SQL 基础语句case 语句多分支条件判断,简化多 if 嵌套场景declare v_type integer:=1; begin case v_type when 1 then raise notice '类型1'; when 2 then raise notice '类型2'; end case; end;
4循环语句loop、while-loop、for loop循环执行代码块;loop 无条件循环,while 按条件循环,for 遍历集合循环declare v_i integer:=1; begin loop raise notice '%',v_i; v_i:=v_i+1; exit when v_i>3; end loop; end;
5变量属性% type 属性和 % rowtype 属性% type 引用表字段类型;% rowtype 直接引用表一行记录结构declare v_name t1.name%type; v_row t1%rowtype; begin select name into v_name from t1 limit 1; end;
6游标ref cursor 游标动态游标,运行时绑定查询,可作为参数传递declare type ref_cur is ref cursor; cur ref_cur; v_id integer; begin open cur for select id from t1; fetch cur into v_id; close cur; end;
7异常处理预定义异常和自定义异常捕获程序运行错误,可自定义业务异常,异常发生时执行容错逻辑declare exp_custom exception; begin raise exp_custom; exception when exp_custom then raise notice '捕获自定义异常'; end;
8游标属性% notfound、% found、% isopen 和 % rowcount游标状态属性:% found 是否读到行;% notfound 无数据;% isopen 游标是否打开;% rowcount 返回已读取行数declare cur cursor for select id from t1; v_id integer; begin open cur; fetch cur into v_id; if cur%found then raise notice '有数据'; end if; close cur; end;
9DML 扩展returning into 语句dml 执行后,直接把修改的数据返回存入变量declare v_id integer; begin insert into t1(name) values('test') returning id into v_id; end;
10动态 SQLexecute immediate 语句执行动态拼接的 sql 字符串,支持动态表名、条件declare v_sql text; begin v_sql:='select count(*) from t1'; execute immediate v_sql; end;
11批量处理bulk collect批量读取查询结果,一次性把多行数据存入集合,减少循环开销declare type t_arr is table of t1.id%type; v_arr t_arr; begin select id bulk collect into v_arr from t1; end;
12消息输出raise 语句打印提示消息、抛出异常,用于调试输出信息begin raise notice 'hello plsql'; end;
13集合类型PL/SQL 集合类型(关联数组、嵌套表、可变数组)存储一组同类型数据,类似数组,用于批量数据处理declare type nt is table of integer; v_nt nt:=nt(1,2,3); begin raise notice '%',v_nt(1); end;
14PL/SQL 对象触发器(行级触发器,列级触发器,事件触发器)表发生增删改时自动执行代码,实现数据约束、审计create trigger tr_t1 before insert on t1 for each row begin raise notice '触发行级触发器'; end;
15PL/SQL 对象函数,嵌套函数有返回值,可在 sql 中调用;嵌套函数在函数内部定义子函数create function f_get_id() returns integer as $$ begin return 1; end; $$ language plsql;
16PL/SQL 对象存储过程封装业务逻辑,无返回值,用于复杂事务处理create procedure proc_insert() as $$ begin insert into t1 values(1); end; $$ language plsql;
17PL/SQL 对象匿名块临时执行的 PLSQL 代码,不持久化存储,一次性脚本declare v_msg text; begin v_msg:='test'; raise notice '%',v_msg; end;
18PL/SQL 对象package程序包,把过程、函数、变量封装成一个模块,管理一组相关逻辑create package pkg_test as procedure p_test(); end pkg_test;
19PL/SQL 对象object type自定义对象类型,可定义属性与成员方法,面向对象特性create or replace type obj_test as object(id integer,name varchar2(10));

4、客户端编程

接口编程

序号编程语言KingbaseES 对应支持
1JAVAJDBC
2.Net.Net Data Provider
3C/C++Pro*C
4C/C++DCI
5ODBC
6OCCI
7Phppdo
8Perlpdi
9Pythonksycopg2
10golanggokb
11Node.jskb

开发框架

序号开发框架KingbaseES 对应支持简介
1Hibernate支持Java 老牌 ORM 持久化框架,将对象映射到数据库表,屏蔽原生 SQL,简化数据库操作
2Activiti支持Java 工作流引擎,用于业务流程审批(工单、流程流转),可将流程数据存入金仓
3Mybatis支持Java 主流 ORM 框架,半自动映射,自定义 SQL 灵活,国内项目使用最多
4Mybatis-Plus支持基于 Mybatis 增强封装,自带 CRUD、分页、条件构造器,减少重复基础 SQL 代码
5Flyway支持数据库版本迁移工具,管理 SQL 脚本版本,自动升级 / 降级数据库结构
6Liquibase支持数据库变更管理工具,多数据库兼容,支持 XML/YAML/SQL 格式记录表结构变更
7Dbunit支持数据库单元测试工具,测试前后自动导入 / 清理测试数据,用于单元测试
8Hibernate-Spatial支持Hibernate 空间扩展框架,用于地理空间数据的对象映射、空间查询
9Qt支持C++ 跨平台 GUI 开发框架,内置数据库模块,可连接金仓做桌面客户端开发
10Ef6支持.NET Framework 的 ORM 框架(Entity Framework 6),C# 对象和数据库映射
11Efcore支持跨平台新版 Entity Framework,.NET Core/.NET5 + 的 ORM,.NET 项目主流
12Django支持Python 全栈 Web 框架,自带 ORM 模块,快速开发 Web 业务系统
13SQLAlchemy支持Python 成熟 ORM 框架,灵活度高,Python 后端常用数据库对象映射工具

连接池

序号连接池KingbaseES 对应支持简介
1C3P0支持Java 老牌数据库连接池,管理数据库连接复用,防止频繁创建销毁连接,老项目常用
2DBCP支持Apache 出品的 Java 连接池,稳定可靠,早期传统项目广泛使用
3Druid支持阿里开源 Java 连接池,自带监控、防 SQL 注入,国内 Java 项目使用非常普遍
4HikariCP支持高性能轻量级 Java 连接池,SpringBoot 默认连接池,速度快、开销小
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/5 15:52:15

rad库鸿蒙化适配实战:从渲染机制到响应式治理

前阵子给一套跨端业务组件做鸿蒙化改造&#xff0c;页面级的功能都迁得差不多了&#xff0c;唯独卡在 rad 这个三方库里。它在 Android 和 iOS 上渲染 HTML 片段一直很稳&#xff0c;富文本、图文混排、Web 风格样式都能处理&#xff0c;但一放到鸿蒙环境就白屏、错乱、点击没反…

作者头像 李华
网站建设 2026/11/5 15:52:14

PostgreSQL元组管理核心:MVCC版本链、HOT更新与VACUUM防膨胀

先讲一个我实际运维里发生过的场景。某个系统上线后&#xff0c;业务表每天会被一个计划任务频繁UPDATE大量行&#xff0c;起初一切正常&#xff0c;跑了不到一个月&#xff0c;磁盘占用比预估多了快两倍&#xff0c;查询也开始明显变慢。当时的排查思路从慢SQL和索引效率一路查…

作者头像 李华
网站建设 2026/10/26 13:47:51

用 Dockerfile 构建 Oracle JDK 1.8 运行镜像,一次解决环境问题

当你维护过几套 Java 后端服务&#xff0c;尤其是那些还跑在 JDK 1.8 上的老项目&#xff0c;大概率都经历过“换台机器就起不来”的尴尬。环境变量、路径、字体、时区&#xff0c;任何一个环节跟开发机对不上&#xff0c;应用就可能挂得莫名其妙。我前几年接手一个老系统时&am…

作者头像 李华