核心原理:
2. WebSocket 终端通信 (
|
| 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/)// 核心数据结构
- models.go // 课程、进度数据模型
- progress.go // 进度跟踪逻辑
- service.go // 业务服务层
原理:
sql/)| 文件 | 职责 |
|---|---|
driver.go |
数据库驱动抽象 |
manager.go |
SQL 会话管理,连接池 |
特性:
check/)check.go - 执行环境诊断项(Docker 连通性、镜像可用性等)。render.go - 诊断结果格式化输出。docker/cache.go)原理:
upgrade/)service.go - 版本检查、下载、替换二进制。| 技术 | 实现方式 |
|---|---|
| 环境隔离 | Docker 容器 per 用户会话 |
| 实时通信 | WebSocket 双向流 |
| 状态持久化 | 本地文件存储 + 容器快照 |
| 多语言执行 | 容器内预装解释器 + 代码注入执行 |
| 镜像加速 | 多源探测 + 智能选择 |
| 安全隔离 | 容器资源限制 + 网络隔离 |
代码执行流程:
用户输入代码 → API 接收 → 写入容器临时文件 → 执行命令 → 捕获输出 → WebSocket 推送 → 前端展示
容器启动流程:
请求创建 → 镜像拉取(智能选源)→ 容器创建 → 端口映射 → 状态缓存 → 返回连接信息
总结:
KWDB Playground 的核心设计思想是 “容器即环境”:
Playground 容器通过挂载的 Docker socket 调用宿主机 Docker daemon 创建课程容器。课程容器与 Playground 容器是同级关系,两者通过 Docker 命名网络(kwdb-playground-net)互相通信。SQL课程通过容器IP地址连接同级的KWDB容器。
无需安装 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 终端示例 (快速安装KWDB):

SQL 终端示例 (创建数据库与表):

Code 终端示例 (Java连接数据库):

如果你有好的课程想法,可以通过平台直接向官方提交需求,甚至可以参与到开源实战中,自行提交课程文档。

提交的需求会自动在GitHub创建Issue。
在实践过程中,可能会遇到一些问题。以下是几个典型问题及其解决方案,供你参考。
问题:进入课程详情页点击启动容器后失败,提示Docker API版本过新。
解决:升级本地Docker Desktop版本至API 1.53+。官方后续已在#126 Issue中增加了Docker最低版本检查功能。
问题:课程详情页自动拉取容器镜像后,提示“拉取完成”的弹窗无法关闭。
解决:刷新当前页面即可。
问题:在“Java连接KWDB”课程中执行部分命令时,提示 command failed with exit code 1。
解决:此问题通常与课程容器内的具体环境或代码有关,可查看课程对应的GitHub Issue(如#128)获取官方修复状态或临时解决方案。
KaiwuDB Playground 通过容器化隔离、实时交互和精心设计的课程路径,成功地降低了时序数据库的学习与体验门槛。它不仅是学习工具,更是连接开发者、教育者和企业用户的桥梁。无论是想快速尝鲜的开发者,还是需要进行深度PoC的企业技术团队,都可以从中获得高效、隔离且有趣的体验。希望这篇从原理到实战的解析,能帮助你在云栈社区和更广阔的技术世界里,更顺畅地探索数据库技术的魅力。