初识influxdb
database ------ 数据库 measurement ----- 数据库里的表 point --------- 表里的一行数据 Point由时间戳(time)、数据(field)、标签(tags)组成。 time ------ 每个数据记录时间,是数据库中的主索引(会自动生成) fields ------ 各种记录值(没有索引的属性)也就是记录的值:温度, 湿度 tags -------- 各种有索引的属性:地区,海拔 series:所有在数据库中的数据,都需要通过图表来展示,而这个series表示这个表里面的数据,可以在图表上画成几条线:通过tags排列组合算出来。
# 增 1,通过命令行 use testDB insert weather,altitude=1000,area=北 temperature=11,humidity=-4 2,通过Http接口 curl -i -XPOST 'http://localhost:8086/write?db=testDB' --data-binary 'weather,altitude=1000,area=北 temperature=11,humidity=-4' 3,Line Protocol格式 weather,altitude=1000,area=北 temperature=11,humidity=-4 其中: weather : 表名 altitude=1000,area=北 : tag temperature=11,humidity=-4 : field # 删与改 在InfluxDB中并没有提供数据的删除与修改方法。 不过我们可以通过数据保存策略(Retention Policies)来实现删除。 # 查 1,通过命令行 use testDB # 查询最新的三条数据 SELECT * FROM weather ORDER BY time DESC LIMIT 3 2,通过http接口 curl -G 'http://localhost:8086/query?pretty=true' --data-urlencode "db=testDB" --data-urlencode "q=SELECT * FROM weather ORDER BY time DESC LIMIT 3"
# 创建数据库 CREATE DATABASE "db_name" # 显示所有数据库 SHOW DATABASES # 删除数据库 DROP DATABASE "db_name" # 使用数据库 USE mydb # 显示该数据库中的表 SHOW MEASUREMENTS # 创建表 # 直接在插入数据的时候指定表名(weather就是表名) insert weather,altitude=1000,area=北 temperature=11,humidity=-4 # 删除表 DROP MEASUREMENT "measurementName"
InfluxDB没有提供直接删除Points的方法,但是它提供了Retention Policies。 主要用于指定数据的保留时间:当数据超过了指定的时间之后,就会被删除。 # 查看当前数据库的Retention Policies SHOW RETENTION POLICIES ON "testDB" # 创建新的Retention Policies CREATE RETENTION POLICY "rp_name" ON "db_name" DURATION 30d REPLICATION 1 DEFAULT 其中: rp_name:策略名 db_name:具体的数据库名 30d:保存30天,30天之前的数据将被删除 它具有各种时间参数,比如:h(小时),w(星期) REPLICATION 1:副本个数,这里填1就可以了 DEFAULT 设为默认的策略 # 修改Retention Policies ALTER RETENTION POLICY "rp_name" ON db_name" DURATION 3w DEFAULT # 删除Retention Policies DROP RETENTION POLICY "rp_name" ON "db_name"
当数据超过保存策略里指定的时间之后,就会被删除。 如果我们不想完全删除掉,比如做一个数据统计采样:把原先每秒的数据,存为每小时的数据,让数据占用的空间大大减少(以降低精度为代价)。 这就需要InfluxDB提供的:连续查询(Continuous Queries)。 # 当前数据库的Continuous Queries # 这条命令得在命令行下输入,在web管理界面不能显示。 SHOW CONTINUOUS QUERIES # 创建新的Continuous Queries CREATE CONTINUOUS QUERY cq_30m ON testDB BEGIN SELECT mean(temperature) INTO weather30m FROM weather GROUP BY time(30m) END 其中: cq_30m:连续查询的名字 testDB:具体的数据库名 mean(temperature): 算平均温度 weather: 当前表名 weather30m: 存新数据的表名 30m:时间间隔为30分钟 当我们插入新数据之后,可以发现数据库中多了一张名为weather30m(里面已经存着计算好的数据了)。这一切都是通过Continuous Queries自动完成的。 # 删除Continuous Queries DROP CONTINUOUS QUERY <cq_name> ON <database_name>
# 显示用户 SHOW USERS # 创建用户 CREATE USER "username" WITH PASSWORD 'password' # 创建管理员权限的用户 CREATE USER "username" WITH PASSWORD 'password' WITH ALL PRIVILEGES # 删除用户 DROP USER "username"