#数据库平替用金仓 #金仓产品体验官

摘要:本文以体验项目案例为主线,从下载安装、数据类型、T-SQL、JDBC、性能基准、踩坑回退六大维度,全景验证 KingbaseES V9R4C12 对 SQL Server 的“零改造”兼容承诺;并给出 TPCH 100G 性能对比与灰度割接方案,为信创替换提供可复制的落地指南。

目录

一、为什么要“平替”

二、30 分钟完成部署

2.1 下载与安装

2.2 金仓数据库开发工县KStudio

2.3 创建兼容库(Linux系统)

三、兼容性全景测试

3.1 特殊数据类型“一把梭”

3.2 语法糖:NOWAIT、SKIP LOCKED、FOR XML、TOP

3.2.1 行级锁行为

3.2.2 FOR XML

3.2.3 TOP 子句

3.3 存储过程与 T-SQL 细节

3.3.1 批处理 GO、PRINT、RAISERROR

3.3.2 “最后一个字段可加逗号”

3.4 JDBC 兼容测试

四、性能对比:TPCH 100G

4.1 硬件规格

4.2 测试方法

4.3 结果摘要(单位:秒)

五、踩坑与填坑

5.1 “IDENTITY_INSERT” 行为差异

5.2 全文索引

5.3 链接服务器

六、割接方案与回退策略

七、写在最后


一、为什么要“平替”

过去十年,我们团队的核心业务一直跑在 SQL Server 2016/2019 双节点 AlwaysOn 集群上。随着国央企信创节奏加快,继续留在 Windows + SQL Server 技术栈不仅面临合规风险,License 费用也逐年攀升。经过多轮 PoC,我们把目光锁定在 KingbaseES V9R4C12(SQL Server 兼容版)——官方宣称“数据库平替用金仓”,推出低风险迁移方案,这些对背负 2000+ 存储过程、300+ 链接服务器的系统来说,诱惑力极大。

本文记录了一次“从下载到上线”的完整旅程:

1.部署安装

2.兼容性验证(数据类型、T-SQL、接口、工具链)

3.性能对比

4.踩坑与填坑

5上线割接方案


二、30 分钟完成部署

2.1 下载与安装

金仓官网下载:https://www.kingbase.com.cn/download.html#database

(1)Windows下载与安装:

本文主要针对Windows系统进行体验测试,分享给大家一起交流学习!打开上面金仓官网地址,然后筛选 V9R4C12(SQLServer兼容版),如下图所示

然后选择 X64_Windows(如下图所示)

下面就开始下载,下载完成虎双击打开文件(如下图所示)

然后会自动跳转到下面这个驱动器,点击KINGBSASE.EXE然后开始安装(如下图所示)

接下来就来到安装程序图,如下图所示,点击下一步

1.简介,点击接受然后下一步(如下图)

2.许可协议,新手建议完全安装(如下图所示)

3.选择安装集,选择想要安装的位置,如下图我选择安装在E盘上

4.选择安装文件夹,安装(如下图所示)

5.预安装摘要、添加功能、选择安装集,系统自动安装,如下图所示:

6.正在安装,选择一个文件夹,用于存储数据的,改文件夹必须为空(如下图所示)

7.选择文件夹,数据库默认端口号:54321,用户名:system,然后输入对应的密码(如下图)

到这里就完成了Windows数据库的初始化工作!

(2)Linux下载与安装:

官方下载页提供了 Linux x86_64 一键 tar 包Windows GUI 安装向导。如下图所示,点击下载

下载后如下图所示,通过ftp方式上传到Linux服务器上进行安装

 

# 1. 创建 kingbase 用户
useradd kingbase && echo 'kingbase ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers# 2. 解压
tar -xzf kingbasees_v9r4c12_linux_x64.tar.gz -C /opt
chown -R kingbase:kingbase /opt/kingbase# 3. 初始化实例
su - kingbase
/opt/kingbase/install/initdb -D /data/kingbase -E UTF8 --locale=zh_CN.UTF-8
/opt/kingbase/install/kingbase -D /data/kingbase > kingbase.log 2>&1 &

2.2 金仓数据库开发工县KStudio

打开刚才安装的工具Kstudio,如下图所示

新建连接,注意密码是刚才上面安装设置的密码,我这里刚才设置是:qwertyuiop123456

点击测试连接,提示连接成功,如下图:

 

(1)新建数据库

CREATE DATABASE [xiaoxiang] WITH OWNER = [system] ENCODING 'UTF8' TEMPLATE [template1]TABLESPACE = [sys_default]lc_collate = 'zh_CN.UTF-8'lc_ctype = 'zh_CN.UTF-8'connection_limit = -1allow_connections = TRUEis_template = FALSE;ALTER DATABASE [xiaoxiang] COLLATE Chinese_PRC_CI_AI;

 (2)新增表

CREATE TABLE [public].[title] ([id] integer IDENTITY(1,1) NOT NULL,[title] varchar(128),[description] varchar(512)
);ALTER TABLE [public].[title] SET
TABLESPACE [sys_default];

(3)插入数据库,可以手动写sql,也可以界面操作,非常方便

INSERT INTO [public].[title]
([id], [title], [description])
VALUES(2, '电科金仓2025发布会', '电科金仓2025.07.15在北京举行发布会');

(4)修改表数据

UPDATE [public].[title]
SET [id]=2, [title]='电科金仓2025发布会-通知2', [description]='电科金仓2025.07.15在北京举行发布会2';

(5)删除表数据

 

DELETE FROM [public].[title]
WHERE [id]=2 AND [title]='电科金仓2025发布会-通知2' AND [description]='电科金仓2025.07.15在北京举行发布会2';

 

2.3 创建兼容库(Linux系统)

KingbaseES 可以同时创建 Oracle 模式PostgreSQL 模式SQL Server 模式 三种库。这里指定:

-- 通过 ksql 连接
CREATE DATABASE ss_app DBCOMPATIBILITY='mssql';
\c ss_app

注:DBCOMPATIBILITY 参数只能在建库时指定,后续不可修改。


三、兼容性全景测试

3.1 特殊数据类型“一把梭”

SQL Server 的 ROWVERSION/TIMESTAMP、SQL_VARIANT、UNIQUEIDENTIFIER、SYSNAME 在 KingbaseES 中都有直接映射,测试脚本如下:

-- 1. ROWVERSION
CREATE TABLE t1 (id INT PRIMARY KEY,rv ROWVERSION
);-- 插入测试
INSERT INTO t1(id) VALUES (1),(2);
SELECT * FROM t1;
-- rv 字段自动递增,行为与 SQL Server 完全一致-- 2. SQL_VARIANT
CREATE TABLE t2 (v SQL_VARIANT
);
INSERT INTO t2 VALUES (123), ('abc'), (GETDATE());
SELECT v, SQL_VARIANT_PROPERTY(v,'BaseType') AS BaseType FROM t2;-- 3. UNIQUEIDENTIFIER & NEWSEQUENTIALID()
CREATE TABLE t3 (gid UNIQUEIDENTIFIER DEFAULT NEWSEQUENTIALID() PRIMARY KEY,name SYSNAME
);
INSERT INTO t3(name) VALUES ('体验官');
SELECT * FROM t3;

结论:所有类型均可直接替换,无需改写。

3.2 语法糖:NOWAIT、SKIP LOCKED、FOR XML、TOP

3.2.1 行级锁行为
-- 会话 A
BEGIN TRAN;
UPDATE t1 SET id = id WHERE id = 1;-- 会话 B
SELECT * FROM t1 WHERE id = 1 NOWAIT;   -- 立即报错
SELECT * FROM t1 WHERE id = 1 SKIP LOCKED; -- 跳过被锁行
3.2.2 FOR XML
SELECT * FROM t3 FOR XML RAW, ROOT('root');

KingbaseES 支持 RAW、AUTO、EXPLICIT、PATH 四种模式,输出与 SQL Server Management Studio 结果一致。

3.2.3 TOP 子句
SELECT TOP (3) WITH TIES * FROM t2 ORDER BY v;

WITH TIES 也支持,惊喜。

3.3 存储过程与 T-SQL 细节

3.3.1 批处理 GO、PRINT、RAISERROR
PRINT N'开始同步...';BEGIN TRYINSERT INTO t1(id) VALUES (1/0);
END TRY
BEGIN CATCHRAISERROR('同步失败:%s', 16, 1, ERROR_MESSAGE());
END CATCH;
GO -- 批处理分隔符
PRINT '完成';

注意点:

  • RAISERROR 语法完全一致,支持 WITH NOWAIT

  • THROW 同样可用,与 SQL Server 2012+ 行为一致。

3.3.2 “最后一个字段可加逗号”
CREATE TABLE t4 (a INT,b INT,   -- 这里多了个逗号
);

KingbaseES 不会报错,对老系统极其友好。

3.4 JDBC 兼容测试

我们原来的 Spring Boot + MyBatis 项目,连接串从

jdbc:sqlserver://...

改成

jdbc:kingbase8://...?compatibleMode=mssql

即可,无一行 Java 代码改动

验证五种存储过程场景:

  1. 无参数

  2. IN 参数

  3. OUT 参数

  4. 返回值

  5. 更新计数

全部通过单元测试,MyBatis XML 中的 statementType="CALLABLE" 无需调整。


四、性能对比:TPCH 100G

4.1 硬件规格

  • 2 × Intel 6230R 26C52T

  • 512 GB DDR4

  • NVMe SSD 3.2 TB RAID0

  • CentOS 7.9 + 关闭 NUMA

4.2 测试方法

  • SQL Server 2019 企业版(无补丁)

  • KingbaseES V9R4C12(mssql 模式)

  • TPCH 100G 数据,表结构、索引脚本完全一致

4.3 结果摘要(单位:秒)

QuerySQL ServerKingbaseES差异
Q128.426.9-5%
Q542.144.3+5%
Q9118.7115.2-3%
Q21210.9205.4-3%

结论:两者互有胜负,整体差距在 ±5% 以内,可视为同一梯队。


五、踩坑与填坑

5.1 “IDENTITY_INSERT” 行为差异

KingbaseES 支持 SET IDENTITY_INSERT ON,但作用域仅限当前会话,事务提交后仍保持 ON,而 SQL Server 会自动 OFF。
解决:在存储过程末尾显式 SET IDENTITY_INSERT OFF

5.2 全文索引

SQL Server 的 CONTAINS/CONTAINSTABLE 默认启用;KingbaseES 需安装 kdb_text 扩展并手动创建词典。
解决

CREATE EXTENSION kdb_text;
-- 创建中文分词配置

5.3 链接服务器

KingbaseES 提供 kdb_database_link 扩展,可连接 SQL Server、Oracle、MySQL。

CREATE EXTENSION kdb_database_link;
SELECT dblink_connect('conn', 'sqlserver://user:pwd@host:1433/db');

实测分布式查询性能损耗 <10%,已用于 ETL。


六、割接方案与回退策略

阶段动作时间窗口回退方案
全量迁移使用 SSDT + Kingbase Migration Toolkit4 h原 SQL Server 只读
增量同步基于 CDC + Debezium 实时同步持续一键切换回 DNS
灰度验证20% 流量到 KingbaseES1 周流量权重回退
全量切换100% 流量0.5 h回滚 DNS + 连接池


七、写在最后

如果你也在寻找一条 低成本、低风险、周期短 的 SQL Server 信创路线,KingbaseES V9R4C12 值得认真评估。它并不是“阉割版”兼容,而是把 SQL Server 常用语法、类型、接口、工具链几乎 1:1 还原,性能也能打平。

10 个关键字解说:

  1. KingbaseES:人大金仓企业级关系型数据库,本文体验版本 V9R4C12。

  2. SQL Server兼容版:KingbaseES 专用模式,语法、类型、接口与 SQL Server 对齐。

  3. DBCOMPATIBILITY:建库参数,设置 mssql 即启用兼容模式。

  4. ROWVERSION:SQL Server 时间戳类型,KingbaseES 原生支持并自动维护。

  5. FOR XML:SQL Server 结果集转 XML 语法,KingbaseES 支持 RAW/AUTO/PATH 四种。

  6. RAISERROR:T-SQL 错误处理语句,兼容 SQL Server 级别与 NOWAIT 选项。

  7. kdb_database_link:金仓插件,实现跨库、跨异构实例的联邦查询。

  8. NEWSEQUENTIALID:生成顺序 GUID 的函数,迁移后无需改写主键策略。

  9. TPCH 100G:标准化决策支持基准,用于性能横向对比。

  10. 灰度割接:按权重逐步切换流量、零回滚窗口的上线策略。

本文相关链接推荐:

1、【金仓数据库征文】政府项目数据库迁移:从MySQL 5.7到KingbaseES的蜕变之路

2、【金仓数据库征文】学校AI数字人:从Sql Server到KingbaseES的数据库转型之路

3、电科金仓2025发布会,国产数据库的AI融合进化与智领未来

4、国产数据库逆袭:老邓的“六大不敢替”被金仓逐一破解

5、《一行代码不改动!用KES V9 2025完成SQL Server → 金仓“平替”迁移并启用向量检索》

6、《赤兔引擎×的卢智能体:电科金仓如何用“三骏架构”重塑AI原生数据库一体机》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/916646.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/916646.shtml
英文地址,请注明出处:http://en.pswp.cn/news/916646.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

EasyPlayer播放器系列开发计划2025

EasyPlayer系列产品发展至今&#xff0c;已经超过10年&#xff0c;从最早的EasyPlayer RTSP播放器&#xff0c;到如今维护的3条线&#xff1a;EasyPlayer-RTSP播放器&#xff1a;Windows、Android、iOS&#xff1b;EasyPlayerPro播放器&#xff1a;Windows、Android、iOS&#…

通信名词解释:I2C、USART、SPI、RS232、RS485、CAN、TCP/IP、SOCKET、modbus等

以下内容参考AI生成内容1. I2C&#xff08;Inter-Integrated Circuit&#xff0c;集成电路间总线&#xff09;定义&#xff1a;由飞利浦&#xff08;现恩智浦&#xff09;开发的短距离串行通信总线&#xff0c;用于芯片级设备间的低速数据传输。工作原理&#xff1a;采用两根信…

bash的特性-常见的快捷键

一、前言在 Linux Shell 编程和日常使用中&#xff0c;Bash 快捷键 是提升命令行操作效率的利器。熟练掌握这些快捷键&#xff0c;不仅可以节省大量输入时间&#xff0c;还能显著提升你在终端环境下的操作流畅度。本文将带你全面了解 Bash 中常用的快捷键&#xff0c;包括&…

【Java Web实战】从零到一打造企业级网上购书网站系统 | 完整开发实录(三)

&#x1f3a8; 核心功能设计 &#x1f464; 用户管理系统 用户管理是整个系统的基础&#xff0c;我设计了完整的用户生命周期管理&#xff1a; &#x1f510; 用户注册流程 #mermaid-svg-D0eUHWissjNhkqlB {font-family:"trebuchet ms",verdana,arial,sans-serif;fon…

uniapp input 聚焦时键盘弹起滚动到对应的部分

实现效果代码如下<template><view idapp><view class"aa"></view><iconfont name"left"></iconfont>姓氏&#xff1a;<input style"background-color: antiquewhite;" type"text" v-model&quo…

【基础篇三】WebSocket:实时通信的革命

目录 一、传统HTTP的"痛点"分析 1.1 HTTP的单向通信模式 1.2 "实时"效果的痛苦尝试 ​编辑 1.3 性能对比分析 二、WebSocket 协议详解 2.1 WebSocket是什么&#xff1f; ​编辑 2.2 WebSocket的核心特性 2.2.1 全双工通信&#xff08;Full-Duple…

设计模式(十八)行为型:中介者模式详解

设计模式&#xff08;十八&#xff09;行为型&#xff1a;中介者模式详解中介者模式&#xff08;Mediator Pattern&#xff09;是 GoF 23 种设计模式中的行为型模式之一&#xff0c;其核心价值在于通过引入一个中介者对象来封装一组对象之间的交互&#xff0c;从而降低对象间的…

Upload-Labs通关全攻略详细版

前端校验绕过:pass 01 两种思路:1.通过抓包,修改后缀 2.前端禁用js绕过前端后缀检验 首先写一个木马,改为图片格式GIF89a<?php eval($_POST[cmd])?>抓包之后改为PHP格式: 使用蚁剑连接木马,第一次尝试一直是返回数据为空,原因是没有链接到木马,于是寻找木马地址…

C#观察者模式示例代码

using System; using System.Collections.Generic; using System.Threading;namespace RefactoringGuru.DesignPatterns.Observer.Conceptual {// Observer观察者 也可以叫做订阅者 subscriberspublic interface IObserver{// Receive update from subject// 接收来自主题的更新…

电子电子架构 --- 软件项目的开端:裁剪

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活,除了生存温饱问题之外,没有什么过多的欲望,表面看起来很高冷,内心热情,如果你身…

Open CV图像基本操作可莉版

Open CV图像基本操作一、处理单个像素值访问像素值修改像素值二、处理单个ROI区域&#xff08;自选区域&#xff09;提取 ROI修改 ROI三、 处理图像通道通道分离通道合并四、处理整体图像缩放图像旋转图像平移图像翻转一、处理单个像素值 图像是由像素组成的矩阵&#xff0c;每…

k8s:将打包好的 Kubernetes 集群镜像推送到Harbor私有镜像仓库

本文介绍了在离线环境中部署Harbor镜像仓库的完整流程。首先通过脚本创建多个Harbor项目&#xff0c;然后使用KubeKey工具将预打包的Kubernetes镜像(kubesphere.tar.gz)推送到Harbor仓库。接着配置containerd以支持从私有仓库拉取镜像&#xff0c;包括设置TLS证书和镜像仓库端点…

IntelliJ IDEA中管理多版本Git子模块的完整指南

1.背景介绍项目是父子工程。父工程XXX-ZZZ-CCC。子模块XXX-api在线上git网站管理,有多个分支版本。现在需要接收别人代码&#xff0c;导入到本机管理。可以实现本机切换&#xff0c;修改&#xff0c;上传。2.创建本地仓库并拉取所有版本2.1.创建目录在D:\ideaworkspace\midend-…

Android ADB命令之内存统计与分析

一、核心命令总览工具 / 命令用途示例adb shell dumpsys meminfo查看设备全局内存状态adb shell dumpsys meminfoadb shell dumpsys meminfo <package>获取应用详细内存分类统计adb shell dumpsys meminfo com.example.appadb shell top动态查看进程内存和 CPU 占用adb s…

算法思维进阶 力扣 300.最长递增子序列 暴力搜索 记忆化搜索 DFS 动态规划 C++详细算法解析 每日一题

目录零、题目描述一、为什么这道题值得你深入理解&#xff1f;二、题目拆解&#xff1a;提取核心关键点三、明确思路&#xff1a;从暴力到优化的完整进化3. 进一步优化&#xff1a;动态规划&#xff08;自底向上递推&#xff09;4. 终极优化&#xff1a;贪心 二分查找&#xf…

图解网络-小林coding笔记(持续更新)

大纲 #mermaid-svg-trl6Q4B1uDO1z05w {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-trl6Q4B1uDO1z05w .error-icon{fill:#552222;}#mermaid-svg-trl6Q4B1uDO1z05w .error-text{fill:#552222;stroke:#552222;}#merm…

安宝特案例丨AR+AI+SOP?3大技术融合革新军工航天领域

军工、航空、航天领域存在 “小批量、多品种、依赖人工经验装配”的特性&#xff0c;这长期制约着生产效率与产品质量的提升。 技术融合应用案例 1 Arbigtec 装配效率提升类&#xff1a; 某型导弹制导系统装配&#xff1a;采用 AR 眼镜与 AI 视觉引导系统&#xff0c;200 精…

ip link show 查看/配置网络接口

ip link show&#xff08;或简写为 ip link&#xff09;是 Linux 系统中用于查看和配置网络接口&#xff08;网卡、虚拟接口等&#xff09;的命令&#xff0c;属于 iproute2 工具集的一部分。它是现代 Linux 系统中替代传统 ifconfig 命令的更强大工具。命令详解 基本语法 ip l…

电科金仓新一代数据库一体机:以 “云数据库 - AI 版” 引领 AI 时代数据库变革

前言 AI时代的数据库一体机市场&#xff0c;只能用两个词来形容&#xff1a;高手云集&#xff0c;战况激烈&#xff01; 国际巨头仍在高端市场占据主导地位&#xff0c;但在国产替代的冲击下&#xff0c;也开始另寻突破口&#xff1b;国内科技大厂攻势迅猛&#xff0c;通过开源…

IT运维的365天--033 跨交换机部署没有单独供电口的爱快AP到另一个地方去

前情提要&#xff1a;由于工作需要&#xff0c;领导要求在车间也添加一个无线网络供员工和设备使用&#xff0c;之前公司已经有一个爱快网络供员工使用&#xff0c;且物理隔绝部署在集团办公楼这边了。我一向是不喜欢碰到一个小事就拉一条网线&#xff0c;那样不得搞的跟蜘蛛网…