InfluxDB是一个由InfluxData开发的开源时序数据库,专注于海量时序数据的高性能读、写、高效存储与实时分析等,在DB-Engines Ranking时序型数据库排行榜上常年排名第一。
InfluxDB可以说是当之无愧的佼佼者,但 InfluxDB CTO Paul 在 2020/12/10 号在博客中发表一篇名为:Announcing InfluxDB IOx – The Future Core of InfluxDB Built with Rust and Arrow的文章,介绍了一个新项目 InfluxDB IOx,InfluxDB 的下一代时序引擎。
接下来,我将连载对于InfluxDB IOx的源码解析过程,欢迎各位批评指正,联系方式见文章末尾。
上一篇介绍了InfluxDB IOx的一些项目背景及现有架构中存在的问题,详情见:https://my.oschina.net/u/3374539/blog/5015114
1.克隆仓库
git clone https://github.com/influxdata/influxdb_iox.git
2.安装基础语言依赖
根据readme
文件中的的描述,项目依赖两个基础环境,分别是rust
和clang
。
rust
是使用rustup
来进行版本管理的。默认的情况下,会为你安装最后的stable
版本,但是IOx项目为了使用不太稳定的SIMD
特性,从而达到更高的性能,所以在rust-toolchain
文件中指定了一个nightly
的版本。
rust
安装
脚本:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
测试版本号:
rustc --version
rustc 1.51.0 (2fd73fabe 2021-03-23)
cd influxdb_iox
rustc --version
rustc 1.50.0-nightly (825637983 2020-11-18)
clang
安装
安装clang
是为了编译croaring
这个依赖(RoaringBitmap
,根据查询语句进行逐列查询的时候使用),安装脚本根据系统的不同。
mac:
xcode-select --install
clang --version
Apple clang version 12.0.0 (clang-1200.0.32.29)
Target: x86_64-apple-darwin20.3.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
3.IDE搭建
我个人使用的goland
,感觉相比于IDEA
要速度更快一些。
GoLand
下载:https://www.jetbrains.com/go/- 安装
Toml
插件: https://plugins.jetbrains.com/plugin/8195-toml - 安装
Rust
插件: https://plugins.jetbrains.com/plugin/8182-rust
4.导入工程
当全部完成后,你可以在IDE的右侧看到如下截图:
你也可以在命令行中执行:
cargo build
具体速度快慢就要看命了,网络至少需要访问github、crates.io
5.在IDE中启动
打开src/main.rs
文件,然后右键-->Run. 在运行之后,在命令行里会提示一个错误,然后退出。原因是我们并没有输入系统可以识别的启动命令。
打开启动配置页面,在command中贴入,
run --package influxdb_iox --bin influxdb_iox run
然后就能看到程序启动成功的提示:
祝玩儿的开心!
欢迎关注微信公众号:
或添加微信好友: liutaohua001