本章节包含以下内容:
迁移工具
KingbaseES应用能力概述
KingbaseES支撑系统割接能力
KingbaseES 支持应用系统处于离线状态的数据迁移(以下简称离线迁移)和应用系统处于在线状态的数据迁移(以下简称在线迁移)。
离线迁移是指,应用系统在离线状态下,源数据库服务器持续提供服务时,通过KingbaseES 的迁移工具将源数据库的对象定义和数据搬迁到目的数据库。
在线迁移是指,应用系统处于在线状态下,源数据库服务器持续提供服务时,通过KingbaseES 的迁移工具完成对象和数据的搬迁。
KingbaseES 提供了KDTS-PLUS 和 KFS 2个工具可以完成迁移数据任务。 KDTS-PLUS 可以用于离线迁移,可以完成数据库中所有所有对象定义的迁移和数据的迁移。 KFS 可以应用于数据的同步,主要应用于表结构和表数据的初始搬迁,以及之后的数据的实时同步。 KDTS-PLUS和KFS 一起部署,可以完成一个大型系统的在线迁移。
工具特性对比 |
KDTS-PLUS |
KFS |
---|---|---|
是否支持迁移存储过程等对象定义迁移 |
支持所有对象定义的迁移 |
支持表结构和主键的定义的迁移 |
同步一次,还是持续同步 |
一次同步 |
持续同步 |
是否需要初始状态同步 |
不需要 |
需要 |
跨平台 |
支持 |
支持 |
迁移部分表 |
支持 |
支持 |
迁移一个表的部分数据 |
支持 |
支持 |
断点续传 |
不支持 |
支持 |
KDTS-PLUS的核心任务是将 V8.3 中的数据迁移到KingbaseES V8.6。它完整支持了数据迁移过程中需要的各种特性,包括自定义数据类型映射,并行迁移数据,迁移失败后统计,支持第二次迁移,迁移结束后支持源和目的数据库的数据对比。这个产品是迁移任务中必须使用的工具。
人大金仓提供数据同步产品KFS。进行数据同步的第一步是完成初始数据同步,之后将利用日志分析技术增量同步数据。KFS可以用于V8.3和 V8.6 之间的数据同步,数据集中,包括同步部分数据,同步策略灵活,支持断点续传。
KingbaseES 提供了2个工具可以完成手动迁移过程中的调试工作:
命令行SQL交互工具 ksql
图形界面SQL交互工具 Kstudio
工具特性对比 |
ksql |
Kstudio |
---|---|---|
执行SQL |
支持 |
支持 |
直接编辑数据 |
需要写SQL语句 |
支持,通过图形界面直接编辑 |
执行存储过程 |
支持 |
支持 |
查看SQL执行计划 |
支持 |
支持 |
调试plsql |
支持 |
支持 |
数据库状态分析 |
不支持 |
不支持 |
慢SQL分析 |
不支持 |
不支持 |
ksql是命令行的SQL交互工具,轻巧速度快。
Kstudio工具是图形界面的SQL交互工具,易用性较好,同时包含了plsql的调试功能。
KingbaseES 提供了2个数据同步工具:
KingbaseES 内置的物理同步功能
V8.3 和 |version|之间的数据库同步 KFS 产品
工具特性对比 |
KignbaseES物理同步功能 |
KFS |
---|---|---|
跨CPU |
支持 |
支持 |
断点续传 |
支持 |
支持 |
同步部分对象 |
不支持 |
支持 |
同步所有操作 |
支持 |
支持 |
KingbaseES 内置物理同步,主要是针对2个KingbaseES产品之间的同步。同步的单位是2个data,不支持同步部分对象。物理同步可以同步所有用户操作,可以执行断点续传,支持重放。
KFS 产品是为了解决 V8.3 和 V8.6 之间的同步,或者同步数据源之间部分对象的同步,同步粒度更加灵活。
若应用系统割接后,用户需要双轨运行,可以视情况选择物理同步或者KFS产品。
KingbaseES 提供了2个备份工具:
逻辑备份sys_dump
物理备份 sys_rman
工具特性对比 |
sys_dump |
sys_rman |
---|---|---|
异构数据源 |
不支持 |
不支持 |
支持增量 |
不支持 |
支持 |
支持根据日志恢复到指定时间点 |
不支持 |
支持 |
备份单个表 |
支持 |
不支持 |
可以不备份指定表 |
支持 |
不支持 |
逻辑备份sys_dump,支持备份对象在某一个执行状态中的定义和数据。不支持增量备份,备份对象选择灵活,可以支持单个表,单个函数等的备份。逻辑备份无法和redo日志一起使用。
物理备份sys_rman备份整个实例的数据,不支持备份单个数据库或者单个表,但是支持增量备份。
V8.3的移植的工作较少,这些工作量主要来源于两方面:
应用开发移植需求:在数据对象类型、SQL语言、PL/SQL语言、客户端应用编程接口和开发框架等诸多方面对两个数据库所进行的、大量的语法或功能的对齐处理。同时,源应用系统使用的第三方产品或者组件,目标数据库同样需要支持。
应用系统运行需求:高可用方案是否支持,性能是否满足需求。
KingbaseES支持数据库、表空间、模式、用户和角色。同时支持模式下的如下对象。
序号 |
模式下对象 |
---|---|
1 |
表和分区 |
2 |
视图(包含force view) |
3 |
可更新视图 |
4 |
触发器 |
5 |
规则 |
6 |
约束 |
7 |
索引 |
8 |
数据库连接 dblink |
9 |
函数 |
10 |
存储过程 |
11 |
操作符 |
12 |
包 |
13 |
序列 |
14 |
同义词 |
15 |
外部数据源 |
16 |
数据类型 |
17 |
标记和策略 |
18 |
规则rule |
19 |
域domain |
20 |
扩展包 |
21 |
全局临时表 |
22 |
DUAL表 |
23 |
Oracle兼容视图 |
24 |
ROWNUM, LEVEL等伪列 |
25 |
匿名块 |
26 |
表达式,包括条件表达式等 |
序号 |
KingbaseES数据类型 |
数值型 |
|
1 |
smallint |
2 |
integer |
3 |
bigint |
4 |
decimal |
5 |
numeric |
6 |
number |
7 |
real |
8 |
float |
9 |
double precision |
10 |
double |
11 |
smallserial |
12 |
serial |
13 |
bigserial |
字符型 |
|
1 |
character(n[char | byte]), char(n[char | byte]) |
2 |
character varying(n[char | byte]), varchar(n[char | byte]), varchar2(n[char | byte]) |
3 |
nvarchar(n[char | byte]) |
4 |
text |
大对象型 |
|
1 |
clob, nclob |
2 |
blob |
日期时间型 |
|
1 |
timestamp [ (p) ] [ without time zone ] |
2 |
timestamp [ (p) ] with time zone |
3 |
date |
4 |
time [ (p) ] [ without time zone ] |
5 |
time [ (p) ] with time zone |
6 |
interval year |
7 |
interval month |
8 |
interval day |
9 |
interval hour |
10 |
interval minute |
11 |
interval second |
12 |
interval year to month |
13 |
interval day to second |
布尔型 |
|
1 |
boolean |
二进制型 |
|
1 |
bit(n) |
2 |
bit varying(n) |
XML型 |
|
1 |
xml |
数组型 |
|
1 |
array |
枚举型 |
|
1 |
enum |
JSON型 |
|
1 |
json |
2 |
jsonb |
UUID型 |
|
1 |
uuid |
GIS型 |
|
1 |
point |
2 |
line |
3 |
box |
4 |
path |
5 |
circle |
6 |
polygon |
7 |
geometry |
KingbaseES 支持的函数和视图,请参见 KingbaseES SQL 参考手册和KingbaseES 数据库参考手册。
在KingbasES支持的SQL中,除了3.2.1 中提到的对象的CREATE/ALTER/DROP之外,还提供了其他SQL访问接口:
数据操作
INSERT | UPDATE | DELETE
TRUNCATE
MERGE INTO
INSERT FIRST/ALL
COPY
CLUSTER
数据查询
SELECT
层次查询CONNECT BY
LATERAL 子句
外连接操作符(‘+’)
WITH [ RECURSIVE ] 子句
PREPARE, EXECUTE
VALUES 子句
EXPLAIN
数据整理
ANALYZE
VACUUM
REINDEX
事务控制语句
BEGIN,START TRANSACTION
COMMIT
ROLLBACK
SAVEPOINT | RELEASE SAVEPOINT | ROLLBACK TO SAVEPONIT
SET TRANSACTION { READ ONLY | READ WRITE }
PREPARE TRANSACTION
权限语句
GRANT
REVOKE
KingbaseES支持如下 PL/SQL的常用语法:
赋值语句
IF-THEN-ELSE语句
CASE语句
多种循环语句,如LOOP语句、WHILE-LOOP语句和FOR LOOP语句
%TYPE属性和%ROWTYPE属性
REF CUSOR游标
预定义异常和自定义异常
%NOTFOUND、%FOUND、%ISOPEN 和 %ROWCOUNT游标属性
RETURNING INTO语句
EXECUTE IMMEDIATE语句
动态SQL
BULK COLLECT
消息输入RAISE
PL/SQL支持集合类型(关联数组、嵌套表、可变数组)
KingbaseES 支持如下 PL/SQL 常用对象:
触发器(行级触发器,列级触发器,事件触发器)
函数,嵌套函数
存储过程
匿名块
Package
OBJECT TYPE
KingbaseES 支持如下编程接口和开发框架。
序号 |
编程语言 |
KingbaseES对应支持 |
---|---|---|
1 |
JAVA |
JDBC |
2 |
.Net |
.Net Data Provider |
3 |
C/C++ |
Pro*C |
4 |
DCI |
|
5 |
ODBC |
|
6 |
OCCI |
|
7 |
Php |
pdo |
8 |
Perl |
pdi |
9 |
Python |
ksycopg2 |
10 |
golang |
gokb |
11 |
Node.js |
kb |
序号 |
开发框架 |
KingbaseES对应支持 |
---|---|---|
1 |
Hibernate |
支持 |
2 |
Activiti |
支持 |
3 |
Mybatis |
支持 |
4 |
Mybatis-Plus |
支持 |
5 |
Flyway |
支持 |
6 |
Liquibase |
支持 |
7 |
Dbunit |
支持 |
8 |
Hibernate- Spatial |
支持 |
9 |
Qt |
支持 |
10 |
Ef6 |
支持 |
11 |
Efcore |
支持 |
12 |
Django |
支持 |
13 |
SQLAlchemy |
支持 |
序号 |
连接池 |
KingbaseES对应支持 |
---|---|---|
1 |
C3P0 |
支持 |
2 |
DBCP |
支持 |
3 |
Druid |
支持 |
4 |
HikariCP |
支持 |
KingbaseES目前已经和超过1200家的软硬件产品完成适配,涵盖CPU、存储、操作系统、中间件、备份软件、办公OA、报表、安全邮件、流版签、信息安全、地理信息等多类的主流产品都已覆盖。
支持POSTGIS 组件。
KingbaseES支持完善的高可用方案,为客户提供的一系列产品和方案能够解决无法预测的停机及计划停机造成的常见问题,并且能以最低的成本进行部署。
支持多种物理备份和逻辑备份,支持多种集群,支持物理同步,支持逻辑同步。具体请参见 高可用 。
随着企业业务数据量呈爆炸式增长,数据库性能问题变得越来越突出。通常,数据库性能优化是一个系统工程。而不同的场景下,对性能的关注点也会有所不同,KingbaseES分别采用更有针对性的优化技术来保证用户的各种应用均可得到高性能的支撑。
KingbaseES 在数据装载,事务性应用场景,分析性应用场景都有针对性的性能优化,具体请参见《KingbaseES数据库性能调优指南》 。
本指南重点从语句兼容特性、迁移工具、迁移场景和应用程序移植等几方面描述移植的关键技术和实现方式。在每项技术和实现方式的描述上,本指南只提供有限的内容介绍,并未提供全面的细节说明。所以,用户若需了解某些技术的实现细节还请参照相关的技术资料,这些资料诸如:
KingbaseES 数据库管理指南:详尽和全方位地介绍如何高效管理KingbaseES数据库系统。其中,这些管理诸如用户管理、存储管理、模式对象管理等。
KingbaseES 开发指南:提供了JDBC、ODBC、DCI和ESQL等应用编程接口的详细使用说明。
KingbaseES 高可用指南:详细描述了系统在高可用方面的支持。
KingbaseES 安装指南:全面介绍了KingnaseES各种工具的使用方法,这些工具如SQL交互工具KSQL和数据迁移工具KDTS-PLUS等。
KingbaseES 数据库调优指南:详细描述了系统提供的优化能力。
本章主要描述除了产品对应用运行的支撑以外,对系统割接上线过程中的需求是否都满足。
应用业务无法停机,或者用于割接的时间非常端,就需要说过同步工具持续同步数据。
评估系统割接需要的最短时间,协调用户预留最短时间;
做出系统割接失败的回退预案,一旦割接失败,快速退回原有系统;
使用迁移工具KDTS-PLUS完成历史数据迁移;
使用KFS 进行 V8.3 和 |version|的持续同步。
源数据库和目的数据库的数据差异小于预留的时间时,就可以进行系统割接。
若应用迁移时间短,没有足够的测试时间和试运行时间,用户可以采用割接后双轨运行,应用系统运行在一个数据库上,数据库中的数据实时同步到另一个数据库中;一旦应用出现问题,可以快速切换到另一个数据库中。
KFS 支持KingbaseES和异构数据库的实施同步。