InfluxDB用Go语言编写的一个开源分布式时序、事件和指标数据库,用于处理海量写入与负载查询。InfluxDB旨在用作涉及大量时间戳数据的任何用例(包括DevOps监控,应用程序指标,物联网传感器数据和实时分析)的后端存储。
InfluxDB特点 为时间序列数据专门编写的自定义高性能数据存储。 TSM引擎具有高性能的写入和数据压缩Golang编写,没有其它的依赖提供简单、高性能的写入、查询 http api支持类sql查询语句tags可以索引序列化,提供快速有效的查询数据保存策略(Retention policies)自动处理过期数据连续查询(Continuous queries)自动聚合,提高查询效率 与传统数据库中的名词做比较influxdb | 传统数据库 |
---|---|
database | 数据库 |
measurement | 数据库中的表 |
points | 表里面的一行数据 |
Point由时间戳(time)、数据(field)、标签(tags)组成。
Point属性 | 传统数据库中的概念 |
---|---|
time | 每个数据记录时间,是数据库中的主索引(会自动生成) |
fields | 字段 |
tags | 索引字段 |
InfluxDB用户管理
# 显示用户
SHOW USERS
# 创建用户
CREATE USER "username" WITH PASSWORD 'password'
# 创建管理员权限的用户
CREATE USER "username" WITH PASSWORD 'password' WITH ALL PRIVILEGES
# 删除用户
DROP USER "username"
InfluxDBB基本 *** 作
基本 *** 作
#创建数据库
create database "db_name"
#显示所有的数据库
show databases
#删除数据库
drop database "db_name"
#使用数据库
use db_name
#显示该数据库中所有的表
show measurements
#创建表,直接在插入数据的时候指定表名
insert test,host=127.0.0.1,monitor_name=test count=1
#删除表
drop measurement "measurement_name"
增
通过命令行
use testDB
#tag必须是字符串类型所以中文可以不加引号 field如果是中文必须带引号
insert weather,altitude=1000,area=北 temperature=11,humidity=-4
通过Http接口
curl -curl i -XPOST 'http://localhost:8086/write?db=testDB' --data-binary 'weather,altitude=1000,area=北 temperature=11,humidity=-4'
查
通过命令行
use testDB
# 查询最新的三条数据
SELECT * FROM weather ORDER BY time DESC LIMIT 3
#时间格式
precision rfc3339
#注意时间与中国时间差8小时 windows环境需要安装golang环境后在查询语句后加TZ('Asia/Shanghai') 或者在代码中手动-8小时
select * from weather where time >='2022-02-25T10:00:00Z'
通过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"
删
where中的条件,只允许根据时间来进行删除 *** 作
delete from weather where time=1645775285847244500
改
在InfluxDB中并没有提供数据的修改方法。
数据保存策略(Retention Policies)InfluxDB没有提供直接删除Points的方法,但是它提供了Retention Policies。
主要用于指定数据的保留时间:当数据超过了指定的时间之后,就会被删除
SHOW RETENTION POLICIES ON "test"
创建新的Retention Policies
CREATE RETENTION POLICY "test_rp" ON "test" DURATION 30d REPLICATION 1 DEFAULT
rp_name:策略名
db_name:具体的数据库名
30d:保存30天,30天之前的数据将被删除
它具有各种时间参数,比如:h(小时),w(星期)
REPLICATION 1:副本个数,这里填1就可以了
DEFAULT 设为默认的策略
ALTER RETENTION POLICY "rp_name" ON db_name" DURATION 3w DEFAULT
ALTER RETENTION POLICY "test_rp" ON test" DURATION 3w DEFAULT
删除Retention Policies
DROP RETENTION POLICY "rp_name" ON "db_name"
DROP RETENTION POLICY "test_rp" ON "test"
连续查询(Continuous Queries)
当数据超过保存策略里指定的时间之后,就会被删除。
如果我们不想完全删除掉,比如做一个数据统计采样:把原先每秒的数据,存为每小时的数据,让数据占用的空间大大减少(以降低精度为代价)。
这就需要InfluxDB提供的:连续查询(Continuous Queries)
当前数据库的Continuous QueriesSHOW CONTINUOUS QUERIES
创建新的Continuous Queries
CREATE CONTINUOUS QUERY cq_30s ON test BEGIN SELECT mean(temperature) INTO weather30s FROM weather GROUP BY time(30s) END
cq_30s:连续查询的名字
test:具体的数据库名
mean(temperature): 算平均温度
weather: 当前表名
weather30s: 存新数据的表名
30s:时间间隔为30秒
DROP CONTINUOUS QUERY ON
DROP CONTINUOUS QUERY cq_30s ON test
InfluxDB常用函数 COUNT() 函数:返回一个field中的非空值数量MEAN() 函数:求平均值,字段类型必须是整型或浮点型SPREAD()函数:返回字段的最小值和最大值的差值,字段类型必须是整型或浮点型SUM()函数:求和,字段类型必须是整型或浮点型TOP()函数:返回字段中最大的前N个值,字段必须是整型或浮点型BOTTOM()函数:返回字段中最小的N个值,使用方法同上MAX()函数:返回字段中最大的值,该字段类型必须是长整型,float64,或布尔类型MIN()函数:返回一个字段中的最小值。该字段类型必须是长整型,float64,或布尔类型。
用法同MAX()
Springboot集成InfluxDB
见代码
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)