influxdb - 概念一

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • tag与field区别 tag: 建立索引,不必须,常用作筛选条件field:不建立索引,必须,不推荐用作筛选条件...
    意大利大炮阅读 4,565评论 0 0
  • InfluxDB (时序数据库) 基本概念 InfluxDB(时序数据库),常用的一种使用场景:监控数据统计。每毫...
    王镇_ee87阅读 10,712评论 0 1
  • Influxdb是由Golang 构建的时序数据库,由于由Go语言构建使得其跨平台部署相对方便。用户只需下载其可执...
    小艾咪阅读 30,002评论 1 12
  • 1、InfluxDB 是用Go语言编写的一个开源分布式时序、事件和指标数据库,无需外部依赖。基于时间序列,支持与时...
    SkTj阅读 8,677评论 0 0
  • InfluxDB基本概念小结 InfluxDB作为时序数据库,与传统的关系型数据库相比而言,还是有一些区别的,下面...
    一灰灰blog阅读 4,816评论 0 0