通过Lindorm-cli连接访问Lindorm时序引擎
本文介绍通过Lindorm-cli连接并使用云原生多模数据库Lindorm时序引擎的具体操作和使用示例。
前提条件
连接Lindorm时序引擎使用的网络类型
网络类型 | 说明 |
---|---|
专有网络(推荐) | 专有网络VPC(Virtual Private Cloud)是您自己独有的云上私有网络,不同的专有网络之间二层逻辑隔离,拥有较高的安全性和性能。Lindorm-cli部署在ECS实例上时,通过专有网络连接至Lindorm时序引擎,可获得更高的安全性和更低的网络延迟。 |
公网 | 公网即互联网,当本地设备需要测试或管理Lindorm时序引擎时,可在本地设备上部署Lindorm-cli,然后通过公网连接至Lindorm时序引擎。 |
常用命令
help
:查看帮助命令。connect
:连接服务器命令。precision
:时间显示格式,支持rfc3339、h、m、s、 ms、u或ns。exit
、quit
、ctrl+d
:退出当前Lindorm实例的连接。
操作步骤
下载Lindorm-cli。您可以根据不同的客户端下载Lindorm-cli,下载链接如下表所示。
客户端
下载链接
Linux
Mac
Windows
解压Lindorm-cli压缩包。
获取连接信息并执行下述命令连接Lindorm时序引擎。
如果客户端部署在Linux上,请执行以下语句。
./lindorm-cli -url http://<host:port> -username <用户名> -password <密码> -database <目标数据库名>
如果客户端部署在Windows,请双击打开lindorm-cli.exe,并执行以下语句。
connect jdbc:lindorm:tsdb:url=http://<host:port> user password
说明host:port
:Lindorm时序引擎的连接地址和端口(例如:ld-bp17j28j2y7pm****-proxy-tsdb-pub.lindorm.rds.aliyuncs.com:8242
)。获取方法参见查看连接地址。不过这里获取的连接地址和端口是不带http://
前缀的,但参数url
中指定的地址必须带上http://
前缀,否则连接会失败。用户名:Lindorm实例的用户名。如果时序引擎的账号管理功能未启用,用户名和密码无需设置。
密码:Lindorm实例用户名对应的密码,如果您忘记密码,可以通过Lindorm宽表引擎的集群管理系统修改密码,具体操作请参见修改用户密码。
目标数据库名:配置使用lindorm-cli访问的数据库。默认数据库名为default,如果没有指定,则默认访问
default
数据库。可以使用use <数据库名>
语句切换至目标数据库。在以交互式方式启动lindorm-cli时,即使指定的
url
,username
,password
等参数有误也并不会影响进入lindorm-cli的界面,因为只有在lindorm-cli交互式界面下执行第一条SQL语句时才会真正去连接时序引擎。
返回如下结果:
Connected to http://ld-bp17j28j2y7pm****-proxy-tsdb-pub.lindorm.rds.aliyuncs.com:8242 lindorm-cli version: 1.0.15
访问Lindorm时序引擎的语法示例如下。
执行以下语句创建时序数据表。
创建一个名为sensor的时序数据表。其中两个Tag分别为device_id和region,Tag的数据类型为VARCHAR。两个Field命名为temperature和humidity,数据类型分别为DOUBLE、BIGINT。CREATE TABLE sensor ( device_id VARCHAR TAG, region VARCHAR TAG, time TIMESTAMP, temperature DOUBLE, humidity BIGINT, PRIMARY KEY(device_id));
说明创建时序数据表时建议指定PRIMARY KEY,通常以数据源唯一标识作为PRIMARY KEY,例如物联网场景设备ID、车联网场景车辆唯一识、监控场景的应用ID或者
ip:port
等。时间戳列的列名必须为time,表示数据的时间,单位为毫秒(ms)。
如果PRIMARY KEY相同,并且时间戳列相同,那么数据被认为是同一条数据,后写入的数据会覆盖先写入的数据。
执行以下语句查看目标数据库中的时序数据表。
show tables;
查询结果如下:
columnName typeName ---------- -------- default sensor 1 rows in set (28 ms)
执行以下语句查看时序数据表的字段信息。
describe table sensor;
查询结果如下:
columnName typeName ---------- -------- device_id VARCHAR region VARCHAR time TIMESTAMP temperature DOUBLE humidity BIGINT 5 rows in set (22 ms)
执行以下语句在时序数据表中写入数据。
单条依次写入
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);
执行以下语句在时序数据表中按条件查询数据。
说明写入数据后如果查询数据的结果为空,请检查是否设置数据保存有效期(TTL),如果数据超过保存有效期会被自动清理并且无法查询。
条件查询
查询设备
F07A1260
在时间范围2021-04-22 15:33:00
和2021-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 3 rows in set (41 ms)
降采样查询
查询设备
F07A1260
在时间范围2021-04-22 15:33:00
和2021-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 2 rows in set (33 ms)
聚合查询
计算所有区域的最大温度:
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 2 rows in set (76 ms)
(可选)在时序数据表中导入导出CSV格式文件。
执行以下命令在时序数据表
sensor
中导入CSV格式文件。./lindorm-cli -url http://ld-bp1y919033x1k****-proxy-tsdb-pub.lindorm.rds.aliyuncs.com:8242/ -format=csv -input /path_to_file -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_to_file