KWDB 容器化部署与性能测试

作者:lgbisha
原文链接:https://blog.csdn.net/lgbisha/article/details/147165056
什么是 KWDB
KWDB 是由开放原子开源基金会孵化并运营的开源项目,定位为一款面向 AIoT 场景 的 分布式多模数据库产品。它支持在同一实例中同时构建 时序库 和 关系库,实现多模数据的融合管理与统一处理。该系统具备以下核心能力:
高并发数据处理能力:支持千万级设备接入、百万级数据秒级写入、亿级数据秒级读取,满足大规模物联网环境下的高效数据处理需求;
强大的时序数据处理能力:专为海量时序数据设计,具备高吞吐、低延迟的写入与查询性能;
多模融合架构:统一支持时序数据与结构化数据的存储与分析,便于构建复杂业务模型;
稳定安全、易于运维:具备高可用架构设计、完善的安全机制以及便捷的运维工具,适用于大规模工业级部署场景。
KWDB 适用于工业互联网、智慧城市、能源、电力、交通等多种 AIoT 应用场景,是一款具有自主创新能力的国产数据库解决方案。

面向不同角色的支持能力
对于开发者:
KWDB 提供完善的开发支持,具备如下特性:
标准化的 通用连接接口
高速写入 与 极速查询能力
SQL 支持,方便上手
支持 数据压缩策略 与 生命周期管理
灵活的 集群部署
可无缝集成多种第三方工具(如 BI 工具、数据分析平台)
这些能力帮助开发者快速构建应用,降低学习成本与开发复杂度,大幅提升开发效率。
对于运维人员:
KWDB 同样为数据库管理员和运维人员提供了强有力的支撑,包括:
一键式的 快速安装与部署
支持平滑的 升级与迁移操作
提供丰富的 系统监控能力
降低整体 运维与管理成本
开始部署 KWDB
这次安装我们准备使用 docker 容器进行安装
docker 环境的安装
进行 docker 容器的安装,安装最新版本的 docker
这里因为 docker 现在已经无法直接通过网络安装,所以我们通过离线安装的方式安装 docker 环境
-从官网下载离线包

如图所示,把离线包传到服务器上,进行安装
查看安装的 docker 版本
至此 docker 容器环境安装完毕
docker-compose 安装
docker 容器安装完毕后,开始安装 docker-compose
因为我是 x86-64 的环境,所以从中找到 docker-compose-linux-x86_64 进行下载
下载完毕后上传到服务器,然后执行 sudo cp -f docker-compose-linux-x86_64 /usr/local/bin/docker-compose
然后授予可执行权限,sudo chmod +x /usr/local/bin/docker-compose
查看 docker-compose 版本
使用容器快速部署 KWDB
首先去镜像仓库,查看 KWDB 镜像,果然是有的,这样就可以快速进行 KWDB 的安装与启动

先去拉去镜像,docker pull kwdb/kwdb,拉取最新的 KWDB 镜像

然后创建创建 docker-compose.yml 配置文件
基础结构
version: '3.3':指定使用 Docker Compose 文件的语法版本。
services::定义一个或多个容器服务,这里只有一个服务叫做 kaiwudb-container。
容器配置
image:使用的镜像,来自于 kwdb/kwdb:latest。
container_name:指定容器名为 kaiwudb-experience。
hostname:容器的主机名,也叫 kaiwudb-experience,有助于容器内部网络识别。
端口映射
将宿主机的端口 8080 和 26257 映射到容器内部的相同端口:
8080 是 KaiwuDB 的 Web 管理界面(http 访问)
26257 是数据库服务监听端口
系统相关设置
ulimits.memlock: -1:禁用内存锁限制,适用于数据库避免 swap。
volumes: /dev:/dev:挂载宿主机的 /dev 到容器内
ipc: shareable:允许其他容器与它共享 IPC 命名空间。
privileged: true:给予容器几乎与宿主机等同的权限
其他设置
networks: default:使用默认网络。
restart: on-failure:如果容器因错误退出,会自动重启。
tty: true:分配一个伪终端,便于交互和日志记录。
working_dir:设置默认的工作目录。
环境变量和启动命令
LD_LIBRARY_PATH=/kaiwudb/lib:供 KaiwuDB 启动时查找依赖库。
command: 使用 bash -c 执行多行命令。
实际执行的命令是:
含义如下:
start-single-node:以单节点模式启动数据库。
insecure:以非加密模式运行,适合本地体验
listen-addr=0.0.0.0:26257:监听所有网卡上的 26257 端口。
advertise-addr=127.0.0.1:26257:对外广播的地址为 127.0.0.1(主要用于集群内部通信)。
http-addr=0.0.0.0:8080:Web UI 监听端口。
store=/kaiwudb/deploy/kaiwudb:数据库数据存储路径。
启动 KWDB 容器
执行 docker-compose up -d

可以看到 KWDB 已经成功启动了
使用 KDC 联接 KWDB
什么是 KDC,KaiwuDB Developer Center(KaiwuDB 开发者中心),是 KaiwuDB 官方的可视化连接管理工具首先需要下载 KDC,可以在官方 gitee 仓库中找到下载地址,https://gitee.com/kwdb/kwdb/releases

下载完毕后解压

双击打开可视化工具,配置新连接

配上刚才安装的 KWDB 地址,点击测试连接可以看到


这样我们 KDC 联接 KWDB 就大功告成
体验 KWDB 功能
在 KDC 中新建数据库 performance_test,

然后建表

插入一些数据,用于测试

KWDB 性能测试
1. 精确查找(测试索引查找)
SELECT * FROM users WHERE username = 'user_50000';

2. 范围查找(测试范围扫描)
SELECT * FROM users WHERE age BETWEEN 20 AND 30;

3. 聚合查询(测试 GROUP BY + COUNT)
SELECT age, COUNT() FROM users GROUP BY age ORDER BY COUNT() DESC LIMIT 10;

4. 排序 + 分页查询
SELECT * FROM users ORDER BY created_at DESC LIMIT 20 OFFSET 1000;

5. 更新操作(批量更新)
UPDATE users SET age = age + 1 WHERE age < 30;

这里可以看到批量更新速度比较慢,然后执行
使用了 users@idx_age 这个索引,可以看到索引是命中了
慢的根源在于更新量太大 + 每行都要做一次回表 + 写入
并非 SQL 本身逻辑复杂,而是更新代价大
所以 1.6 秒其实是“正常”的,尤其是在大批量写入的场景下。在业务场景下,就不应该一次性批量更新,需要改为限速分批更新
6. 删除操作(批量删除)
DELETE FROM users WHERE age > 90;

本次测试在约 10 万条数据量下,对 KWDB 执行了典型的读写操作,表现出惊人的高效与稳定性:
测试数据规模
表名:users
数据量:100,000 条
字段:id(主键)、name(字符串)、age(整数)、email(唯一索引)
查询性能表现

总结一句话:KWDB 确实挺不错的
KWDB 在本次实测中展现了以下几个优势:
✅ 索引优化极致:无论是点查还是范围查,响应时间均在毫秒级
✅ 吞吐能力强:10 万条数据照样秒查,轻松应对大表压力
✅ 复杂查询不慌:聚合、排序、分页都能快速处理
✅ 更新写入可控:批量更新虽慢,但通过分页策略可优化
结尾:对第一次上手 KWDB 的感受
第一次尝试 KWDB,部署+体验一次性通过,轻松上手。可以说是一个“不会让人折腾太久”的国产数据库了,而且数据库性能极强。后续继续研究它的时序数据能力,咱们下次再聊!
版权声明: 本文为 InfoQ 作者【KaiwuDB】的原创文章。
原文链接:【http://xie.infoq.cn/article/017717e82a0f0e0d45b256c48】。文章转载请联系作者。
评论