InfluxDB学习总结和python操作数据库案例
程序员文章站
2022-07-02 11:35:08
Influxdb学习总结一、InfluxDB简介二、和Mysql数据库比较1、注意点2、数据示例三、常用InfluxQL1、基本命令2.添加删除语句3、数据保留策略四、Python操作InfluxDB数据库一、InfluxDB简介InfluxDB(时序数据库),它是由Go语言编写,着力于高性能地查询与存储时序型数据。常用的一种使用场景:监控数据统计。每毫秒记录一下电脑内存的使用情况,然后就可以根据统计的数据,利用图形化界面(InfluxDB V1一般配合Grafana)制作内存使用情况的折线图;I...
Influxdb学习总结
一、InfluxDB简介
InfluxDB(时序数据库),它是由Go语言编写,着力于高性能地查询与存储时序型数据。常用的一种使用场景:监控数据统计。每毫秒记录一下电脑内存的使用情况,然后就可以根据统计的数据,利用图形化界面(InfluxDB V1一般配合Grafana)制作内存使用情况的折线图;InfluxDB是一个由InfluxData开发的开源时序型数据。InfluxDB被广泛应用于存储系统的监控数据,IoT行业的实时数据等场景。
二、和Mysql数据库比较
概念 | Mysql | InfluxDB |
---|---|---|
数据库 | database | database |
表 | table | measurement |
列 | column | tag(带索引的,非必须)、field(不带索引)、timestemp(唯一主键) |
1、注意点
- tag 只能为字符串类型
- field 类型无限制
- 不支持join
- 支持连续查询操作(汇总统计数据):CONTINUOUS QUERY
- 配合Telegraf服务(Telegraf可以监控系统CPU、内存、网络等数据)
- 配合Grafana服务(数据展现的图像界面,将influxdb中的数据可视化)
2、数据示例
其中census是measurement,butterflies和honeybees是field key,location和scientist是tag key
name: census
————————————
time butterflies honeybees location scientist
2015-08-18T00:00:00Z 12 23 1 langstroth
2015-08-18T00:00:00Z 1 30 1 perpetua
2015-08-18T00:06:00Z 11 28 1 langstroth
2015-08-18T00:06:00Z 11 28 2 langstroth
三、常用InfluxQL
1、基本命令
-- 创建数据库
create database 数据库名称;
-- 查看所有的数据库
show databases;
-- 使用特定的数据库
use database_name;
-- 创建表
create measurement 表名;
-- 查看所有的measurement
show measurements;
-- 查询10条数据
select * from measurement_name limit 10;
-- 数据中的时间字段默认显示的是一个纳秒时间戳,改成可读格式
precision rfc3339; -- 之后再查询,时间就是rfc3339标准格式
-- 或可以在连接数据库的时候,直接带该参数
influx -precision rfc3339
-- 查看一个measurement中所有的tag key
show tag keys
-- 查看一个measurement中所有的field key
show field keys
2.添加删除语句
代码如下(示例):
-- 查询语句
select * from census
-- 添加语句
insert census,location scientist,butterflies honeybees;
-- 删除语句
delete from census where time < "特定时间"
-- 例如:删除30d天前的数据
delete from census where time < now() -30d tz('Asia/Shanghai')
3、数据保留策略
- 声明
InfluxDB的数据保留策略(RP)用来定义数据在InfluxDB中存放的时间,或者定义保存某个期间的数据.
一个数据库可以有多个保留策略, 但每个策略必须是独一无二的.
2.目的
InfluxDB本身不提供数据的删除操作, 因此用来控制数据量的方式就是定义数据保留策略.
因此定义数据保留策略的目的是让InfluxDB能够知道可以丢弃哪些数据, 从而更高效的处理数据.
3.操作
-- 查询数据库策略语句
show retention policies on telegraf
其中属性描述:
- name 名称, 此示例名称为default
- duration 持续时间, 0代表无限制
- shardGroupDuration shardGroup的存储时间, shardGroup是InfluxDB的一个基本存储结构, 应该大于这个时间的数据在查询效率上应该有所降低.
- replicaN 全称是REPLICATION, 副本个数
- default 是否是默认策略
-- 新建策略
CREATE RETENTION POLICY "2_hours" ON "telegraf" DURATION 2h REPLICATION 1 DEFAULT
通过上面的语句可以添加策略, 本例在telegraf库添加了一个2小时的策略, 名字叫做2_hours,duration为2小时, 副本为1, 设置为默认策略.
因为名为default的策略不再是默认策略, 因此, 在查询使用default策略的表时要显示的加上策略名"defalut"
select * from "default".cpu limit 2
--修改策略
ALTER RETENTION POLICY "2_hours" ON "telegraf" DURATION 4h DEFAULT
--删除策略
drop retention POLICY "2_HOURS" ON "telegraf"
四、Python操作InfluxDB数据库
from influxdb import InfluxDBClient
#插入数据
json_body = [
{
"measurement": "table_name", # 表名
"tags": {
"host": "server01",
"region": "us-west"
},
"time": "2009-11-10T23:00:00Z", # 插入的时间必需在数据保留时间范围内,如策略保留时间为7天,则传的时间不能为7天前
"fields": {
"value": 240.64345 #插入的值不能为0
}
},
{
"measurement": "table_name",
"tags": {
"host": "server01",
"region": "us-west"
},
"time": "2018-04-22T011:05:00Z",
"fields": {
"value": 240
}
}
]
client = InfluxDBClient('localhost', 8086, 'root', 'root', 'database')
client.write_points(json_body)
#查询数据
client.query("select * from census")
#删除数据
client.query("delete from census where time < now() -30d tz('Asia/Shanghai')")
其中tz(‘Asia/Shanghai’)调整时区,数据库默认时区时间和北京相差8个小时。
使用tz方法需要引入golang,下面链接介绍。
[添加golang](https://www.cnblogs.com/itdragon/p/11608812.html)
本文地址:https://blog.csdn.net/qq_42529023/article/details/109459863