CeresDB 是一款高性能、分布式、Schema-less 的云原生时序数据库,能够同时处理时序型(time-series)以及分析型(analytics)负载。
项目目前在快速迭代中,早期版本可能存在数据不兼容问题,因此不推荐生产使用及性能测试。
项目 Roadmap。
通过 git 克隆代码仓库并进入代码目录:
git clone git@github.com:CeresDB/ceresdb.git
cd ceresdb
确保开发环境安装了 docker,通过仓库中的提供的 Dockerfile 进行镜像的构建:
docker build -t ceresdb .
使用编译好的镜像,启动服务:
docker run -d -t --name ceresdb -p 5440:5440 -p 8831:8831 ceresdb
目前为了编译 CeresDB,需要安装相关依赖,以及 Rust 工具链。
开发环境这里以 Ubuntu20.04 为例,执行如下的命令,即可安装好所需的依赖:
apt install git curl gcc g++ libssl-dev pkg-config cmake
需要注意的是,项目的编译对 cmake、gcc、g++ 等实际上都是有版本要求的,如果开发环境使用的是较老的 Linux 发行版的话,一般需要手动安装较高版本的这些依赖。
开发环境这里以 MacOS Monterey 为例,执行如下的命令,即可安装好所需的依赖。
- 安装命令行工具:
xcode-select --install
- 通过Brew安装cmake:
brew install cmake
Rust 的安装建议通过 rustup,安装了 rustup 之后,进入到 CeresDB 项目的时候,会自动根据 rust-toolchain 文件下载指定的 Rust 版本。
理论上执行了之后,需要添加环境变量,才能使用 Rust 工具链,一般会把下面的命令放入到自己的 ~/.bashrc
或者 ~/.bash_profile
中:
source $HOME/.cargo/env
编译 Release 版本,执行如下命令:
cargo build --release
使用下载的代码中提供的默认配置文件,即可启动:
./target/release/ceresdb-server --config ./docs/example.toml
CeresDB 支持自定义扩展的 SQL 协议,目前可以通过 http 服务以 SQL 语句进行数据的读写、表的创建。
curl --location --request POST 'http://127.0.0.1:5440/sql' \
--header 'Content-Type: application/json' \
--data-raw '{
"query": "CREATE TABLE `demo` (`name` string TAG, `value` double NOT NULL, `t` timestamp NOT NULL, TIMESTAMP KEY(t)) ENGINE=Analytic with (enable_ttl='\''false'\'')"
}'
curl --location --request POST 'http://127.0.0.1:5440/sql' \
--header 'Content-Type: application/json' \
--data-raw '{
"query": "INSERT INTO demo(t, name, value) VALUES(1651737067000, '\''ceresdb'\'', 100)"
}'
curl --location --request POST 'http://127.0.0.1:5440/sql' \
--header 'Content-Type: application/json' \
--data-raw '{
"query": "select * from demo"
}'
curl --location --request POST 'http://127.0.0.1:5440/sql' \
--header 'Content-Type: application/json' \
--data-raw '{
"query": "show create table demo"
}'
curl --location --request POST 'http://127.0.0.1:5440/sql' \
--header 'Content-Type: application/json' \
--data-raw '{
"query": "DROP TABLE demo"
}'
target | OS | status |
---|---|---|
x86_64-unknown-linux-gnu | kernel 4.9+ | 构建及运行 |
x86_64-apple-darwin | 10.15+, Catalina+ | 构建 |
aarch64-apple-darwin | 11+, Big Sur+ | 构建 |
aarch64-unknown-linux-gnu | TBD | 详见 #63 |
*-windows | * | 未支持 |
相关技术文档在docs目录中,补充完善中~
CeresDB 部分设计参考 influxdb_iox, 部分代码实现参考 tikv 以及其他的优秀开源项目,感谢 InfluxDB 团队、TiKV 团队,以及其他优秀的开源项目。
CeresDB 基于 Apache License 2.0 协议。
- CeresDB 社区角色
- Slack
- 邮箱: ceresdbservice@gmail.com
- 微信群
- 钉钉群: CeresDB 开源: 44602802