KWDB在虚拟机下的unbuntu24.04x86-64版本下编译安装实践

作者:jiao_zg

前言:

随着物联网,智能制造,人工智能,机器人等技术的发展,单纯的关系型数据库已经不能满足所有的存储场景了。时序数据库,大模型数据在一些场合下也需要和关系型数据库共同搭配,才能完成一些融合业务。这些信息化,物联网,大模型等应用对数据的需要使用诸如关系型数据库,时序数据库等不同的类型的数据库产品,这无论是部署还是维护都会带来一些开销。本文介绍一款方便用在物联网,机器人方向的一款数据库产品:kwdb.它融合了关系型数据库,时序数据库等多种类型的数据库,很适合用在iot应用中。本文在unbuntu24.04.2 x64操作系统中,通过编译安装KWDB数据库,并编写简单demo,为IOT的场景搭建基础的专用数据库。

一、环境准备

硬件:台式机pc windwos虚拟机

系统:unbuntu24.04.2 x64

kwdb:V2.2.0

二、部署规划

2.1.部署模式:

裸机,单机部署,非安全模式启动测试

为了便于测试,本文主要讲解单机部署方式。

2.2.部署方式:

源码编译

本文使用Ubuntu进行演示。本文将安装过程记录下来,并把遇到的坑记录下来,分享给大家。

2.3.环境依赖及版本

KWDB 支持在 Linux 操作系统进行安装部署,下表列出了编译和运行 KWDB 所需的软件依赖。

编译依赖:

运行依赖:

温馨提示:上述的版本请保证从操作系统到组件版本的一致性,否则可能会出现各种问题,请保持版本的一致性。如果不确定当前系统组件的安装版本,可以通过组件的命令 --version 进行查看,或者自行了解组件版本查看的方法,确定好组件版本之后再进行后续步骤,如果版本过高或者过低,都需要进行额外的降低版本或者升级版本的操作,请注意不要嫌麻烦,否则可能后续会造成更多的麻烦。如果根据本文进行操作,请保证使用的操作系统和本文一致,否则可能会出现其他类型的错误。如果没有对应的操作系统版本,可以到unbuntu官网下载,本文使用的初始版本就是直接下载后的,(例如对应的cmake是4.1版本,先降级到3.28后再降级到3.23版本,操作比较特殊)使用虚拟机安装好之后即可验证了。

4.源码下载

在 KWDB 代码仓库下载代码,并将其存储到 GOPATH 声明的目录。

5.安装路径:

arduino 复制代码
/home/jiao/go

三.环境准备及依赖安装

安装 编译依赖,运行依赖,操作工具包等

3.1.安装 编译依赖

参考2.3的表格

为了方便执行,本文将所有的依赖项统一放到一个命令里执行,请注意可能和你的系统版本有差异,所以可能会出现部分组件已安装或者找不到的情况,没关系,如果有报错的情况可后面单独执行安装。

sql 复制代码
sudo apt update && sudo apt install -y ca-certificates golang cmake autoconf golang-yacc build-essential checkinstall libssl-dev libprotobuf-dev liblzma-dev libmcurses-dev 
 libncursesw-dev libatomic1 libstdc++6 protobuf-compiler git

跟本文环境不一致的操作系统,如上述组件如有一个失败,请单独进行编译安装,如果都成功且经过验证版本都符合,则可直接进入3.2进行运行依赖安装操作,否则需要将本部分所有依赖安装正确才能进入到下个环节,否则会出现make编译时失败。

修改cmake为3.28版本

ruby 复制代码
# 添加 Kitware 的 CMake 仓库(包含历史版本)
wget -O - https://apt.kitware.com/keys/kitware.gpg | sudo gpg --dearmor -o /usr/share/keyrings/kitware-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/kitware.list

# 更新仓库并安装 CMake 3.23
sudo apt update
sudo apt install cmake=3.2*

注:该版本仍然比较高,需要降级到3.23以下,后面会讲解

  • 单独安装go
go 复制代码
sudo apt  install golang-go
  • 执行gopath 查看gopath安装路径
bash 复制代码
 go env
  • 找到对应的路径,该值配置在环境变量的gopath中

设置环境变量

bash 复制代码
sudo vim /etc/profile
  • 设置 GOPATH(仅在当前终端生效)
ini 复制代码
export GOPATH="/home/jiao/go"

/home/jiao/go 为了不出现路径不一致的操作,请将该目录和代码存放的路径保持一致

  • 使环境变量生效
bash 复制代码
source /etc/profile
  • 创建目录
bash 复制代码
sudo mkdir -p "$GOPATH/src" "$GOPATH/pkg" "$GOPATH/bin"
  • 单独安装git

    sudo apt install git

3.2 安装运行依赖

参考2.3的表格

sql 复制代码
sudo apt update && sudo apt install -y openssl libssl-dev libprotobuf-dev protobuf-compiler libgeos-dev xz-utils squashfs-tools libgcc-12-dev squashfuse mount

3.3 安装其他

  • 安装vim工具

    sudo apt install vim

3.4 修改cmak版本到3.20

bash 复制代码
# 查看当前 CMake 版本
cmake --version

# 卸载 CMake 3.23
sudo apt-get remove cmake
sudo apt-get autoremove
sudo apt-get clean

# 下载 CMake 3.20.3 源代码
wget https://github.com/Kitware/CMake/releases/download/v3.20.3/cmake-3.20.3.tar.gz
tar -xzf cmake-3.20.3.tar.gz
cd cmake-3.20.3

# 安装依赖项
sudo apt-get update
sudo apt-get install -y build-essential g++ libssl-dev

# 创建构建目录并配置
mkdir build
cd build
../bootstrap

# 编译和安装
make -j$(nproc)
sudo make install

# 验证安装
cmake --version

安装过程比较慢,请耐心等待

3.5 安装 liblzma-dev

arduino 复制代码
sudo apt-get install -y liblzma-dev

四、部署步骤

4.1. 使用 git clone 命令:下载源码

bash 复制代码
 #请勿修改目录路径中的 src/gitee.com/kwbasedb
首先进入到代码下载路径/home/jiao/go,这里一定要和 export GOPATH="/home/jiao/go" 中的值保持一致
#请勿修改目录路径中的 src/gitee.com/kwbasedb
sudo git clone https://gitee.com/kwdb/kwdb.git /home/jiao/go/src/gitee.com/kwbasedb 
  • 首次拉取代码
css 复制代码
git config --global --add safe.directory /home/jiao/go/src/gitee.com/kwbasedb
sudo git submodule update --init
  • 执行更新
sql 复制代码
sudo git submodule update --remote

4.2.构建安装

在项目目录下创建并切换到构建目录。

bash 复制代码
cd  /home/jiao/go/src/gitee.com/kwbasedb
sudo mkdir build && cd build

4.3运行 CMake 配置。

ini 复制代码
sudo cmake .. -DCMAKE_BUILD_TYPE=Debug

注意:等号前后不要有空格

**4.4 禁用Go模块功能。

bash 复制代码
sudo vim /etc/profile

添加下面一行

ini 复制代码
export GO111MODULE=off
  • 使修改生效
bash 复制代码
source /etc/profile                           

结果如下:

4.5 编译

4.5.1 编译

注意所在目录:

go 复制代码
/home/jiao/go/src/gitee.com/kwbasedb/build
sudo make

可能中间会因为上述组件安装失败或者版本问题导致错误,根据错误进行修正,修正后的结果最终完成日志

4.5.2 安装

go 复制代码
/home/jiao/go/src/gitee.com/kwbasedb/build
sudo make install

安装后的结果如下:使用debug模式

4.5.3 验证是否成功

进入 kwbase 脚本所在目录,查看数据库版本,验证是否安装成功。

bash 复制代码
cd /home/jiao/go/src/gitee.com/kwbasedb/install/bin
./kwbase version

安装成功后

五、使用自带工具体验

5.1 启动数据库

5.1.1 设置共享库的搜索路径。

bash 复制代码
export LD_LIBRARY_PATH=../lib

考虑持久运行,可以修改/etc/profile

5.1.2 进入 kwbase 脚本所在目录。

bash 复制代码
cd /home/jiao/go/src/gitee.com/kwbasedb/install/bin

5.1.3启动数据库。

arduino 复制代码
./kwbase start-single-node --insecure --listen-addr=:26257 --background

启动提示在非安全模式下运行,先不用管,我们使用的也是单机部署,非集群部署,先忽略

5.2使用本地数据库工具连接数据库

由于本文安装时使用的是非安全模式,所以使用非安全模式安装

注意:如果远程的话hosthost修改为对应ip地址

css 复制代码
sudo ./kwbase sql --insecure --host=localhost

5.3 创建第一个融合数据库

在5.2进入命令行操作界面之后,执行下面操作

sql命令详情参考附件4链接

5.3.1 创建关系型数据库

ini 复制代码
CREATE DATABASE db1;
  • 查看创建的数据库
ini 复制代码
SHOW DATABASES;

5.3.2 创建时序数据库

  • 创建数据库命令
ini 复制代码
CREATE TS DATABASE ts1;
  • 查看创建的数据库
ini 复制代码
SHOW DATABASES;

看结果是显示了关系和时序数据库两个数据库

六、附件:

1.源码 kwdb: KWDB 是一款面向 【AIoT 场景】的【分布式多模数据库】,支持在同一实例同时建立时序库和关系库并融合处理多模数据,具备千万级设备接入、百万级数据秒级写入、亿级数据秒级读取等时序数据高效处理能力,具有稳定安全、高可用、易运维等特点。 - Gitee.com

2.参考目录:

README.md · KWDB/kwdb - Gitee.com

3.编译cmake版本参考

centos7. 编译安装cmake 3.23.0 - He_LiangLiang - 博客园

4.sql命令参考:

文档中心-KaiwuDB

相关推荐
啊森要自信5 小时前
【MySQL 数据库】MySQL用户管理
android·c语言·开发语言·数据库·mysql
kkkkk0211065 小时前
Redis八股
数据库·redis·缓存
Liu1bo6 小时前
【MySQL】表的约束
linux·数据库·mysql
胖胖的战士6 小时前
Mysql 数据库迁移
数据库·mysql
czhc11400756636 小时前
LINUX1012 mysql GLIBC安装
数据库·mysql
DemonAvenger7 小时前
深入 Redis Hash:从原理到实战,10 年经验的后端工程师带你玩转哈希结构
数据库·redis·性能优化
❥ღ Komo·7 小时前
PHP数据库操作全攻略
数据库·oracle
程序新视界7 小时前
MySQL的整体架构及功能详解
数据库·后端·mysql
ANYOLY7 小时前
MySQL索引指南
数据库·mysql
怪兽20148 小时前
Redis过期键的删除策略有哪些?
java·数据库·redis·缓存·面试