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

【KWDB 创作者计划】香橙派Ai Pro安装部署KWDB数据库踩坑经验

文章目录

  • 1. 了解 KWDB
  • 2. 部署说明
    • 2.1 KWDB硬件支持
  • 3. 部署前准备
    • 3.1 香橙派安装Ubuntu22.04系统
    • 3.2 镜像下载
    • 3.3 固件烧录
    • 3.4 进入终端配置基本连接
  • 4. 开始部署KWDB
    • 4.1 😏单节点容器部署
      • 4.1.1 安装Docker
      • 4.1.2 验证Docker安装
      • 4.1.3 设置 Docker 开机自启
      • 4.1.4下载部署代码
      • 4.1.5 配置deploy.cfg
      • 4.1.6 为deploy.sh 脚本增加运行权限
      • 4.1.7 执行单机部署安装命令
      • 4.1.8 安装成功
      • 4.1.9 启动 KaiwuDB 节点
      • 4.1.10 配置 KaiwuDB 开机自启动
      • 4.1.11 查看KWDB服务状态
      • 4.1.12 创建用户
    • 4.2 😭源码编译安装(本小节为失败案例,仅供借鉴参考,可跳过)
      • 4.2.1 下载及上传安装包
      • 4.2.2 解压安装包
      • 4.2.4 下载源代码
      • 4.2.5 安装ARM64专用编译工具链
      • 4.2.6 重新运行 CMake
      • 4.2.7 安装 Protobuf 依赖
      • 4.2.8 重新运行
      • 4.2.9 禁用Go模块功能
      • 4.2.10 编译和安装项目
  • 5. 使用 KWDB 开发者中心连接 KWDB
    • 5.1 下载连接工具
    • 5.2 新建连接
    • 5.3 选择连接类型
    • 5.4 输入账密完成连接
  • 6. 数据库类型
    • 6.1 时序数据库
    • 6.2 关系数据库
  • 7. 数据库操作
    • 7.1 新建数据表
      • 7.1.1 可视化创建
      • 7.1.2 SQL创建
    • 7.2 增删查改(SQL)
      • 7.2.1 插入数据
      • 7.2.2 删除数据
      • 7.2.3 查询数据
      • 7.2.4 修改数据
  • 8. 使用 Python连接 KaiwuDB
  • 9. 最后

1. 了解 KWDB

KWDB 是由开放原子开源基金会孵化及运营的开源项目,是一款面向 AIoT 场景的分布式多模数据库产品,支持在同一实例同时建立时序库和关系库并融合处理多模数据,具备千万级设备接入、百万级数据秒级写入、亿级数据秒级读取等时序数据高效处理能力,具有稳定安全、高可用、易运维等特点。
在这里插入图片描述
KWDB 基于浪潮 KaiwuDB 分布式多模数据库研发开源,典型应用场景包括但不限于物联网、能源电力、交通车联网、智慧政务、IT 运维、金融证券等,旨在为各行业领域提供一站式数据存储、管理与分析的基座,助力企业数智化建设,以更低的成本挖掘更大的数据价值。

KWDB 为不同角色开发者提供以下支持(包括但不限于):

为开发者提供通用连接接口,具备高速写入、极速查询、SQL 支持、随需压缩、数据生命周期管理、集群部署等特性,与第三方工具无缝集成,降低开发及学习难度,提升开发使用效率。
为运维管理人员提供快速安装部署、升级、迁移、监控等能力,降低数据库运维管理成本。

关键词:物联网(IoT)多模数据库分布式时序数据处理云边端协同

2. 部署说明

KWDB部署支持三种方式:

  • 单节点裸机部署(不支持aarch64位)
  • 单节点容器部署(支持aarch64位)
  • 开源版本源码编译(博主编译失败)

下图是KWDB开源版本,点我访问
在这里插入图片描述

本次我们将kaiwuDB部署到Orange pi AI Pro 开发板上,使用系统为Ubuntu22.04(aarch64)根据上图,可知不适合裸机部署,所以只剩下源码编译和容器部署,经过测试博主通过源码编译的方式
并未成功,为了能找到原因,将本次失败经历也记录下来,
最后通过Docker完成本地数据库的搭建和基本学习使用。

2.1 KWDB硬件支持

在这里插入图片描述

OrangePi Ai Pro配置

规格参数
CPU4核(3核+NPU)
内存8GB
存储支持NVMe SSD(M.2接口)
系统支持Ubuntu 22.04 aarch64

✅满足KWDB最低要求4核4G

3. 部署前准备

3.1 香橙派安装Ubuntu22.04系统

3.2 镜像下载

首先根据kaiwuDB下载适合的ubuntu架构和版本,我们这里选择香橙派官方提供的ubuntu22.04镜像
在这里插入图片描述

3.3 固件烧录

下载balenaetcher烧录工具,将镜像文件烧录到香橙派中
在这里插入图片描述
烧录成功等待验证
在这里插入图片描述

验证后不同版本提示信息不一样,免安装版本和直接安装版本,烧录成功提示不同,如果提示失败,请自行重启香橙派测试
绿灯由GPIO4_19控制其亮灭,可以作为SATA硬盘的指示灯或者其他需要的用途。目前发布的Linux系统默认在DTS中将其点亮。当看到此灯点亮后,至少可以说明Linux内核已经启动了。

在这里插入图片描述

3.4 进入终端配置基本连接

首次配置可以使用网线连接家用路由器,可以通过路由器的连接信息获取IP地址
在这里插入图片描述
使用MoBaxterm SSH连接

账号:root
密码:Mind@123

在这里插入图片描述

通过nmcli命令连接WIFI
香橙派上有WIFI模块,于是我们进行Wi-Fi连接,后面就可以不用网线连接开发板

nmcli dev wifi

在这里插入图片描述

连接WIFI

sudo nmcli dev wifi connect 'Cloud' password '13*******8'


在这里插入图片描述

​1. 查看系统位数(ARM64/aarch64 还是 ARM32)​

uname -m

在这里插入图片描述

  1. 查看 CPU 核心数
lscpu

在这里插入图片描述
​3. 查看内存大小

free -h

在这里插入图片描述

4. 开始部署KWDB

4.1 😏单节点容器部署

4.1.1 安装Docker

  1. 卸载旧版本(如有)​​
sudo apt remove -y docker docker-engine docker.io containerd runc
sudo apt autoremove -y
  1. 安装基础依赖
sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release
  1. 添加阿里云 Docker CE 镜像源
# 创建GPG密钥目录
sudo mkdir -p /etc/apt/keyrings

# 下载阿里云镜像的GPG密钥(自动验证)
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# 添加阿里云Docker源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 更新软件源
sudo apt update
  1. 安装 Docker 核心组件
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

4.1.2 验证Docker安装

查看版本,确认安装

docker version

4.1.3 设置 Docker 开机自启

sudo systemctl enable docker

4.1.4下载部署代码

下载安装包KWDB-2.2.0-ubuntu22.04-aarch64-docker.tar.gz并上传安装包到开发板
在这里插入图片描述
解压

cd /home/upload/
tar -zxvf KWDB-2.2.0-ubuntu22.04-aarch64-docker.tar.gz

4.1.5 配置deploy.cfg

默认情况下,deploy.cfg 配置文件中包含集群配置参数,请删除或注释 [cluster] 集群配置项。

不需要集群的话注释 [cluster]以下内容,例如:

[global]
secure_mode=tls
management_user=kaiwudb
rest_port=8080
kaiwudb_port=26257
data_root=/var/lib/kaiwudb
#cpu=1
encrypto_store=true

[local]
node_addr=127.0.0.1

# [cluster]
# # node_addr=127.0.0.2,127.0.0.3
# # ssh_port=22
# # ssh_user=admin

1.进入刚刚解压好的安装包内,输入代码进入编辑


vi deploy.cfg

输入"i"进入编辑模式
在这里插入图片描述

输入完成后,按下"esc"输入":wq"回车保存退出

4.1.6 为deploy.sh 脚本增加运行权限

cd kwdb_install
chmod +x ./deploy.sh

4.1.7 执行单机部署安装命令

./deploy.sh install --single

4.1.8 安装成功

在这里插入图片描述

根据系统提示重新加载 systemd 守护进程的配置文件

systemctl daemon-reload

4.1.9 启动 KaiwuDB 节点

./deploy.sh start

在这里插入图片描述

4.1.10 配置 KaiwuDB 开机自启动

systemctl enable kaiwudb

4.1.11 查看KWDB服务状态

./deploy.sh status

在这里插入图片描述

提示:
香橙派(3核 + NPU)但是显示只有3个cpu,安装后可能会运行不起来,需要通过./deploy.sh install --single --force安装即可,或者更改deploy.sh中的cpu核心检测,–force 参数跳过了 CPU 核数检查,实际运行证明 ​3核足够支撑基础服务

4.1.12 创建用户

接下来就是连接数据库了,不过在此之前我们需要先创建用户账号(KWDB官方文档中【快速上手】没有注明该操作,该操作位于【集群部署->单节点容器部署】)

进入kwdb_install内输入指令,会询问设置的账号密码设置,回车确认即可

./add_user.sh

例如:

账号:orange
密码:123456

在这里插入图片描述

4.2 😭源码编译安装(本小节为失败案例,仅供借鉴参考,可跳过)

该部分安装失败,作为失败案例借鉴参考,可能是机器架构不一样导致的,个人认为是go环境没有用aarch64导致的

4.2.1 下载及上传安装包

1、下载 CMake 安装包(cmake-3.23.4-linux-aarch64.tar.gz)

2、下载Go 安装包(go1.22.5.linux-arm64.tar.gz)

将两个包上传到开发板上
在这里插入图片描述

4.2.2 解压安装包

cd /home/upload/
tar -C /usr/local/ -xvf cmake-3.23.4-linux-aarch64.tar.gz
mv /usr/local/cmake-3.23.4-linux-aarch64 /usr/local/cmake

go安装包

tar -C /usr/local -xvf go1.22.5.linux-arm64.tar.gz

创建用于存放项目代码的代码目录

mkdir -p /home/go/src/gitee.com

设置 Go 和 CMake 的环境变量

export GOROOT=/usr/local/go
export GOPATH=/home/go      #请以实际代码下载存放路径为准,在此以home/go目录为例
export PATH=$PATH:/usr/local/go/bin:/usr/local/cmake/bin

在这里插入图片描述
使变量设置立即生效

source /etc/profile                           

在这里插入图片描述

4.2.4 下载源代码

git clone https://gitee.com/kwdb/kwdb.git /home/go/src/gitee.com/kwbasedb #请勿修改目录路径中的 src/gitee.com/kwbasedb
cd /home/go/src/gitee.com/kwbasedb 
git submodule update --init  #适用于首次拉取代码
git submodule update --remote

在这里插入图片描述
构建和安装
在项目目录下创建并切换到构建目录。

cd /home/go/src/gitee.com/kwbasedb
mkdir build && cd build


运行 CMake 配置。
需要在包含 CMakeLists.txt 的 ​构建目录 中运行

cmake .. -DCMAKE_BUILD_TYPE=Release

报错:
在这里插入图片描述
找到"/home/go/src/gitee.com/kwbasedb/CMakeFiles/CMakeOutput.log".

The system is: Linux - 5.10.0+ - aarch64

根据日志信息,系统是 ​Linux aarch64(ARM64架构)​,但CMake找不到合适的编译工具链

4.2.5 安装ARM64专用编译工具链

sudo apt update

又遇到报错:
从错误信息来看,使用华为云镜像源 (repo.huaweicloud.com) 时遇到了 ​Hash Sum mismatch​ 问题,这通常是由于镜像源同步延迟或网络问题导致的。
在这里插入图片描述
换阿里云镜像源

sudo sed -i 's|http://repo.huaweicloud.com|http://mirrors.aliyun.com|g' /etc/apt/sources.list
sudo apt update

在这里插入图片描述

sudo apt install -y build-essential gcc-aarch64-linux-gnu g++-aarch64-linux-gnu

继续报错:
在这里插入图片描述

在这里插入图片描述

4.2.6 重新运行 CMake

cd /home/go/src/gitee.com/kwbasedb/build
rm -rf *
cmake .. -DCMAKE_BUILD_TYPE=Debug

在这里插入图片描述
CMake 配置失败的主要原因是 ​缺少 Protobuf(Protocol Buffers)库

4.2.7 安装 Protobuf 依赖

sudo apt update
sudo apt install -y libprotobuf-dev protobuf-compiler

4.2.8 重新运行

cd /home/go/src/gitee.com/kwbasedb/build
rm -rf *
cmake .. -DCMAKE_BUILD_TYPE=Release  # 注意去掉空格

运行成功
在这里插入图片描述

4.2.9 禁用Go模块功能

系统全局设置(需要 root 权限):修改/etc/profile文件

export GO111MODULE=off

在这里插入图片描述
生效

source /etc/profile

4.2.10 编译和安装项目

make

报错
在这里插入图片描述

在这里插入图片描述

主要错误:
(1)符号重复定义(最紧急)
(2)execgen生成失败
(3)autoconf版本警告(可忽略)

修复

系统全局设置(需要 root 权限):修改/etc/profile文件

export GO111MODULE=on
go mod edit -replace github.com/emmansun/gmsm/internal/bigmod=./vendor/github.com/emmansun/gmsm/internal/bigmod

5. 使用 KWDB 开发者中心连接 KWDB

5.1 下载连接工具

可以通过命令进行连接操作🔗,不过我认为可视化更加容易理解和使用,这里推荐下载数据库连接工具(点击这里下载KaiwuDB_Developer_Center-2.0.4-win-x86_64.zip)

下载完成后进行解压,双击exe文件即可
在这里插入图片描述

接下来我们完成连接

5.2 新建连接

在这里插入图片描述

5.3 选择连接类型

在这里插入图片描述

5.4 输入账密完成连接

主机输入你的部署服务器的IP,外网服务器的话直接用公网IP即可,输入账号密码点击测试连接,连接成功即可进入数据库管理。
在这里插入图片描述

6. 数据库类型

KWDB有两种数据库类型,分别是时序数据库和关系数据库,由于我们后面还有项目案例,根据项目的需求,确定方案用关系型数据库

6.1 时序数据库

时序数据库是专门为处理时间序列数据优化的数据库系统,在KWDB中主要用于:

存储特点:按时间顺序记录的数据点(如传感器数据、监控指标、日志等)

典型结构:通常包含时间戳、指标名称和数值三要素

优势:

🥝高效处理高频率写入

🥝优秀的时间范围查询性能

🥝自动数据降采样和保留策略

🥝针对时间序列的压缩算法

常用于存储设备运行数据、生产指标等时间相关的监测数据。

6.2 关系数据库

关系数据库是使用关系模型组织的传统数据库,在KWDB中用于:

存储特点:以表格形式存储数据,表与表之间可建立关系

核心概念:表、行、列、主键、外键、索引等

优势:

🥝数据结构化程度高

🥝支持复杂的SQL查询

🥝完善的ACID事务支持

🥝数据一致性强

常用于存储设备信息、工单记录、用户权限等结构化业务数据。

7. 数据库操作

在这里插入图片描述

在这里插入图片描述

7.1 新建数据表

7.1.1 可视化创建

在这里插入图片描述

7.1.2 SQL创建


CREATE TABLE goods(
	id INT8 DEFAULT unique_rowid(),
	goods_name VARCHAR(60) NULL,
	production_date VARCHAR(50) NULL,
	shelf_life_days VARCHAR(50) NOT NULL,
	bar_code VARCHAR(50) NOT NULL,
	goods_src STRING NULL,
	FAMILY "primary" (rowid, id, goods_name, production_date, shelf_life_days, bar_code, goods_src)
);
COMMENT ON COLUMN goods.id IS 'id';
COMMENT ON COLUMN goods.goods_name IS '商品名称';
COMMENT ON COLUMN goods.production_date IS '生产日期';
COMMENT ON COLUMN goods.shelf_life_days IS '保质期';
COMMENT ON COLUMN goods.bar_code IS '条形码';
COMMENT ON COLUMN goods.goods_src IS '商品图片';

在这里插入图片描述

7.2 增删查改(SQL)

打开SQL编辑器
在这里插入图片描述

7.2.1 插入数据

-id指定
INSERT INTO goods VALUES (1, '卫龙亲嘴道麻辣条50g/包', '2025-04-11', '150天', '6935284412079', 'http://app2.showapi.com/img/barCode_img/20200316/ce6a775b-330b-4ee9-b31d-16576412511e.jpg');

-id自增
INSERT INTO goods (goods_name, production_date, shelf_life_days,bar_code,goods_src) VALUES ('卫龙亲嘴道麻辣条50g/包', '2025-04-11', '150天', '6935284412079', 'http://app2.showapi.com/img/barCode_img/20200316/ce6a775b-330b-4ee9-b31d-16576412511e.jpg');

7.2.2 删除数据

Delete FROM goods WHERE id='2';

7.2.3 查询数据

SELECT * FROM "ProductData".public.goods;

7.2.4 修改数据

UPDATE "ProductData".public.goods
	SET goods_name='test'
	WHERE id='1';

8. 使用 Python连接 KaiwuDB

以上教程已经创建好了数据库,接下来我们使用python代码连接KWDB,实现增删查改测试,以便于后续的项目开发,修改下面的连接信息以及数据库名字段等内容运行即可:

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-

import psycopg2


def main():
    try:
        con = psycopg2.connect(database="defaultdb", user="test", password="KWdb!2022", host="127.0.0.1",port="26257")
        # for secure connection mode
        # con = psycopg2.connect(database="defaultdb", user="root", password="", host="127.0.0.1",
        #                        port="26257", sslmode="verify-ca",
        #                        sslrootcert=<file_path_of_root_ca_certificate file>,
        #                        sslcert=<file_path_of_user_certificate_file>,
        #                        sslkey=<file_path_of_user_certificate_key>)
        print("Connected!")
        con.set_session(autocommit=True)
        cur = con.cursor()
    except psycopg2.Error as e:
        print(f"Failed to connect to Kaiwudb: {e}")

    sql = "CREATE TABLE db_TimeSeries.table1 \
        (k_timestamp timestamp NOT NULL, \
        voltage double, \
        current double, \
        temperature double \
        ) TAGS ( \
        number int NOT NULL) \
        PRIMARY TAGS(number) \
        ACTIVETIME 3h"
    try:
        cur.execute(sql)
    except psycopg2.Error as e:
        print(f"Failed to create table: {e}")

    sql = "INSERT INTO db_TimeSeries.table1  \
        VALUES ('2024-07-01 10:00:00', 220.0, 3.0, 20.5,123)"
    try:
        cur.execute(sql)
    except psycopg2.Error as e:
        print(f"Failed to insert data: {e}")

    sql = "SELECT * from db_TimeSeries.table1"
    try:
        cur.execute(sql)
        rows = cur.fetchall()
        for row in rows:
            print(f"k_timestamp: {row[0]}, voltage: {row[1]}, current: {row[2]}, temperature: {row[3]}, number: {row[4]}")
    except psycopg2.Error as e:
        print(f"Failed to insert data: {e}")


    cur.close()
    con.close()
    return


if __name__ == "__main__":
    main()


9. 最后

KWDB 是一款开源的分布式多模数据库,支持自适应时序引擎、预测分析引擎等多种数据模型,具有高性能、低成本、多场景的特点。KaiwuDB 覆盖工业物联网、数字能源、车联网、智慧矿山等行业领域,提供稳定安全、高性能、易运维的创新数据软件与服务,本次部署到香橙派Ubuntu(aarch64)上,实现数据本地化存储,为后续结合KWDB出一个项目结合案例做准备

相关文章:

  • 【大模型系列篇】基于Ollama和GraphRAG v2.0.0快速构建知识图谱
  • UNet 改进(4):融合Ghost Module的轻量化分割网络
  • STL之序列式容器(Vector/Deque/List)
  • 深度学习篇---大模型ERNIE Bot
  • 第2章 分词和嵌入
  • 大企业的AI应用如何更懂业务?
  • PhalApi 2.x:让PHP接口开发从“简单”到“极简”的开源框架
  • CExercise_08_字符串_2统计该字符串中每个字符出现的次数,统计过程中忽略大小写的差异,并打印最终每个字符出现的次数。
  • 二分查找法
  • 使用 LLaMA-Factory 微调 llama3 模型(二)
  • 动力电池自动点焊机:新能源汽车制造的智能焊接利器
  • CWGAN-GP 原理及实现(pytorch版)
  • CISCO组建RIP V2路由网络
  • 【面试分享】Spring Boot 面试题及答案整理,最新面试题
  • Android Spotify-v9.0.36.443-arm64-Experimental Merged版
  • SaaS微服务架构的智慧工地源码,基于Spring Cloud +UniApp +MySql开发
  • 第十八天 - ELK日志体系集成 - 自定义Logstash插件 - 练习:分布式日志分析平台
  • 物联网传感器技术架构与功能解析
  • LIB-ZC, 一个跨平台(Linux)平台通用C/C++扩展库,命令行参数和配置文件
  • Redis核心功能实现
  • 在线音乐网站开发摘要/360网站关键词排名优化
  • 国际贸易官方网站/职业培训机构需要什么资质
  • 晋中市住房与城乡建设厅网站/网络营销和网络推广有什么区别
  • 威海做企业网站的公司/制作网站教程
  • 网站建设现在市场大不大/今日新闻内容摘抄
  • 建设公司企业使命/北京seo管理