influxDB1.x

influxDB1.x,第1张

InfluxDB(1.x)简介

InfluxDB用Go语言编写的一个开源分布式时序、事件和指标数据库,用于处理海量写入与负载查询。InfluxDB旨在用作涉及大量时间戳数据的任何用例(包括DevOps监控,应用程序指标,物联网传感器数据和实时分析)的后端存储。

InfluxDB特点 为时间序列数据专门编写的自定义高性能数据存储。 TSM引擎具有高性能的写入和数据压缩Golang编写,没有其它的依赖提供简单、高性能的写入、查询 http api支持类sql查询语句tags可以索引序列化,提供快速有效的查询数据保存策略(Retention policies)自动处理过期数据连续查询(Continuous queries)自动聚合,提高查询效率 与传统数据库中的名词做比较
influxdb传统数据库
database数据库
measurement数据库中的表
points表里面的一行数据
InfluxDB中独有的一些念概

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。
主要用于指定数据的保留时间:当数据超过了指定的时间之后,就会被删除

查看当前数据库的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 设为默认的策略

修改Retention Policies
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 Queries
SHOW 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秒

删除Continuous Queries
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

见代码

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/990914.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存