时序数据库InfluxDB介绍

时序数据库InfluxDB介绍

InfluxDB可以用来监控数据统计,每毫秒记录电脑内存使用情况,根据统计的数据结合图形化界面工具制作内存使用情况折线图,比如Grafana。InfluxDB适用于DevOps监控,应用程序指标,物联网传感器数据和实时分析的后端存储。使用pip install influxdb安装客户端。

1、什么是InfluxDB

InfluxDB是开源时序型数据,着力于高性能地查询与存储时序型数据。InfluxDB广泛应用于监控数据、实时数据等场景。

特点

(1)为时间序列数据专门编写的自定义高性能数据存储,TSM引擎具有高性能的写入和数据压缩

(2)采用Golang语言编写,没有其他依赖;

(3)提供高性能写入、查询HTTP API内置HTTP支持,支持类SQL查询语句;

(4)tags可以索引序列化,提供快速有效的查询;

(5)Retention policies自动处理过期数据;

(6)无结构schemaless,可以是任意数量的列;

(7)提供了min,max,sum,count,mean,median等一系列函数,方便统计;

(8)Continuous queries自动聚合,提供查询效率。

特性

(1)时间序列:可以使用与时间有关的函数;

(2)度量:可以实时对大量数据进行计算;

(3)事件:支持任意数量的事件数据。

2、InfluxDB对比MySQL

概念MySQLInfluxDB
数据库databasedatabase
tablemeasurement(测量; 度量)
columntag(带索引的,非必须)、field(不带索引)、timestemp(唯一主键)

(1)InfluxDB相关概念

  • 数据库:database
  • 数据库中的表:measurement
  • 系列:series(表中的额数据可以在图表中华城几条线,线条个数通过tags排列组合计算出来)。
  • 表中的一行数据:point,由时间戳time(主索引,自动生成)、数据field(必须存在)、标签tags(可选的有索引的属性)组成。tag只能是字符串类型,field类型无限制,不支持json。
  • 下载InfluxDBchronograf,配置参考

(2)常用InfluxQL

-- 查看所有的数据库
show databases;
-- 使用特定的数据库
use database_name;
-- 查看所有的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
-- 查看一个measurement中所有的保存策略(可以有多个,一个标识为default)
show retention policies;

3、python访问InfluxDB示例

from influxdb import InfluxDBClient
import time,math,random
while True:
    a = psutil.virtual_memory().percent  #内存占用率
    b = psutil.cpu_percent(interval=1.0) #cpu占用率
    json_body = [
        {
            "measurement": "cpu_load_short",
            "tags": {
                "host": "localhost",
                "region": "us-east"
            },
            "time": "2022-11-10T23:00:00Z",
            "fields": {
                "cpu": b,
                "mem": a
            }
        }
    ]
    client = InfluxDBClient('localhost', 8086, 'root', 'root', 'xxyyxx')
    client.create_database('xxyyxx')
    client.write_points(json_body)
    result = client.query('select value from cpu_load_short;')
    print("Result: {0}".format(result))
    time.sleep(2)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

快乐江小鱼

知识创造财富,余额还是小数

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值