7 Star 19 Fork 2

诺司时空 / cnosdb

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README_CN.md 8.70 KB
一键复制 编辑 原始数据 按行查看 历史
Ivan Gao 提交于 2024-02-28 11:51 . chore: repair some invaild links.
CnodSB Logo

CI Rust License Agpl 3.0 twitter linkedin

WebsiteDocumentationQuick StartEco-Integration

English | 简体中文

CnosDB 是一款高性能、高压缩率、高易用性的开源分布式时序数据库。主要应用场景为物联网,工业互联网,车联网,IT运维等。所有代码均已在GitHub开源。

我们在设计上充分利用了时序数据特点,包括结构化数据、无事务、较少的删除更新、写多读少等等,因此相比其它时序数据库,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
  1. 安装Protobuf
# Arch Linux
pacman -S protobuf
# Fedora
dnf install protobuf
# Ubuntu
snap install protobuf
# macOS
brew install protobuf

编译

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 User Group中。扫描下方二维码,加CC为好友,即可入群。

入群前请查看入群须知

社区贡献指南

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

致谢

Rust
1
https://gitee.com/cnosdb/cnosdb.git
git@gitee.com:cnosdb/cnosdb.git
cnosdb
cnosdb
cnosdb
main

搜索帮助