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
网友评论