云计算百科
云计算领域专业知识百科平台

CentOS Stream 9服务器Docker部署KaiwuDB社区版:从零到跨模查询实战全记录

目录

  • 🚀 CentOS Stream 9服务器Docker部署KaiwuDB社区版:从零到跨模查询实战全记录
    • 🛠 一、环境准备
      • 1.1 检查 CentOS 系统版本
      • 1.2 检查 Docker 是否已安装
      • 1.3 检查端口是否被占用
      • 1.4 创建部署目录
    • 🚀 二、Docker 部署 KWDB
      • 2.1 拉取 KWDB 镜像
      • 2.2 创建 docker-compose.yml 文件
      • 2.4 验证容器运行状态
    • 🔌 三、连接 KWDB 验证
      • 3.1 进入容器
      • 3.2 使用 kwbase CLI 连接数据库
      • 3.3 查看数据库版本
    • 🔥 四、核心实战:双模建表与跨模查询
      • 4.1 创建关系数据库和关系表(存储电表档案信息)
      • 4.2 创建时序数据库和时序表(存储电表读数)
      • 4.3 跨模查询实战(核心亮点)
      • 4.4 进阶聚合查询
    • 🕳 五、踩坑与解决记录
      • ❌ 坑1:启动容器时报错 "bash: docker-compose: command not found"
      • ❌ 坑2:跨模查询时提示 "relation "db1.accounts" does not exist"
      • ❌ 坑3:时序表插入数据时报错 "ERROR: unsupported input type BinaryOperator"
      • ❌ 坑4:在 KWDB 时序表中,**标签列不支持 STRING 类型**
    • 📝 六、总结与心得
      • 6.1 部署体验
      • 6.2 KWDB 核心能力验证
      • 6.3 适用场景思考
      • 6.4 后续计划
    • 📎 七、参考资料

🚀 CentOS Stream 9服务器Docker部署KaiwuDB社区版:从零到跨模查询实战全记录

最近在研究物联网数据库选型时,了解到 KWDB 是一款面向 AIoT 场景的分布式多模数据库,支持在同一实例中同时处理时序数据和关系数据,并能进行跨模查询 。这个特性非常吸引我。

本次实操我选择了 CentOS Stream 9 云服务器,采用 Docker 方式部署 KWDB,并基于智能电表场景,完整实践了“时序表+关系表”的创建与跨模查询。本文将记录从环境准备、部署踩坑到实战应用的全过程。

环境信息:

  • 操作系统:CentOS Stream 9 (x86_64)
  • Docker 版本:29.0+
  • KWDB 版本:3.1.0 (官方最新版)
  • 服务器配置:16核32G

🛠 一、环境准备

1.1 检查 CentOS 系统版本

cat /etc/centos-release

1.2 检查 Docker 是否已安装

docker –version
docker compose version

image-20260227155127277

1.3 检查端口是否被占用

KWDB 默认使用 8080(Web界面)和 26257(数据库服务端口)。

netstat -tlnp | grep 8080
netstat -tlnp | grep 26257

image-20260227154949136

如有占用,需要先停止相应进程或修改端口映射。

1.4 创建部署目录

mkdir -p ~/kwdb-docker && cd ~/kwdb-docker

image-20260227154736570


🚀 二、Docker 部署 KWDB

(官方提供了两种 Docker 部署方式,我选择了更清晰的 docker-compose 方式)

2.1 拉取 KWDB 镜像

docker pull registry.cn-hangzhou.aliyuncs.com/kwdb/kwdb:latest

image-20260227155332653

2.2 创建 docker-compose.yml 文件

vim docker-compose.yml

写入以下内容 :

services:
kaiwudb-container:
image: "registry.cn-hangzhou.aliyuncs.com/kwdb/kwdb:latest" # 直接使用阿里云镜像
container_name: kaiwudbexperience
hostname: kaiwudbexperience
ports:
8080:8080
26257:26257
ulimits:
memlock: -1
volumes:
/dev:/dev
restart: onfailure
ipc: shareable
privileged: true
environment:
LD_LIBRARY_PATH=/kaiwudb/lib
tty: true
working_dir: /kaiwudb/bin
command:
/bin/bash
c
|
./kwbase start-single-node –insecure –listen-addr=0.0.0.0:26257 –advertise-addr=222.*.*.130:26257 –http-addr=0.0.0.0:8080 –store=/kaiwudb/deploy/kaiwudb

image-20260227155834442

2.3 启动容器

docker compose up -d

image-20260227155913828

2.4 验证容器运行状态

docker ps

image-20260227155928825


🔌 三、连接 KWDB 验证

3.1 进入容器

docker exec -it kaiwudb-experience /bin/bash

image-20260227155947909

3.2 使用 kwbase CLI 连接数据库

./kwbase sql –insecure –host=localhost

image-20260227160009797

3.3 查看数据库版本

SELECT VERSION();

image-20260227160028874


🔥 四、核心实战:双模建表与跨模查询

(参考官方文档和社区实践,我模拟一个智能电表场景)

4.1 创建关系数据库和关系表(存储电表档案信息)

— 创建关系数据库
CREATE DATABASE db1;

— 切换到关系数据库
SET DATABASE = db1;

— 创建关系表:存储电表基础信息
CREATE TABLE accounts (
meter_id STRING PRIMARY KEY,
location STRING,
customer_name STRING,
install_date DATE
);

— 插入测试数据
INSERT INTO accounts VALUES
('M1001', '北京市朝阳区', '王先生', '2024-01-15'),
('M1002', '上海市浦东新区', '李女士', '2024-02-20'),
('M1003', '深圳市南山区', '张先生', '2024-03-10');

— 查询验证
SELECT * FROM accounts;

image-20260227160125806

4.2 创建时序数据库和时序表(存储电表读数)

— 创建时序数据库
CREATE TS DATABASE ts_db;

— 切换到时序数据库
SET DATABASE = ts_db;

— 创建时序表:存储实时读数
— 注意:时序表需要指定时间戳列和标签列
CREATE TABLE readings (
ts TIMESTAMP NOT NULL,
voltage FLOAT,
current FLOAT,
power FLOAT
) TAGS (
meter_id VARCHAR(64) NOT NULL — 改为 VARCHAR,指定长度
) PRIMARY TAGS (
meter_id
);

— 插入模拟时序数据
INSERT INTO readings VALUES
('2026-02-27 14:30:00', 220.5, 5.2, 1146.6, 'M1001'),
('2026-02-27 14:31:00', 221.3, 6.1, 1350.9, 'M1001'),
('2026-02-27 14:30:00', 219.8, 4.8, 1055.0, 'M1002'),
('2026-02-27 14:31:00', 220.1, 7.2, 1584.7, 'M1002'),
('2026-02-27 14:30:00', 221.0, 3.9, 861.9, 'M1003');

image-20260227160619723

4.3 跨模查询实战(核心亮点)

场景需求:查看"每个用户的实时用电情况,并显示用户姓名和所在区域"

— 跨库跨模查询:关联关系库的 accounts 表和时序库的 readings 表
SELECT
a.customer_name,
a.location,
r.ts,
r.voltage,
r.power
FROM ts_db.readings r
JOIN db1.accounts a ON r.meter_id = a.meter_id
WHERE r.ts >= now() interval '5 minutes'
ORDER BY r.ts;

image-20260227160649965

结果分析:可以看到,时序表的实时读数成功关联上了关系表的用户信息,一条SQL搞定原本需要两套数据库+代码联动的复杂操作,这就是 KWDB 多模融合的价值所在!

4.4 进阶聚合查询

— 统计每个用户最近1小时的总用电量
SELECT
a.customer_name,
SUM(r.power) as total_power
FROM ts_db.readings r
JOIN db1.accounts a ON r.meter_id = a.meter_id
WHERE r.ts >= now() interval '1 hour'
GROUP BY a.customer_name;

image-20260227160711997


🕳 五、踩坑与解决记录

(这里一定要写你实际遇到的问题,评委最爱看真实踩坑)

❌ 坑1:启动容器时报错 “bash: docker-compose: command not found”

  • 现象:执行 docker-compose up -d 提示bash: docker-compose: command not found

image-20260227161444697

  • 原因:版本问题,应该使用docker compose up -d

  • 解决:

    docker compose up -d

❌ 坑2:跨模查询时提示 “relation “db1.accounts” does not exist”

  • 现象:执行 JOIN 查询时报错表不存在
  • 原因:没有指定数据库名称,KWDB 默认在当前数据库找表
  • 解决:使用 数据库名.表名 的完整写法,如 db1.accounts

❌ 坑3:时序表插入数据时报错 “ERROR: unsupported input type BinaryOperator”

  • 现象:ERROR: unsupported input type BinaryOperator

image-20260227161025449

  • 原因:原因:在 KWDB 中,不支持 now() + interval '1 minute' 这种二元运算符写法。根据官方文档,时间戳可以使用 NOW() 函数,但不支持这种加法运算 。
  • 解决:使用

INSERT INTO readings VALUES
('2026-02-27 14:30:00', 220.5, 5.2, 1146.6, 'M1001'),
('2026-02-27 14:31:00', 221.3, 6.1, 1350.9, 'M1001'),
('2026-02-27 14:30:00', 219.8, 4.8, 1055.0, 'M1002'),
('2026-02-27 14:31:00', 220.1, 7.2, 1584.7, 'M1002'),
('2026-02-27 14:30:00', 221.0, 3.9, 861.9, 'M1003');

❌ 坑4:在 KWDB 时序表中,标签列不支持 STRING 类型

现象

image-20260227161048009

原因:在 KWDB 时序表中,标签列不支持 STRING 类型 。根据官方文档,时序表的标签列不支持以下数据类型 :

  • TIMESTAMP / TIMESTAMPTZ(时间类型)
  • NVARCHAR(可变长度字符)
  • GEOMETRY(几何类型)

解决: 将 STRING 改为 VARCHAR

CREATE TABLE readings (
ts TIMESTAMP NOT NULL,
voltage FLOAT,
current FLOAT,
power FLOAT
) TAGS (
meter_id VARCHAR(64) NOT NULL — 改为 VARCHAR,指定长度
) PRIMARY TAGS (
meter_id
);


📝 六、总结与心得

6.1 部署体验

  • Docker 方式便捷度:☆☆☆☆☆(15分钟搞定,比裸机安装省事太多)
  • 官方文档友好度:☆☆☆☆(资料齐全,但部分散落在不同平台)

6.2 KWDB 核心能力验证

本次实操成功验证了 KWDB 的两大核心能力:

  • 多模数据统一管理:同一个实例同时存储关系数据和时序数据
  • 跨模查询:通过 SQL 直接关联分析两类数据,无需中间件拼装
  • 6.3 适用场景思考

    结合官方介绍,我认为 KWDB 特别适合以下场景 :

    • 工业物联网:设备档案(关系)+ 实时监控数据(时序)
    • 能源电力:电表档案 + 读数记录
    • 车联网:车辆信息 + 轨迹数据

    6.4 后续计划

    下一步打算申请试用 KAT(KWDB 智能体工具) 或尝试 Smart Meter Web 可视化项目 ,做更深入的应用探索。


    📎 七、参考资料

    • KWDB 官方文档:https://www.kaiwudb.com/docs
    • KWDB Gitee 仓库:https://gitee.com/kwdb/kwdb
    • 跨模查询参考:基于 Smart Meter Web,深入实践 KWDB 跨模查询
    • Docker 部署参考:在 CentOS 云服务中通过 Docker 安装 KWDB
    赞(0)
    未经允许不得转载:网硕互联帮助中心 » CentOS Stream 9服务器Docker部署KaiwuDB社区版:从零到跨模查询实战全记录
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!