InfluxDB是一個由InfluxData開發的開源時序數據庫,專一於海量時序數據的高性能讀、寫、高效存儲與實時分析等,在DB-Engines Ranking時序型數據庫排行榜上常年排名第一。git
InfluxDB能夠說是當之無愧的佼佼者,但 InfluxDB CTO Paul 在 2020/12/10 號在博客中發表一篇名爲:Announcing InfluxDB IOx – The Future Core of InfluxDB Built with Rust and Arrow的文章,介紹了一個新項目 InfluxDB IOx,InfluxDB 的下一代時序引擎。github
接下來,我將連載對於InfluxDB IOx的源碼解析過程,歡迎各位批評指正,聯繫方式見文章末尾。數據庫
上一篇介紹了InfluxDB IOx的一些項目背景及現有架構中存在的問題,詳情見:https://my.oschina.net/u/3374539/blog/5015114xcode
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
測試版本號:app
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
,根據查詢語句進行逐列查詢的時候使用),安裝腳本根據系統的不一樣。curl
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