InfluxDB使用教程:InfluxDB中数据结构概念

前言:

在前面两讲中,介绍了InfluxDB的安装和使用,这一讲来介绍InfluxDB中数据结构的基本概念,以及使用中要注意问题,。

一. InfluxDB基本数据结构

数据结构 含义
database 数据库
measurement 数据库中的表
retention policy 保存策略:让InfluxDB能够知道可以丢弃哪些数据,设置数据自动清除时间,从而更高效的处理数据
points 表里面的一行数据

二.points的数据结构介绍:

数据结构 含义
time 每个数据记录时间,是数据库中的主索引(会自动生成)
fields 各种记录值(没有索引的属性)也就是记录的值
tags 各种有索引的属性
series 表示这个表里面的数据,可以在图表上画成几条线:通过tags排列组合算出来。

特别提醒:

  1. time 相当于表的主键,当一条数据的time和tags完全相同时候,新数据会替换掉旧数据,旧数据则丢失(线上环境尤其要注意)。
  2. tags 和time可以作为排序字段,field则不可以。如:ORDER BY time DESC
  3. 设置了保存策略后,若此保存策略为设置成默认保存策略(一个库可以有多个保存策略),则在查询时,表名(measurement)前,要加上保存策略。
    举例:
    保留策略为two-hour不是默认保存策略,则查询时候,需要指定其保存策略。
select * from two-hour.measure where time > now() -10
  1. fields和tags的字段类型是由存入的第一条记录值决定的。
    举例:
  • 如第一条记录fieldA的值为2,想插入一条记录,fieldA字段值为3.14的值,就会报错。因为该字段已经被初始化为整型了。
  • 如第一条记录fieldB存储的是3,想插入一条记录,fieldB字段值为hello,则也会报错,该字段已被初始化成整型,不能再写入字符串了。

三.如何统一InfluxDB数据类型,防止丢失数据?

建议只使用字符串类型和浮点类型,把所有的整型,长整型,浮点型,双精度型统一转为小数格式的浮点类型,再写入数据库,字符串类型的不用做转换,这样就不会出现插入数据失败和丢失数据了。

你可能感兴趣的:(InfluxDB)