首页 云原生多模数据库 Lindorm 时序引擎 连接指南 通过Lindorm-cli连接并使用Lindorm时序引擎

通过Lindorm-cli连接并使用Lindorm时序引擎

本文介绍通过Lindorm-cli连接并使用云原生多模数据库Lindorm时序引擎的方法。

前提条件

  • 已获取Lindorm时序引擎的连接地址,具体操作请参见查看连接地址

  • 已将客户端IP地址添加至Lindorm白名单,具体操作请参见设置白名单

准备工作

下载Lindorm-cli。您可以根据不同的操作系统下载Lindorm-cli,下载链接如下表所示。

操作系统

下载链接

Linux

lindorm-cli for linux

macOS

lindorm-cli for macOS

Windows

lindorm-cli for windows-x64

操作步骤

  1. 执行以下语句解压Lindorm-cli(以Linux操作系统为例)。

    tar zxvf lindorm-cli-linux-latest.tar.gz
  2. 连接Lindorm时序引擎。

    • 如果客户端部署在Linux或macOS操作系统上,请跳转至lindorm-cli.exe的所在目录下,执行如下语句。

      ./lindorm-cli -url <jdbc url> -username <用户名> -password <密码> -database <目标数据库名>
    • 如果客户端部署在Windows系统上,请跳转至lindorm-cli.exe的所在目录下,在cmd上执行如下语句。

      lindorm-cli -url <jdbc url> -username <用户名> -password <密码> -database <目标数据库名>

      参数说明如下:

      参数

      是否必选

      说明

      jdbc url

      Lindorm时序引擎的连接地址和端口,获取方法请参见查看连接地址。例如:jdbc:lindorm:tsdb:url=http://ld-bp12pc23yfb3*****-proxy-tsdb-pub.lindorm.rds.aliyuncs.com:8242

      用户名

      连接Lindorm时序引擎的用户名。如果时序引擎未启用用户认证与权限校验,用户名和密码无需设置,更多信息请参见用户认证与权限校验功能的启用

      密码

      连接Lindorm时序引擎的密码,如果您忘记密码,可以通过Lindorm宽表引擎的集群管理系统修改用户密码,具体操作请参见修改用户密码

      目标数据库名

      使用Lindorm-cli连接的数据库。默认数据库名为default。连接过程中可以使用use <目标数据库名>语句切换至目标数据库。

    连接成功的返回结果如下:

    Connected to jdbc:lindorm:tsdb:url=http://****-proxy-tsdb-pub.lindorm.rds.aliyuncs.com:8242
    lindorm-cli version: 1.0.24
  3. 使用Lindorm时序引擎的语法示例。

    1. 执行以下语句创建时序数据表。

      创建一个名为sensor的时序数据表。创建时序数据表时建议指定PRIMARY KEY,通常以数据源唯一标识作为PRIMARY KEY,例如物联网场景中设备ID、车联网场景中车辆唯一标识、监控场景中的应用ID或者ip:port等。时间戳列的列名必须为time,表示数据的时间,单位为毫秒(ms)。

      CREATE TABLE sensor (
          device_id VARCHAR TAG,
          region VARCHAR TAG,
          time TIMESTAMP,
          temperature DOUBLE,
          humidity BIGINT,
          PRIMARY KEY(device_id));//单机版请删除此行
    2. 执行以下语句查看目标数据库中的时序数据表。

      SHOW tables;

      查询结果如下:

      +-------------------+
      | Tables_In_default |
      +-------------------+
      | sensor            |
      +-------------------+
    3. 执行以下语句查看时序数据表的字段信息。

      DESCRIBE table sensor;

      查询结果如下:

      +-------------+-----------+------------+------------+
      | columnName  | typeName  | columnKind | primaryKey |
      +-------------+-----------+------------+------------+
      | device_id   | VARCHAR   | TAG        | true       |
      | region      | VARCHAR   | TAG        | false      |
      | time        | TIMESTAMP | TIMESTAMP  | false      |
      | temperature | DOUBLE    | FIELD      | false      |
      | humidity    | BIGINT    | FIELD      | false      |
      +-------------+-----------+------------+------------+
    4. 执行以下语句在时序数据表中写入数据。

      说明

      如果PRIMARY KEY相同,并且时间戳列相同,那么数据被认为是同一条数据,后写入的数据会覆盖先写入的数据。

      • 单条依次写入

        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);
    5. 执行以下语句在时序数据表中按条件查询数据。

      重要

      写入数据后如果查询数据的结果为空,请使用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            |
        +----------+-----------------+
  4. (可选)在时序数据表中导入或者导出CSV格式文件。

    • 执行以下命令在时序数据表sensor中导入CSV格式文件。

      ./lindorm-cli -url http://ld-bp1y919033x1k****-proxy-tsdb-pub.lindorm.rds.aliyuncs.com:8242/ -format=csv -input /path/of/data.csv -table sensor
      重要
      • 目前仅支持导入一个CSV文件。

      • 确保导入的CSV文件的字段和时序数据表的字段一一对应,否则导入时会出错。

      • 通过指定以下参数实现批量并发导入。

        • -batch:表示每次执行导入操作到服务端的数据条数,默认值为2000。

        • -concurrent:表示并发导入的线程数,默认值为10。

    • 执行以下命令从时序数据表sensor中导出CSV文件。

      ./lindorm-cli -url http://ld-bp1y919033x1k****-proxy-tsdb-pub.lindorm.rds.aliyuncs.com:8242/ -execute 'select * from sensor' -format=csv -output /path/of/data.csv

Lindorm-cli常用命令

  • help:查看帮助命令。

  • connect:连接服务器命令。

  • precision:时间显示格式,支持rfc3339、h、m、s、 ms、u或ns。

  • exit或者quit:退出当前Lindorm时序引擎的连接。

阿里云首页 云原生多模数据库Lindorm 相关技术圈