文章链接:浪潮 KWDB 初体验
作者:JiekeXu
KWDB 是一款面向 AIoT 物联网场景的分布式、多模融合的数据库产品,支持同一实例同时建立时序库和关系库并融合处理多模数据,具备千万级设备接入、百万级数据秒级写入、亿级数据秒级读取等时序数据高效处理能力,提供一站式数据存储、管理与分析的基座。目前KWDB的主仓库地址是:https://gitee.com/kwdb/kwdb。
记得前两年,浪潮旗下的数据库叫 KaiwuDB。“Kaiwu” 开务,取自“开物成务”,源自《易·系辞上》中“夫《易》开物成务,冒天下之道,如斯而已者也。”泛指通过挖掘万物深藏的道理和规律开发各种事务,经过努力实现事务价值的升华,实现成功之道。其中“wu(物)”亦指“物联网”,我们立足于物联网场景,致力于为各行业用户提供稳定安全、高性能、易运维的创新数据软件与服务,一站式满足 AIoT 等场景下数据管理需求及关键行业核心系统的安全可控需求。
KaiwuDB 是一款面向 AIoT 场景的分布式、多模融合、支持原生 AI 的数据库产品,支持同一实例同时建立时序库和关系库并融合处理多模数据,具备千万级设备接入、百万级数据秒级写入、亿级数据秒级读取等时序数据高效处理能力,为各行业用户提供一站式数据存储、管理与分析的基座。
2024 年 8 月,KaiwuDB 正式开源,社区版名为 KWDB。9月,KaiwuDB 宣布将社区版本 KWDB 捐赠给开放原子开源基金会,正式成为基金会孵化项目。
推荐使用 Docker 快速体验 KWDB,算是安装便捷,或者安装单节点比较方便,单节点配置建议不低于 4 核 8G,而且只有 Anolis、KylinOS、Ubuntu、UOS 这四种操作系统受支持,未提及的操作系统版本也许可以运行 KWDB,但尚未得到 KWDB 官方支持,我也就不折腾了吧。
下面看下会长写的《KWDB一键部署全攻略》https://mp.weixin.qq.com/s/DdLyvMVZO8Ttq0BT-3uqNg
首席写的《KWDB Docker 安装初体验》https://mp.weixin.qq.com/s/JgzPAXGZHXfAGaGHvAtJBg
今天我便在 Ubuntu 22.04 上安装体验一把,从如下地址下载对应版本的安装包:
https://gitee.com/kwdb/kwdb/releases/
KWDB-2.2.0-ubuntu22.04-x86_64-debs.tar.gz
目前 KWDB 开源仓库提供了Ubuntu 和 Kylin 系统与架构的 DEB 或 RPM 安装包,如需其它系统或架构的安装包,需要联系 KWDB 技术支持:
上传文件到 /app/KWDB/soft 目录并使用 root 用户解压和部署及管理。
# mkdir -p /app/KWDB/{soft,data}# tar -zxvfKWDB-2.2.0-ubuntu22.04-x86_64-debs.tar.gz
使用脚本部署 KWDB 时,系统将对配置文件、运行环境、硬件配置和软件依赖进行检查。如果相应硬件未能满足要求,系统将继续安装,并提示硬件规格不满足要求。如果软件依赖未能满足要求,系统将中止安装,并提供相应的提示信息。
在部署过程中,系统会自动生成相关日志。如果部署时出现错误,用户可以通过查看终端输出或 KWDB 安装目录中 log 目录里的日志文件,获取详细的错误信息。
部署完成后,系统会将 KWDB 封装成系统服务(名称为 kaiwudb),并生成以下文件:
·kaiwudb.service:配置 KWDB 的 CPU 资源占用率。
·kaiwudb_env:配置 KWDB 启动参数。
登录需要部署的主机节点,编辑安装包目录下的 deploy.cfg 配置文件,设置安全模式、管理用户、服务端口等信息。默认情况下,deploy.cfg 配置文件中包含集群配置参数,需要删除或注释 [cluster] 集群配置项。
修改后的配置文件如下:
参数说明:
·global
:全局配置
secure_mode
:是否开启安全模式,支持以下两种取值:
§insecure
:使用非安全模式。
§tls
:(默认选项)开启 TLS 安全模式。开启安全模式后,KWDB 生成 TLS 证书,作为客户端或应用程序连接数据库的凭证。生成的客户端相关证书存放在 /etc/kaiwudb/certs
目录。
management_user
:KWDB 的管理用户,默认为 kaiwudb
。安装部署后,KWDB 创建相应的管理用户以及和管理用户同名的用户组。
rest_port
:KWDB Web 服务端口,默认为 8080
。
kaiwudb_port
:KWDB 服务端口,默认为 26257
。
data_root:数据目录,默认为 /var/lib/kaiwudb
。
cpu
: 可选参数,用于指定 KWDB 服务占用当前节点服务器 CPU 资源的比例,默认无限制。取值范围为 [0,1]
,最大精度为小数点后两位。注意:如果部署环境为 Ubuntu 18.04 版本,部署集群后,需要将 kaiwudb.service
文件中的 CPUQuota
修改为整型值,例如,将 180.0%
修改为 180%
,以确保设置生效。具体操作步骤,参见配置 CPU 资源占用率。
·local
:本地节点配置
node_addr
:本地节点对外提供服务的 IP 地址,监听地址为 0.0.0.0
,端口为 KWDB 服务端口。
接下来为 deploy.sh
脚本添加运行权限,执行单机部署安装命令
[ERROR] 2025-05-31 11:28:48 Install failed: Selecting previously unselected package kwdb-server. (Reading database ... 116490 files and directories currently installed.) Preparing to unpack .../kwdb-server_2.2.0-ubuntu-22.04_amd64.deb ... Unpacking kwdb-server (2.2.0-ubuntu-22.04) ... dpkg: dependency problems prevent configuration of kwdb-server: kwdb-server depends on libprotobuf23 (>= 3.12.4); however: Package libprotobuf23 is not installed. kwdb-server depends on squashfs-tools; however: Package squashfs-tools is not installed. dpkg: error processing package kwdb-server (--install): dependency problems - leaving unconfigured Errors were encountered while processing: kwdb-server
通过上面报错可知,缺少 libprotobuf23、squashfs-tools 依赖包,我们手动安装即可。
# ./deploy.sh install --single [INSTALL COMPLETED]:KaiwuDB has been installed successfully! To start KaiwuDB, please execute the command 'systemctl daemon-reload'.
安装过程中需要输入密码 kaiwudb
根据系统提示重新加载 systemd 守护进程的配置文件
# systemctl daemon-reload
启动 KWDB 数据库
./deploy.sh start
看到下面提示则表示启动成功~
[START COMPLETED]:KaiwuDB start successfully.
查看 KWDB 状态
./deploy.sh status 或者 systemctl status kaiwudb
设置开机自启动
systemctl enable kaiwudb
执行 add_user.sh 脚本创建数据库用户。如果跳过该步骤,系统将默认使用 root 用户,且无需密码访问数据库。
root@JiekeXu:/app/KWDB/soft/kwdb_install# ./add_user.sh Please enter the username:JiekeXu Please enter the password: [ADD USER COMPLETED]:User creation completed.
安全连接
如需采用安全模式连接,执行以下步骤创建证书:
mkdir -p /app/KWDB/data/kaiwudb/certs
# 创建数据库证书颁发机构及密钥 kwbase cert create-ca --certs-dir=/app/KWDB/data/kaiwudb/certs --ca-key=/app/KWDB/data/kaiwudb/certs/ca.key # 创建 root 用户或安装数据库用户的客户端证书及密钥 kwbase cert create-client root --certs-dir=/app/KWDB/data/kaiwudb/certs --ca-key=/app/KWDB/data/kaiwudb/certs/ca.key # 创建节点服务器证书及密钥 kwbase cert create-node 127.0.0.1 localhost 0.0.0.0 --certs-dir=/app/KWDB/data/kaiwudb/certs --ca-key=/app/KWDB/data/kaiwudb/certs/ca.key root@JiekeXu:/app/KWDB/soft/kwdb_install# ll /etc/kaiwudb/certs total 32 drwxr-xr-x 2 kaiwudb kaiwudb 4096 May 31 12:03 ./ drwxr-xr-x 5 kaiwudb kaiwudb 4096 May 31 12:03 ../ -rw-r--r-- 1 kaiwudb kaiwudb 1127 May 31 12:03 ca.crt -rwx------ 1 kaiwudb kaiwudb 1675 May 31 12:03 ca.key* -rw-r--r-- 1 kaiwudb kaiwudb 1127 May 31 12:03 client.root.crt -rwx------ 1 kaiwudb kaiwudb 1675 May 31 12:03 client.root.key* -rw-r--r-- 1 kaiwudb kaiwudb 1192 May 31 12:03 node.crt -rwx------ 1 kaiwudb kaiwudb 1675 May 31 12:03 node.key*
使用 kwbase sql 命令连接
kwbase sql --host=127.0.0.1:26257 --certs-dir=/etc/kaiwudb/certs
kwbase sql --host=0.0.0.0:26257 --certs-dir=/etc/kaiwudb/certs
kwbase sql --host=127.0.0.1 --certs-dir=/etc/kaiwudb/certs
默认进入到 defaultdb 这个数据库,里面空无一物,没有任何表,是个空库。
创建用户
create user JiekeXu_DBA with password "JiekeXu_DBA"; grant admin to JiekeXu_DBA with admin option;
创建时序数据库和表并插入数据。
CREATE TS DATABASE ts_jiekexudb; CREATE TABLE ts_jiekexudb.t1(ts timestamp not null,a int, b int) tags(tag1 int not null, tag2 int) primary tags(tag1); insert INTO ts_jiekexudb.t1 VALUES(now(),11,11,33,44); insert INTO ts_jiekexudb.t1 VALUES(now(),22,22,33,44); insert INTO ts_jiekexudb.t1 VALUES(now(),11,33,33,44); insert INTO ts_jiekexudb.t1 VALUES(now(),22,44,33,44); insert INTO ts_jiekexudb.t1 VALUES(now(),33,55,44,44); insert INTO ts_jiekexudb.t1 VALUES(now(),22,44,44,44); insert INTO ts_jiekexudb.t1 VALUES(now(),33,44,55,44); insert INTO ts_jiekexudb.t1 VALUES(now(),null,null,66,66); insert INTO ts_jiekexudb.t1 VALUES(now(),null,null,66,77); select * FROM ts_jiekexudb.t1;
创建关系数据库
CREATE DATABASE r_jiekexudb; Show databases; CREATE TABLE r_jiekexudb.accounts(id INT8 DEFAULT unique_rowid() PRIMARY KEY, name STRING, balance DECIMAL, enabled BOOL); insert INTO r_jiekexudb.accounts VALUES (1, 'lily', 10000.5, true), (2, 'ruarc', 20000.75, true), (3, 'tullia', 30000, false), (4, 'arturo', 45000, false); select * FROM r_jiekexudb.accounts;
通过简单的学习,发现 KWDB 还是存在 PG/MySQL 的影子,我们可以来试试。
可以使用 show databases; 来查看数据库,发现有 defaultdb、postgres、system 三个库,当然也可以使用 \l 来查看数据库。使用 use system;进入到系统库,又是 MySQL 的影子,查看 users 表 select * from system.users;
select * from system.users;
最后如果不想体验了,可直接卸载 KWDB。
停止 KWDB 服务 systemctl stop kaiwudb
执行数据库卸载命令
/app/KWDB/soft/kwdb_install/deploy.sh uninstall
确认是否删除数据目录。输入 y 将删除数据目录,取消 KWDB 数据目录下的 loop 设备挂载。输入 n 将保留数据目录。
When uninstalling KaiwuDB, you can either delete or keep all user data. Please confirm your choice: Do you want to delete the data? (y/n):
卸载完成后,控制台输出以下信息:
[UNINSTALL COMPLETED]:KaiwuDB has been uninstalled successfully.
KaiwuDB 为包括工业物联网、数字能源、车联网、智慧产业等各大行业领域提供数字化赋能。
KWDB特别适合以下应用场景:
工业物联网: KaiwuDB 具备对接 SCADA 和 DCS 等系统的能力,能够将机械设备、产线设备在生产过程中产生的实时数据以及生产管理过程中的设备管理数据等进行统一的存储。KaiwuDB 数据服务平台集成来自不同来源的数据,提供强大的分析工具,帮助企业挖掘数据价值,发现业务趋势和问题。
数字能源 KaiwuDB: 通过 AIoT 多模数据库的能力建设,将传感器、生产状况、机器运行状态等时序数据与人员信息、设备信息、业务数据等关系类数据统一汇聚,集中处理。KaiwuDB 提供强大的实时计算、事务处理、交互查询等能力,通过实时数据预测分析为企业提供准确的调峰调频等方案,通过实时数据的监测预警保障企业安全,实现能源数据的采集、存储、治理、计算分析与应用。
车联网 KaiwuDB: 具备构建时序数据引擎的能力,将车端采集的车传感器数据、车辆中控状态数据、发动机数据等时序类数据,通过 MQTT 和移动通信网络高速写入到 KaiwuDB,然后经过网关汇聚到 KaiwuDB 数据库后进行存储、管理、计算、分析,服务上层的业务系统。
智慧矿山 KaiwuDB: 支持存储关系数据、时序数据、地理位置数据等多种类型的数据。KaiwuDB 一库多用,以一套数据库打通在采、选、冶、产、供、销全流程下多个业务系统对数据的计算与分析能力。
https://gitee.com/kwdb/kwdb https://www.kaiwudb.com/template_version/pc/doc/oss_v2.1.0/quickstart/install-kaiwudb/quickstart-bare-metal.html https://mp.weixin.qq.com/s/gcszdIuNR4QS9redoq8iDw https://mp.weixin.qq.com/s/JgzPAXGZHXfAGaGHvAtJBg https://mp.weixin.qq.com/s/DdLyvMVZO8Ttq0BT-3uqNg https://gitee.com/kwdb/kwdb/releases/