「多模融合」KWDB 3.0 实战:终结“拼装式”数据架构新范式

在工业互联网、智慧能源等 AIoT 核心场景中,新版 KWDB 3.0 的「多模一库」架构正在重塑数据处理的新范式。

作者: ShunWah(顺华)
公众号: "顺华星辰运维栈"主理人。

持有认证: OceanBase OBCA/OBCP、MySQL OCP、OpenGauss、崖山 DBCA、金仓KingBase KCA/KCP、KaiwuDB KWCA/KWCP、 亚信 AntDBCA、翰高 HDCA、GBase 8a/8c/8s、Galaxybase GBCA、Neo4j ScienceCertification、NebulaGraph NGCI/NGCP、东方通 TongTech TCPE 等多项权威认证。

获奖经历: 崖山YashanDB YVP、浪潮KaiwuDB MVP、墨天轮 MVP,担任 OceanBase 社区版主及布道师。曾在OceanBase&墨天轮征文大赛、OpenGauss、TiDB、YashanDB、Kingbase、KWDB、Navicat Premium × 金仓数据库征文等赛事中多次斩获一、二、三等奖,原创技术文章常年被墨天轮、CSDN、ITPUB 等平台首页推荐。

  • CSDN_ID: shunwahma
  • 墨天轮_ID:shunwah
  • ITPUB_ID: shunwah
  • IFClub_ID:shunwah

制作故障排查图片.png

前言:AIoT 时代的"数据割裂"痛点与 KWDB 破局之道

2025年11月12日,国产数据库领域迎来重要里程碑——KaiwuDB正式发布3.0版本。在国产数据库百花齐放的今天,这家背景雄厚却行事稳健的玩家,终于选择不再低调。此次发布绝非简单的产品迭代,而是一次整合了数据库核心、智能体工具、行业大模型大脑的"王炸式"战略进击,意在重新定义物联网数据基座的市场格局。

作为KaiwuDB推出的多模数据库,KWDB 3.0以"多模一库"为核心突破,实现了关系数据与时序数据的统一存储、管理与查询。传统方案中需要跨库同步的复杂操作,如今只需一条SQL即可完成跨模关联分析,实现毫秒级结果返回,彻底改变了多模数据处理的游戏规则。

本文我将从实战出发,通过从 核心特性深度解读 → 单节点容器化部署 → 设备故障风险预警 这一典型工业场景,完整演示KWDB 3.0的单节点部署、开发者中心使用及跨模查询能力,体验多模数据融合分析的高效玩法,探索全能型数据库的终极形态。

核心亮点:性能的质的飞跃

KaiwuDB 3.0在性能层面实现了碾压级的突破:

  • 写入性能:相比2.2版本提升40%-216%,轻松应对海量数据写入场景
  • 查询性能:平均提升50%,复杂查询场景下最高提升达600%
  • 跨模分析:通过统一跨模分析架构,性能相对V2.0提升5-10倍

image.png

这些数字的背后,是KaiwuDB 3.0用技术实力击穿"高性能必然高成本"的行业痛点,让企业能够以更少的硬件资源承载更大的业务量,处理更复杂的查询需求。

在物联网数据呈爆炸式增长的时代,KaiwuDB 3.0 新版本的发布不仅是一次技术升级,更是对数据处理范式的一次重新定义。接下来,我通过实际部署和场景验证,深入探索这一"多模一库"全新体验。

一、KWDB 3.0 核心特性铺垫:为何能支撑跨模故障分析?

在进入实战前,我先按PPT了解 KWDB 3.0 支撑跨模分析的核心特性,理解其技术底层逻辑。

1. 多模存储引擎:一套架构兼容两类数据

KWDB 3.0 采用"统一内核 + 专用引擎"架构,底层共享存储与计算资源,上层为关系数据和时序数据提供专用处理引擎:

  • 关系引擎:支持 BLOB/CLOB 大型对象、触发器、存储过程等完整 SQL 特性,保证关系数据的强一致性与复杂事务处理能力;
  • 时序引擎:优化时序数据的高频写入与压缩存储,支持时间窗口查询、状态窗口分析(STATE_WINDOW)等专属功能,压缩比可达 10:1 以上。

两类数据存储在同一数据库实例中,通过"rdb.XXX"(关系库前缀)和"tsdb.XXX"(时序库前缀)区分,天然支持跨模关联,无需额外数据同步组件。

2. 跨模查询优化:毫秒级关联分析

KWDB 3.0 优化了跨模 JOIN 执行计划,针对"关系表主键 + 时序表标签"的关联场景,建立专用索引加速匹配。相比传统"导出+JOIN"的分钟级延迟,KWDB 跨模查询响应时间控制在毫秒级,完全满足设备故障实时预警的业务需求。

3. 易用性升级:开发者中心可视化操作

KaiwuDB Developer Center 3.0 支持关系库、时序库的可视化管理,从库表创建、数据写入到 SQL 编辑、结果导出全流程图形化操作,大幅降低多模数据管理门槛,即使是非专业 DBA 也能快速上手。

二、 实战准备:单节点容器部署 KWDB 3.0(Docker Compose 方式)

本次实战采用 Docker Compose 部署 KWDB 3.0 单节点,无需复杂环境配置,快速搭建测试环境。

2.1 部署前提条件

环境要求 具体规格
硬件配置 4 核 8G 以上,SSD 硬盘(IOPS ≥ 500,读写速度 ≥ 30MB/s)
操作系统 CentOS 7(x86_64)、Ubuntu 22.04 等支持 Docker 的系统
软件依赖 Docker 20.10+、Docker Compose 1.20.0+
端口要求 开放 8080(Web 服务端口)、26257(数据库连接端口)

2.2 获取 KWDB 3.0 容器镜像

通过以下命令拉取官方镜像(或从 KWDB 官网下载离线镜像导入):

2.2.1 从官网下载离线安装包

https://gitee.com/kwdb/kwdb/releases/tag/v3.0.0

image.png

2.2.2 上传 KaiwuDB 安装包到服务器

容器名 KWDB-3.0.0-ubuntu22.04-x86_64-docker.tar.gz 安装包

[root@worker3 kwdb]# ls
docker-compose.yml  KWDB-3.0.0-ubuntu22.04-x86_64-docker.tar.gz  kwdb-tsbs
[root@worker3 kwdb]#

image.png

2.2.3 解压安装包

[root@worker3 kwdb]# tar -zxvf KWDB-3.0.0-ubuntu22.04-x86_64-docker.tar.gz 
kwdb_install/
kwdb_install/deploy.sh
kwdb_install/add_user.sh
kwdb_install/.construction_var
kwdb_install/deploy.cfg
kwdb_install/packages/
kwdb_install/packages/.version
kwdb_install/packages/KaiwuDB.tar
kwdb_install/utils/
kwdb_install/utils/kaiwudb_upgrade.sh
kwdb_install/utils/kaiwudb_operate.sh
kwdb_install/utils/kaiwudb_log.sh
kwdb_install/utils/utils.sh
kwdb_install/utils/kaiwudb_install.sh
kwdb_install/utils/kaiwudb_cluster.sh
kwdb_install/utils/process_bar.sh
kwdb_install/utils/kaiwudb_common.sh
kwdb_install/utils/container_shell.sh
kwdb_install/utils/kaiwudb_hardware.sh
kwdb_install/utils/kaiwudb_uninstall.sh
[root@worker3 kwdb]#

image.png

2.2.4 进入解压目录,导入镜像

在 kaiwudb_install/packages 目录下导入 KaiwuDB.tar 文件,获取镜像名称。

[root@worker3 kwdb]# ls
docker-compose.yml  KWDB-3.0.0-ubuntu22.04-x86_64-docker.tar.gz  kwdb_install  kwdb-tsbs
[root@worker3 kwdb]# cd kwdb_install/
[root@worker3 kwdb_install]# cd packages/
[root@worker3 packages]# ls
KaiwuDB.tar
[root@worker3 packages]# docker load < KaiwuDB.tar 
3cc982388b71: Loading layer  80.42MB/80.42MB
80483dab05e2: Loading layer  87.23MB/87.23MB
f5b2559aa2e6: Loading layer  235.9MB/235.9MB
Loaded image: kwdb-x86_64:3.0.0
[root@worker3 packages]#

2.2.5 验证镜像导入成功

查看镜像

[root@worker3 packages]# docker images kwdb-x86_64:3.0.0
REPOSITORY    TAG       IMAGE ID       CREATED       SIZE
kwdb-x86_64   3.0.0     cca153fde039   12 days ago   400MB
[root@worker3 packages]#

image.png

2.3 编写 Docker Compose 配置文件

创建  docker-compose.yml 文件,配置如下(非安全模式,适合测试环境):

[root@worker3 kwdb]# vim docker-compose.yml version: '3.3'services:
  kaiwudb-container:
    image: "kwdb-x86_64:3.0.0"
    container_name: kaiwudb-3.0
    hostname: kaiwudb-3.0
    ports:
      - 8080:8080
      - 26257:26257
    ulimits:
      memlock: -1
    networks: 
      - default
    restart: on-failure
    ipc: shareable
    privileged: true
    environment:
      - LD_LIBRARY_PATH=/kaiwudb/lib
    tty: true
    working_dir: /kaiwudb/bin
    command: 
      - /bin/bash
      - -c
      - |
        /kaiwudb/bin/kwbase start-single-node --insecure --listen-addr=0.0.0.0:26257 --advertise-addr=127.0.0.1:26257 --http-addr=0.0.0.0:8080 --store=/kaiwudb/deploy/kaiwudb

2.4 启动 KWDB 服务

在  docker-compose.yml 所在目录执行以下命令,后台启动容器:

# 创建数据目录# 启动服务[root@worker3 kwdb]# mkdir kwdb-data[root@worker3 kwdb]# docker-compose up -dCreating network "kwdb_default" with the default driver
Creating kaiwudb-3.0 ... done[root@worker3 kwdb]## 查看容器状态(确保状态为 Up)docker ps | grep kaiwudb-3.0

image.png

3.5 验证部署成功

通过查看容器日志验证服务状态:

[root@worker3 kwdb]# docker ps
CONTAINER ID   IMAGE               COMMAND                  CREATED          STATUS          PORTS                                                                                      NAMES
5641387de630   kwdb-x86_64:3.0.0   "/kaiwudb/bin/kwbase…"   40 seconds ago   Up 39 seconds   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 0.0.0.0:26257->26257/tcp, :::26257->26257/tcp   kaiwudb-3.0
[root@worker3 kwdb]# docker logs -f kaiwudb-3.0
*
* WARNING: RUNNING IN INSECURE MODE!
* 
* - Your cluster is open for any client that can access 0.0.0.0.
* - Any user, even root, can log in without providing a password.
* - Any user, connecting as root, can read or write any data in your cluster.
* - There is no network encryption nor authentication, and thus no confidentiality.
* 
* Check out how to secure your cluster on KWDB website
*
*
* INFO: Replication was disabled for this cluster.
* When/if adding nodes in the future, update zone configurations to increase the replication factor.
*
KWDB node starting at 2025-11-23 03:30:56.553971229 +0000 UTC (took 0.5s)
build:                3.0.0 @ 2025/11/11 02:23:47 (go1.21.13)
sql:                 postgresql://root@127.0.0.1:26257?sslmode=disable
RPC client flags:    /kaiwudb/bin/kwbase  --host=127.0.0.1:26257 --insecure
logs:                /var/lib/kwdb/logs
temp dir:            /var/lib/kwdb/kwbase-temp724004501
external I/O path:   /var/lib/kwdb/extern
store[0]:            path=/var/lib/kwdb
storage engine:      rocksdb
status:              initialized new cluster
clusterID:           a72219d6-0162-43eb-b62a-bcc2cc8d705a
nodeID:              1

image.png

恭喜!到这里 KaiwuDB 3.0 已成功启动,从日志可以看到数据库已成功启动,运行在 insecure 模式下。

3.6 测试连接数据库

3.6.1 在容器内使用  kwbase sql 命令行(推荐用于测试)

# 在容器内执行root@kaiwudb-3:/kaiwudb/bin# ./kwbase sql --insecure --host=127.0.0.1

你会看到类似输出:

## Welcome to the KWDB SQL shell.# All statements must be terminated by a semicolon.# To exit, type: \q.## Server version: KaiwuDB 3.0.0 (x86_64-linux-gnu, built 2025/11/11 02:23:47, go1.21.13, gcc 11.4.0) (same version as client)# Cluster ID: a72219d6-0162-43eb-b62a-bcc2cc8d705a## Enter \? for a brief introduction.#root@127.0.0.1:26257/defaultdb>

image.png

3.6.2 – 查看版本

SELECT version();
root@127.0.0.1:26257/defaultdb> SELECT version();
                                       version
--------------------------------------------------------------------------------------
  KaiwuDB 3.0.0 (x86_64-linux-gnu, built 2025/11/11 02:23:47, go1.21.13, gcc 11.4.0)
(1 row)
Time: 603.13µs
root@127.0.0.1:26257/defaultdb>

image.png

3.6.3 退出 SQL 客户端:

root@127.0.0.1:26257/defaultdb> \q
root@kaiwudb-3:/kaiwudb/bin#

image.png

三、 可视化操作:KaiwuDB Developer Center

部署完成后,通过 KaiwuDB 开发者中心进行可视化操作,无需记忆复杂命令,高效管理多模数据。

3.1 安装开发者中心

3.1.1 环境要求

  • 操作系统:Windows 10
    image.png

  • 软件依赖:OpenJRE 8+;
    image.png

  • 硬件:24G 内存、500G 硬盘空间。
    image.png

3.1.2 安装步骤

  1. 从 KWDB 官网下载对应操作系统的安装包(如  KaiwuDB_Developer_Center-3.0.0-win-x86_64.zip);
    (https://www.kaiwudb.com/download)
KaiwuDB_Developer_Center-3.0.0-win-x86_64.zip

image.png

  1. 解压安装包,双击  KaiwuDB-Developer-Center.exe(Windows)或对应可执行文件启动;

image.png

  1. 首.次启动无需额外配置,直接进入主界面。

image.png

3.2 连接 KWDB 数据库

3.2.1 新建连接

  1. 启动开发者中心后,点击"新建连接";
  2. 配置连接参数(非安全模式):
    • 主机:部署 KWDB 的服务器 IP(如 127.0.0.1);
    • 端口:26257(默认数据库端口);
    • 数据库:defaultdb(默认数据库);
    • 认证方式:选择"数据库原生认证";
    • 用户名:root(默认用户);
    • 密码:空(非安全模式无需密码);

连接配置界面

  1. 点击"测试连接",显示"连接成功"后,点击"确定"完成连接。

连接成功验证

3.2.2 连接成功界面

连接后,左侧"数据库导航区"会显示默认的数据库连接,即可开始创建库表和数据操作。

连接成功界面

四、Developer Center 可视化核心实战:跨模分析设备故障风险

本次通过 KaiwuDB Developer Center 进行可视化操作实战模拟“风机设备故障预警”场景:通过关系表存储风机基础信息,时序表存储传感器实时数据,再通过跨模查询关联两类数据,筛选出温度过高或振动异常的设备,实现故障风险预警。

4.1 场景说明

  • 关系数据:风机 ID、名称、型号、安装日期、安装位置(经纬度);
  • 时序数据:风机的温度(阈值 ≤75℃)、振动值(阈值 ≤4.5),按分钟级采集;
  • 分析目标:查询近 24 小时内,型号为  WindTurbine-X3 的风机中,平均温度超过 75℃ 或最大振动值超过 4.5 的设备,输出设备名称、型号、异常指标及安装位置。

4.2 步骤 1:创建关系库与关系表(设备基础信息)

4.2.1 创建关系库

  1. 在左侧导航区,右键单击  关系数据库 → 选择“新建关系数据库”;

image.png

  1. 输入数据库名称  rdb.device_manage,点击“确定”;

image.png

  1. 新建的关系库会显示在  rdb 根节点下,继承系统默认权限。

image.png

4.2.2 创建关系表(存储设备基础信息)

  1. 右键单击  rdb.device_manage → 选择public模式,“新建表”;
    image.png

  2. 在表设计界面,填写表名  devices,添加以下字段:

字段名 数据类型 长度 是否非空 主键 描述
id VARCHAR 32 设备唯一 ID
name VARCHAR 100 设备名称
model VARCHAR 50 设备型号
install_date DATE - 安装日期
loc VARCHAR 50 安装位置(经纬度)

  1. 点击“保存”,在弹出的 SQL 预览窗口确认语句无误后,点击“执行”,完成表创建。

image.png

4.2.3 插入测试数据

  1. 双击  devices 表,切换到“数据”页签;

image.png

  1. 点击“添加新行”,插入以下 3 条测试数据:
id name model install_date loc
WT-001 风机A WindTurbine-X3 2023-01-15 39.908823, 116.397470
WT-002 风机B WindTurbine-X3 2023-02-20 39.918823, 116.407470
WT-003 风机C WindTurbine-X4 2023-03-10 39.928823, 116.417470

image.png

  1. 点击“保存”,数据插入成功。
    image.png

4.3 步骤 2:创建时序库与时序表(传感器数据)

4.3.1 创建时序库

  1. 在左侧导航区,右键单击  时序数据库 → 选择“新建时序数据库”;

image.png

  1. 输入数据库名称  tsdb.sensor_data,点击“确定”,时序库创建完成。

image.png

4.3.2 创建时序表(存储传感器数据)

  1. 右键单击  tsdb.sensor_data → 选择“新建时序表”;

image.png

  1. 在“属性”页签填写表名  sensors
  2. 切换到“字段”页签,添加以下字段(时序表第一列必须为 TIMESTAMP 且非空):
字段名 数据类型 是否非空 描述
ts TIMESTAMP 数据采集时间戳
device_id VARCHAR 关联设备 ID
temperature FLOAT 设备温度(℃)
vibration FLOAT 设备振动值

image.png

  1. 切换到“标签”页签,添加主标签(时序表必须至少一个主标签,非空):
    • 标签名: device_id
    • 数据类型:VARCHAR;
    • 长度:32;
    • 主标签:勾选“是”;
    • 是否非空:勾选“是”;

image.png

  1. 点击“保存”,在 SQL 预览窗口确认语句无误后,点击“执行”,时序表创建完成。
CREATE TABLE sensors (
	"ts" timestamp NOT NULL DEFAULT 'now()',
	temperature float NULL,
	vibration float NULL
) TAGS ( 
	 device_id varchar(32) NOT NULL )
 PRIMARY TAGS ( 	 
	device_id ) 
 RETENTIONS 0DAY
 ACTIVETIME 1DAY
 PARTITION INTERVAL 10DAY;
COMMENT ON TABLE "tsdb.sensor_data".sensors IS '存储传感器数据';
-- Column comments
COMMENT ON COLUMN "tsdb.sensor_data".sensors."ts" IS '数据采集时间戳';
COMMENT ON COLUMN "tsdb.sensor_data".sensors.temperature IS '设备温度(℃)';
COMMENT ON COLUMN "tsdb.sensor_data".sensors.vibration IS '设备振动值';
-- Tag comments
COMMENT ON COLUMN "tsdb.sensor_data".sensors.device_id IS '关联设备 ID';

image.png

4.3.3 插入测试数据

  1. 右键单击  sensors 表 → 选择“编辑数据”;

image.png

  1. 点击“添加新行”,插入以下 5 条分钟级采集的测试数据:
ts device_id temperature vibration
NOW() - INTERVAL ‘1 hour’ WT-001 76.2 4.6
NOW() - INTERVAL ‘50 minutes’ WT-001 77.8 4.8
NOW() - INTERVAL ‘2 hours’ WT-002 73.5 4.2
NOW() - INTERVAL ‘1.5 hours’ WT-002 74.1 4.3
NOW() - INTERVAL ‘3 hours’ WT-003 68.9 3.9

image.png

  1. 点击“保存”,时序数据插入成功。
    image.png

五、 命令行核心实战:通过命令行跨模分析设备故障风险

刚才已经使用 Developer Center 可视化实战体验:跨模分析设备故障风险,接下来本次命令行实战模拟"风机设备故障预警"场景:通过关系表存储风机基础信息,时序表存储传感器实时数据,再通过跨模查询关联两类数据,筛选出温度过高或振动异常的设备,实现故障风险预警。

5.1 场景说明

  • 关系数据:风机 ID、名称、型号、安装日期、安装位置(经纬度);
  • 时序数据:风机的温度(阈值 ≤75℃)、振动值(阈值 ≤4.5),按分钟级采集;
  • 分析目标:查询近 24 小时内,型号为  WindTurbine-X3 的风机中,平均温度超过 75℃ 或最大振动值超过 4.5 的设备,输出设备名称、型号、异常指标及安装位置。

5.2 步骤 1:创建关系库与关系表(设备基础信息)

5.2.1 通过命令行创建关系数据库

首先通过命令行创建关系数据库:

root@127.0.0.1:26257/defaultdb> CREATE DATABASE rdb_device_manage;
CREATE DATABASE
Time: 5.623904ms
root@127.0.0.1:26257/defaultdb>

image.png

5.2.2 创建关系表(存储设备基础信息)

创建设备信息表并插入测试数据:

– 创建 devices 表

root@127.0.0.1:26257/defaultdb> CREATE TABLE rdb_device_manage.public.devices (
    id VARCHAR(32) PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    model VARCHAR(50) NOT NULL,
    install_date DATE NOT NULL,
    loc VARCHAR(50) NOT NULL
);
CREATE TABLE
Time: 4.3448ms
root@127.0.0.1:26257/defaultdb>

image.png

– 插入测试数据

root@127.0.0.1:26257/defaultdb> INSERT INTO rdb_device_manage.public.devices (id, name, model, install_date, loc)
VALUES
('WT-001', '风机A', 'WindTurbine-X3', '2023-01-15', '39.908823, 116.397470'),
('WT-002', '风机B', 'WindTurbine-X3', '2023-02-20', '39.918823, 116.407470'),
('WT-003', '风机C', 'WindTurbine-X4', '2023-03-10', '39.928823, 116.417470');
INSERT 3
Time: 4.174616ms
root@127.0.0.1:26257/defaultdb>

image.png

– 验证关系表

root@127.0.0.1:26257/defaultdb> SELECT * FROM rdb_device_manage.public.devices;
    id   | name  |     model      |       install_date        |          loc
---------+-------+----------------+---------------------------+------------------------
  WT-001 | 风机A | WindTurbine-X3 | 2023-01-15 00:00:00+00:00 | 39.908823, 116.397470
  WT-002 | 风机B | WindTurbine-X3 | 2023-02-20 00:00:00+00:00 | 39.918823, 116.407470
  WT-003 | 风机C | WindTurbine-X4 | 2023-03-10 00:00:00+00:00 | 39.928823, 116.417470
(3 rows)
Time: 1.045043ms
root@127.0.0.1:26257/defaultdb>

image.png

5.3 步骤 2:创建时序库与时序表(传感器数据)

5.3.1 通过命令行创建时序数据库

创建时序数据库用于存储传感器数据:

– 创建时序数据库

root@127.0.0.1:26257/defaultdb> CREATE TS DATABASE tsdb_sensor_data;
CREATE TS DATABASE
Time: 4.891201ms
root@127.0.0.1:26257/defaultdb>

image.png

5.3.2 创建时序表(存储传感器数据)

创建传感器数据表并插入测试数据:

-- 创建 sensors 表
root@127.0.0.1:26257/defaultdb> CREATE TABLE tsdb_sensor_data.sensors (
    ts TIMESTAMP NOT NULL,
    temperature FLOAT,
    vibration FLOAT
) TAGS (
    device_id VARCHAR(32) NOT NULL
) PRIMARY TAGS (
    device_id
);
CREATE TABLE
Time: 12.280812ms
root@127.0.0.1:26257/defaultdb>

image.png

-- 插入测试数据
root@127.0.0.1:26257/defaultdb> INSERT INTO tsdb_sensor_data.sensors (ts, device_id, temperature, vibration)
                             -> 
                             -> SELECT 
                             -> 
                             ->     NOW() - INTERVAL '1 hour', 'WT-001', 76.2, 4.6
                             -> 
                             -> UNION ALL
                             -> 
                             -> SELECT 
                             -> 
                             ->     NOW() - INTERVAL '50 minutes', 'WT-001', 77.8, 4.8
                             -> 
                             -> UNION ALL
                             -> 
                             -> SELECT 
                             -> 
                             ->     NOW() - INTERVAL '2 hours', 'WT-002', 73.5, 4.2
                             -> 
                             -> UNION ALL
                             -> 
                             -> SELECT 
                             -> 
                             ->     NOW() - INTERVAL '1.5 hours', 'WT-002', 74.1, 4.3
                             -> 
                             -> UNION ALL
                             -> 
                             -> SELECT 
                             -> 
                             ->     NOW() - INTERVAL '3 hours', 'WT-003', 68.9, 3.9;
INSERT 5
Time: 52.501082ms
root@127.0.0.1:26257/defaultdb>

image.png

-- 验证时序表
root@127.0.0.1:26257/defaultdb> SELECT * FROM tsdb_sensor_data.sensors ORDER BY ts DESC LIMIT 5;
               ts               | temperature | vibration | device_id
--------------------------------+-------------+-----------+------------
  2025-11-23 06:02:15.306+00:00 |        77.8 |       4.8 | WT-001
  2025-11-23 05:52:15.306+00:00 |        76.2 |       4.6 | WT-001
  2025-11-23 05:22:15.306+00:00 |        74.1 |       4.3 | WT-002
  2025-11-23 04:52:15.306+00:00 |        73.5 |       4.2 | WT-002
  2025-11-23 03:52:15.306+00:00 |        68.9 |       3.9 | WT-003
(5 rows)
Time: 2.852642ms
root@127.0.0.1:26257/defaultdb>

image.png

5.4 步骤 3:跨模查询实现故障风险预警

执行核心的跨模查询,关联关系数据和时序数据,实现设备故障风险预警:

-- 跨模查询:分析设备故障风险
root@127.0.0.1:26257/defaultdb> SELECT
    d.name AS "设备名称",
    d.model AS "设备型号",
    d.loc AS "安装位置",
    ROUND(AVG(s.temperature), 1) AS "近24小时平均温度(℃)",
    MAX(s.vibration) AS "近24小时最大振动值",
    CASE
        WHEN MAX(s.vibration) > 4.5 AND AVG(s.temperature) > 75 THEN '高风险'
        WHEN MAX(s.vibration) > 4.5 OR AVG(s.temperature) > 75 THEN '中风险'
        ELSE '正常'
    END AS "风险等级"
FROM
    tsdb_sensor_data.sensors s
JOIN
    rdb_device_manage.public.devices d
    ON s.device_id = d.id
WHERE
    s.ts > NOW() - INTERVAL '24 hours'
    AND d.model = 'WindTurbine-X3'
GROUP BY
    d.name, d.model, d.loc
HAVING
    MAX(s.vibration) > 4.5
    OR ROUND(AVG(s.temperature), 1) > 75
ORDER BY
    "风险等级" DESC;
  设备名称 |    设备型号    |       安装位置        | 近24小时平均温度(℃) | 近24小时最大振动值 | 风险等级
-----------+----------------+-----------------------+---------------------+--------------------+-----------
  风机A    | WindTurbine-X3 | 39.908823, 116.397470 |                  77 |                4.8 | 高风险
(1 row)
Time: 3.305424ms
root@127.0.0.1:26257/defaultdb>

image.png

跨模查询成功执行并返回了预期的结果。

查询结果解读:

  • 风机A 被正确识别为  高风险 设备;
  • 其  近24小时平均温度 为  77.0℃(超过了75℃的阈值);
  • 其  近24小时最大振动值 为  4.8(超过了4.5的阈值);
  • 由于温度和振动值都超标,根据  CASE 语句的逻辑,风险等级被判定为  高风险

这个结果完美验证了 KWDB 3.0  “多模一库” 的核心能力: 在一个查询中无缝关联关系型数据(设备信息)和时序型数据(传感器读数),并通过标准的 SQL 语法进行聚合、过滤和分析。

六、 进阶实战:结合 KWDB 3.0 新特性优化分析

6.1 利用"最值上下文查询"获取异常时刻详情

通过子查询获取异常温度发生的具体时间点及对应振动值:

root@127.0.0.1:26257/defaultdb> SELECT
    d.name AS 设备名称,
    s.ts AS 异常温度采集时间,
    s.temperature AS 异常温度值,
    s.vibration AS 对应振动值
FROM
    tsdb_sensor_data.sensors s  -- 使用新的时序数据库名称 tsdb_sensor_data
JOIN
    rdb_device_manage.public.devices d  -- 使用新的关系数据库名称 rdb_device_manage
    ON s.device_id = d.id
WHERE
    s.temperature = (
        -- 子查询中同样需要使用新的数据库名称
        SELECT MAX(temperature)
        FROM tsdb_sensor_data.sensors
        WHERE device_id = 'WT-001'
          AND ts > NOW() - INTERVAL '24 hours'
    )
AND
    d.id = 'WT-001';
  设备名称 |       异常温度采集时间        | 异常温度值 | 对应振动值
-----------+-------------------------------+------------+-------------
  风机A    | 2025-11-23 06:02:15.306+00:00 |       77.8 |        4.8
(1 row)
Time: 3.341938ms
root@127.0.0.1:26257/defaultdb>

image.png

执行结果示例:

设备名称 异常温度采集时间 异常温度值 对应振动值
风机A 2024-05-20 09:10:00 77.8 4.8


6.2 利用"自定义变量"简化多设备批量查询

使用变量定义查询参数,提升 SQL 的复用性和可维护性:

root@127.0.0.1:26257/defaultdb> SET @target_model = 'WindTurbine-X3';
-- 定义自定义变量:温度阈值
SET @temp_threshold = 75;
-- 定义自定义变量:振动阈值
SET @vib_threshold = 4.5;
-- 使用变量执行跨模查询
SELECT
    d.name AS 设备名称,
    ROUND(AVG(s.temperature), 1) AS 平均温度,
    MAX(s.vibration) AS 最大振动值
FROM
    tsdb_sensor_data.sensors s  -- 使用新的时序数据库名称
JOIN
    rdb_device_manage.public.devices d  -- 使用新的关系数据库名称
    ON s.device_id = d.id
WHERE
    s.ts > NOW() - INTERVAL '24 hours'
  AND d.model = @target_model
GROUP BY
    d.name
HAVING
    AVG(s.temperature) > @temp_threshold
    OR MAX(s.vibration) > @vib_threshold;
SET
Time: 534.714µs
SET
Time: 446.008µs
SET
Time: 242.498µs
  设备名称 | 平均温度 | 最大振动值
-----------+----------+-------------
  风机A    |       77 |        4.8
(1 row)
Time: 3.079654ms
root@127.0.0.1:26257/defaultdb>

image.png

6.3 数据库对象管理与结构验证

查看所有数据库列表
root@127.0.0.1:26257/defaultdb> SELECT datname FROM pg_database WHERE datistemplate = false;
       datname
---------------------
  defaultdb
  postgres
  rdb_device_manage
  system
  tsdb_sensor_data
(5 rows)
Time: 1.220281ms
root@127.0.0.1:26257/defaultdb>

image.png

5.4 验证关系表结构

通过查询数据反向验证表结构:

-- 查询 devices 表的一行数据,通过返回的列名来确认表结构SELECT * FROM rdb_device_manage.public.devices LIMIT 1;
root@127.0.0.1:26257/defaultdb> SELECT * FROM rdb_device_manage.public.devices LIMIT 1;
    id   | name  |     model      |       install_date        |          loc---------+-------+----------------+---------------------------+------------------------
  WT-001 | 风机A | WindTurbine-X3 | 2023-01-15 00:00:00+00:00 | 39.908823, 116.397470
(1 row)
Time: 721.23µs
root@127.0.0.1:26257/defaultdb>

image.png

执行结果示例:
这个结果会清晰地显示出表中的所有列名: idnamemodelinstall_dateloc

6.5 验证时序表结构

-- 查询 sensors 表的一行数据,通过返回的列名来确认表结构SELECT * FROM tsdb_sensor_data.sensors LIMIT 1;
root@127.0.0.1:26257/defaultdb> SELECT * FROM tsdb_sensor_data.sensors LIMIT 1;
               ts               | temperature | vibration | device_id--------------------------------+-------------+-----------+------------
  2025-11-23 03:52:15.306+00:00 |        68.9 |       3.9 | WT-003
(1 row)
Time: 1.259845ms
root@127.0.0.1:26257/defaultdb>

image.png

执行结果示例:
这个结果会显示出时序表的普通列和标签列: tstemperaturevibrationdevice_id。其中, device_id 是我们定义的标签。

总结

本次"设备故障风险预警"实战,充分验证了新版 KWDB 3.0 "多模一库"的核心优势:

  1. 打破数据孤岛:关系数据与时序数据统一存储,跨模 JOIN 无需数据同步,操作更简洁;
  2. 性能大幅提升:毫秒级跨模查询响应,相比传统"分库+导出"方案,效率提升千倍;
  3. 易用性优秀:开发者中心可视化操作,库表创建、数据写入、SQL 执行全流程图形化,降低技术门槛;
  4. 功能适配场景:最值上下文查询、自定义变量等新特性,完美匹配工业设备故障分析的实际需求。

在 AIoT 数据爆发的时代,"多模一库"已成为数据库发展的核心趋势。KWDB 3.0 的发布不再局限于单一数据类型的存储与查询,而是以业务场景为核心,提供"一站式"多模数据解决方案。

无论是设备故障预警、能源消耗分析,还是智慧交通监控,KWDB 3.0 都能通过跨模分析能力,挖掘数据深层价值,为企业数字化转型提供高效支撑。其 开箱即用的便捷性毫秒级的查询性能完整的企业级功能,使其成为多模数据处理场景下的理想选择。

作为数据库国产化替代的重要力量,KWDB 3.0 的发布不仅在产品能力上达到了业界先进水平,更在用户体验和生态建设方面展现了强大的竞争力。


本次体验环境信息

  • 数据库版本:KaiwuDB 3.0.0
  • Windows版本:Windows 10 专业版
  • 部署方式:Docker Compose 单节点
  • 客户端工具:KaiwuDB Developer Center 3.0.0
  • 测试数据:模拟风机设备监控场景

参考相关资源

作者注
——本文所有操作及测试均基于 CentOS 系统 Docker Compose 部署的 KaiwuDB v3.0.0 完成,核心围绕"多模一库"核心特性展开数据库实操与性能验证等关键环节。建议实际应用时参考 KaiwuDB 官方文档及对应版本适配指南。请注意,KaiwuDB 版本处于持续迭代中,部分语法或功能可能随更新发生变化,请以 KaiwuDB 官方文档最新内容为准。

——以上仅为个人思考与建议,不代表行业普遍观点。以上所有操作均需在具备足够权限的环境下执行,涉及生产环境时请提前做好备份与测试。文中案例与思路仅供参考,若与实际情况巧合,纯属无意。期待与各位从业者共同探讨更多可能!

请使用浏览器的分享功能分享到微信等