PDF文库 - 千万精品文档,你想要的都能搜到,下载即用。

KingbaseES异构数据库移植指南.pdf

经年未变。46 页 404.825 KB下载文档
KingbaseES异构数据库移植指南.pdfKingbaseES异构数据库移植指南.pdfKingbaseES异构数据库移植指南.pdfKingbaseES异构数据库移植指南.pdfKingbaseES异构数据库移植指南.pdfKingbaseES异构数据库移植指南.pdf
当前文档共46页 2.88
下载后继续阅读

KingbaseES异构数据库移植指南.pdf

KingbaseES 异构数据库移植指南 金仓数据库管理系统 KingbaseES 文档版本:V9(V009R001C001B0024) 发布日期:2023 年 10 月 12 日 北京人大金仓信息技术股份有限公司 目 目 录 录 第 1 章 前言 1 1.1 适用读者 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 相关文档 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.3 术语 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.4 手册约定 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 第 2 章 概述 3 第 3 章 KingbaseES 移植能力支撑体系 5 3.1 3.2 3.3 迁移工具概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3.1.1 数据迁移工具 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3.1.2 调试工具 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3.1.3 系统割接后的数据同步工具 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.1.4 系统割接后系统备份工具 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 KingbaseES 应用能力概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.2.1 支持的模式对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.2.2 SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.2.3 PL/SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.2.4 客户端编程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.2.5 第三方产品和组件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.2.6 高可用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.2.7 性能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.2.8 相关技术资源 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 KingbaseES 支撑系统割接能力 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.3.1 应用业务割接时间短 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.3.2 割接后需要双轨运行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 第 4 章 应用迁移流程 18 4.1 迁移方案设计 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 4.2 迁移评估 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 4.2.1 确定移植目标 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 4.2.2 评估移植任务 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 I 4.2.3 4.3 目 录 组建移植团队 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 迁移准备 4.3.1 4.3.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 准备迁移环境 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 4.3.1.1 部署目的数据库服务器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 4.3.1.2 获取并安装必要的软件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 迁移数据库、用户 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 4.4 数据迁移 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 4.5 应用迁移 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 API 方式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 4.5.1.1 ODBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 4.5.1.1.1 Windows 数据源配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 4.5.1.1.2 Linux 数据源配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 4.5.1.2 JDBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 4.5.1.3 Activiti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 4.5.1.4 Flyway . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 4.5.1.5 Liquibase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 4.5.1.6 Hibernate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 4.5.1.7 MyBatis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 4.5.1.8 PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 4.5.1.9 PERL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 4.5.1.10 Golang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 4.5.1.11 Nodejs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 4.5.1.12 ADO.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 4.5.1.13 EF6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 4.5.1.14 EFcore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.5.1.15 QT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 4.5.1.16 Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 4.5.2 移植 Oracle Pro*C 应用程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4.5.3 移植 Oracle OCI 应用程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4.5.4 修改应用框架 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 测试与调试移植系统 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4.6.1 功能测试和排错 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4.6.2 性能测试和调优 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 4.6.3 高可用方案测试 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 4.6.4 系统管理测试 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 4.6.5 可以使用测试工具 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 4.5.1 4.6 4.7 系统割接 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 4.7.1 割接评估 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 4.7.2 割接准备 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 4.7.3 割接操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 4.7.4 回退机制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 4.7.5 割接后观察 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 II 目 录 版权声明 40 服务周期承诺 41 III 第 1 章 前言 1 第 章 前言 本文档描述了异构数据库向 KingbaseES 迁移的方法。 前言部分包含以下主题: • 适用读者 • 相关文档 • 术语 • 手册约定 1.1 适用读者 KingbaseES 异构数据库移植指南面向所有使用 KingbaseES 的用户,主要是数据库管理员和应用程序开发人员。 1.2 相关文档 无 1.3 术语 无 1.4 手册约定 本文档中可能出现“注意、提示、警告、另请参阅”等标志,它们所代表的含义如下: 1 第 1 章 前言 注意: 用于突出重要/关键信息、最佳实践等。 提示: 用于突出小窍门、捷径等。 警告: 用于传递设备或环境安全警示信息,若不避免,可能会导致设备损坏、数据丢失、设备性能降低或其 它不可预知的结果。 另请参阅: 用于突出参考、参阅等。 以下程序代码书写约定适用于本文档: 符号 说明 [] 表示包含一个或多个可选项。不需要输入中括号本身。 {} 表示包含两个以上(含两个)的候选,必须在其中选取一个。不需要输入花括号本身。 | 分割中括号或者花括号中的两个或两个以上选项。不需要输入“|”本身。 ... 表示其之前的元素可以被重复。 斜体 表示占位符或者需要提供特定值的变量。 大写 表示系统提供的元素,以便与用户定义的元素相互区分。除出现在方括号中的元素外,应当按 照顺序逐字输入。当然,部分元素在系统中是大小写不敏感的,因此用户可以根据系统说明以 小写形式输入。 小写 表示由用户提供的元素。 2 第 2 章 概述 2 第 章 概述 将一个应用系统从一个数据库(以下简称源数据库)迁移到另一个数据库(以下简称目标数据库)时,需要考虑 如下因素: 1. 应用迁移的周期/成本 a. 目标数据库对源数据库的兼容度越高,迁移周期越小;本文第 2 部分描述的内容和对源数据库的支撑程度越 高,迁移越快。 b. 迁移过程中,是否有工具支撑加速迁移过程; c. 迁移完成后,是否有工具支撑数据对比,减少应用测试过程。目标数据库是否有丰富的移植辅助工具。 2. 目标数据库产品是否有成熟的迁移服务团队 目标数据库的服务支持团队是否成熟,管理是否完善,是否有完善的应用移植方法。 3. 目标数据库是否满足应用的使用需求 考察目标数据库的产品能力是否可以替换源数据库,主要包括如下几个方面: a. 使用的源数据库的对象,目标数据库是否可以支持 b. 使用的源数据库的访问接口(SQL/PLSQL),目标数据库是否可以支持 c. 使用的开发接口和开发框架,目标数据库是否支持 d. 使用的第三方产品或者组件,目标数据库是否支持 e. 目标数据库是否支持源系统的高可用方案 f. 目标数据库是否可以满足应用系统的性能需要,若采用国产 CPU,更需要评估目标数据库在指定国 产 CPU 上的性能表现;有可能需要优化应用程序的处理,完成性能的联合解决方案,那么目标数据 库是否提供性能分析和调优手段。 4. 系统割接的需求目标数据库是否可以满足 主要包含: a. 应用从源数据库切换到目标数据库,业务是否可以停止,若是不可以停止,目标数据库是否可以支 持数据实时同步; b. 移植完成后,是否需要和源数据库双轨运行,目标数据库是否有方案可以支撑 3 第 2 章 概述 本文档就上面的问题,介绍 KingbaseES 产品的应用迁移支撑体系,以及应用迁移的过程。 4 第 3 章 KINGBASEES 移植能力支撑体系 3 第 章 KingbaseES 移植能力支撑体系 本章节包含以下内容: • 迁移工具概述 • KingbaseES 应用能力概述 • KingbaseES 支撑系统割接能力 迁移工具概述 3.1 KingbaseES 支持应用系统的离线迁移和在线迁移。 离线迁移是指,应用系统在离线状态下,源数据库服务器提供服务时,通过 KingbaseES 的迁移工具将源数据库 的对象定义和数据搬迁到目的数据库。 在线迁移是指,应用系统处于在线状态下,源数据库服务器持续提供服务时,通过 KingbaseES 的迁移工具完成 对象和数据的搬迁。 3.1.1 数据迁移工具 KingbaseES 提供了 KDTS 和 KFS 2 个工具完成迁移数据任务。KDTS 是 KingbaseES 提供的工具,可以用于 离线迁移,并完成数据库中所有对象定义的迁移和数据的迁移。KFS 是一个单独的同步工具,可以应用于数据的同 步,主要用于表结构和表数据的初始搬迁,以及初始搬迁之后数据的实时同步。KDTS 和 KFS 一起部署,可以完成 一个大型系统的在线迁移。 迁移能力 KDTS KFS 是否支持迁移存储过程等对象定义的迁移 支持所有对象定义的迁移 支持表结构和主键的定义的迁移 同步一次,还是持续同步 一次同步 持续同步 见续表 5 第 3 章 KINGBASEES 移植能力支撑体系 表 3.1.1 – 续表 迁移能力 KDTS KFS 是否需要初始状态同步 不需要 需要 跨平台 支持 支持 迁移部分表 支持 支持 迁移一个表的部分数据 支持 支持 断点续传 不支持 支持 KDTS 的核心任务是将异构数据库中的数据迁移到 KingbaseES。它完整支持了数据迁移过程中需要的各种特 性,包括自定义数据类型映射,并行迁移数据,迁移失败后统计,支持二次迁移,迁移结束后支持源和目的数据库的 数据对比。这个产品是迁移任务中必须使用的工具。 人大金仓提供异构数据库的同步产品 KFS。进行数据同步的第一步是完成初始数据同步,之后将利用日志分析 技术增量同步数据。这个产品可以用于异构数据库之间的数据同步,数据集中,包括异构数据库之间同步部分数据, 同步策略灵活,支持断点续传。 3.1.2 调试工具 KingbaseES 提供了如下工具,用于迁移过程中的调试工作: • 命令行 SQL 交互工具 ksql • 图形界面 SQL 交互工具 Kstudio 比较项 ksql Kstudio 执行 SQL 支持 支持 直接编辑数据 需要写 SQL 语句 支持,通过图形界面直接编辑 执行存储过程 支持 支持 查看 SQL 执行计划 支持 支持 调试 plsql 支持 支持 ksql 是命令行的 SQL 交互工具,轻巧速度快。 Kstudio 工具时图形界面的 SQL 交互工具,易用性较好,同时包含了 plsql 的调试功能,以及一些监控和性能分 析工具。 6 第 3 章 KINGBASEES 移植能力支撑体系 3.1.3 系统割接后的数据同步工具 KingbaseES 提供了 2 个数据同步工具: • KingbaseES 内置的物理同步功能 • 异构数据库同步 KFS 产品 比较项 KingbaseES 物理同步功能 KFS 异构数据源 不支持 支持 跨 CPU 支持 支持 断点续传 支持 支持 同步部分对象 不支持 支持 同步所有操作 支持 不支持 KingbaseES 内置物理同步,主要是针对 2 个 KingbaseES 产品之间的同步。同步的单位是 2 个 data,不支持同 步部分对象。物理同步可以同步所有用户操作,可以执行断点续传,支持重放。 KFS 产品是为了解决异构数据源之间的同步,或者同步数据源之间部分对象的同步,同步粒度更加灵活。 若应用系统割接后,用户需要双轨运行,可以视情况选择物理同步或者 KFS 产品。 3.1.4 系统割接后系统备份工具 KingbaseES 提供了 2 个备份工具: • 逻辑备份 sys_dump • 物理备份 sys_rman 比较项 sys_dump sys_rman 异构数据源 不支持 不支持 支持增量 不支持 支持 支持根据日志恢复到指定时间点 不支持 支持 备份单个表 支持 不支持 可以不备份指定表 支持 不支持 逻辑备份 sys_dump,支持备份对象在某一个执行状态中的定义和数据。不支持增量备份,备份对象选择灵活, 7 第 3 章 KINGBASEES 移植能力支撑体系 可以支持单个表,单个函数等的备份。逻辑备份无法和 redo 日志一起使用。 物理备份 sys_rman 备份整个实例的数据,不支持备份单个数据库或者单个表,但是支持增量备份。 3.2 KingbaseES 应用能力概述 通常,异构数据库移植的工作量繁重,这些工作量主要来源于两方面: 1. 应用开发移植需求:在数据对象类型、SQL 语言、PL/SQL 语言、客户端应用编程接口和开发框架等诸多方面 对两个数据库所进行的、大量的语法或功能的对齐处理。同时,源应用系统使用的第三方产品或者组件,目标 数据库同样需要支持。 2. 应用系统运行需求:高可用方案是否支持,性能是否满足需求。 本章,对 KingbaseES 在这两方面的能力进行概述,方便用户进行评估。若用户需要评估 KingbaseES 对 Oracle 的支撑能力,请参见《Oracle 12c 和 KingbaseES V9 技术差异表》以及《Oracle 至 KingbaseES 迁移最佳实践》。 3.2.1 支持的模式对象 KingbaseES 支持数据库、表空间、模式、用户和角色。同时支持模式下的如下对象。 8 第 3 章 KINGBASEES 移植能力支撑体系 表 3.2.1: 支持的模式对象 序号 模式下对象 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 表达式,包括条件表达式等 9 第 3 章 KINGBASEES 移植能力支撑体系 表 3.2.2: 内置数据类型 序号 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 日期时间型 见续表 10 第 3 章 KINGBASEES 移植能力支撑体系 表 3.2.2 – 续表 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 型 见续表 11 第 3 章 KINGBASEES 移植能力支撑体系 表 3.2.2 – 续表 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 中,除了 2.2.1 中提到的对象的 CREATE/ALTER/DROP 之外,还提供了其他 SQL 访问接口: 数据操作 • INSERT | UPDATE | DELETE • TRUNCATE • MERGE INTO • INSERT FIRST/ALL • COPY • CLUSTER 数据查询 • SELECT • 层次查询 CONNECT BY 12 第 3 章 KINGBASEES 移植能力支撑体系 • 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 CURSOR 游标 • 预定义异常和自定义异常 13 第 3 章 KINGBASEES 移植能力支撑体系 • %NOTFOUND、%FOUND、%ISOPEN 和%ROWCOUNT 游标属性 • RETURNING INTO 语句 • 动态 SQL • BULK COLLECT • 消息输入 RAISE • PL/SQL 支持集合类型(关联数组、嵌套表、可变数组) KingbaseES 支持如下 PL/SQL 常用对象: • 触发器(包含行级触发器,列级触发器和事件触发器) • 函数 • 嵌套函数 • 存储过程 • 匿名块 • Package • OBJECT TYPE 3.2.4 客户端编程 KingbaseES 支持如下编程接口和开发框架。 表 3.2.3: 编程接口和开发框架 序号 编程语言/框架 KingbaseES 1 JAVA JDBC 2 .Net .Net Data Provider 3 C/C++ Pro*c 编程接口 4 OCI 5 ODBC 6 OCCI 7 Php pdo 见续表 14 第 3 章 KINGBASEES 移植能力支撑体系 表 3.2.3 – 续表 序号 编程语言/框架 KingbaseES 8 Perl DBI 9 Python 支持 10 QT QODBC 11 Qkingbase 12 Nodejs 支持 13 golang 支持 1 hibernate 支持 2 hibernate-spatial 支持 3 activiti 支持 4 mybatis 支持 5 Mybatis-plus 支持 6 flyway 支持 7 Liquibase 支持 8 Dbunit 支持 1 C3P0 支持 2 DBCP 支持 3 Druid 支持 开发框架 连接池 3.2.5 第三方产品和组件 KingbaseES 目前已经和超过 1200 家的软硬件产品完成适配,涵盖 CPU、存储、操作系统、中间件、备份软 件、办公 OA、报表、安全邮件、流版签、信息安全、地理信息等多类的主流产品都已覆盖。 15 第 3 章 KINGBASEES 移植能力支撑体系 3.2.6 高可用 KingbaseES 支持完善的高可用方案,为客户提供的一系列产品和方案能够解决无法预测的停机及计划停机造成 的常见问题,并且能以最低的成本进行部署。 支持多种物理备份和逻辑备份,支持多种集群,支持物理同步,支持逻辑同步。具体请参见《KingbaseES 高可 用指南》。 3.2.7 性能 随着企业业务数据量呈爆炸式增长,数据库性能问题变得越来越突出。通常,数据库性能优化是一个系统工程。 而不同的场景下,对性能的关注点也会有所不同,KingbaseES 分别采用更有针对性的优化技术来保证用户的各种应 用均可得到高性能的支撑。 KingbaseES 在数据装载,事务性应用场景,分析性应用场景都有针对性的性能优化,具体请参见《KingbaseES 数据库性能调优指南》。 3.2.8 相关技术资源 本指南重点从语句兼容特性、迁移工具、迁移场景和应用程序移植等几方面描述移植的关键技术和实现方式。在 每项技术和实现方式的描述上,本指南只提供有限的内容介绍,并未提供全面的细节说明。所以,用户若需了解某些 技术的实现细节还请参照相关的技术资料,这些资料诸如: • KingbaseES 数据库管理员指南:详尽和全方位地介绍如何高效管理 KingbaseES 数据库系统。其中,这些管理 诸如用户管理、存储管理、模式对象管理等。 • KingbaseES 开发指南:提供了 JDBC、ODBC、DCI 和 ESQL 等应用编程接口的详细使用说明。 • KingbaseES 高可用指南:详细描述了系统在高可用方面的支持。 • KingbaseES 数据库调优指南:详细描述了系统提供的优化能力。 3.3 KingbaseES 支撑系统割接能力 本章主要描述除了产品对应用运行的支撑以外,对系统割接上线过程中的需求是否都满足。 3.3.1 应用业务割接时间短 应用业务无法停机,或者用于割接的时间非常短,就需要使用同步工具持续同步数据。 • 评估系统割接需要的最短时间,协调用户预留最短时间; • 做出系统割接失败的回退预案,一旦割接失败,快速退回原有系统; 16 第 3 章 KINGBASEES 移植能力支撑体系 • 使用迁移工具 KDTS 完成历史数据迁移; • 使用 KFS 进行异构数据库的持续同步。 源数据库和目的数据库的数据差异小于预留的时间时,就可以进行系统割接。 3.3.2 割接后需要双轨运行 若应用迁移时间短,没有足够的测试时间和试运行时间,用户可以采用割接后双轨运行,应用系统运行在一个数 据库上,数据库中的数据实时同步到另一个数据库中;一旦应用出现问题,可以快速切换到另一个数据库中。 KFS 支持 KingbaseES 和异构数据库的实施同步。 17 第4章 4 第 章 应用迁移流程 应用迁移流程 本文档描述了一套完整的数据库系统评估与迁移方案,目的是帮助客户更明确的了解数据库系统迁移至 KingbaseES 的流程、方法、关键节点及注意事项,依据数据库系统迁移全过程方法论及各关键节点的流程定义,对数据 库系统的实际迁移操作进行指导和建议。 本章节包含以下内容: • 迁移方案设计 • 迁移评估 • 迁移准备 • 数据迁移 • 应用迁移 • 测试与调试移植系统 • 系统割接 4.1 迁移方案设计 一个数据库的完整替代过程包括下图中内容,需要考虑从功能移植、性能验证、可用保障以及应用交割策略。 18 第4章 应用迁移流程 人大金仓提供应用迁移全过程的支持服务。 整体迁移方案以方法论为指导,以过程为规范,以方案为基准,以自动化工具为辅助、以自动化全量回归为驱 动、以迭代优化为保障,实现最大程度的自动化、最低风险的可控无痛迁移。 总体上,迁移方法分为迁移评估、方案设计、流程设计、自动化迁移、自动化测试验证以及迭代优化六大阶段。 迁移全程,执行严格的项目的管理及风险控制流程。 • 迁移评估: 划定迁移范围,通过《数据库需求调研表》以及《迁移工作量评估》进行风险和工作量评估,也可以通过 人大金仓在线迁移评估工具 KDMS 发现存在的兼容性问题,预估其工作量,标识出主要风险点,争取在 迁移之前了解各种潜在风险,做到无痛迁移。 • 方案设计: 基于迁移评估,定制迁移整体方案,明确迁移计划、资源需求、所需环境以及风险规避的方法等,包括使 用离线迁移还是在线迁移方案。 • 流程设计: 基于成熟的迁移流程,针对客户具体情况,定制迁移流程,尽量降低过程风险。其中,涉及评估评估、迁 移准备流程、数据迁移流程、应用迁移流程、自动化全量功能回归测试验证、性能优化流程及方法,以及 配合系统割接的方法等。 • 自动迁移: 实现数据库迁移以及应用系统迁移。其中: 19 第4章 应用迁移流程 • 数据库迁移工具 KDTS • 应用迁移采用 PLSQL 调试功能,自动化测试工具 Katalon Studio 实现全量功能回归。 • 测试验证: 自动化测试驱动的迭代验证过程,通过自动化测试工具 Katalon,保证迁移后所有功能完好无损。 • 迭代优化: 通过性能监控工具 Kmonitor 中动态运行时性能优化分析发现性能瓶颈并优化,多次迭代,解决系统中高 频、低性能 SQL 的性能问题。 整体迁移过程中,关注范围定义、人员计划、资源计划、进度计划、风险管理以及沟通管理等,保障迁移以最高 性价比成功实施。 为保障成功,迁移项目需配备合理的资源,包括自动迁移专家、应用开发人员、业务人员、系统专家,相应软硬 件资源等。 具体的迁移步骤如下: 1. 迁移评估 2. 迁移准备 3. 数据迁移 4. 应用迁移 5. 测试验证 6. 系统割接 4.2 迁移评估 4.2.1 确定移植目标 开始迁移前,应根据用户的实际需求,确定移植目标。这些目标诸如: • 迁移源数据库的规模。 • 迁移源数据库的数据库对象的种类和特征,如简单和复杂迁移对象所占比例等。 • 迁移的难易程度,如是否迁移大对象,是否迁移大量约束等。 • 迁移的工期要求。 • 迁移过程中源应用和源数据库是否可以暂停。 • 对目标系统的技术指标要求,诸如平台、版本、应用编程接口、工具、可用性、安全性和性能指标要求等。 明确移植目标以后,则可开始移植任务评估。可以把《数据库需求调研表》作为工作牵引和记录。 20 第4章 4.2.2 应用迁移流程 评估移植任务 当计划把一个源数据库系统移植到 KingbaseES 环境时,如果不做评估或评估不充分的话,那么这个移植工作恐 怕会有太多的潜在风险等着移植工程师,他们也无法回答领导和用户对移植时间的追问,一直被动的颠簸在风浪的漩 涡里,而不知道岸边究竟在哪儿!因此,移植前对移植的可行性、工作量、难易程度和工作进度等进行充分评估是非 常必要的。 通常,移植评估主要包括以下内容: • 移植数据规模,如移植各类数据库对象的数量,PL/SQL 程序的规模等。 • 移植中 KingbaseES 不支持功能的种类和数量。 • 移植过程中可能遇到的其他问题。 可以把《迁移工作量评估工具 V1.0》作为工作牵引和记录。 4.2.3 组建移植团队 任何一个高效、成功的项目都应具备一个健全和良好的团队,如果没有这样团队互相配合和支持,那么任何数据 库的移植将可能存在巨大的风险。所以,组建一个高效的移植团队是非常必要的。 那么,移植团队的组成人员应具备哪些条件呢?他们应至少具备以下的知识与技能: • 熟悉源数据库和 KingbaseES 的 SQL 语言和 PL/SQL 语言特性,以及相关的 KingbaseES 兼容特性。 • 熟悉源数据库和 KingbaseES 的各种应用编程接口,以及相关的 KingbaseES 兼容特性。 • 熟悉源数据库和 KingbaseES 的相关客户端工具,以及这些工具间的相同点和异同点。 由这些优秀人员组建的团队是高效移植数据库的可靠保障。 4.3 迁移准备 4.3.1 准备迁移环境 在上述步骤完成以后,移植工程师应开始准备迁移环境了,这些准备工作诸如: 4.3.1.1 部署目的数据库服务器 部署目的数据库服务器应遵循以下原则: • 目的数据库服务器的 CPU、内存、网络环境等硬件应尽量采用较高的配置。 • 如果移植的源数据库系统规模较大,如超过 1GB,则建议把源数据库和 KingbaseES 分别部署在不同的物理机 器上。 21 第4章 应用迁移流程 • 为确保迁移效率,应尽量把 KingbaseES 和源数据库服务器部署到同一局域网内。 4.3.1.2 获取并安装必要的软件 迁移前应获取并安装如下软件:源数据库系统、KingbaseES 数据库系统、PL/SQL Developer、JDBC 和 ODBC 驱动程序、C 语言开发工具、OCI 软件、DCI 软件、TPC-C 测试工具、LoadRunner 等。 如果迁移数据规模较大,建议对安装的 KingbaseES 数据库服务器进行适当的优化,如增大 shared_buffer 大 小、预先创建较大的日志文件,预先申请足够的表空间数据库文件等。 完成上述准备工作后,移植工程师便可开始数据库移植工作了。 4.3.2 迁移数据库、用户 数据库、用户迁移主要包括以下内容: • 获取源数据库的 IP 地址、实例名、网络服务端口号、用户名/密码等信息。 • 在目的 KingbaseES 数据库上,使用 KSQL 或 Kstudio 工具上执行如下操作: • 创建与源数据库中用户同名的用户,例如创建与源数据库同名的用户。 • 创建与源同名的数据库,例如创建与源数据库同名的 ORCL 数据库,它的属主为上一步指定用户。 4.4 数据迁移 本步骤中需要根据业务在迁移过程中是否可以服务确定采用离线迁移还是在线迁移。 若是离线迁移,使用 KDTS 完成源库中所有对象定义和数据的搬迁。若是在线迁移,则需要首先使用 KDTS 完 成历史数据搬迁之后,使用 KFS 完成数据的追平。 使用 KDTS 将源数据库中的数据迁移到 KingabseES 中,目前 KDTS 支持 Oracle、SQLServer、MySQL、DB2 等多种数据源。 数据迁移时,可以按照 KDTS 手册和 KFS 手册中关于性能调优的部分,根据 cpu 设置并发线程数,提高迁移速 度。 源数据库中数据类型对 KingbaseES 的数据类型的转换,有默认规则,用户也可以自定义数据类型转换。 数据迁移完成后,需要确认迁移结果。迁移工具自动进行源库和目的数据库的数据量对比,确定数据迁移无损正 确。若发生错误,也请参考 KDTS 的“迁移结果”章节进行处理,也可以使用 KDTS 的二次迁移功能,再次进行迁 移。 22 第4章 4.5 应用迁移流程 应用迁移 在应用编程接口方面,KingbaseES 支持的非常丰富,所以,一般情况下,应用程序迁移比较容易。应用程序迁 移通常应和移植系统测试同时进行。这样可及时修改测试过程中发现的问题。 下面是常用应用编程接口的移植说明: • JDBC:对于使用 JDBC 的应用程序,只需把 Oracle 的 JDBC 驱动程序和数据库连接字符串替换为 KingbaseES 的对应内容即可。此外,KingbaseES 的 JDBC 驱动程序存放在数据库安装程序目录的 JDBC 文 件夹内,其中 kingbase8-9.0.0.jre6.jar 对应的 JDK1.6 版本,kingbase8-9.0.0.jre7.jar 对应的 JDK1.7 版本, kingbase8-9.0.0.jar 对应的 JDK1.8 版本。 • ODBC:对于使用 ODBC 的应用程序,应创建 KingbaseES ODBC 数据源,然后修改应用程序中连接数据库的 用户名、密码等。此外,Windows 系统下对于 OLEDB、ADO 和 NDP,则不需创建数据源。 如何在一个应用程序中访问和操纵数据库呢?通常,可采用以下方式: 4.5.1 API 方式 该方式通过数据库厂商提供的各种标准应用编程接口在应用程序中与数据库进行交互。常用的应用编程接口如 JDBC 和 ODBC 等。目前,大多数数据库厂商均提供很多标准的数据库 API 及其驱动程序。 在实际应用中,应首先加载驱动程序。加载成功后,利用 API 函数与数据库交互并完成对数据库数据的操作。 详细参考 客户端编程接口。 4.5.1.1 ODBC 4.5.1.1.1 Windows 数据源配置 Windows 配置 ODBC 数据源请参考 KingbaseES 手册中的 KingbaseES 客户端编程接口指南-ODBC 。 4.5.1.1.2 Linux 数据源配置 首先检查 ODBC Driver 是否已经安装。 在系统中找到 odbcinst.ini 文件,和/usr/bin/odbcinst 对应的 odbcinst.ini 在 /etc 目录下,和/usr/local/bin/ odbcinst 对应的 odbcinst.ini 在 /usr/local/etc 目录下。在 odbcinst.ini 文件中查找 [KingbaseES 9 ODBC Driver] 这 一项。如果没有,则编写一个模板文件 template_file1,包含如下内容: [KingbaseES 9 ODBC Driver] Description = KingbaseES 9 ODBC Driver for Linux Driver = /opt/Kingbase/Odbc/lib/kdbodbcw.so 增加 odbc.ini 文件,内容如下: 23 第4章 应用迁移流程 [kingbase] Description = KingbaseES Driver = KingbaseES 9 ODBC Driver Servername = 127.0.0.1 Port = 54321 Username = SYSTEM Password = MANAGER Database = TEST 具体配置参数解释请参考 KingbaseES 客户端编程接口指南-ODBC 。 4.5.1.2 JDBC 表 4.5.1: JDBC 的连接串比较说明 说明 Oracle KingbaseES JDBC 基本使用 --声明连接 --声明连接 Connection con; Connection con; --加载驱动程序 --加载驱动程序 Class.forName (” ora- Class.forName(” cle.jdbc.driver.OracleDriver”); com.kingbase8.Driver”); --连接串 --连接串 String url = ”jdbc:oracle:thin:@192.168. String url = ”jdbc:kingbase8://192.168. 0.1:1521:databasename”; 0.1:54321/databasename”; --获得连接 --获得连接 con= DriverMan- ager.getConnection(url,user,pwd); con= DriverMan- ager.getConnection(url,user,pwd); 其它问题请参考 KingbaseES 客户端编程接口指南-JDBC 4.5.1.3 Activiti 适配 Activiti 使用 pg 形态的驱动包,Activiti 的 jar 包及其依赖包可以从官方网站下载,也可以通过 maven 导 入。Activiti 所使用的 JDBC 包 postgresql-42.2.9.jar 位于 $KINGBASE_HOME/Interface/jdbc 目录下。使用时将 Activiti 依赖包和 JDBC 包导入到项目的 Libraries 中并定义相关配置项即可。 Activiti 应用迁移只涉及配置修改即可,如下例所示。 在 activiti.cfg.xml 中增加如下声明: 24 第4章 应用迁移流程 更多关于 Activiti 的使用,请参见 KingbaseES 客户端编程开发框架-Activiti 。 4.5.1.4 Flyway 适配 Flyway 需要直接使用 pg 形态的驱动,即直接使用 pg 的驱动类(org.postgresql.Driver)和连接串(”jdbc: postgresql://localhost:54321/test”)。 如果数据库使用了 Oracle 模式的 plsql,需要使用 ES 对应版本的 Flyway 包替换用户的 Flyway 包。 4.5.1.5 Liquibase 适配 Liquibase 需使用 pg 形态的驱动,即直接使用 pg 的驱动类(org.postgresql.Driver)和连接串(jdbc: postgresql://localhost:54321/test)。 注意:liquibase 创建包含 blob 和 clob 类型的表时,需要使用 标签定义 sql 语句,不能使用 liquibase 提供的列属性 type 指定列类型,否则 blob 会被映射为 oid 类型,clob 会被映射为 text 类型。在 changelog 文件中中声明建表语句: create table person( id serial primary key, name text, date date, sex bool, blob blob, clob clob ); 4.5.1.6 Hibernate 表 4.5.2: Hibernate 的比较说明 说明 Oracle KingbaseES 见续表 26 第4章 应用迁移流程 表 4.5.2 – 续表 Hibernate 基本使用 定义 hibernate 配置文件,根据 定义 hibernate 配置文件,根据 用户选择更改以下配置文件。 用户选择更改以下配置文件。 在 hibernate.properties 中增加 在 hibernate.properties 中增加 如下声明: 如下声明: hibernate.dialect=org. hiber- hibernate.dialect=org. hiber- nate.dialect. OracleDialect nate.dialect. Kingbase8Dialect 在 hibernate.cfg.xml 中增加如下 在 hibernate.cfg.xml 中增加如下 声明: 声明: org. hibernate. dialectOracle- >org. hibernate.dialect. King- Dialect base8Dialect 在 persistence.xml 中增加如下声 在 persistence.xml 中增加如下声 明: 明: =” org.hibernate.d ialect.Kingbase8Dialec t” / > KingbaseES 方言包 适用范围 hibernate-2.0.dialect.jar 2.0<= 适用范围 <2.1 hibernate-2.1.dialect.jar 2.1<= 适用范围 <3.0 hibernate-3.0.dialect.jar 3.0<= 适用范围 <3.0.3 hibernate-3.0.3.dialect.jar 3.0.3<= 适用范围 <4.0 hibernate-4.0.dialect.jar 4.0<= 适用范围 详细介绍请参看 KingbaseES 客户端编程开发框架-Hibernate 。 4.5.1.7 MyBatis 目前 Mybatis3.2.8,Mybatis3.3.0 和 Mybatis3.4.5 均已通过 KingbaseES 版本适配的验证测试。 MyBatis 的 jar 包可以从官方网站下载,Mybatis 所以使用的 JDBC 包 kingbase8-9.0.0.jar 位于 $KINGBASE_HOME/interface/jdbc 目录下。使用时将 Mybatis 包和 JDBC 包导入到项目的 Libraries 中并定义相关配 置项即可。 27 第4章 应用迁移流程 定义 Mybatis 配置文件,根据用户选择,更改一下配置文件。 在 config.xml 中配置 JDBC 的驱动信息参数,数据库服务器信息参数和登陆用户信息参数。当然,这些参数也 可以根据用户应用需求,单独生成 property 文件,针对不用的应用场景,导入不同的属性文件。这里以 property 为 例说明下 config.xml 的配置使用。 在 property 中增加如下声明: jdbc.driverClassName=com.kingbase8.Driver jdbc.url=jdbc:kingbase8://192.168.229.128:54322/test jdbc.username= 登录用户名 jdbc.password= 登录用户密码 在 config.xml 中增加如下声明: 具体使用样例请参考 KingbaseES 手册中 MyBatis 章节, 或者 MyBatis 官网 。 4.5.1.8 PHP 目前支持的版本有: 打开 PHP 目录下的 php.ini ,找到 extension_dir=”./”,将其修改为 pdo_kdb.so 文件所在目录的路径。 添加扩展库,在 php.ini 中找到;extension=*.so (前面的“;”表示注释),添加 extension=pdo_kdb.so ,表示将 KingbaseES 库作为扩展库供 PHP 加载。验证是否加载成功,在 php 的安装目录下找到程序 php,在当前路径下, 在终端程序中运行./php -m(最好安装 php 在默认路径 /usr/local 下,可以直接在终端运行程序 php -m),查看输 出列表中是否有“pdo_kdb”,如果有表示加载成功,没有表示加载失败。 数据库连接示例 $dsn = 'kdb:host=localhost;dbname=TEST;port=54321'; $user = 'SYSTEM'; $password = '123456'; $dbh = null; 28 第4章 应用迁移流程 try { $dbh = new PDO($dsn,$user, $password, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); } catch (Exception $e) { echo 'Connection Failed: ' . $e->getMessage() ."\n"; } return $dbh; 详细介绍请参看 KingbaseES 客户端编程接口指南-PHP PDO 。 4.5.1.9 PERL 目前支持的版本有: X86 龙芯 飞腾 Windows PERL5.16, PERL5.18 PERL5.16, PERL5.18 PERL5.16, PERL5.18 PERL5.16.3 下面的例子描述了如何建立与数据库的连接以及获取结果集。 #!/usr/bin/perl use DBI; use DBD::KB; printf("before connect\n"); $dbh = DBI->connect("DBI:KB:dbname=TEST;host=192.168.4.8", 'SYSTEM', 'MANAGER'); printf("after connect\n"); $sth = $dbh->prepare("select 123 as a, 456 as b"); $sth->execute(); while(@row = $sth->fetchrow_array()) { print "row = @row\n"; } 详细介绍请参看 KingbaseES 客户端编程接口指南-Perl DBI 。 4.5.1.10 Golang 目前支持的版本有: X86 龙芯 飞腾 Windows Golang1.11.5 \ Golang1.11.5 Golang1.11.5 29 第4章 应用迁移流程 连接示例: package main import ( "database/sql" "fmt" _ "kingbase.com/gokb" ) const ( host = "127.0.0.1" port = 54321 user = "system" password = "123456" dbname = "TEST" ) func main() { connInfo := fmt.Sprintf("host=%s port=%d user=%s "+ "password=%s dbname=%s sslmode=disable", host, port, user, password, dbname) db, err = sql.Open("kingbase", connInfo) if err != nil { panic(err) } err = db.Ping() if err != nil { panic(err) } fmt.Println("Connection test success!") db.Close() } 详细介绍请参看 KingbaseES 客户端编程接口指南-Gokb 4.5.1.11 Nodejs 目前支持的版本有: 30 第4章 X86 龙芯 飞腾 Windows NodeJS 8 NodeJS 8 NodeJS 8 NodeJS 8 NodeJS 10 NodeJS 10 NodeJS 10 NodeJS 10 NodeJS 12 NodeJS 12 NodeJS 12 NodeJS 12 应用迁移流程 使用 Client.connect() 连接数据库。 const { Client } = require('kb') const client = new Client({ user: 'SYSTEM', host: '192.168.0.102', database: 'TEST', password: '123456', port: 54321, ssl: false, }) client.connect(err => { if (err) { console.error('connection error', err.stack) } else { console.log('connected') } }) 4.5.1.12 ADO.NET ES 提供 Kdbndp.dll 用来支持.NET 平台访问。 说明 Oracle KingbaseES 见续表 31 第4章 应用迁移流程 表 4.5.4 – 续表 net 基本使用 --驱动名称 --驱动名称 Oracle. ManagedDataAccess.dll; Kdbndp.dll; --加载驱动程序 --加载驱动程序 1、安装 Oracle Data Provider for 通过编译环境中引用添加,引用驱 .NET; 动 2、通过 nuget 包安装,命令如下: --连接串 Dotnet add package Oracle. Man- const agedDataAccess --version 19.9.0 = --连接串 ID=SYSTEM; string str = Database=TEST; Port=54331”; ” Data Source= (DESCRIP- TION=(ADDRESS =(PRO- try TOCOL=TCP) (HOST= { 127.0.0.1) (PORT=1521) ) ( string Connection String ” Server=192.168.28.152 ;User Password=123456; --获得连接 Conn = new KdbndpConnection CONNECT_DATA=( SER- (ConnectionString); VICE_NAME=orcl))); Per- Conn.Open(); sist Security Info=True;User strError = ”【数据库连接】数据库 ID=xxx;Password=xxx;” 连接成功”; --获得连接 } using Oracle. ManagedDataAccess. catch Client; (KdbndpException e) OracleConnection con = new Ora- { cleConnection(str) ; if (Conn != null) con.Open(); Conn.Close(); if (con.State == Connection- if (e.Message == ”3D000”) State.Open) strError = ”Please create a database { test1, owned by user kdbndp_tests”; Message Box.Show(” 连接成功”); else if (e.Message == ”28P01”) } strError = ”Please create a user kdbndp_tests as follows: create user kdbndp_tests with password ’kdbndp_tests’”; else throw; } 4.5.1.13 EF6 KingbaseES 提供 EntityFramework6.Kdbndp.dll 用来支持 Windows 平台下.Net 的 EF6 框架。 32 第4章 应用迁移流程 连接数据库的配置. 说明 Oracle KingbaseES ef core 基本使用 --驱动名称 --驱动名称 Oracle. ManagedDataAccess.dll; EntityFramework6. Kdbndp.dll; --加载驱动程序 --加载驱动程序 1、安装 Oracle Data Provider for 通过编译环境中引用添加,引用驱 .NET; 动 2、通过 nuget 包安装,命令如下: --连接串 Dotnet add package Oracle. Man- const agedDataAccess --version 19.9.0 = --连接串 ID=SYSTEM; string str = Database=TEST; Port=54331”; ” Data string ConnectionString ” Server=192.168.28.152 ;User Password=123456; Source= (DESCRIP- TION=(ADDRESS =(PRO- 自定义数据模型,应用数据模型, TOCOL=TCP) (HOST= 遵循 ef6 框架使用标准 127.0.0.1) (PORT=1521) ) (CONNECT_DATA=( SER- VICE_NAME=orcl))); Per- sist Security --获得连接 CommonDBContext db = new CommonDBContext() Info=True;User ID=xxx;Password=xxx;” --获得连接 自定义数据模型,应用数据模型, 遵循 ef 6 框架使用标准 CommonDBContext db = new CommonDBContext() 4.5.1.14 EFcore ES 提供 Kdbndp.EntityFrameworkCore.KingbaseES.dll 用来支持 Windows 平台下.Net 的 EF6 框架。 连接数据库的配置。 说明 Oracle KingbaseES 见续表 33 第4章 应用迁移流程 表 4.5.6 – 续表 ef core 基本使用 --驱动名称 Oracle. --驱动名称 ManagedDataAccess. Kdbndp.EntityFramework core.dll; Core.KingbaseES.dll; --加载驱动程序 --加载驱动程序 1、安装 Oracle Data Provider for 通过编译环境中引用添加,引用驱 .NET; 动 2、通过 nu get 包安装,命令如下: --连接串 dotnet add package Oracle. Man- const agedDataAccess. = Core--version string ConnectionString ” Server=192.168.28.152 ;User 2.19.90 ID=SYSTEM; --连接串 Database=TEST; Port=54331”; string str = --获得连接 ” Data Password=123456; 自定义数据模型,应用数据模型, Source= (DESCRIP- TION=(ADDRESS =(PRO- 遵循 efcore 框架使用标准 TOCOL=TCP) (HOST= CommonDBContext db = new Com- 127.0.0.1) (PORT=1521) ) (CONNECT_DATA=( SER- VICE_NAME=orcl))); Per- sist Security monDBContext() Info=True;User ID=xxx;Password=xxx;” --获得连接 自定义数据模型,应用数据模型, 遵循 efcore 框架使用标准 CommonDBContext db = new CommonDBContext() 4.5.1.15 QT 目前支持的版本有: X86 龙芯 飞腾 Windows Qt4.8.6 Qt4.8.6 Qt4.8.6 Qt4.8.6 Qt5.6.3 Qt5.6.3 Qt5.6.3 Qt5.6.3 说明 Oracle KingbaseES 见续表 34 第4章 应用迁移流程 表 4.5.8 – 续表 QT4/QT5 基本使用 --驱动名称 --驱动名称 QOCI/QOCI8; QKINGBASE; --加载驱动程序 --加载驱动程序 Windows: 将驱动放置对应版本的安 Windows: 将驱动放置对应版本的安 装目下 plugins/ sqldrivers 下,例 装目下 plugins/ sqldrivers 下,例 如: 如: D:Qt4.8.7pluginssqldrivers D:Qt4.8.7pluginssqldrivers Linux: Linux: / usr/ local/ Qt-5.6.1/ plugins/ / usr/ local/ Qt-5.6.1/ plugins/ sqldrivers sqldrivers --连接串 --连接串 db=QSqlDatabase ::addDatabase(” db=QSqlDatabase:: addDatabase (” QOCI”) ; QKINGBASE”); db.setHostName(host); db.setHostName(host); db.set DatabaseName(dbName); db.set DatabaseName(dbName); db.setUserName(user); db.setUserName(user); db.setPassword (password); db.setPassword (password); db.setPort(port); db.setPort(port); --获得连接 --获得连接 db.open(); db.open(); 说明 Oracle KingbaseES Python2/3 基本使用 --驱动包 --驱动包 cx_Oracle-6.4. 1-cp37-cp37m-win32 ksycopg2 --使用方言包 --使用方言包 4.5.1.16 Python pip install cx_Oracle-6.4. 1-cp37- import ksycopg2 cp37m-win32.whl --连接串 --连接串 connInfo = ” dbname={} user={} connInfo = ” 用户名/密码 @IP : 端 password={} host={} port= 口号/SERVICE_NAME” {}”.format(”TEST”, ”SYSTEM”, ” --获得连接 123456”, ”127.0.0.1”, ”54321”) conn = cx_Oracle. connect(’ 用 户名/ 密码 @IP: 端口号/ SER- --获得连接 conn = ksycopg2. connect(connInfo) VICE_NAME’) 35 第4章 4.5.2 应用迁移流程 移植 Oracle Pro*C 应用程序 将 Oracle 的 Pro*C 工程迁移至 KingbaseES 是极为简单的,通常不需要在翻译后的代码层进行改动,仅需在 KingbaseES 的 Pro*C 运行时库安装后变更一下编译依赖即可。 详细请看 Por*C 迁移指南。 4.5.3 移植 Oracle OCI 应用程序 KingbaseES 支持 OCI 的大部分常用接口。 具体参见手册《KingbaseES 客户端编程接口指南-DCI》。 4.5.4 修改应用框架 如果应用使用的框架支持多种数据库和各自方言,修改配置使得框架使用 postgresql 库及其方言。 分享【教育部语言文字系统-应用迁移】: 未修改之前框架适配使用的是 oracle 的方言和表结构,其中用到了 BLOB/CLOB。 经调研框架也支持其他库,例如 mysql 和 postgresql,除 oracle 外,类型均为 bytea/binary,目前解决方法是配 置框架使用 postgresql 库及其方言。 具体修改: 1. BaseInterceptor.java 中 KingbaseES 类型库使用 postgresql 方言 2. Spring-Context-Activiti.xml 中指定 database type 为 postgres,database schema update 设为 false 3. 数据库实例需要配置为大小写不敏感,工作流使用的库需要建在默认 schema 下 4.6 测试与调试移植系统 任何一个成熟的应用系统如果代码、尤其是关键代码变动后,则应进行全面细致的测试。类似的,更换新的后台 数据库系统以后,也应对移植后的数据库系统进行全面的功能和性能测试。 4.6.1 功能测试和排错 功能测试是指对移植数据库系统的每一个模块和功能进行全面的系统回归测试,用以确保新系统各个功能的正确 性。 因此,完成数据库对象和应用程序迁移后,应对移植系统进行全面的功能测试,并对测出问题及时分析、排查和 修改。对那些很难定位的问题,请及时联系 KingbaseES 支持工程师。 36 第4章 4.6.2 应用迁移流程 性能测试和调优 移植系统性能测试和调优是在完成移植系统功能测试后和系统上线前,在实际或模拟生产数据上,对移植系统进 行的性能测试和调优。 移植系统性能测试和调优的主要步骤如下: • 构造测试数据:若条件允许的话,建议构造与实际生产数据规模相同的数据,并模拟构造未来一年、两年、五 年或更长生命周期的数据进行测试。 • 部署测试软硬件环境:根据测试数据规模的大小,配置适当的测试软硬件环境。 • 性能测试:既可采用手动方式,也可利用 TPCC 测试工具、LoadRunner 等工具对移植系统进行自动测试。 • 性能调优:对未达到性能指标的功能模块及其 SQL 语句进行优化并给出相关建议。 通常,性能测试效果与测试数据规模、软硬件配置等因素密切相关。因此,建议性能测试时,测试数据规模、软 硬件配置应尽量与将来的实际生产环境一致。必要时,在未来一年、两年、五年等不同模拟数据规模场景下,应分别 测试移植系统的性能指标,用以保证移植系统未来仍能具有良好的性能表现。测试的结果可以填写《KingbaseES 迁 移性能验收》。 4.6.3 高可用方案测试 高可用性测试安排在功能、性能用例后,测试常见故障情况下,数据库系统的可用性,模拟数据库节点级故障情 况下的高可用性。 通过模拟故障测试产品的高可用性,故障模拟包括集群节点软件故障、硬件故障、网络故障等。 • 系统应能够提供 7 X 24 不间断服务。 • 允许数据库系统单点故障,不会导致系统服务终止。 • 故障恢复总体时间,记录恢复时间,数据丢失情况以及数据一致性。 同时,需要测试系统运维方案中的备份恢复方案的测试。 4.6.4 系统管理测试 数据库整体状态监控测试,验证可以通过图形化界面查看主节点及所有节点机的状态。SQL 运行状态监控测试, 验证可以通过图形化的界面监控 SQL 语句的运行。具备测试目标如下: • 测试产品通过图形化监控能力,能够提供人性化的图形界面,展示数据库的整体状态 • 展示 SQL 运行状态及特点 SQL 的监控等。 4.6.5 可以使用测试工具 测试工具包括: 37 第4章 应用迁移流程 • BenchmarkSQL 5.0 • Katalon 自动化测试工具 • Loadrunner 等 4.7 系统割接 4.7.1 割接评估 在进行系统割接前,首先对系统进行割接评估,包括但不局限于如下内容: • 数据库及应用系统在实际生产环境中测试是否满足需求 • 数据库及应用系统对用户感知的影响是否很大 • 对现有业务产生的影响是否很大 • 数据库及应用系统的割接是否会影响具体业务运行 • 是否具备割接的具体条件 4.7.2 割接准备 应根据业务的特点制定合适的割接方案,为割接操作提供切实可行的依据。 割接操作前,应做好割接准备。割接准备分为两个层面,管理层面准备和技术层面准备。管理层面的准备如割接 前的系统公告、割接后客户回访等;技术层面的割接准备,如准备好数据库相关硬件设备和环境等。 4.7.3 割接操作 在数据库及应用系统割接中,割接操作应包含但不限于如下几个步骤: • 原系统停用 将原系统中止对外服务,停止数据访问,保持数据的完整性。中止服务时,请不要关闭原有系统,而是简 单地将网络断开,这样,如果迁移后的数据库不能正常使用,可在最短时间内启用原系统。 • 最终的数据同步 将原生产系统内的数据与 KingbaseES 数据库环境内的新系统进行最终的数据同步,以便平滑迁移。 • 新系统上线 基于 KingbaseES 数据库的应用系统上线,开始对外提供服务。 38 第4章 4.7.4 应用迁移流程 回退机制 由于数据库及应用系统割接后,地点和配置都可能发生变化,一些因素有可能导致割接失败。数据库及应用系统 割接应在规定的时间窗口内完成,如规定时间内无法完成,或者割接后运行不稳定,则需考虑回退应用系统,拨回配 置信息,启用原系统。 4.7.5 割接后观察 当基于 KingbaseES 数据库的应用系统上线后,应成立专门的监护小组对割接后的系统进行观察。在割接后观察 期中,遇到不稳定运行的系统,要考虑是否回退。如可以解决,在进行问题解决及优化,如需要回退,则启动回退流 程。 观察期周期设置取决于具体的应用系统特点,建议观察期在三个完整的业务周期以上。 39 版权声明 版权声明 北京人大金仓信息技术股份有限公司(简称:人大金仓)版权所有,并保留对本手册及本声明的一切权利。 未得到人大金仓的书面许可,任何人不得以任何方式或形式对本手册内的任何部分进行复制、摘录、备份、修 改、传播、翻译成其他语言、将其全部或部分用于商业用途。 免责声明 本手册内容依据现有信息制作,由于产品版本升级或其他原因,其内容有可能变更。人大金仓保留在没有任何通 知或者提示的情况下对手册内容进行修改的权利。 本手册仅作为使用指导,人大金仓在编写本手册时已尽力保证其内容准确可靠,但并不确保手册内容完全没有错 误或遗漏,本手册中的所有信息也不构成任何明示或暗示的担保。 技术支持 • 人大金仓官方网站:http://www.kingbase.com.cn/ • 人大金仓文档中心:http://help.kingbase.com.cn/ • 全国服务热线:400-601-1188 • 人大金仓技术支持与反馈信箱:support@kingbase.com.cn 40 服务周期承诺 服务周期承诺 由于市场需求在不断变化,技术创新和发展的进程不断加剧,产品的版本更迭不可避免。人大金仓对于产品版本 生命周期的有效管理,有助于您提前规划项目,更好地从产品服务终止上过渡。 表 1: KingbaseES 产品生命周期里程碑 关键里程碑点 定义 产品发布日期 产品正式发布版本,即 GA(general availability)版本的发布日期。 停止销售日期 正式停止销售的日期,版本停止接受订单日。该日之后,产品将不再销售。 停止功能升级日期 在该日期之后,不再提供新特性和新硬件支持。但依旧提供错误修复、安全修复、功 能维护等服务。 停止功能维护日期 在该日期之后,不再维护功能,修复问题。但依旧提供安全修复等服务 停止安全维护日期 在该日期之后,不再发布补丁版本修复中高风险漏洞,仅提供有限的支持。 产品服务终止日期 停止提供产品服务和支持的日期。包括软件维护版本,缺陷修复,以及针对该产品的 所有服务支持(包括服务热线和远程/现场支持)。 服务周期策略 金仓数据库管理系统 KingbaseES 产品确保以下的服务周期: 1)产品自发布之日起至产品停止功能升级(包含新特性、新硬件支持)之日不少于 5 年。 2)产品停止功能升级之日起至产品停止功能维护(主要包括问题修复)之日不少于 4 年。 3)产品功能维护停止之日起至产品停止安全维护(包括中高风险漏洞修复)之日不少于 2 年。 服务终止策略 金仓数据库管理系统 KingbaseES 产品确保在销售后,至少提供 6 年的服务支持。 注意: 人大金仓将会综合各方因素来确定产品服务终止日期。并将在实际产品服务终止日期之前至少 90 天,通过公 41 服务周期承诺 开方式宣布产品服务终止日期。 42

相关文章