当前位置: 首页 > news >正文

【KWDB 2025 创作者计划】_从部署开始了解KWDB

一、概述

KaiwuDB 是一款面向 AIoT 场景的分布式、多模融合、支持原生 AI 的数据库产品,支持同一实例同时建立时序库和关系库并融合处理多模数据,具备时序数据高效处理能力,具有稳定安全、高可用、易运维等特点。面向工业物联网、数字能源、车联网、智慧产业等领域,KaiwuDB 提供一站式数据存储、管理与分析的基座。

我们先了解下什么是时序数据库?
时序数据库(Time Series Database, TSDB)是专门针对时间序列数据(按时间顺序记录的数据点)进行存储和管理的数据库。这类数据通常包含时间戳(Timestamp)和对应的数值,例如传感器读数、服务器监控指标、金融交易记录等。时序数据库的核心特点是高效处理时间范围内的聚合查询、高频数据写入和时间窗口分析。

KWDB优势‌

  1. ‌数据整合与统一性‌:KWDB能够将来自不同来源的数据进行整合,构建一个统一的知识库,提高数据的一致性和完整性。
  2. ‌知识图谱建模‌:KWDB支持知识图谱的建模和查询,帮助用户深入理解知识之间的关联和联系。
  3. ‌复杂查询与推理‌:KWDB提供强大的查询和推理功能,用户可以通过灵活的查询语言和规则来进行复杂的数据分析和推理操作。
  4. ‌可视化展示‌:KWDB支持数据的可视化展示,帮助用户更直观地理解和使用知识库中的信息。

KWDB的架构

相比传统的数据库,KWDB 提供多模数据管理能力,支持不同数据模型的统一存储,助力企业跨部门、跨业务统一管理数据,实现多业务数据融合,支撑多样化的应用服务。

二、安装要求

硬件要求

项目

要求
CPU 和内存单节点配置建议不低于 4 核 8G。对于数据量大、复杂的工作负载、高并发和高性能场景,建议配置更高的 CPU 和内存资源以确保系统的高效运行。
磁盘- 推荐使用 SSD 或者 NVMe 设备,尽量避免使用 NFS、CIFS、CEPH 等共享存储。
- 磁盘必须能够实现 500 IOPS 和 30 MB/s 处理效率。
文件系统建议使用 ext4 文件系统。

操作系统支持

操作系统暂时支持四大类,Anolis、KylinOS、Ubuntu和UOS,每个系统都有对应arm和x86的版本

操作系统版本架构
Anolis8.6ARM_64
8.6x86_64
KylinOSV10 SP3 2403ARM_64open in new window
V10 SP3 2303ARM_64
V10 SP3 2403x86_64open in new window
V10 SP3 2303x86_64
UbuntuV18.04x86_64
V20.04ARM_64
V20.04x86_64open in new window
V22.04ARM_64
V22.04x86_64open in new window
V24.04ARM_64
V24.04x86_64
UOS1060ex86_64
1060eARM_64

其他软件依赖

OpenSSL遇到的问题比较多,可以先检查下openssl的版本并检查protobuf是否安装

[root@localhost ~]# rpm -qa openssl
openssl-1.1.1f-31.p23.ky10.x86_64

[root@localhost kwdb_install]# rpm -qa protobuf
protobuf-3.14.0-7.ky10.x86_64

依赖版本说明
OpenSSLv1.1.1+N/A
libprotobufv3.6.1+注意:Ubuntu 18.04 默认的 libprotobuf 版b本不满足要求,用户需要提前安装所需版本(推荐 3.6.1 和 3.12.4)。
GEOSv3.3.8+可选依赖
xz-libsv5.2.0+N/A
squashfs-toolsanyN/A
libgccv7.3.0+N/A
mountanyN/A
squashfuseany可选依赖

更多详细可参考官方文档:https://www.kaiwudb.com/kaiwudb_docs/#/oss_v2.2.0/quickstart/install-kaiwudb/quickstart-bare-metal.html

三、环境介绍及安装准备

安装方面可以选择以下任意一种方式部署 KWDB 数据库:
单节点裸机部署
单节点容器部署
源码编译

本次安装使用单节点裸机部署,源码编译比较耗时,单节点容器部署相对比较不安全,出问题后排查比较繁琐,后面再进行体验安装

环境信息:
操作系统cpu内存存储
Kylin-Server-V104C8G100G

附上操作系统地址:https://iso.kylinos.cn/web_pungi/download/cdn/9D2GPNhvxfsF3BpmRbJjlKu0dowkAc4i/Kylin-Server-V10-SP3-2403-Release-20240426-x86_64.iso

端口信息
端口号说明
8080数据库 Web 服务端口
26257数据库服务端口、节点监听端口和对外连接端口
安装依赖

安装依赖包,官网没有找到需要哪些包,处理报错后再Kylin-Server-V10安装如下包即可

yum install -y gcc-c++ protobuf

安装包下载

安装包下载链接:https://gitee.com/kwdb/kwdb/releases/download/V2.2.0/KWDB-2.2.0-kylinV10_2403-x86_64-rpms.tar.gz

如服务器可以联网可直接下载:

wget  https://gitee.com/kwdb/kwdb/releases/download/V2.2.0/KWDB-2.2.0-kylinV10_2403-x86_64-rpms.tar.gz

更多安装包下载

Gitee 社区下载地址:kwdb 发行版 - Gitee.com

安装包解压

tar -zxvf KWDB-2.2.0-kylinV10_2403-x86_64-rpms.tar.gz 

[root@localhost ~]# cd kwdb_install/
[root@localhost kwdb_install]# tree
.
├── add_user.sh
├── deploy.cfg
├── deploy.sh
├── packages
│   ├── kwdb-libcommon-2.2.0-kylin.ky10.x86_64.rpm
│   └── kwdb-server-2.2.0-kylin.ky10.x86_64.rpm
└── utils
├── container_shell.sh
├── kaiwudb_cluster.sh
├── kaiwudb_common.sh
├── kaiwudb_hardware.sh
├── kaiwudb_install.sh
├── kaiwudb_log.sh
├── kaiwudb_operate.sh
├── kaiwudb_uninstall.sh
├── kaiwudb_upgrade.sh
├── process_bar.sh
└── utils.sh

解压后的文件介绍

文件说明
add_user.sh安装、启动 KWDB 后,为 KWDB 数据库创建用户。
deploy.cfg安装部署配置文件,用于配置部署节点的 IP 地址、端口等配置信息。
deploy.sh安装部署脚本,用于安装、卸载、启动、状态获取、关停和重启等操作。
packages 目录存放 DEB、RPM 和镜像包。
utils 目录存放工具类脚本

四、环境部署

1、编辑deploy.cfg配置文件

编辑安装包目录下的 deploy.cfg 配置文件,设置安全模式、管理用户、服务端口等信息。

先备份一份deploy.cfg文件,以备修改错误恢复

cp deploy.cfg deploy.cfg_bak

如果是测试环境,对这些信息不敏感可以只修改node_addr剩余保持默认直接安装即可,单实例需要注释掉cluster内容

vi deploy.cfg

[global]
# Whether to turn on secure mode
secure_mode=tls
# Management KaiwuDB user
management_user=kaiwudb
# KaiwuDB cluster http port
rest_port=8080
# KaiwuDB service port
kaiwudb_port=26257
# KaiwuDB data directory
data_root=/var/lib/kaiwudb
# CPU usage[0-1]
# cpu=1
[local]
# local node configuration
node_addr=192.168.150.135
# section cluster is optional
[cluster]
# remote node addr,split by ','
#node_addr=127.0.0.2,127.0.0.3
# ssh info
#ssh_port=22
#ssh_user=admin

参数说明:

  • 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%,以确保设置生效。
  • local:本地节点配置
    • node_addr:本地节点对外提供服务的 IP 地址,监听地址为 0.0.0.0,端口为 KWDB 服务端口。

2、授权及安装

#对deploy.sh授予可执行权限chmod +x ./deploy.sh#执行安装./deploy.sh install --single

安装成功返回如下:

[root@localhost kwdb_install]# ./deploy.sh install --single
[WARN] 2025-05-20 13:49:51 The number of CPU cores does not meet the requirement. KaiwuDB may running failed.
Please input kaiwudb's password: [INSTALL COMPLETED]:KaiwuDB has been installed successfully! To start KaiwuDB, please execute the command 'systemctl daemon-reload'.

3、重新加载 systemd 守护进程的配置文件及启动数据库

#重新加载守护进程配置文件

systemctl daemon-reload

#启动数据库

./deploy.sh start

启动成功如下:

[root@localhost kwdb_install]# systemctl daemon-reload
[root@localhost kwdb_install]# ./deploy.sh start
[START COMPLETED]:KaiwuDB start successfully.

4、kwdb状态查看

安装完成后,安装脚本会把KaiwuDB封装成系统服务kaiwudb,可以是用系统命令进行启停

#可以使用

./deploy.sh status

也可以使用

systemctl status kaiwudb

[root@localhost kwdb_install]# ./deploy.sh status
[STATUS COMPLETED]:KaiwuDB is runnning now.
[root@localhost kwdb_install]# systemctl status kaiwudb
● kaiwudb.service - KaiwuDB Service
Loaded: loaded (/etc/systemd/system/kaiwudb.service; disabled; vendor preset: disabled)
Active: active (running) since Tue 2025-05-20 13:59:31 CST; 2min 34s ago
Process: 39267 ExecStartPre=/usr/bin/sudo /usr/sbin/sysctl -w vm.max_map_count=10000000 (code=exited, status=0/SUCCESS)
Main PID: 39279 (kwbase)
Tasks: 39
Memory: 452.3M
CGroup: /system.slice/kaiwudb.service
└─39279 /usr/local/kaiwudb/bin/kwbase start-single-node --certs-dir=/etc/kaiwudb/certs --listen-addr=0.0.0.0:26257 --adv>

5月 20 13:59:32 localhost.localdomain kwbase[39279]: sql: postgresql://root@192.168.150.135:26257?sslcert=%2Fetc%2F>
5月 20 13:59:32 localhost.localdomain kwbase[39279]: RPC client flags: /usr/local/kaiwudb/bin/kwbase <client cmd> --host=192.168>
5月 20 13:59:32 localhost.localdomain kwbase[39279]: logs: /var/lib/kaiwudb/logs
5月 20 13:59:32 localhost.localdomain kwbase[39279]: temp dir: /var/lib/kaiwudb/kwbase-temp052302502
5月 20 13:59:32 localhost.localdomain kwbase[39279]: external I/O path: /var/lib/kaiwudb/extern
5月 20 13:59:32 localhost.localdomain kwbase[39279]: store[0]: path=/var/lib/kaiwudb
5月 20 13:59:32 localhost.localdomain kwbase[39279]: storage engine: rocksdb
5月 20 13:59:32 localhost.localdomain kwbase[39279]: status: initialized new cluster
5月 20 13:59:32 localhost.localdomain kwbase[39279]: clusterID: 4df52272-fdea-4e45-8429-b1e704fe84fd
5月 20 13:59:32 localhost.localdomain kwbase[39279]: nodeID: 1

5、add_user.sh 脚本创建数据库用户

kwdb封装了一个创建用户的脚本,一键创建用户,初始化用户很方便,大大的赞

[root@localhost kwdb_install]# ./add_user.sh
Please enter the username:banjin
Please enter the password:

[ADD USER COMPLETED]:User creation completed.

6、配置开机启动

因为kwdb已经自动封装为操作系统服务kaiwudb,可以直接一条命令配置开机启动,测试环境也建议打开每次启动服务器数据库自动启动

systemctl enable kaiwudb

7、数据库连接

#非安全模式,参照deploy.cfg修改时设置的secure_mode参数

#使用部署时的操作系统用户登录

kwbase sql --insecure --host=<your-host-ip>

#使用自定义的用户登录,如使用add_user.sh脚本创建的用户

kwbase sql --insecure --host=<your-host-ip> -u <user-name>

#tls安全模式,参照deploy.cfg修改时设置的secure_mode参数

#使用部署时的操作系统用户登录

kwbase sql --certs-dir=etc/kwdb/certs --host=<your-host-ip>

#使用自定义的用户登录,如使用add_user.sh脚本创建的用户

kwbase sql --certs-dir=etc/kwdb/certs --host=<your-host-ip> -u <user-name>

#参数介绍

--certs-dir 数据库客户端相关证书存放目录

--host  数据库地址

-u 用户

-d 数据库,不指定默认为defaultdb

登录使用

[root@localhost kaiwudb]# kwbase sql --certs-dir=/etc/kaiwudb/certs --host=192.168.150.135
#
# Welcome to the KWDB SQL shell.
# All statements must be terminated by a semicolon.
# To exit, type: \q.
#
# Server version: KaiwuDB 2.2.0 (x86_64-linux-gnu, built 2025/03/31 07:20:16, go1.16.15, gcc 7.3.0) (same version as client)
# Cluster ID: 4df52272-fdea-4e45-8429-b1e704fe84fd
#
# Enter \? for a brief introduction.
#
root@192.168.150.135:26257/defaultdb> \l
database_name | engine_type
----------------+--------------
defaultdb | RELATIONAL
postgres | RELATIONAL
system | RELATIONAL
(3 rows)

Time: 1.512288ms

root@192.168.150.135:26257/defaultdb> \du
username | options | member_of
-----------+------------+------------
admin | CREATEROLE | {}
banjin | | {admin}
root | CREATEROLE | {admin}
(3 rows)

Time: 3.842555ms

五、模板数据库sampleDB使用

SampleDB 是一个用于展示示例数据与场景的项目。其核心目标是助力用户快速掌握 KWDB 数据库的使用方法,为用户提供便捷的测试与学习环境,SampleDB数据库模型是一个智能电表项目,包含关系库rdb和时序库tsdb

下载地址:登录 - Gitee.com

下载后上传服务器解压

mkdir cd /var/lib/kaiwudb/extern

#上传rdb.tar.gz,tsdb.tar.gz到此目录

cd /var/lib/kaiwudb/extern

tar xvf rdb.tar.gz
tar xvf tsdb.tar.gz

导入关系库 rdb 数据

import database csv data ("nodelocal://1/rdb");

#登录

 kwbase sql --certs-dir=/etc/kaiwudb/certs --host=192.168.150.135

#导入

import database csv data ("nodelocal://1/rdb");

root@192.168.150.135:26257/defaultdb> import database csv data ("nodelocal://1/rdb");

job_id | status | fraction_completed | rows | abandon_rows | reject_rows | note
----------------------+-----------+--------------------+------+--------------+-------------+-------
1073655494850838529 | succeeded | 1 | 305 | 0 | 0 | None
(1 row)

Time: 157.913643ms

#验证 --切换rdb数据库登录

root@192.168.150.135:26257/defaultdb> use rdb;
SET

Time: 403.717µs

root@192.168.150.135:26257/rdb> show tables;
table_name | table_type
--------------+-------------
alarm_rules | BASE TABLE
area_info | BASE TABLE
meter_info | BASE TABLE
user_info | BASE TABLE
(4 rows)

导入时序库 tsdb 数据

import database csv data ("nodelocal://1/tsdb");

#导入

root@192.168.150.135:26257/rdb> import database csv data ("nodelocal://1/tsdb");
job_id | status | fraction_completed | rows | abandon_rows | reject_rows | note
---------+-----------+--------------------+-------+--------------+-------------+-------
- | succeeded | 1 | 10100 | 0 | 0 | None
(1 row)

Time: 526.048817ms

root@192.168.150.135:26257/rdb> \q

#切换tsdb数据库

root@192.168.150.135:26257/defaultdb> use rdb;
SET

Time: 403.717µs

root@192.168.150.135:26257/tsdb> show tables;
table_name | table_type
-------------+--------------------
meter_data | TIME SERIES TABLE
(1 row)

Time: 1.576363ms

场景实例

故障电表信息

SELECT mi.meter_id,u.user_name,u.contact,a.area_name
FROM rdb.meter_info mi
JOIN rdb.user_info u ON mi.user_id = u.user_id
JOIN rdb.area_info a ON mi.area_id = a.area_id
WHERE mi.status = 'Fault';

root@192.168.150.135:26257/tsdb> SELECT
-> mi.meter_id,
-> u.user_name,
-> u.contact,
-> a.area_name
-> FROM rdb.meter_info mi
-> JOIN rdb.user_info u ON mi.user_id = u.user_id
-> JOIN rdb.area_info a ON mi.area_id = a.area_id
-> WHERE mi.status = 'Fault';
meter_id | user_name | contact | area_name
-----------+-----------+-------------+------------
M100 | User 1 | 13800138001 | Area 1
M20 | User 21 | 13800138021 | Area 21
M40 | User 41 | 13800138041 | Area 41
M60 | User 61 | 13800138061 | Area 61
M80 | User 81 | 13800138081 | Area 81
(5 rows)

Time: 2.224859ms

区域用电量top10

SELECT a.area_name,SUM(md.energy) AS total_energy
FROM tsdb.meter_data md
JOIN rdb.meter_info mi ON md.meter_id = mi.meter_id
JOIN rdb.area_info a ON mi.area_id = a.area_id
GROUP BY a.area_name
ORDER BY total_energy DESC
LIMIT 10;

root@192.168.150.135:26257/tsdb> SELECT
-> a.area_name,
-> SUM(md.energy) AS total_energy
-> FROM tsdb.meter_data md
-> JOIN rdb.meter_info mi ON md.meter_id = mi.meter_id
-> JOIN rdb.area_info a ON mi.area_id = a.area_id
-> GROUP BY a.area_name
-> ORDER BY total_energy DESC
-> LIMIT 10;
area_name | total_energy
------------+---------------
Area 2 | 5.556e+06
Area 1 | 5.55499e+06
Area 100 | 5.55398e+06
Area 99 | 5.55297e+06
Area 98 | 5.55196e+06
Area 97 | 5.55095e+06
Area 96 | 5.54994e+06
Area 95 | 5.54893e+06
Area 94 | 5.54792e+06
Area 93 | 5.54691e+06
(10 rows)

Time: 21.137013ms

至此kwdb的部署及关系库和时序库安装体验完成,安装相对比较简单,整个体验对用户比较友好,特别是贴心的准备了add_user.sh用户创建脚本,简化了用户创建操作,特地准备了模板数据库sampledb,列举了很多实例场景,可以更好的体验kwdb

相关文章:

  • OpenCV计算机视觉实战(7)——色彩空间详解
  • 新型压缩编码算法基础近日确定!
  • 【设计模式】责任链+模板+工程模式使用模板
  • NR 通讯的整体架构
  • 前端三件套之html详解
  • vue3:十四、角色权限管理-表格引入-树形表格
  • Github超19k+ strar的实时协同编辑的开源框架yjs
  • PrimeVue菜单组件深度解析:构建高效能的Web导航系统
  • Java-System工具类深度解析
  • spring+tomcat 用户每次发请求,tomcat 站在线程的角度是如何处理用户请求的,spinrg的bean 是共享的吗
  • 腾讯2025年校招笔试真题手撕(三)
  • 并发编程之并发容器类
  • 解码AI教育革命的核心价值链:算法、神经界面与数字基建
  • SC3000智能相机-自动存图
  • Basic concepts for seismic source - Finite fault model
  • 佰力博科技与您探讨半导体电阻测试常用的一些方法
  • React 与 TypeScript 极客园移动端
  • 旋转编码器计次 红外对射传感器计次小实验及其相关库函数详解 (江协科技)
  • 《洞察因果本质:解锁智能体大模型精准预测的底层逻辑》
  • torch.gather()和torch.sort
  • 安卓从网站获取视频怎么做/临沂百度公司地址
  • 中山企业网站制作公司/百度自媒体平台
  • 网站建设策划书5000字/如何推广网站方法
  • 如何使用阿里云做网站/网页首页设计图片
  • 动物摄影网站/百度认证证书
  • 台湾做甜品的网站/企业网络营销策划方案