跳到主要内容

5 分钟快速体验 KWDB

本示例将带您快速体验 KWDB 的基本功能。您将学习如何:

  • 使用 Docker 快速部署 KWDB
  • 连接到 KWDB 数据库
  • 创建时序数据库和关系数据库
  • 插入示例数据
  • 执行跨模查询

通过这个示例,您可以了解 KWDB 如何同时处理时序数据和关系数据,以及如何利用其强大的跨模查询能力。整个过程只需要 5 分钟即可完成。

下载安装

推荐使用 Docker 快速体验 KWDB

# Docker 安装(推荐)
docker run -d --privileged --name kwdb
-p 26257:26257
-p 8080:8080
-v /var/lib/kaiwudb:/kaiwudb/deploy/kaiwudb-container
--ipc shareable
-w /kaiwudb/bin
kwdb/kwdb
./kwbase start-single-node
--insecure
--listen-addr=0.0.0.0:26257
--http-addr=0.0.0.0:8080
--store=/kaiwudb/deploy/kaiwudb-container

连接数据库

使用 Docker 连接 KWDB

# 开启交互式 SQL Shell
docker exec -it kwdb ./kwbase sql --insecure --host=127.0.0.1

创建数据库

创建时序数据库和关系数据库

-- 创建时序数据库
CREATE TS DATABASE sensor_data;

-- 创建关系数据库
CREATE DATABASE device_management;

-- 在时序数据库中创建传感器读数表
CREATE TABLE sensor_data.readings (
ts TIMESTAMPTZ NOT NULL, -- 时间戳(主列)
temperature FLOAT, -- 温度值
humidity FLOAT -- 湿度值
) TAGS (
device_id INT NOT NULL, -- 设备ID(标签)
location VARCHAR(256) NOT NULL -- 设备位置(标签)
) PRIMARY TAGS(device_id); -- 主标签设为device_id

-- 在关系数据库中创建设备信息表
CREATE TABLE device_management.devices (
device_id INT PRIMARY KEY, -- 设备ID(主键)
device_name VARCHAR(100), -- 设备名称
device_type VARCHAR(50), -- 设备类型
installation_date DATE, -- 安装日期
warranty_period INT -- 保修期(月)
);

插入数据

开始写入您的时序数据和关系数据

-- 向关系表插入设备信息
INSERT INTO device_management.devices VALUES
(101, '温度传感器-101', '温度传感器', '2023-01-15', 24),
(102, '湿度传感器-102', '湿度传感器', '2023-02-20', 36),
(103, '多功能传感器-103', '复合传感器', '2023-03-10', 12);

-- 向时序表插入传感器读数数据
INSERT INTO sensor_data.readings VALUES
('2025-08-15 13:00:00', 23.5, 45.2, 101, '机房A'),
('2025-08-15 13:30:00', 24.1, 46.8, 101, '机房A'),
('2025-08-15 14:00:00', 22.9, 47.5, 101, '机房A'),
('2025-08-15 14:30:00', 19.8, 65.3, 102, '机房B'),
('2025-08-15 15:00:00', 20.2, 64.7, 102, '机房B'),
('2025-08-15 15:30:00', 20.5, 63.9, 102, '机房B'),
('2025-08-15 16:00:00', 25.3, 42.1, 103, '走廊'),
('2025-08-15 16:30:00', 25.8, 41.7, 103, '走廊');

查询数据

跨模查询数据

-- 查询设备最新读数及其详细信息
SELECT
r.ts AS timestamp,
r.temperature,
r.humidity,
d.device_name,
d.device_type,
r.location
FROM
sensor_data.readings AS r
INNER JOIN
device_management.devices AS d
ON
r.device_id = d.device_id
WHERE
r.ts > '2025-08-15 10:00:00'
ORDER BY
r.ts DESC;