7个版本

0.0.7 2022年1月27日
0.0.6 2021年11月27日
0.0.4 2021年10月15日
0.0.3 2021年2月5日

#2606数据库接口

每月 32次下载
iotdb-cli 中使用

Apache-2.0

605KB
15K SLoC

logo

iotdb-rs

用Rust编写的Apache IoTDB客户端

Crates.io Api Docs Crates.io License Rust Build Crates Publish


Alt

概览

IoTDB(物联网数据库)是一个时序数据处理系统,能够为用户提供特定的服务,如数据收集、存储和分析。由于其轻量级结构、高性能和可用的特性,以及与Hadoop和Spark生态的无缝集成,IoTDB满足工业物联网领域海量数据存储、高吞吐量数据输入和复杂数据分析的需求。

如何使用

iotdb 添加到您的 Cargo.toml

[dependencies]
iotdb = "0.0.7"
simplelog = "0.11.0"

示例

use chrono::Local;

use iotdb::*;

fn main() -> Result<(), anyhow::Error> {
    debug(false);

    let config = iotdb::ConfigBuilder::new()
        .endpoint("localhost:6667")
        .user("root")
        .password("root")
        .time_zone("UTC+8")
        .build();

    // open session
    let mut session = Session::connect(config)?;
    println!("time_zone: {}", session.time_zone()?);
    session.delete_storage_group("root.ln")?;
    session.set_storage_group("root.ln")?;
    session.create_time_series(
        "root.ln.wf01.wt01.temperature",
        DataType::FLOAT,
        Encoding::default(),
        Compressor::default(),
    )?;

    session.create_time_series(
        "root.ln.wf01.wt01.status",
        DataType::BOOLEAN,
        Encoding::default(),
        Compressor::default(),
    )?;

    let now = Local::now().timestamp_millis();
    session.sql(
        format!(
            "INSERT INTO root.ln.wf01.wt01(timestamp,status) values({},true)",
            now
        )
            .as_str(),
    )?;
    session.sql(
        format!(
            "INSERT INTO root.ln.wf01.wt01(timestamp,status) values({},false)",
            now + 1000
        )
            .as_str(),
    )?;
    session.sql(
        format!(
            "INSERT INTO root.ln.wf01.wt01(timestamp,status,temperature) values({},false,18.36)",
            now + 2000
        )
            .as_str(),
    )?;
    session.sql(
        format!(
            "INSERT INTO root.ln.wf01.wt01(timestamp,status,temperature) values({},true,32.23)",
            now + 3000
        )
            .as_str(),
    )?;
    session.sql("select * from root.ln")?.show();

    // DF (TODO)
    let df = session.sql("select * from root.ln")?.to_df()?;
    println!("IoTDB DF is empty: {}", df.is_empty());

    session.close()?;

    Ok(())
}

fn debug(enable: bool) {
    use simplelog::*;
    let mut log_level = LevelFilter::Info;
    if enable {
        log_level = LevelFilter::Debug;
    }
    let _ = CombinedLogger::init(vec![TermLogger::new(
        log_level,
        Default::default(),
        TerminalMode::Mixed,
        ColorChoice::Auto,
    )]);
}

运行示例

  1. 这里下载包
curl -O https://archive.apache.org/dist/iotdb/0.11.2/apache-iotdb-0.11.2-bin.zip
  1. 安装并启动iotdb服务器
cd $IOTDB_HOME && sbin/start-server -c conf -rpc_port 6667
  1. 这里安装rust工具链
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

4. 运行示例

git clone https://github.com/francis-du/iotdb-rs.git

cargo run --example iotdb

许可证

Apache许可证2.0

依赖项

~16MB
~296K SLoC