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

相关推荐
yangchanghua1111 小时前
pgsql 如何查询今天范围内的数据(当天0点0分0秒 - 当天23点59分59秒....)
数据库·pgsql
larance1 小时前
SQLAlchemy 的异步操作来批量保存对象列表
数据库·python
python_chai1 小时前
从数据汇总到高级分析,SQL 查询进阶实战(下篇)—— 分组、子查询与窗口函数全攻略
数据库·sql·mysql
在努力的前端小白1 小时前
Spring Boot 敏感词过滤组件实现:基于DFA算法的高效敏感词检测与替换
java·数据库·spring boot·文本处理·敏感词过滤·dfa算法·组件开发
未来之窗软件服务1 小时前
自建知识库,向量数据库 (九)之 量化前奏分词服务——仙盟创梦IDE
数据库·仙盟创梦ide·东方仙盟·自建ai·ai分词
冒泡的肥皂5 小时前
MVCC初学demo(一
数据库·后端·mysql
.Shu.6 小时前
Redis Reactor 模型详解【基本架构、事件循环机制、结合源码详细追踪读写请求从客户端连接到命令执行的完整流程】
数据库·redis·架构
薛晓刚8 小时前
当MySQL的int不够用了
数据库
SelectDB技术团队9 小时前
Apache Doris 在菜鸟的大规模湖仓业务场景落地实践
数据库·数据仓库·数据分析·apache doris·菜鸟技术
星空下的曙光9 小时前
mysql 命令语法操作篇 数据库约束有哪些 怎么使用
数据库·mysql