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

制造业数据库的福音,金仓数据库sqlserver模式“硬控”住了

原创 严少安 2025-01-21
122

前情回顾

前面我们介绍了金仓数据库的版本发展脉络如何安装金仓数据库 KES,并大体介绍了KES 的 SQL Server 兼容性。本文继续给大家带来金仓数据库(SQL Server 兼容版)的最新体验。

喜讯:金仓数据库“双第一”

近日,权威市场研究机构赛迪顾问发布了《中国国产数据库行业应用创新实践指南(2024)》。报告显示,金仓数据库以绝对优势稳居2024年中国数据库管理系统医疗行业、交通行业应用竞争领导者象限首位。

金仓数据库支撑中国人民解放军总医院(301医院)云HIS系统上线运行,入选本报告医疗行业应用创新实践案例。在迁移过程中,金仓数据库KES与Oracle的兼容性评估达100%,应用适配(含数据库迁移)8小时完成移植,5天完成验证;原库与KES双轨并行运行时间14天,其中KES切换为主库10分钟完成,业务无阻塞;上线后核心业务毫秒级响应。

金仓数据库助力某市地铁列车自动监控系统(ATS)、轨道信号系统项目入选交通行业应用创新实践案例。本项目中,金仓数据库提供了基于KES数据库的全国产化解决方案,通过KES数据库的高可用组件和自仲裁、自选主能力,确保了ATS系统在高可用性和稳定性方面的要求。同时,金仓数据库还支持双网段架构,实现了秒级业务切换,满足了轨道交通对高可用的严苛要求。

KingbaseES V9R4 (SQL Server 兼容版)

金仓数据库下载中心上新了。

金仓数据库管理系统 KingbaseES V9 是企业级大型通用融合数据库产品。

  • 面向全市场,具备三种兼容模式,最新发布版本为 V009R001C002B0014 (2024-10-30)
  • New! 面向细分市场,高度兼容 MySQL,最新发布版本为 V009R003C010 (2025-01-10)
  • New! 面向细分市场,高度兼容 SQL Server,最新发布版本为 V009R004C010 (2025-01-10)

为满足企业级用户在 SQL Server 替换、事务处理、高并发访问及复杂查询等业务场景下的需求,KingbaseES 推出了 SQL Server 兼容版本。该版本不仅提供了 SQL Server 的基础兼容能力,还针对各行业应用场景增加了定制化功能,同时通过对性能和高可用性的优化和加固,确保了该版本具备高可靠、高性能和高安全性,助力企业实现平滑迁移和业务高效运行。

安装 KES 的 SQL Server 兼容版时,需要注意数据库模式只能选 SQL Server。

===============================================================================
Database Mode
-------------

Please enter database mode.

  ->1- SQL Server

ENTER THE NUMBER FOR YOUR CHOICE, OR PRESS <ENTER> TO ACCEPT THE DEFAULT:
复制

安装完成后,确认数据库版本和模式。

[shawnyan@rl9 ~]$ ksql
Licesen Type: SALES-企业版.
Type "help" for help.

kingbase=# select version();
         version
-------------------------
 KingbaseES V009R004C010
(1 row)

kingbase=# show database_mode;
 database_mode
---------------
 sqlserver
(1 row)
复制

KingbaseES 的 SQL Server 兼容性

KingbaseES 在兼容性设计上,从存储结构、逻辑结构、进线程结构、查询处理体系结构到事务处理机制均与 SQL Server 全面兼容。SQL 语法从数据类型(包括 ROWVERSION、SQL_VARIANT、TABLE)、系统函数、系统存储过程、常用数据库对象、事务处理语句、工具语句、Hint 用法、更新统计信息到各语句的使用细节(如 DELETE 可省略 FROM、语句后不加分号)等方面做了全面兼容,确保用户在迁移过程中能够享受到与原系统一致的使用体验。

ROWVERSION

ROWVERSION (行版本)是一种数据类型,用于显示数据库中自动生成的唯一二进制数字。ROWVERSION 通常用作对表行进行版本标记的机制。ROWVERSION 数据类型只是一个递增的数字,不保留日期或时间。

shawnyan=# create table tr (id int, rv rowversion);
CREATE TABLE
shawnyan=# insert into tr (id) values (1);
INSERT 0 1
shawnyan=# insert into tr (id) values (2);
INSERT 0 1
shawnyan=# table tr;
 id |         rv
----+--------------------
  1 | 0x0000000000000001
  2 | 0x0000000000000002
(2 rows)
复制

SQL_VARIANT

SQL_VARIANT 是一种存储各种 SQL Server 支持的数据类型的值的数据类型。

示例:创建一个具有 sql_variant 数据类型的表。

INSERT INTO t_sv VALUES (1, CAST(46279.1 AS DECIMAL(8,2)))
SELECT 
 SQL_VARIANT_PROPERTY(sv,'BaseType') AS 'Base Type', 
 SQL_VARIANT_PROPERTY(sv,'Precision') AS 'Precision', 
 SQL_VARIANT_PROPERTY(sv,'Scale') AS 'Scale'
FROM t_sv;
复制

查询结果如下。需要注意的是,这三个值都是 sql_variant 类型。

shawnyan=# SELECT
shawnyan-#  SQL_VARIANT_PROPERTY(sv,'BaseType') AS 'Base Type',
shawnyan-#  SQL_VARIANT_PROPERTY(sv,'Precision') AS 'Precision',
shawnyan-#  SQL_VARIANT_PROPERTY(sv,'Scale') AS 'Scale'
shawnyan-# FROM t_sv;
 Base Type | Precision | Scale
-----------+-----------+-------
 numeric   | 8         | 2
(1 row)
复制

PL/MSSQL

该版本新增存储过程调试功能,可通过命令行及可视化方式对 PL/MSSQL 进行调试。同时优化长事务处理机制,解决了长事务在提交过程中版本无法清理、并发等待、CSNLOG 误删等问题,大幅降低系统资源消耗,提升了长事务处理能力。

PLMSSQL 是 SQL 的过程扩展,是一种完全可移植的高性能事务处理语言。PL/MSSQL 对应 SQL Server 中的 T-SQL (Transact-SQL)。

PL/MSSQL 具有以下特点:

  • 支持系统变量和用户自定义变量
  • 支持存储过程
  • 支持存储过程
  • 支持触发器
  • 支持流程控制语句
  • 支持执行语句
  • 支持游标
  • 支持事务处理
  • 支持使用工具进行 SQL 开发

迁移工具

金仓数据库配套工具均已支持 SQL Server 模式。尤其是,KDTS 和 KFS 支持将 SQL Server 作为源端,将数据迁移到 KingbaseES 数据库。

以 KDTS 为例,迁移过程大致如下。

迁移前

保持源系统服务不变,在其它 SQL Server 服务器上新建一个中转库,通过备份还原的方式,将源系统当前数据备份到中转库;同时准备一个 Kingbase ES 数据库,用于从中转库搬迁数据。

为了便于验证演示,这里准备了一个 SQL Server 2022 数据库,创建一张测试表及测试数据。

create table t_sqlserver (
id int identity(1,1) primary key,
col01 decimal(18,4),
col02 money,
col03 float,
col04 real,
col05 varchar(20),
col06 nvarchar(20),
col07 datetime,
col08 datetime2(7),
col09 binary(20),
col10 varbinary(20),
col11 bit,
col12 uniqueidentifier,
col13 xml,
col14 nvarchar(max),
col16 as col01 *2
);
复制

sqlserverselect.png

1> select @@version;
2> go
 Microsoft SQL Server 2022 (RTM-CU17) (KB5048038) - 16.0.4175.1 (X64)
        Dec 13 2024 09:01:53
        Copyright (C) 2022 Microsoft Corporation
        Developer Edition (64-bit) on Linux (Ubuntu 22.04.5 LTS) <X64>


(1 row affected)
1> select * from t_sqlserver;
2> go
id    1
col01 12345.6789
col02 2025.0100
col03 3.1415926535
col04 2.718280076980
col05 Hello, SQL Server
col06 This is NVARCHAR.
col07 2025-01-29 18:32:42.530
col08 2025-01-29 17:05:07.1234567
col09 0x1234567890ABCDEF000000000000000000000000
col10 0xABCDEF123456
col11 1
col12 de35a83c-d915-4966-b49d-80b3dcdb940b
col13 <root><item>XML sample</item></root>
col14 {"name":"ShawnYan","City":"Toulouse"}
col16 24691.3578


(1 row affected)
复制

迁移中

结构搬迁到目标端后,接着将存量数据(历史数据)迁移至中转库,并记录存量数据断点,再从中间库中将存量数据迁移至 KingbaseES。当存量数据迁移完成后,运行 Kingbase Flysync 从指定的源数据库断点开始抓取事务数据,直至数据追平。

这里使用 KDTS Web 版本进行迁移,访问 http://{IP}:54523/ 登陆迁移工具页面。

友情提示:

新版本 KDTS 用户: kingbase,密码:Kb_DI@2019

kdtshomepage.png

分别添加数据源数据库(SQL Server)和目标端数据库(KingbaseES V9 sqlserver 兼容版),添加迁移任务,并进行全量迁移。

稍等片刻,提升迁移成功。

kdts.png

迁移后

校验源端数据库中的数据与目标端中的数据是否一致,监控同步程序运行是否正常。

登陆 KES 数据库,查看迁移后的表结构和表数据,确认数据迁移正常。

kestable.png

shawnyan=# select @@version;
-[ RECORD 1 ]----------------------
@@version | KingbaseES V009R004C010

shawnyan=# show database_mode;
-[ RECORD 1 ]-+----------
database_mode | sqlserver

shawnyan=# \d t_sqlserver
                      Table "dbo.t_sqlserver"
 Column |       Type       | Collation | Nullable |     Default
--------+------------------+-----------+----------+-----------------
 id     | int              |           | not null | IDENTITY(1, 1)
 col01  | numeric(18,4)    |           |          |
 col02  | money            |           |          |
 col03  | float            |           |          |
 col04  | real             |           |          |
 col05  | varchar(20)      | ci_x_icu  |          |
 col06  | nvarchar(20)     | ci_x_icu  |          |
 col07  | datetime         |           |          |
 col08  | datetime2(7)     |           |          |
 col09  | binary(20)       |           |          |
 col10  | varbinary(20)    |           |          |
 col11  | bit              |           |          |
 col12  | uniqueidentifier |           |          |
 col13  | xml              |           |          |
 col14  | nvarchar(max)    | ci_x_icu  |          |
 col16  | numeric(20,4)    |           |          |
Indexes:
    "PK__t_sqlser__3213E83FC507D55E_FE41EEA" PRIMARY KEY, btree (id NULLS FIRST)

shawnyan=# select * from t_sqlserver;
-[ RECORD 1 ]-------------------------------------
id    | 1
col01 | 12345.6789
col02 | 2025.0100
col03 | 3.1415926535000001
col04 | 2.7182801
col05 | Hello, SQL Server
col06 | This is NVARCHAR.
col07 | 2025-01-29 18:32:42.530
col08 | 2025-01-29 17:05:07.1234570
col09 | 0x1234567890ABCDEF000000000000000000000000
col10 | 0xABCDEF123456
col11 | 1
col12 | DE35A83C-D915-4966-B49D-80B3DCDB940B
col13 | <root><item>XML sample</item></root>
col14 | {"name":"ShawnYan","City":"Toulouse"}
col16 | 24691.3578
复制

结语

视窗系统上的旗舰数据库 SQL Server 本在传统制造业有着不可撼动的霸主地位,但在信创浪潮冲刷之下,高可靠、高性能的要求更加突出,尤其是需要深度适配国产芯片、服务器和操作系统等,金仓数据库在 SQL Server 语法兼容、数据开发、应用迁移等方面走在业界前列,从数据侧实实在在帮助客户降本增效。

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

文章被以下合辑收录

评论