美文网首页
influxdb - 概念一

influxdb - 概念一

作者: 意大利大炮 | 来源:发表于2022-11-15 23:11 被阅读0次

Point

简单讲插入的一条数据就是一个point,也成为DataPoint,为啥叫point呢,因为时序数据库的数据经常 被展示出来。比如存储的股票的价格,这个信息要被展示成曲线图,构成这个曲线图的是这个股票在每个时间点的价格的数据点,所以存储的每一条数据就经常被称为point

Field

就是字段,一个point里可以有多个字段,比如一个股票在一个时间点有:【最大值mx、最小值min、涨幅avg】三个字段。

Field Key,Field value, Field Set;

Field Key就是你这个Filed的name,比如mx,min,avg就是Field Key,就是我这个Field叫什么名字,那么Value呼之欲出了,value就是我这个Field具体是多少。
Field Set呢?Field Set就是Filed组成的集合。注意这里的Field指的是Field Key和Field Value一起。举个例子:

  • 假设我们有一支股票在两个时刻的信息:


    image.png

那么Field Set就是[(agv:80,min:90,mx:100),(avg:85,min:90,mx:100)]。简单讲就是把所有的Field放在一起就好了,但是这是一个集合,注意,集合!集合的意思就是没有重复,这个去重复的规则是时间不能一样。某个时间点只能有1条数据。

TAG

就是标记,比如我们有两个公司的股票,一个A公司的一个B公司的,存储的信息还是ma、min、avg。

  • 假如A公司在某个时刻的数据为:
insert stock,company=a mx=100,mn=80,avg=85
  • B公司为:
insert stock,company=b mx=100,mn=80,avg=90

这里增加了一个tag,company。用来区分不同的公司。这样方便通过不同的tag值进行查找。

Tag Key/Tag Value/Tag Set

与field 的一样

怎么区分Tag和Field?行协议:Line Procotol

insert payment,device=mobile,product=Notepad,method=credit billed=33,licenses=3i 1434067467100293230

上述语句哪些是tag,哪些是field呢。
其实在insert时是要遵循协议的,这个协议叫做行协议,他规定了一个point是什么样子的:

<measurement>[,<tag-key>=<tag-value>...] <field-key>=<field-value>[,<field2-key>=<field2-value>...] [unix-nano-timestamp]
  • 可以看出来,首先是measurement,你要告诉别人要把数据放到哪个measurement,
  • 然后是tag信息,注意这里的tag:[,<tag-key>=<tag-value>...]
    这个东西首先在一个大括号内,这表示条件表达式。意思是可有可无,也就说一个point可以没有tag。然后如果有,开头第一个必须要使用一个逗号和measurement隔开,这里肯定是英文半角逗号,就是编程常用的,别搞中文逗号进去。逗号之后就是tagk=tagv的模式。tagkv可以有多组,每一组使用逗号隔开。最后一组不用tag。所以如果你有三个tag,写法是这样的:
measurement,tagk1=v1,tagk2=v2,tagk3=v3

这里的第三个tag没有逗号,这里是很重要的,如果你有了,那么influxdb会认为tag没有结束,会继续往后解析tag。

  • 接着是field,
[,<tag-key>=<tag-value>...] <field-key>=<field-value>[,<field2-key>=<field2-value>...]

可以看到,field开始于tag的第一个空格,也就是最后一个tagkv和第一个field要使用空格隔开,如果没有tag,那就是measurement和第一个field使用空格隔开。然后是多组field,每一组都是fieldk=fieldv的模式,中间使用逗号分隔。

  • 最后就是timestamp了

可以看到,timestamp和最后一个field使用的是空格分开。

行协议总结

看完整个行协议我想你对开始提出来的那个sql到底哪些事tag哪些是field有了答案。对于一个point来说,可以有measurement+tag+field+timestamp一起组成。每个组成成分之间,使用的都是空格隔开,在各个组件内部,使用的是逗号隔开。这就是influxDB的行协议。

聚合函数

聚合这个概念可能很多人不是很明白,聚合指的是把多条数据按照某种方式聚合为一条数据。比如我举个简单的例子,求最大值,求最小值,求平均值。这就是聚合。influxDB里面也提供了一些聚合函数,例如求最大值:

select max(mx) from stock

https://blog.csdn.net/weixin_41863129/article/details/119279668

相关文章

网友评论

      本文标题:influxdb - 概念一

      本文链接:https://www.haomeiwen.com/subject/vkjogrtx.html