全部產品
Search
文件中心

Lindorm:通過Lindorm-cli串連並使用時序引擎

更新時間:Jul 09, 2024

Lindorm-cli是Lindorm提供的簡易命令列工具,用於串連和管理Lindorm資料庫。您可以通過Lindorm-cli完成基本的SQL操作,例如建表、資料查詢、資料寫入等。本文介紹通過Lindorm-cli串連並使用Lindorm時序引擎的方法。

前提條件

已將用戶端IP地址添加至Lindorm白名單,具體操作請參見設定白名單

步驟一:安裝Lindorm-cli

  1. 根據您的作業系統,下載對應的Lindorm-cli安裝包。下載連結如下表所示。

    作業系統

    下載連結

    Linux

    lindorm-cli for linux

    macOS

    lindorm-cli for macOS

    Windows

    lindorm-cli for windows-x64

    Linux-arm64

    lindorm-cli for linux-arm64

  2. 解壓安裝包。

    以Linux作業系統為例,執行以下命令解壓。

    tar zxvf lindorm-cli-linux-latest.tar.gz

    解壓後lindorm-cli-linux-latest檔案夾中為lindorm-cli.exe檔案。

步驟二:串連Lindorm時序引擎

用戶端部署在Linux或Mac系統

  1. 跳轉至lindorm-cli.exe檔案所在目錄。

    cd <lindorm-cli.exe所在目錄>
  2. 執行以下語句串連時序引擎。

    ./lindorm-cli -url <Lindorm時序SQL地址> -username <使用者名稱> -password <密碼> -database <目標資料庫名>

    參數說明

    參數

    是否必填

    說明

    Lindorm時序SQL地址

    Lindorm時序引擎的SQL串連地址和連接埠,擷取方法請參見查看串連地址。例如:jdbc:lindorm:tsdb:url=http://ld-bp12pc23yfb3*****-proxy-tsdb-pub.lindorm.rds.aliyuncs.com:8242

    說明

    通過Lindorm-cli串連方式也支援Lindorm 時序HTTP地址

    使用者名稱

    串連Lindorm時序引擎的使用者名稱。如果時序引擎未啟用使用者認證與許可權校正,使用者名稱和密碼無需設定,更多資訊請參見使用者及許可權管理

    密碼

    串連Lindorm時序引擎的密碼,如果您忘記密碼,可以通過Lindorm寬表引擎的叢集管理系統修改使用者密碼,具體操作請參見修改使用者密碼

    目標資料庫名

    使用Lindorm-cli串連的資料庫。預設資料庫為default。串連過程中可以使用use <目標資料庫名>語句切換至目標資料庫。

    串連成功將返回以下結果:

    lindorm-cli version: 1.0.xx

    其中,1.0.xx為Lindorm-cli的版本號碼。

用戶端部署在Windows系統

方法一

  1. 開啟命令提示字元(CMD),跳轉至lindorm-cli.exe的所在目錄下。

    cd <lindorm-cli.exe所在目錄>
  2. 在CMD上執行以下語句串連時序引擎。

    lindorm-cli -url <Lindorm時序SQL地址> -username <使用者名稱> -password <密碼> -database <目標資料庫名>

    串連成功的返回結果如下:

    Connected to jdbc:lindorm:tsdb:url=http://****-proxy-tsdb-pub.lindorm.rds.aliyuncs.com:8242
    lindorm-cli version: 1.0.xx

    其中,1.0.xx為Lindorm-cli的版本號碼。

方法二

雙擊開啟Lindorm-cli.exe程式,執行以下語句:

connect <Lindorm時序SQL地址> <使用者名稱> <密碼> -database <目標資料庫名>

串連成功無結果返回。

步驟三:使用Lindorm時序引擎

建表

  1. 建立時序資料表。

    CREATE TABLE sensor (
        device_id VARCHAR NOT NULL,
        region VARCHAR NOT NULL,
        time TIMESTAMP NOT NULL,
        temperature DOUBLE,
        humidity BIGINT,
        PRIMARY KEY(device_id, region, time)
    );
    說明
    • 建立時序資料表時建議指定主鍵(PRIMARY KEY),單機版不支援PRIMARY KEY。通常以資料來源唯一標識作為PRIMARY KEY,例如物聯網情境中裝置ID、車連網情境中車輛唯一標識、監控情境中的應用ID或者ip:port等。

    • 時間戳記列的列名必須為time,表示資料的時間,單位為毫秒(ms)。

  2. 查看錶sensor是否建立成功。

    SHOW TABLES;

    查詢結果如下:

    +-------------------+
    | Tables_In_default |
    +-------------------+
    | sensor            |
    +-------------------+
  3. 查看時序資料表的欄位資訊。

    DESCRIBE TABLE sensor;

    查詢結果如下:

    +-------------+-----------+------------+------------+--------------+
    | columnName  | typeName  | columnKind | primaryKey | partitionTag |
    +-------------+-----------+------------+------------+--------------+
    | device_id   | VARCHAR   | TAG        | true       | true         |
    | region      | VARCHAR   | TAG        | true       | true         |
    | time        | TIMESTAMP | TIMESTAMP  | true       | false        |
    | temperature | DOUBLE    | FIELD      | false      | false        |
    | humidity    | BIGINT    | FIELD      | false      | false        |
    +-------------+-----------+------------+------------+--------------+

資料寫入

說明

如果TAGS相同,並且時間戳記列相同,那麼資料被認為是同一條資料,後寫入的資料會覆蓋先寫入的資料。

  • 單條依次寫入。

    INSERT INTO sensor (device_id, region, time, temperature, humidity) VALUES('F07A1260','north-cn','2021-04-22 15:33:00',12.1,45);
    INSERT INTO sensor (device_id, region, time, temperature, humidity) VALUES('F07A1260','north-cn','2021-04-22 15:33:10',13.2,47);
    INSERT INTO sensor (device_id, region, time, temperature, humidity) VALUES('F07A1260','north-cn','2021-04-22 15:33:20',10.6,46);
    INSERT INTO sensor (device_id, region, time, temperature, humidity) VALUES('F07A1261','south-cn','2021-04-22 15:33:00',18.1,44);
    INSERT INTO sensor (device_id, region, time, temperature, humidity) VALUES('F07A1261','south-cn','2021-04-22 15:33:10',19.7,44);
  • 批量寫入。

    INSERT INTO sensor (device_id, region, time, temperature, humidity) 
    VALUES ('F07A1260','north-cn','2021-04-22 15:33:00',12.1,45),
           ('F07A1260','north-cn','2021-04-22 15:33:10',13.2,47),
           ('F07A1260','north-cn','2021-04-22 15:33:20',10.6,46),
           ('F07A1261','south-cn','2021-04-22 15:33:00',18.1,44),
           ('F07A1261','south-cn','2021-04-22 15:33:10',19.7,44);

資料查詢

重要

寫入資料後如果查詢資料的結果為空白,請使用DESCRIBE DATABASE <資料庫名稱>語句查詢資料庫是否設定了資料儲存有效期間(TTL),如果資料超過儲存有效期間會被自動清理並且無法查詢。

  • 條件查詢

    查詢裝置F07A1260在時間範圍2021-04-22 15:33:002021-04-22 15:33:20之間的資料:

    SELECT device_id,region,time,temperature,humidity FROM sensor WHERE device_id = 'F07A1260' AND time >= '2021-04-22 15:33:00' AND time <= '2021-04-22 15:33:20';

    查詢結果如下:

    +-----------+----------+---------------------------+-------------+----------+
    | device_id |  region  |           time            | temperature | humidity |
    +-----------+----------+---------------------------+-------------+----------+
    | F07A1260  | north-cn | 2021-04-22T15:33:00+08:00 | 12.1        | 45       |
    | F07A1260  | north-cn | 2021-04-22T15:33:10+08:00 | 13.2        | 47       |
    | F07A1260  | north-cn | 2021-04-22T15:33:20+08:00 | 10.6        | 46       |
    +-----------+----------+---------------------------+-------------+----------+
  • 降採樣查詢(指在時序資料應用情境中降低採樣率的查詢,可以減少結果集的資料點數。)

    查詢裝置F07A1260在時間範圍2021-04-22 15:33:002021-04-22 15:33:20之間的溫度,按照20秒降採樣後取最大值:

    SELECT device_id,region,time,max(temperature) AS max_temperature FROM sensor WHERE device_id = 'F07A1260' AND time >= '2021-04-22 15:33:00' AND time <= '2021-04-22 15:33:20' SAMPLE BY 20s;

    查詢結果如下:

    +-----------+----------+---------------------------+-----------------+
    | device_id |  region  |           time            | max_temperature |
    +-----------+----------+---------------------------+-----------------+
    | F07A1260  | north-cn | 2021-04-22T15:33:00+08:00 | 13.2            |
    | F07A1260  | north-cn | 2021-04-22T15:33:20+08:00 | 10.6            |
    +-----------+----------+---------------------------+-----------------+
  • 彙總查詢

    計算所有地區的最大溫度:

    SELECT region,max(temperature) AS max_temperature FROM sensor WHERE time >= '2021-04-22 15:33:00' AND time <= '2021-04-22 15:33:20' GROUP BY region;

    查詢結果如下:

    +----------+-----------------+
    |  region  | max_temperature |
    +----------+-----------------+
    | north-cn | 13.2            |
    | south-cn | 19.7            |
    +----------+-----------------+

Lindorm-cli常用命令

  • help:查看協助命令。

  • connect:串連伺服器命令。

  • precision:時間顯示格式,支援rfc3339、h、m、s、ms、u或ns。

  • exit或者quit:退出當前Lindorm時序引擎的串連。