CnosDB 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
CnosDB 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
CnosDB 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 AGPL
开发语言 Rust 查看源码 »
操作系统 跨平台
软件类型 开源软件
开源组织
地区 国产
投 递 者 IvanGao
适用人群 未知
收录时间 2023-10-13

软件简介

CnosDB 是一款高性能、高压缩率、高易用性的开源分布式时序数据库。主要应用场景为物联网,工业互联网,车联网,IT运维等。所有代码均已开源。
 
我们在设计上充分利用了时序数据特点,包括结构化数据、无事务、较少的删除更新、写多读少等等,因此相比其它时序数据库,CnosDB 有以下特点:
  • 高性能:CnosDB 解决了时间序列膨胀,理论上支持时间序列无上限,支持沿时间线的聚合查询,包括按等间隔划分窗口的查询、按某列枚举值划分窗口的查询、按相邻时序记录的时间间隔长度划分窗口。具备对最新数据的缓存能力,并且可以配置缓存空间,能够高速获取最新数据。
  • 简单易用:CnosDB 提供清晰明了的接口,简单的配置项目,支持标准SQL,轻松上手,与第三方工具生态无缝集成,拥有便捷的数据访问功能。支持 schemaless ("无模式")的写入方式,支持历史数据补录(含乱序写入)。
  • 云原生: CnosDB 有原生的分布式设计、数据分片和分区、存算分离、Quorum 机制、Kubernetes 部署和完整的可观测性,具有最终一致性,能够部署在公有云、私有云和混合云上。提供多租户的功能,有基于角色的权限控制。支持计算层无状态增减节点,储存层水平扩展提高系统存储容量。

整体架构 

整体架构

快速开始

源码安装

支持平台

我们支持以下平台,如果发现可以在列表以外的平台上运行, 请报告给我们。

  • Linux x86(x86_64-unknown-linux-gnu)
  • Darwin arm(aarch64-apple-darwin)

编译环境

  1. 安装Rust,可前往官网下载安装
  2. 安装Cmake
# Debian or Ubuntu
apt-get install cmake
# Arch Linux
pacman -S cmake
# CentOS
yum install cmake
# Fedora
dnf install cmake
# macOS
brew install cmake
 
  1. 安装FlatBuffers
# Arch Linux
pacman -S flatbuffers
# Fedora
dnf install flatbuffers
# Ubuntu
snap install flatbuffers
# macOS
brew install flatbuffers
 

如果您的系统不在此列,可按照如下方法安装FlatBuffers

$ git clone -b v22.9.29 --depth 1 https://github.com/google/flatbuffers.git && cd flatbuffers

# 根据操作系统选择以下命令之一
$ cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release
$ cmake -G "Visual Studio 10" -DCMAKE_BUILD_TYPE=Release
$ cmake -G "Xcode" -DCMAKE_BUILD_TYPE=Release

$ sudo make install
 

编译

git clone https://github.com/cnosdb/cnosdb.git && cd cnosdb
make build
 

运行

运行CnosDB

以下为单节点启动,如需启动集群,见 启动一个集群

./target/debug/cnosdb run -M singleton --config ./config/config.toml
 

运行CLI

cargo run --package client --bin cnosdb-cli
 

Docker安装

  1. 安装 Docker

  2. 使用 Docker 启动容器

docker run --name cnosdb -d cnosdb/cnosdb:community-latest cnosdb run -M singleton --config /etc/cnosdb/cnosdb.conf
 
  1. 进入容器
docker exec -it cnosdb bash
 
  1. 运行cnosdb-cli
cnosdb-cli
 

退出请输入\q 查看帮助请输入\? 更多内容请查看快速开始

数据写入

下面将展示使用cli进行SQL写入的例子

  1. 创建表
CREATE TABLE air (
    visibility DOUBLE,
    temperature DOUBLE,
    pressure DOUBLE,
    TAGS(station)
);
 
public ❯ CREATE TABLE air (
    visibility DOUBLE,
    temperature DOUBLE,
    pressure DOUBLE,
    TAGS(station)
);
Query took 0.063 seconds.
 
  1. 插入一条数据
INSERT INTO air (TIME, station, visibility, temperature, pressure) VALUES
                (1673591597000000000, 'XiaoMaiDao', 56, 69, 77);
 
public ❯ INSERT INTO air (TIME, station, visibility, temperature, pressure) VALUES
                (1673591597000000000, 'XiaoMaiDao', 56, 69, 77);
+------+
| rows |
+------+
| 1    |
+------+
Query took 0.032 seconds.
 
  1. 插入多条数据
INSERT INTO air (TIME, station, visibility, temperature, pressure) VALUES
                ('2023-01-11 06:40:00', 'XiaoMaiDao', 55, 68, 76),
                ('2023-01-11 07:40:00', 'DaMaiDao', 65, 68, 76);
 
public ❯ INSERT INTO air (TIME, station, visibility, temperature, pressure) VALUES
                ('2023-01-11 06:40:00', 'XiaoMaiDao', 55, 68, 76),
                ('2023-01-11 07:40:00', 'DaMaiDao', 65, 68, 76);
+------+
| rows |
+------+
| 2    |
+------+
Query took 0.038 seconds.
 

数据查询

下面将展示使用cli进行SQL查询的例子

-- 查询表数据
SELECT * FROM air;
 
public ❯ -- 查询表数据
SELECT * FROM air;
+---------------------+------------+------------+-------------+----------+
| time                | station    | visibility | temperature | pressure |
+---------------------+------------+------------+-------------+----------+
| 2023-01-11T06:40:00 | XiaoMaiDao | 55         | 68          | 76       |
| 2023-01-13T06:33:17 | XiaoMaiDao | 56         | 69          | 77       |
| 2023-01-11T07:40:00 | DaMaiDao   | 65         | 68          | 76       |
+---------------------+------------+------------+-------------+----------+
Query took 0.036 seconds.
 

连接器

CnosDB支持多种客户端的连接:

  • C/C++
  • Go
  • Java
  • Rust
  • Python
  • JDBC
  • ODBC
  • Arrow Flight SQL

以上示例请访问文档中的 Connector 章节。

路线图

加入社区

社区贡献指南

请参照贡献指南成为CnosDB的Contributor。

致谢

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论

点击引领话题📣 发布并加入讨论🔥
暂无内容
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
暂无内容
0 评论
3 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部