轻松了解 Databend 构建

Databend 除了支持本机构建外,还可以使用 build tool 来进行跨平台构建。

如何构建 Databend

Make

Databend 在 Makefile 中封装了大量常见命令。采用 make 构建只会开启默认特性,并且会一次性构建 databend-metadatabend-query 以及 databend-metactl

前文 设置好开发环境后。

  • 执行 make build 即可轻松构建 debug 版本。
  • make build-release 则会构建 release 版本,并会采用 objcopy 减少二进制体积。

Cargo

使用 cargo 构建的好处在于可以按需开启特性,并灵活控制要构建的目标二进制文件。

常用的命令格式如:

RUSTFLAGS="--cfg tokio_unstable" cargo build --bin=databend-query --features=tokio-console

即可构建启用 tokio-console 支持的 databend-query ,使用 RUSTFLAGS="--cfg tokio_unstable" 是因为 tokiotracing 特性还没有稳定下来。

Databend features 速览

  • simd = ["common-arrow/simd"]:默认开启的特性,启用 arrow2 的 SIMD 支持(meta & query)。
  • tokio-console = ["common-tracing/console", "common-base/tracing"]:用于 tokio 监控和调试,(meta & query)。
  • memory-profiling = ["common-base/memory-profiling", "tempfile"]:用于内存分析,(meta & query)。
  • storage-hdfs = ["opendal/services-hdfs", "common-io/storage-hdfs"]:用于提供 hdfs 支持,(query)。
  • hive = ["common-hive-meta-store", "thrift", "storage-hdfs"]:用于提供 hive 支持,(query)。

跨平台构建

Databend 提供了 build-tool image,可以简化跨平台构建所需工作。

示例选用 x86_64-unknown-linux-musl 目标平台,其他支持平台也类似:

IMAGE='datafuselabs/build-tool:x86_64-unknown-linux-musl' RUSTFLAGS='-C link-arg=-Wl,--compress-debug-sections=zlib-gabi' ./scripts/setup/run_build_tool.sh cargo build --target x86_6
4-unknown-linux-musl