一文了解金仓数据库 KES 的 SQL Server 兼容性

在国产基础软件替代的浪潮中,数据库的国产化是关键一环。采用国内自主研发的数据库产品,不仅能够增强系统的可靠性和安全性,还能有效降低IT成本。微软的 SQL Server 数据库在国内多个行业,如 IT 服务、医疗保健、教育、零售和工业等,都占有较大的市场份额。为了帮助这些行业和企业顺利过渡到国产数据库,金仓数据库 KingbaseES 正在不断提升其对 SQL Server 的兼容能力。

KingbaseES 与 SQL Server 的对比

Microsoft SQL Server

SQL Server 是由 Microsoft 开发的基于 SQL 的关系型数据库管理系统(RDBMS),广泛应用于商业智能、事务处理、数据分析和机器学习等领域。它以行为基础构建表结构,允许跨表关联数据元素,避免了数据的重复存储。

KingbaseES

KingbaseES 是由电科金仓自主研发的关系型数据库管理系统,与众多企业应用兼容,特别是在电子政务、国防军工、能源、运营商和金融等60多个关键行业有着广泛的应用。

关于金仓数据库的更多内容:

SQL Server 与 KingbaseES 的相似之处

SQL Server 和 KingbaseES 都是市场上流行的关系型数据库管理系统。它们都支持关系型数据库功能,并与大小企业应用兼容。SQL Server 通常被依赖 Microsoft 产品的大组织所选择,而 KingbaseES 作为国产数据库的佼佼者,为关键行业提供了强有力的数据支持。

SQL Server 与 KingbaseES 的不同之处

SQL Server 使用 Transact-SQL (T-SQL),它提供 SQL 的所有功能,并添加了几个专有编程扩展。KingbaseES 使用标准SQL,并提供了 sqlserver 兼容模式,以简化从 SQL Server 到 KingbaseES 的迁移过程。

在操作系统支持方面,SQL Server 仅在 Microsoft 或 Linux 上运行,而 KingbaseES 则支持多种硬件和操作系统,包括国产CPU、服务器和操作系统,并与大多数国产中间件兼容。

在成本方面,SQL Server 的商业许可费用较高,而 KingbaseES 的许可费用更加亲民化。两者都提供免费的开发者版本,但功能有所限制。

安装配置 KES 的 SQL Server 兼容模式

KingbaseES (SQL Server 兼容模式)的基础安装、设定与其他兼容模式(PG、Oracle 和 MySQL)大致相似,安装过程参阅:金仓数据库 KES V9 安装指南

安装完成后,登陆 KES 服务器查看数据库模式。

[shawnyan@rl9 ~]$ ksql
Welcome to KingbaseES (sqlserver)!
Your KES connection id is 8955
---------------
Type "help" for help.

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

kingbase=#

语法兼容

KES 兼容 SQL Server 常用语法达 95% 以上,兼具功能与架构兼容。

具体来说,兼容 SQL 语言,如:数据类型、数据库对象、对象操作等;兼容 T-SQL 扩展语法,如:事务处理、异常处理、跨库访问等;SDK 兼容,如:内置函数、内置视图、内置系统变量、内置存储过程等。

示例 1,创建包含 sqlserver 数据类型的测试表。

create table t (
c_bit bit,
c_int int,
c_dec decimal(18,2),
c_num numeric(18,2),
c_mon money,
c_flo float,
c_rel real,

c_char char(10),
c_varc varchar(10),
c_varb varbinary(10),

c_date date,
c_date1 datetime,
c_date2 datetime2(6),
-- c_date3 datetimeoffset(6),
c_date4 smalldatetime

);

查看表结构。

kingbase=# \d+ t
                                         Table "public.t"
 Column  |     Type      | Collation | Nullable | Default | Storage  | Stats target | Description
---------+---------------+-----------+----------+---------+----------+--------------+-------------
 c_bit   | bit           |           |          |         | plain    |              |
 c_int   | int           |           |          |         | plain    |              |
 c_dec   | numeric(18,2) |           |          |         | main     |              |
 c_num   | numeric(18,2) |           |          |         | main     |              |
 c_mon   | money         |           |          |         | plain    |              |
 c_flo   | float         |           |          |         | plain    |              |
 c_rel   | real          |           |          |         | plain    |              |
 c_char  | char(10)      | ci_x_icu  |          |         | extended |              |
 c_varc  | varchar(10)   | ci_x_icu  |          |         | extended |              |
 c_varb  | varbinary(10) |           |          |         | extended |              |
 c_date  | date          |           |          |         | plain    |              |
 c_date1 | datetime      |           |          |         | plain    |              |
 c_date2 | datetime2(6)  |           |          |         | plain    |              |
 c_date4 | smalldatetime |           |          |         | plain    |              |
Access method: heap

示例 2,KES 兼容 SQL Server 的内置系统变量。

kingbase=# select @@connections, @@datefirst, @@langid, @@max_connections, @@rowcount;
 @@connections | @@datefirst | @@langid | @@max_connections | @@rowcount
---------------+-------------+----------+-------------------+------------
             2 |           7 |        0 |               100 |          0
(1 row)

kingbase=# select @@version;
                                                        @@version
--------------------------------------------------------------------------------------------------------------------------
 KingbaseES V008R006C008M041B0010 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28), 64-bit
(1 row)

SQL Server 到 KES 迁移注意事项

数据库迁移是一个复杂的系统工程,需要多部门的协同合作。以下是一些技术要点,以供参考。

迁移准备

在迁移前,需要对现有的 SQL Server 数据库进行全面评估,包括数据库容量、增长趋势、对象、字段类型、字符集、大小写、排序规则和应用接口等。

如,查询待同步表包含的所有数据类型 SQL 语句:

SELECT
 ts.name AS DATA_TYPE
, COUNT(0)
FROM
 sys.all_columns ac
LEFT JOIN sys.tables t ON
 t.object_id = ac.object_id
LEFT JOIN sys.schemas s ON
 s.schema_id = t.schema_id
LEFT JOIN sys.types ts ON
 ts.system_type_id = ac.system_type_id
WHERE
 s.name = 'TEST' -- 待同步模式的模式名
GROUP BY
 ts.name
ORDER BY COUNT(0) DESC;

查看数据库编码:

SELECT
 SERVERPROPERTY(
 N'collation'
) AS COLLATION -- 数据库字符集
, @@LANGUAGE AS LANGUAGE -- 数据库使用的语言,如us_english等
, COLLATIONPROPERTY(
 'chinese_prc_ci_as'
'codepage'
);

评估数据库容量:

SELECT
 t.name
, SUM(sPTN.Rows)
FROM
 sys.tables t
INNER JOIN sys.partitions AS sPTN ON
 t.object_id = sPTN.object_id
LEFT JOIN sys.schemas s ON
 s.schema_id = t.schema_id
WHERE
 s.name = 'test' -- 待同步数据库的模式名
GROUP BY
 t.name
ORDER BY SUM(sPTN.Rows) DESC;

迁移同步工具

推荐使用金仓的数据迁移工具 Kingbase Data Transformation Service (KDTS) 和数据同步工具 Kingbase FlySync (KFS)。

数据库数据迁移平台(KDTS)是为用户提供 Oracle、MySQL、PostgreSQL、SQLServer 等数据库数据迁移到 KingbaseES 数据库的数据迁移工具。KDTS 操作简单、稳定高效,可以帮助用户轻松完成数据库迁移的工作。

Kingbase FlySync 是面向同城/异地灾备、数据库平滑升级替换、数据集中共享与分发、应用上云迁移、数据库负载均衡等场景的数据同步产品。该产品基于增量日志解析技术,性能高、时延低、资源占用极少,能够实现异构数据源之间大规模增量数据的任意方向流转和实时同步。

使用 Kingbase FlySync 工具时,需使用 SQL Server CDC 的形式获取增量数据,部署时需要使用 SA 账号自动创建 KFS 运行时需要的普通账号,之后不再使用 SA 账号。

根据迁移窗口和方式划分,离线迁移,可以使用 KDTS 完成 SQL Server 的完整迁移;在线迁移,可先使用 KDTS 完成历史数据迁移,再使用 KFS 完成数据追平。

其他建议

  1. 仅迁移数据不改造代码是不可能完成的任务,KES 的 sqlserver 模式可以显著降低该任务的难度。
  2. 系统测试不可少,国产化迁移不仅涉及数据库迁移,还包括软硬件以及人员技能水平等诸多因素。
  3. 双轨运行是必要的,完成项目迁移后,建议双轨并行一段时间。

附:KingbaseES全面兼容SQLServer之重装上阵

9月份,金仓数据库专家通过视频号【金仓数据库】做过线上直播分享,主题为【KingbaseES全面兼容SQLServer之重装上阵】。

PPT分享:

alt

Have a nice day ~


🌻 往期精彩 ▼


-- / END / --

👉 这里可以找到我

👉 这里有得聊

如果对国产基础软件(操作系统、数据库、中间件)感兴趣,可以加群一起聊聊。

关注微信公众号:少安事务所,后台回复[群],即可看到入口。

如果这篇文章为你带来了灵感或启发,就请帮忙点『』or『在看』or『转发』吧,感谢!ღ( ´・ᴗ・` )~

本文由 mdnice 多平台发布

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值