跳过正文

influx初学

·119 字·1 分钟
Chuck Chan
作者
Chuck Chan
分享技术、思考与生活

1. introduce
#

InfluxDB是一个用于存储和分析时间序列数据的开源数据库。 主要特性有:

  • 内置HTTP接口,使用方便
  • 数据可以打标记,这样查询可以很灵活
  • 类SQL的查询语句
  • 安装管理很简单,并且读写数据很高效
  • 能够实时查询,数据在写入时被索引后就能够被立即查出

2. concept
#

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   		3                     28                    1                 perpetua
2015-08-18T05:54:00Z      2                     11                    2                 langstroth
2015-08-18T06:00:00Z      1                     10                    2                 langstroth
2015-08-18T06:06:00Z      8                     23                    2                 perpetua
2015-08-18T06:12:00Z      7                     22                    2                 perpetua

其中census是measurement,butterflies和honeybees是field key,location和scientist是tag key

  • measurement可以理解为表名,这里的measurement为census,可以表示为统计表。
  • field为列,butterflieshoneybees 都是列,称为fields,fields由field key和field value组成。field key(butterflieshoneybees)都是字符串,他们存储元数据;field key butterflies告诉我们蝴蝶的计数从12到7;field key honeybees告诉我们蜜蜂的计数从23变到22。field value就是你的数据,它们可以是字符串、浮点数、整数、布尔值,因为InfluxDB是时间序列数据库,所以field value总是和时间戳相关联。field是InfluxDB数据结构所必需的一部分——在InfluxDB中不能没有field。还要注意,field是没有索引的。如果使用field value作为过滤条件来查询,则必须扫描其他条件匹配后的所有值。因此,这些查询相对于tag上的查询(下文会介绍tag的查询)性能会低很多。 一般来说,字段不应包含常用来查询的元数据。
  • 样本数据中的最后两列(locationscientist)就是tag。 tag由tag key和tag value组成。tag key和tag value都作为字符串存储,并记录在元数据中。示例数据中的tag key是locationscientistlocation有两个tag value:12scientist还有两个tag value:langstrothperpetua
  • series是共同retention policy,measurement和tag set的集合
  • point简单地理解为时间轴上的一个数据点,即一行数据。

3. grammar
#

读取数据 -> InfluxQL的select语句来自于SQL中的select形式:

SELECT <stuff> FROM <measurement_name> WHERE <some_conditions>

写入数据 -> InfluxDB的行协议是一种写入数据点到InfluxDB的文本格式

3. retention policy
#

3. InfluxDB不是一个crud数据库
#

单拿一个point的数据来看,例如:在星期二UTC时间为12:38:35时根据某个用户的电脑CPU利用率为12%,这个很难得出什么结论。只有跟其他的series结合并可视化时,它变得更加有用。随着时间的推移开始显现的趋势,是我们从这些数据里真正想要看到的。另外,时间序列数据通常是一次写入,很少更新。

结果是,由于优先考虑create和read数据的性能而不是update和delete,InfluxDB不是一个完整的CRUD数据库,更像是一个CR-ud。

3.
#