IoT时代下的时序数据库——InfluxDB

InfluxDB是一款用Go语言编写的开源分布式时序数据库,适用于物联网传感器数据、性能监控及实时分析场景。具备无结构特性、丰富的函数支持及数据存储策略,提供HTTP API和Grafana数据展示。本文介绍其基本概念、特性比较及常用命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、简述

1、InfluxDB是一款用Go语言编写的开源分布式时序、事件和指标数据库,使用 Go 语言编写,无需外部依赖。其设计目标是实现分布式和水平伸缩扩展,是 InfluxData 的核心产品。该数据库现在主要用于存储涉及大量的时间戳数据

2、主要应用于:物联网(Iot)传感器数据,性能监控、应用程序指标、实时分析等场所。

3、特征如下:

– 无结构(无模式):可以是任意数量的列(tags)。

– 可以设置metric的保存时间。

– 支持与时间有关的相关函数(如min、max、sum、count、mean、median等),方便统计。

– 支持存储策略:可以用于数据的删改(influxDB没有提供数据的删除与修改方法)。

– 支持连续查询:是数据库中自动定时启动的一组语句,和存储策略搭配可以降低InfluxDB的系统占用量。

– 原生的HTTP支持,内置HTTP API。

– 支持类似SQL语法。

– 支持设置数据在集群中的副本数。

– 支持定期采样数据,写入另外的measurement,方便分粒度存储数据。

– 自带web管理界面,方便使用(登入方式:http://< InfluxDB-IP >:8083)。

– 支持Grafana画图展示。

注:InfluxDB+Grafana,你就可以写一些简单的程序了,可以只负责写后端逻辑部分,数据都可以存入InfluxDB,然后通过Grafana展示出来。

二、基本概念

1、相比 传统数据库,具体如下:

InfluxDB传统数据库
database数据库
measurement
point表中的一行数据

 

 

 

 

 

表中的数据对应的组成结构,如下:

point属性含义
time数据记录的时间,是主索引(自动生成)
tags各种有索引的属性
fileds各种value值(没有索引的属性)

 

 

 

 

 

tag set:不同的每组tag key和tag value的集合。tag在InfluxDB中会按照字典序排序,不管是tag-key还是tag-value,只要不一致就分别属于两个tag set,

例如:hostname=server01,device=/data和hostname=server02,device=/data就是两个不同的tag set。

field set:每组field key和field value的集合;

retention policy:数据存储策略(默认策略为autogen,永久性保存)InfluxDB没有删除数据操作,规定数据的保留时间达到清除数据的目的,InfluxDB会定期清除过期的数据。

Series:共同retention policy,measurement和tag set的集合。相当于是InfluxDB中一些数据的集合,在同一个database中,retention policy、measurement、tag sets完全相同的数据同属于一个series,同一个series的数据在物理上会按照时间顺序排列存储在一起。

Shard:在InfluxDB中是一个比较重要的概念,它和Retention policy相关联。每一个存储策略下会存在许多shard,每一个shard存储一个指定时间段内的数据,并且不重复,例如7点-8点的数据落入shard0中,8点-9点的数据则落入shard1中。每一个shard都对应一个底层的tsm存储引擎,有独立的 cache、wal、tsm file。

注意:

  • tag 只能为字符串类型
  • field 类型无限制
  • 不支持join
  • 支持连续查询操作(汇总统计数据):CONTINUOUS QUERY
  • 配合Telegraf服务(Telegraf可以监控系统CPU、内存、网络等数据)
  • 配合Grafana服务(数据展现的图像界面,将influxdb中的数据可视化)

2、InfluxDB和OpentsDB比较

特性InfluxDBOpentsDB
单机部署部署简单、无依赖需要搭建 Hbase,创建 TSD 数据表,配置 JAVA 等
集群开源版本没有集群功能集群方案成熟
资源占用cpu 消耗更小,磁盘占用更小资源消耗相比更多
存储类型TSM基于HBase存储时序数据(LSM)
存储特点同一数据源的tags不再冗余存储 ;列式存储,独立压缩存在很多无用的字段;无法有效的压缩;聚合能力弱
性能查询更快,数据汇聚分析较快数据写入和存储较快,但查询和分析能力略有不足
开发版本升级快,但架构简单,类SQL语言(InfluxQL)易开发API较为丰富,版本较为稳定

 

 

 

 

 

 

 

 

三、常用命令

-- 查看所有的数据库
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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Mr.Qubb

你的鼓励是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值