
你好,我是悟空。
之前写过一篇通过 Mac 安装 KaiwuDB 时,遇到了很多坑,当时就在想如果有一个快速体验 kwdb 的方式就太好了,而 KaiwuDB Playground 就解决了这个痛点。
接下来我将从背景、设计理念、核心原理、应用价值、安装、实践、场景落地出发,来讲述 KaiwuDB Playground。
在数字化转型的浪潮中,时序数据库和混合型数据库的需求日益增长。KaiwuDB 作为一款面向物联网和工业互联网的分布式多模数据库,其独特的时序数据与关系数据处理能力吸引了越来越多的开发者关注。
然而,在推广和技术普及过程中,kwdb 官方发现了几个普遍存在的痛点:

正是在这样的背景下,KWDB Playground 应运而生。它不仅仅是一个工具,更是一种全新的技术传播和体验方式。

docker/)文件 | 职责 |
|---|---|
[controller.go] | 容器生命周期管理(创建/启动/停止/销毁) |
[adapter.go] | Docker API 适配层,抽象容器操作 |
[cache.go] | 容器状态缓存,避免频繁查询 Docker Daemon |
[stream.go] | 容器日志/输出流转发 |
核心原理:
websocket/)
关键实现:
api/)Handler | 功能 |
|---|---|
[handlers_container.go] | 容器操作 API |
[handlers_course_runtime.go] | 课程运行时管理 |
[handlers_sql_ws.go] | SQL 执行 WebSocket |
[handlers_progress.go] | 学习进度保存/加载 |
[handlers_upgrade.go] | 版本检查与升级 |
[handlers_system.go] | 系统状态查询 |
[routes.go] | 路由注册与分发 |
course/)go
// 核心数据结构
- models.go // 课程、进度数据模型
- progress.go // 进度跟踪逻辑
- service.go // 业务服务层
原理:
sql/)文件 | 职责 |
|---|---|
[driver.go] | 数据库驱动抽象 |
[manager.go] | SQL 会话管理,连接池 |
特性:
check/)原理:
upgrade/)技术 | 实现方式 |
|---|---|
环境隔离 | Docker 容器 per 用户会话 |
实时通信 | WebSocket 双向流 |
状态持久化 | 本地文件存储 + 容器快照 |
多语言执行 | 容器内预装解释器 + 代码注入执行 |
镜像加速 | 多源探测 + 智能选择 |
安全隔离 | 容器资源限制 + 网络隔离 |
用户输入代码 → API 接收 → 写入容器临时文件 → 执行命令 → 捕获输出 → WebSocket 推送 → 前端展示
请求创建 → 镜像拉取(智能选源)→ 容器创建 → 端口映射 → 状态缓存 → 返回连接信息
KWDB Playground 的核心设计思想是 **"容器即环境"**:
Playground 容器通过挂载的 Docker socket 调用宿主机 Docker daemon 创建课程容器。课程容器与 Playground 容器是同级关系(sibling containers),而非嵌套关系。两者通过 Docker 命名网络(kwdb-playground-net)互相通信。
课程所需的文件(如 tsdb.tar.gz、SQL 脚本等)已嵌入 Playground 二进制中。启动课程容器时,Playground 在容器创建后、启动前,通过 Docker API 将文件注入课程容器,无需宿主机路径挂载。
SQL 类型课程(如 sql、data-query)通过容器 IP 地址连接同级的 KWDB 容器(同一 Docker 网络内),而非 localhost。

无需安装 Go 或 Node.js 环境,直接使用 Docker 部署(确保本机已安装 Docker):
git clone https://github.com/kwdb/playground.git
cd playground
docker compose -f docker/playground/docker-compose.yml up -d
“**注意 (Windows 用户)**:默认配置挂载了
/var/run/docker.sock,仅适用于 Linux/macOS。Windows 下请通过 WSL2 运行,或参阅docs/docker-deployment.md中的说明。

启动后,访问 http://localhost:3006 进行体验。

首页

课程列表

课程详情页根据课程类型提供不同的交互区域:
Shell 终端

SQL 终端

Code 终端

点击执行按钮,代码立即运行。同时,可以在 SQL 终端中查询刚刚插入的数据,验证时序数据的写入情况。
整个过程行云流水,无需离开浏览器,无需配置任何开发环境。
可以给官方提新课程需求:


也可以自己提交课程文档到 gitlab:






某高校的数据库课程引入 KWDB Playground 作为实验平台。教师发布一个链接,全班 50 名学生同时进入,每人拥有独立的 KaiwuDB 环境。学生可以完成从建表、插入、查询到复杂时序分析的实验任务,教师无需维护庞大的实验集群。

某工业物联网公司在选型时序数据库时,需要验证 KaiwuDB 的数据压缩率和查询性能。售前工程师通过 Playground 快速搭建演示环境,让客户亲自执行数据导入和查询操作,亲眼看到压缩效果,大大缩短了 PoC 周期。

KaiwuDB 的开源贡献者遍布全球,时区和网络环境各异。通过 Playground,贡献者可以在统一的环境中进行功能验证和 Bug 复现,避免了"在我机器上能运行"的沟通困境。
后台打开后,进入到课程详情页,点击右上角的启动容器,无法启动。
详见 issue:https://github.com/KWDB/playground/issues/125

升级 docker 版本

官方增加了一个 docker 最低版本检查的功能。
课程详情页自动拉取容器后,无法关闭弹框提示。
详见 Issue:https://github.com/KWDB/playground/issues/127

刷新页面。
详见 Issue:https://github.com/KWDB/playground/issues/128
Java 连接 KWDB 课程中,执行部分命令失败,提示:command failed with exit code 1
