Skip to content

TuNNan2003/UnloadBase

UnloadBase

✒️ 基于miniob开发的轻量数据库✒️

brightgreenimportantbluevioletinformationalred

Language

Documentation

UnloadBase是基于miniob开发的轻量数据库,采取miniob的架构并完善了相关功能,未来将探索多模方向

✏️UnloadBase架构

unloadbase_sql

🐳下载须知 🐾

本数据库当前基于四个三方库构建,均以子模块(submodule)的方式在github中链接,下载时请使用下面的命令确保子模块成功下载

git clone --recursive ${url}

🚛 环境准备

无论在任何环境上编译,请确保你的环境拥有以下工具链:

(你的环境上应已经安装了make工具)
cmake 版本 >= 3.13
gcc/clang gcc建议8.3以上,编译器需要支持c++20新标准
flex (2.5+), bison (3.7+) 用于生成词法语法分析代码

如果你是Mac用户,请使用homebrew更新你的bison工具,Mac原生bison工具版本落后太多

🤔 如何编译❓

执行下面的命令即可完成编译:

bash build.sh

此命令将编译一个DEBUG版本的UnloadBase。如果希望编译其它版本的,可以参考 bash build.sh -h,比如:

bash build.sh release

一般情况下,你不需要使用flex和bison,但是如果语法解析代码没有正常生成,请在根目录执行下面的命令:

cd ./src/observer/sql/parser/ && bash gen_parser.s 

⏰ 如何运行

如果编译了DEBUG版本的UnloadBase,你应该执行cd build_debug,否则执行cd build

以直接执行命令的方式启动服务端程序

./bin/observer -f ../etc/observer.ini -P cli

这会以直接执行命令的方式启动服务端程序,可以直接输入命令,不需要客户端。所有的请求都会以单线程的方式运行,配置项中的线程数不再有实际意义。

以监听TCP端口的方式启动服务端程序

./bin/observer -f ../etc/observer.ini -p 6789

这会以监听6789端口的方式启动服务端程序。 启动客户端程序:

./bin/obclient -p 6789

这会连接到服务端的6789端口。

以监听unix socket的方式启动服务端程序

./bin/observer -f ../etc/observer.ini -s miniob.sock

这会以监听unix socket的方式启动服务端程序。 启动客户端程序:

./bin/obclient -s miniob.sock

这会连接到服务端的miniob.sock文件。

并发模式

默认情况下,编译出的程序是不支持并发的。如果需要支持并发,需要在编译时增加选项 -DCONCURRENCY=ON:

cmake -DCONCURRENCY=ON ..

或者

bash build.sh -DCONCURRENCY=ON

然后使用上面的命令启动服务端程序,就可以支持并发了。

启动参数介绍

参数 说明
-h 帮助说明
-f 配置文件路径。如果不指定,就会使用默认值 ../etc/observer.ini。
-p 服务端监听的端口号。如果不指定,并且没有使用unix socket或cli的方式启动,就会使用配置文件中的值,或者使用默认值。
-s 服务端监听的unix socket文件。如果不指定,并且没有使用TCP或cli的方式启动,就会使用TCP的方式启动服务端。
-P 使用的通讯协议。当前支持文本协议(plain,也是默认值),MySQL协议(mysql),直接交互(cli)。 使用plain协议时,请使用自带的obclient连接服务端。 使用mysql协议时,使用mariadb或mysql客户端连接。 直接交互模式(cli)不需要使用客户端连接,因此无法开启多个连接。
-t 事务模型。没有事务(vacuous,默认值)和MVCC(mvcc)。 使用mvcc时一定要编译支持并发模式的代码。
-n buffer pool 的内存大小,单位字节。

更多

observer还提供了一些其它参数,可以通过./bin/observer -h查看。

FAQ

  1. 运行observer出现找不到链接库 A: 由于安装依赖时,默认安装在 /usr/local/ 目录下,而环境变量中没有将这个目录包含到动态链接库查找路径。可以将下面的命令添加到 HOME 目录的 .bashrc 中:
export LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH

然后执行 source ~/.bashrc 加载环境变量后重新启动程序。

LD_LIBRARY_PATH 是Linux环境中,运行时查找动态链接库的路径,路径之间以冒号':'分隔。

将数据写入 bashrc 或其它文件,可以在下次启动程序时,会自动加载,而不需要再次执行 source 命令加载。

NOTE: 如果你的终端脚本使用的不是bash,而是zsh,那么就需要修改 .zshrc。

📝查看日志

日志和数据库的持久化文件都在buildbuild_debug路径下,我们也会持久化你的sql语句记录

⏰贡献时长

wuhuuaUnloadBase TuNNanwakatime qcsmallblack

💖License

MiniOB 采用 木兰宽松许可证,第2版, 可以自由拷贝和使用源码, 当做修改或分发时, 请遵守 木兰宽松许可证,第2版.

License

Copyright ©️2023 UnloadBase

About

This is the repository of UnloadBase for the OceanBase competition

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published