金仓数据库 KingbaseES V8.3至V8.6迁移最佳实践(3. KingbaseES移植能力支撑体系)

3. KingbaseES移植能力支撑体系

本章节包含以下内容:

  • 迁移工具

  • KingbaseES应用能力概述

  • KingbaseES支撑系统割接能力

3.1. 迁移工具

KingbaseES 支持应用系统处于离线状态的数据迁移(以下简称离线迁移)和应用系统处于在线状态的数据迁移(以下简称在线迁移)。

离线迁移是指,应用系统在离线状态下,源数据库服务器持续提供服务时,通过KingbaseES 的迁移工具将源数据库的对象定义和数据搬迁到目的数据库。

在线迁移是指,应用系统处于在线状态下,源数据库服务器持续提供服务时,通过KingbaseES 的迁移工具完成对象和数据的搬迁。

3.1.1. 数据迁移工具

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 之间的数据同步,数据集中,包括同步部分数据,同步策略灵活,支持断点续传。

3.1.2. 手动迁移调试工具

KingbaseES 提供了2个工具可以完成手动迁移过程中的调试工作:

  • 命令行SQL交互工具 ksql

  • 图形界面SQL交互工具 Kstudio

工具特性对比

ksql

Kstudio

执行SQL

支持

支持

直接编辑数据

需要写SQL语句

支持,通过图形界面直接编辑

执行存储过程

支持

支持

查看SQL执行计划

支持

支持

调试plsql

支持

支持

数据库状态分析

不支持

不支持

慢SQL分析

不支持

不支持

ksql是命令行的SQL交互工具,轻巧速度快。

Kstudio工具是图形界面的SQL交互工具,易用性较好,同时包含了plsql的调试功能。

3.1.3. 系统割接后的数据同步工具

KingbaseES 提供了2个数据同步工具:

  • KingbaseES 内置的物理同步功能

  • V8.3 和 |version|之间的数据库同步 KFS 产品

工具特性对比

KignbaseES物理同步功能

KFS

跨CPU

支持

支持

断点续传

支持

支持

同步部分对象

不支持

支持

同步所有操作

支持

支持

KingbaseES 内置物理同步,主要是针对2个KingbaseES产品之间的同步。同步的单位是2个data,不支持同步部分对象。物理同步可以同步所有用户操作,可以执行断点续传,支持重放。

KFS 产品是为了解决 V8.3 和 V8.6 之间的同步,或者同步数据源之间部分对象的同步,同步粒度更加灵活。

若应用系统割接后,用户需要双轨运行,可以视情况选择物理同步或者KFS产品。

3.1.4. 系统割接后系统备份工具

KingbaseES 提供了2个备份工具:

  • 逻辑备份sys_dump

  • 物理备份 sys_rman

工具特性对比

sys_dump

sys_rman

异构数据源

不支持

不支持

支持增量

不支持

支持

支持根据日志恢复到指定时间点

不支持

支持

备份单个表

支持

不支持

可以不备份指定表

支持

不支持

逻辑备份sys_dump,支持备份对象在某一个执行状态中的定义和数据。不支持增量备份,备份对象选择灵活,可以支持单个表,单个函数等的备份。逻辑备份无法和redo日志一起使用。

物理备份sys_rman备份整个实例的数据,不支持备份单个数据库或者单个表,但是支持增量备份。

3.2. KingbaseES应用能力概述

V8.3的移植的工作较少,这些工作量主要来源于两方面:

  1. 应用开发移植需求:在数据对象类型、SQL语言、PL/SQL语言、客户端应用编程接口和开发框架等诸多方面对两个数据库所进行的、大量的语法或功能的对齐处理。同时,源应用系统使用的第三方产品或者组件,目标数据库同样需要支持。

  2. 应用系统运行需求:高可用方案是否支持,性能是否满足需求。

3.2.1. 支持的模式对象

KingbaseES支持数据库、表空间、模式、用户和角色。同时支持模式下的如下对象。

表 3.2.18 支持的模式对象

序号

模式下对象

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

表达式,包括条件表达式等

表 3.2.19 内置数据类型

序号

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 数据库参考手册。

3.2.2. SQL

在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

3.2.3. PL/SQL

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

3.2.4. 客户端编程

KingbaseES 支持如下编程接口和开发框架。

表 3.2.20 编程接口

序号

编程语言

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

表 3.2.21 开发框架

序号

开发框架

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

支持

表 3.2.22 连接池

序号

连接池

KingbaseES对应支持

1

C3P0

支持

2

DBCP

支持

3

Druid

支持

4

HikariCP

支持

3.2.5. 第三方产品和组件

KingbaseES目前已经和超过1200家的软硬件产品完成适配,涵盖CPU、存储、操作系统、中间件、备份软件、办公OA、报表、安全邮件、流版签、信息安全、地理信息等多类的主流产品都已覆盖。

支持POSTGIS 组件。

3.2.6. 高可用

KingbaseES支持完善的高可用方案,为客户提供的一系列产品和方案能够解决无法预测的停机及计划停机造成的常见问题,并且能以最低的成本进行部署。

支持多种物理备份和逻辑备份,支持多种集群,支持物理同步,支持逻辑同步。具体请参见 高可用 。

3.2.7. 性能

随着企业业务数据量呈爆炸式增长,数据库性能问题变得越来越突出。通常,数据库性能优化是一个系统工程。而不同的场景下,对性能的关注点也会有所不同,KingbaseES分别采用更有针对性的优化技术来保证用户的各种应用均可得到高性能的支撑。

KingbaseES 在数据装载,事务性应用场景,分析性应用场景都有针对性的性能优化,具体请参见《KingbaseES数据库性能调优指南》 。

3.2.8. 相关技术资源

本指南重点从语句兼容特性、迁移工具、迁移场景和应用程序移植等几方面描述移植的关键技术和实现方式。在每项技术和实现方式的描述上,本指南只提供有限的内容介绍,并未提供全面的细节说明。所以,用户若需了解某些技术的实现细节还请参照相关的技术资料,这些资料诸如:

  • KingbaseES 数据库管理指南:详尽和全方位地介绍如何高效管理KingbaseES数据库系统。其中,这些管理诸如用户管理、存储管理、模式对象管理等。

  • KingbaseES 开发指南:提供了JDBC、ODBC、DCI和ESQL等应用编程接口的详细使用说明。

  • KingbaseES 高可用指南:详细描述了系统在高可用方面的支持。

  • KingbaseES 安装指南:全面介绍了KingnaseES各种工具的使用方法,这些工具如SQL交互工具KSQL和数据迁移工具KDTS-PLUS等。

  • KingbaseES 数据库调优指南:详细描述了系统提供的优化能力。

3.3. KingbaseES支撑系统割接能力

本章主要描述除了产品对应用运行的支撑以外,对系统割接上线过程中的需求是否都满足。

3.3.1. 应用业务割接时间短

应用业务无法停机,或者用于割接的时间非常端,就需要说过同步工具持续同步数据。

  • 评估系统割接需要的最短时间,协调用户预留最短时间;

  • 做出系统割接失败的回退预案,一旦割接失败,快速退回原有系统;

  • 使用迁移工具KDTS-PLUS完成历史数据迁移;

  • 使用KFS 进行 V8.3 和 |version|的持续同步。

源数据库和目的数据库的数据差异小于预留的时间时,就可以进行系统割接。

3.3.2. 割接后需要双轨运行

若应用迁移时间短,没有足够的测试时间和试运行时间,用户可以采用割接后双轨运行,应用系统运行在一个数据库上,数据库中的数据实时同步到另一个数据库中;一旦应用出现问题,可以快速切换到另一个数据库中。

KFS 支持KingbaseES和异构数据库的实施同步。

你可能感兴趣的:(KingbaseES产品手册,数据库,java,sql)