摘要: 随着"双碳"目标推进,国产数据库在新能源行业数字化转型中发挥关键作用。电科金仓(Kingbase)数据库成功支撑中广核新能源600多个场站的管理系统,通过解决复杂迁移、高并发访问等难题,实现99.999%系统可用性。本文展示了新能源场站管理的数据模型设计,包括场站信息、设备数据和实时监控等核心表结构,提供了数据操作、统计分析及性能优化的SQL示例,为新能源企业数据库国产化替代提供了实践参考。
1.前言
随着全球能源革命与数字革命的深度融合,新能源行业正迎来前所未有的发展机遇。在"双碳"目标推动下,电力行业加速向智能化、绿色化转型,数据库作为信息系统的核心基石,其国产化替代已成为保障能源安全、提升运营效率的关键。电科金仓(KINGBASE)作为国产数据库的领军企业,通过多个标杆项目,展现了在新能源领域的强大技术实力和行业领导力。本文结合具体案例与行业数据,深入剖析金仓数据库如何助力新能源企业实现数字化转型。

2.新能源场站管理数据模型设计
中广核新能源控股有限公司在生产运维系统中面临系统孤立、数据割裂等挑战。金仓数据库通过30天攻坚 ,成功支撑系统上线,覆盖600多个新能源场站 和6000多名人员 ,实现了检修管理、智能运维等业务的统一整合。项目突破四大难题:复杂迁移、高并发访问、异地容灾和分步替换。金仓方案凭借"迁移零修改"的兼容性、自治调优性能以及多级别高可用架构,确保系统可用性达99.999%,满足灾难恢复能力5级要求。

2.1 基本表结构创建
以下是一个典型的新能源场站监控系统的核心表结构:
sql
-- 创建场站基本信息表
CREATE TABLE power_station (
station_id VARCHAR(20) PRIMARY KEY,
station_name VARCHAR(100) NOT NULL,
station_type VARCHAR(20) CHECK (station_type IN ('风电', '光伏', '储能', '水电')),
capacity DECIMAL(10,2),
location VARCHAR(200),
grid_connection_date DATE,
status VARCHAR(10) DEFAULT '正常'
);
COMMENT ON TABLE power_station IS '新能源场站基本信息表';
COMMENT ON COLUMN power_station.station_id IS '场站编号';
COMMENT ON COLUMN power_station.station_type IS '场站类型:风电、光伏、储能、水电';
sql
-- 创建实时监控数据表
CREATE TABLE real_time_monitoring (
record_id BIGSERIAL PRIMARY KEY,
station_id VARCHAR(20) REFERENCES power_station(station_id),
collection_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
active_power DECIMAL(8,2),
wind_speed DECIMAL(5,2),
temperature DECIMAL(4,1),
device_status VARCHAR(20)
);
-- 创建设备信息表
CREATE TABLE equipment_info (
equipment_id VARCHAR(30) PRIMARY KEY,
station_id VARCHAR(20) REFERENCES power_station(station_id),
equipment_name VARCHAR(100),
equipment_type VARCHAR(30),
manufacturer VARCHAR(50),
installation_date DATE,
maintenance_cycle INTEGER
);
2.2 数据插入操作
sql
-- 插入场站基本信息
INSERT INTO power_station (station_id, station_name, station_type, capacity, location, grid_connection_date)
VALUES ('FD2023001', '张北风电场一期', '风电', 150.00, '河北省张家口市张北县', '2023-01-15');
INSERT INTO power_station (station_id, station_name, station_type, capacity, location, grid_connection_date)
VALUES ('GF2023001', '宁夏光伏电站', '光伏', 200.50, '宁夏回族自治区银川市', '2023-03-20');
-- 批量插入设备信息
INSERT INTO equipment_info (equipment_id, station_id, equipment_name, equipment_type, manufacturer, installation_date, maintenance_cycle)
VALUES
('WTG001', 'FD2023001', '风力发电机1号', '风力发电机组', '金风科技', '2023-01-10', 180),
('WTG002', 'FD2023001', '风力发电机2号', '风力发电机组', '远景能源', '2023-01-12', 180),
('PVP001', 'GF2023001', '光伏逆变器1号', '逆变器', '华为技术', '2023-03-15', 365);

2.3 实时数据采集插入
sql
-- 插入实时监控数据
INSERT INTO real_time_monitoring (station_id, active_power, wind_speed, temperature, device_status)
VALUES ('FD2023001', 135.75, 8.5, 15.3, '正常运行');
INSERT INTO real_time_monitoring (station_id, active_power, wind_speed, temperature, device_status)
VALUES ('GF2023001', 185.20, NULL, 28.5, '正常运行');
3 Ubuntu下安装金仓数据库
完成环境准备后,我们就可以开始正式安装KingbaseES数据库了。本文将详细介绍从获取安装包到初始化配置的完整过程。
3.1 官方下载linux镜像
访问电科金仓官网(KES-电科金仓官网),KingbaseEs数据库安装包(Oracle兼容)-->V9R2C12(Oracle兼容版) --> X64 Linux-->下载KingbaseES_V009R002C012B0003_Lin64_install.iso镜像,如下所示:

下载完成之后上传到自己要安装的服务器上,我这里的Ubuntu服务器,如下所示:

3.2 授权文件对比
对于下载的文件,建议进行完整性校验,以确保文件在传输过程中没有损坏:
bash
# 计算下载文件的MD5校验和
md5sum /mnt/tools/kingbase/KingbaseES_V009R002C012B0003_Lin64_install.iso
# 计算下载文件的SHA1校验和
sha1sum /mnt/tools/kingbase/KingbaseES_V009R002C012B0003_Lin64_install.iso

我这里是md5验证,获取的值:2ce383a9047cf9f8e4d6fe59946ad2ed 跟官网对比


将计算结果与官网提供的校验值进行比对,确保完全一致后再进行后续操作。
3.3 挂载安装包
ISO格式的安装包需要先挂载才能访问其中的安装文件:
bash
cd /mnt/tools/kingbase
mount KingbaseES_V009R002C012B0003_Lin64_install.iso ./KingbaseESV9

如上图所示,挂载安装包报错了,不用慌,是因为没有创建 KingbaseEsv9目录,创建之后重新执行即可。
bash
mkdir -p ./KingbaseEsv9
3.4 开始启动安装程序
命令行安装支持中文和英文的文字提示。根据操作系统的语言设置会显示对应语言的提示信息。您可以执行如下命令查看操作系统的语言设置:
bash
echo $LANG
如果系统显示值包含"zh_CN",则为中文语言,安装程序会显示中文内容。否则,您可以执行如下命令修改语言设置为中文:
bash
# 中文UTF-8
export LANG=zh_CN.UTF-8
# 英文UTF-8
export LANG=zh_US.UTF-8

特别注意:这里一定要查看自己系统的编码,不然后面安装的时候选择这个字符串没有,我亲自体验安装没有这个字符串,快安装完了提示报错(如下图所示),眼泪都要下来了,然后我重头来一次才安装成功。我这里的系统ubuntu,我这里设置伟en_US.UTF-8比较合适,因为中文有乱码不太适合,根据自己服务器情况选择。

进入到对应目录,开始运行安装
bash
# 进入您挂载的安装包目录
cd /mnt/tools/kingbase/KingbaseESV9
# 再次执行安装命令
./setup.sh -i console

这里又报错了,遇到了一个常见的安装问题:KingbaseES 安装程序要求使用非 root 用户运行。这是出于安全和管理权限的考虑。别担心,这个问题很容易解决。
1、在 Linux 系统上,为数据库服务创建独立的用户是一个好习惯,如果上面已经创建了用户请授权后直接使用。
bash
# 创建用户组
groupadd kingbase
# 创建用户并指定主组,同时创建家目录
useradd -g kingbase -m kingbase
# 为kingbase用户设置密码(请使用强密码)
passwd kingbase
系统会提示您输入并确认新密码,对应着操作即可。
2、将安装目录和数据目录的所有权赋予新创建的 kingbase 用户,确保该用户有足够的权限进行安装和写入数据。
bash
# 假设您计划的安装目录是 /opt/Kingbase/ES/V9,数据目录是 /kingbase/data
mkdir -p /opt/Kingbase/ES/V9
mkdir -p /kingbase/data
# 更改目录所有者
chown -R kingbase:kingbase /opt/Kingbase
chown -R kingbase:kingbase /kingbase
3、切换到 kingbase 用户进行安装:
bash
# 切换到 kingbase 用户,'-' 表示同时切换环境变量
su - kingbase

4、切换到 kingbase 用户后,再次进入安装脚本所在目录并执行安装命令。
bash
# 进入您挂载的安装包目录
cd /mnt/tools/kingbase/KingbaseESV9
# 再次执行安装命令
./setup.sh -i console

3.5 接受许可协议
输入quit,按<ENTER>退出安装;
输入back,按<ENTER>返回前一屏幕;

直接按<ENTER>进行下一步操作。
若无特殊说明,以下各步骤皆与此相同。

3.6 安装包选择
如下图所示,看自己情况选择,新手推荐安装1全部

3.7 安装目录和数据目录设置

如上图所示,又遇到问题了,芭比Q了,不用慌,这是安装KingbaseES V9时遇到了许可证(license)文件路径的问题。错误信息表明安装程序期望一个具体的license文件,但您提供的 /opt/Kingbase/ES/V9 是一个目录路径。

回到官网这里下载对应的授权文件,然后上传到自己服务器对应的目录

然后继续执行,注意这里要指定bat文件,不能只到文件文件夹,如下图所示:
bash
/opt/Kingbase/ES/V9/license.dat
第一次是上面命令,我这里第二次安装文件是:/data/Kingbase/ES/V9/license.dat

数据存储目录设置:注意这个目录一定要是空文件夹,我第一次安装目录是/kingbase/data
我重新安装目录是:/data/Kingbase/data

3.8 初始化数据库
默认端口:54321(可自定义)
默认账户为:system(可自定义)
密码(自定义)
默认字符集编码为:UTF8(可选 default、GBK、GB2312、GB18030)

-
区域,可选值将随字符集编码选项发生变动。
-
当字符集编码为 default 时,默认区域值为:default(可选 C)
-
当字符集编码为 UTF8 时,默认区域值为:zh_CN.UTF-8(可选 en_US.UTF-8、C)
-
当字符集编码为 GBK 时,默认区域值为:zh_CN.GBK(可选 C)
-
当字符集编码为 GB2312 时,默认区域值为:zh_CN.GB2312(可选 C)
-
当字符集编码为 GB18030 时,默认区域值为:zh_CN.GB18030(可选 C)
-

-
默认大小写敏感为:是(可选否)
-
默认数据块大小为:8k(可选16k、32k)
-
默认身份认证方法为scram-sha-256(可选 scram-sm3,sm4,sm3)
-
自定义参数(自定义),可自由输入任何值,作为初始化数据库的参数
有关数据库初始化参数,详情可见《KingbaseES服务器应用参考手册》第2章
自定义特殊参数:(如果输入值包含以下某一项,请注意特殊情况)

3.9 安装完成
出现以下字眼:successfully 恭喜您,安装成功!会得到一个启动root.sh命令

查看数据目录,会新增了很多文件,如下图:

同理,安装目录也会多了很多文件:

3.10 执行root.sh
如果想注册数据库服务为系统服务,您可以在安装并初始化数据库成功后,执行root.sh脚本来注册并启动数据库服务,具体步骤如下:
-
打开新终端;
-
切换到root用户;
-
运行${安装目录}/install/script/root.sh 。
bash/opt/Kingbase/ES/V9/install/script/root.sh
如果想启动或停止数据库服务,进入${安装目录}/Server/bin目录执行如下命令:
bash
#启动服务
sys_ctl -w start -D /data/Kingbase/data -l "/data/Kingbase/data/sys_log/startup.log"
#停止服务
sys_ctl stop -m fast -w -D /data/Kingbase/data
3.11 查看已安装的版本信息
进入${安装目录}/Server/bin目录,执行
bash
cd /kingbase/data/KESRealPro/V009R002C012/Server/bin
./kingbase -V;

可以看到kingbase (KingbaseES) V009R002C012,说明安装跟我们下载的版本一致!

这个是安装整个流程总结,更多请查看官方文档:4. 安装KingbaseES --- KingbaseES(Oracle兼容版)产品手册
4.数据查询与统计分析
4.1 基础查询示例
sql
-- 查询所有正常运行的风电场站
SELECT station_id, station_name, capacity, location
FROM power_station
WHERE station_type = '风电' AND status = '正常';
-- 联合查询场站实时数据
SELECT ps.station_name, rtm.active_power, rtm.wind_speed, rtm.collection_time
FROM power_station ps
JOIN real_time_monitoring rtm ON ps.station_id = rtm.station_id
WHERE ps.station_type = '风电'
ORDER BY rtm.collection_time DESC;

4.2 聚合查询与统计分析
sql
-- 按类型统计场站总容量
SELECT station_type, COUNT(*) as station_count, SUM(capacity) as total_capacity
FROM power_station
WHERE status = '正常'
GROUP BY station_type;
-- 查询最近一小时的发电量统计
SELECT station_id,
AVG(active_power) as avg_power,
MAX(active_power) as max_power,
MIN(active_power) as min_power
FROM real_time_monitoring
WHERE collection_time >= CURRENT_TIMESTAMP - INTERVAL '1 hour'
GROUP BY station_id;
5.数据更新与维护操作
5.1 更新操作示例
sql
-- 更新场站状态
UPDATE power_station
SET status = '检修中'
WHERE station_id = 'FD2023001';
-- 批量更新设备维护信息
UPDATE equipment_info
SET maintenance_cycle = 200
WHERE equipment_type = '风力发电机组';
5.2 删除操作示例
sql
-- 删除历史监控数据(保留最近30天)
DELETE FROM real_time_monitoring
WHERE collection_time < CURRENT_DATE - 30;
-- 删除已退役场站数据
DELETE FROM power_station
WHERE status = '退役';
6.高级功能:存储过程与触发器
6.1 创建数据校验存储过程
sql
-- 创建功率数据校验存储过程
CREATE OR REPLACE FUNCTION validate_power_data()
RETURNS TRIGGER AS $$
BEGIN
-- 校验功率值是否在合理范围内
IF NEW.active_power < 0 THEN
RAISE EXCEPTION '功率值不能为负数';
END IF;
-- 校验风电场的风速数据完整性
IF (SELECT station_type FROM power_station WHERE station_id = NEW.station_id) = '风电'
AND NEW.wind_speed IS NULL THEN
RAISE EXCEPTION '风电场必须提供风速数据';
END IF;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
-- 创建数据校验触发器
CREATE TRIGGER power_data_validation
BEFORE INSERT OR UPDATE ON real_time_monitoring
FOR EACH ROW EXECUTE FUNCTION validate_power_data();

7.数据备份与恢复示例
7.1 基础备份操作
sql
-- 创建关键数据备份表
CREATE TABLE power_station_backup AS
SELECT * FROM power_station WHERE status = '正常';
-- 定期备份实时数据统计
CREATE TABLE daily_power_summary AS
SELECT station_id,
DATE(collection_time) as summary_date,
AVG(active_power) as daily_avg_power
FROM real_time_monitoring
GROUP BY station_id, DATE(collection_time);
8.性能优化实战技巧
8.1 索引创建与查询优化
sql
-- 为频繁查询的字段创建索引
CREATE INDEX idx_station_type ON power_station(station_type);
CREATE INDEX idx_monitoring_time ON real_time_monitoring(collection_time DESC);
CREATE INDEX idx_equipment_station ON equipment_info(station_id);
-- 使用金仓数据库特有的性能优化Hint
SELECT /*+ INDEX(rtm idx_monitoring_time) */
ps.station_name, rtm.active_power
FROM power_station ps
JOIN real_time_monitoring rtm ON ps.station_id = rtm.station_id
WHERE rtm.collection_time >= CURRENT_DATE;
9.总结
本文提供了金仓数据库在新能源行业应用的基础代码示例,涵盖了数据建模、CRUD操作、高级功能等关键环节。金仓数据库的良好兼容性使得从Oracle等数据库迁移的开发人员能够快速上手。
根据电科金仓官网数据,金仓数据库已广泛服务于能源、运营商、金融等60余个重点行业 ,累计装机部署超过100万套 。在新能源领域,市场占有率超过60%,全面覆盖五大发电集团,应用场景包括SCADA、厂级监控、功率预测等核心系统。这些数据印证了金仓作为企业级首选数据库的领先地位。
技术优势总结:高可用、安全与智能化
高可用与容灾 :如中广核案例所示,金仓支持异地多活部署,实现RPO秒级和RTO分钟级保障。
迁移兼容性 :提供KDTS等工具,实现Oracle、MySQL等数据库的"零代码修改"迁移。
性能优化 :自治调优机制应对高并发场景,满足新能源场站实时数据需求。
安全合规 :通过数据隔离和访问控制,满足行业安全标准。

在实际的新能源项目开发中,建议结合金仓数据库提供的KDTS迁移工具和KStudio管理工具,进一步提高开发效率。这些代码示例为中广核、国家电投等大型新能源项目的数据库操作提供了实践参考,助力行业数字化转型。
注意 :以上代码示例基于金仓数据库KingbaseES语法,实际使用时请根据具体版本调整。更多技术细节可参考金仓官方文档或访问技术博客站(https://kingbase.com.cn/explore)获取最新信息。

关于本文,博主还写了相关文章,欢迎关注《电科金仓》分类:
第一章:基础与入门(13篇)
1、【金仓数据库征文】政府项目数据库迁移:从MySQL 5.7到KingbaseES的蜕变之路
2、【金仓数据库征文】学校AI数字人:从Sql Server到KingbaseES的数据库转型之路
3、电科金仓2025发布会,国产数据库的AI融合进化与智领未来
5、《一行代码不改动!用KES V9 2025完成SQL Server → 金仓"平替"迁移并启用向量检索》
6、《赤兔引擎×的卢智能体:电科金仓如何用"三骏架构"重塑AI原生数据库一体机》
7、探秘KingbaseES在线体验平台:技术盛宴还是虚有其表?
9、KDMS V4 一键搞定国产化迁移:零代码、零事故、零熬夜------金仓社区发布史上最省心数据库迁移评估神器
10、KingbaseES V009版本发布:国产数据库的新飞跃
11、从LIS到全院云:浙江省人民医院用KingbaseES打造国内首个多院区异构多活信创样板
12、异构多活+零丢失:金仓KingbaseES在浙人医LIS国产化中的容灾实践
13、金仓KingbaseES数据库:迁移、运维与成本优化的全面解析
第二章:能力与提升(10篇)
1、零改造迁移实录:2000+存储过程从SQL Server滑入KingbaseES V9R4C12的72小时
3、在Ubuntu服务器上安装KingbaseES V009R002C012(Orable兼容版)数据库过程详细记录
4、金仓数据库迁移评估系统(KDMS)V4 正式上线:国产化替代的技术底气
5、Ubuntu系统下Python连接国产KingbaseES数据库实现增删改查
7、Java连接电科金仓数据库(KingbaseES)实战指南
8、使用 Docker 快速部署 KingbaseES 国产数据库:亲测全过程分享
9、【金仓数据库产品体验官】Oracle兼容性深度体验:从SQL到PL/SQL,金仓KingbaseES如何无缝平替Oracle?
10、KingbaseES在Alibaba Cloud Linux 3 的深度体验,从部署到性能实战
第三章:实践与突破(13篇)
2、【金仓数据库产品体验官】实战测评:电科金仓数据库接口兼容性深度体验
3、KingbaseES与MongoDB全面对比:一篇从理论到实战的国产化迁移指南
4、从SQL Server到KingbaseES:一步到位的跨平台迁移与性能优化指南
5、ksycopg2实战:Python连接KingbaseES数据库的完整指南
6、KingbaseES:从MySQL兼容到权限隔离与安全增强的跨越
7、电科金仓KingbaseES数据库全面语法解析与应用实践
8、电科金仓国产数据库KingBaseES深度解析:五个一体化的技术架构与实践指南
9、电科金仓自主创新数据库KingbaseES在医疗行业的创新实践与深度应用
11、金仓数据库引领新能源行业数字化转型:案例深度解析与领导力展现
后期作品正在准备中,敬请关注......

