Influx Sql系列教程四:series/point/tag/field

influxdb中的一条记录point,主要可以分为三类,必须存在的time(时间),string类型的tag,以及其他成员field;而series则是一个measurement中保存策略和tag集构成;本篇教程将介绍一些这几个概念

1. tag

influxdb数据结构中记录元数据(metadata)的kv对,不要求必须存在,tag key/value 都是字符串类型,而且会建立索引,因此基于tag进行查询效率比单纯的基于field进行查询是要高的;后续的一些sql也会发现,某些查询只能基于tag

重点提炼

  • tag key/value: 字符串类型
  • 有索引

常见的查询tag的语法如下

show tag keys on <database> from <measurement>

下面给出一个实际的例子, insert语句后面会说到,我们塞入的一条数据,指定name为tag,另外三个为field

> insert yhh,name=一灰灰 age=26,id=10,blog="http://blog.hhui.top"
> select * from yhh
name: yhh
time                age blog                 id name
----                --- ----                 -- ----
1563888301725811554 26  http://blog.hhui.top 10 一灰灰
> show tag keys from yhh
name: yhh
tagKey
------
name

上面是获取tag keys的查询方式,下面介绍下查询tag values的使用姿势

show tag values on <database> from <measurement> with KEY [ [<operator> "<tag_key>" | <regular_expression>] | [IN ("<tag_key1>","<tag_key2")]] [WHERE <tag_key> <operator> ['<tag_value>' | <regular_expression>]] [LIMIT_clause] [OFFSET_clause]
  • with key 后面带上查询条件,必须存在,如查询汇率表中,base_symbol有哪些
  • 连接符号可以为:等于 =, 不等于:!=, <>, 正则:=~, !~
> show tag values from currency_rate with key="base"
name: currency_rate
key  value
---  -----
base AUD
base CAD
base CNY
base DKK
base EUR
base GBP
base HKD
base IDR
base INR
base JPY
base KRW
base NZD
base PHP
base PLN
base RUB
base SGD
base THB
base TRY
base UAH
base USD

2. field

成员,也可以理解为一条记录中,不需要建立索引的数据,一般来说,不太会有参与查询语句建设的可以设置为field

区别与tag,field有下面几个特性

  • 类型可以为:浮点,字符串,整形
  • 没有索引

查看field key的语句如下

show field keys on <database> from <measurement>

下面演示一下查看的姿势

> show field keys from yhh
name: yhh
fieldKey fieldType
-------- ---------
age      float
blog     string
id       float

3. point

https://docs.influxdata.com/influxdb/v1.7/concepts/glossary/#point

在influxdb中,你可以将一条mysql中的记录简单的理解为一个point,它由四个组件

  • measurement
  • tag set
  • field set
  • timestamp

每个point是根据 timestamp + series 来保证唯一性。

关于point可以怎么理解呢?因为influxdb是时序数据库,简单来讲就是每个数据都是时间轴上的一个点,这些数据与时间强相关,其中的tag用来检索,field用来记录一些信息,measurement用来将相同类型的数据归集

4. series

https://docs.influxdata.com/influxdb/v1.7/concepts/glossary/#series

上面说到point的唯一性时,说到了series,这个概念又是啥呢?

官方的说明是:

The collection of data in the InfluxDB data structure that share a measurement, tag set, and retention policy.

influxdb中measurement + tags set + retention policy 组成的数据集合

直接看定义可能有点懵逼,官方提供查看series的命令如下

show series on <database> from <measurement>

下面是几个实例辅助说明

> insert yhh,name=一灰灰 age=26,id=10,blog="http://blog.hhui.top"
> insert yhh,name=一灰灰 age=30,id=11,blog="http://blog.hhui.top"
> select * from yhh;
name: yhh
time                age blog                 id name
----                --- ----                 -- ----
1563889538654374538 26  http://blog.hhui.top 10 一灰灰
1563889547738266214 30  http://blog.hhui.top 11 一灰灰
> show series on test from yhh
key
---
yhh,name=一灰灰
>

我们插入两个pointyhh这个measurement中,但是他们的tag相同都是一灰灰,此时我们查看series时,发现只有一条yhh,name=一灰灰,包含measurementtag set

接下来我们试一下,新增一个tag,series是否会增加呢?

> insert yhh,name=一灰灰2 age=30,id=11,blog="http://blog.hhui.top"
> insert yhh,name=一灰灰3,phone=110 age=30,id=11,blog="http://blog.hhui.top"
> select * from yhh
name: yhh
time                age blog                 id name phone
----                --- ----                 -- ---- -----
1563889538654374538 26  http://blog.hhui.top 10 一灰灰
1563889547738266214 30  http://blog.hhui.top 11 一灰灰
1563889704754695002 30  http://blog.hhui.top 11 一灰灰2
1563889723440000821 30  http://blog.hhui.top 11 一灰灰3 110
> show series on test from yhh
key
---
yhh,name=一灰灰
yhh,name=一灰灰2
yhh,name=一灰灰3,phone=110

官方定义中series还与保存策略有关,前面两个case都是默认的保存测录,我们现在在新的保存策略中测试

> create retention policy "1D" on test duration 1d replication 1
> insert into "1D" yhh,name=一灰灰4 age=26,id=10,blog="http://blog.hhui.top"
> select * from yhh;
name: yhh
time                age blog                 id name phone
----                --- ----                 -- ---- -----
1563889538654374538 26  http://blog.hhui.top 10 一灰灰
1563889547738266214 30  http://blog.hhui.top 11 一灰灰
1563889704754695002 30  http://blog.hhui.top 11 一灰灰2
1563889723440000821 30  http://blog.hhui.top 11 一灰灰3 110
> select * from "1D".yhh
name: yhh
time                age blog                 id name phone
----                --- ----                 -- ---- -----
1563890614849474879 26  http://blog.hhui.top 10 一灰灰4
> show series
key
---
yhh,name=一灰灰
yhh,name=一灰灰2
yhh,name=一灰灰3,phone=110
yhh,name=一灰灰4

插入到"1D"保存策略中的point也构成了一个series: yhh,name=一灰灰4

注意

show series预计中还支持基于tagwhere查询,下面是一个简单的示例

show series from yhh where "name" = '一灰灰'
key
---
yhh,name=一灰灰
> show series from yhh where phone != ''
key
---
yhh,name=一灰灰3,phone=110

II. 其他

0. 系列博文

参考博文

1. 一灰灰Blog: https://liuyueyi.github.io/hexblog

一灰灰的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛

2. 声明

尽信书则不如,已上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激

3. 扫描关注

一灰灰blog

从整体上看,您的配置文件看起来合理,并包含了多个关键设置项。以下是针对每个部分的一些分析和建议: ### 1. **InfluxDB 配置** ```yaml influx: url: http://192.168.3.60:8083 database: mydb retentionPolicy: autogen username: nic password: 123456 ``` - `url` 设置为 `http://192.168.3.60:8083`,这表明 InfluxDB 正在 IP 地址 `192.168.3.60` 上监听端口 `8083`。 - `username` 和 `password` 分别指定用户凭据为 `nic` 和密码 `123456`。 - 您选择了默认的保留策略 `autogen`,这是合理的初始选择。 **注意点:** - 确保目标机器上的防火墙规则允许访问该 URL 和端口。 - 如果未来需要更高的安全性,则应考虑启用 HTTPS 支持并对认证机制加强保护措施(如使用 OAuth 或 Token 认证)。 --- ### 2. **Spring Boot Server Port** ```yaml server: port: 8083 ``` - 您将 Spring Boot 应用程序绑定到了端口 `8083`。 - 这是一个有效的做法,但在生产环境中,请避免与其他服务冲突,并确认所选端口未被占用。 --- ### 3. **MySQL 数据源配置** ```yaml spring: datasource: username: root password: q12w3e4r url: jdbc:mysql://127.0.0.1:9991/wm_admin?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2b8&rewriteBatchedStatements=true driver-class-name: com.mysql.cj.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource initialSize: 1 minIdle: 1 maxActive: 1 maxWait: 50000 timeBetweenEvictionRunsMillis: 30000 minEvictableIdleTimeMillis: 300000 validationQuery: SELECT 1 FROM DUAL testWhileIdle: true testOnBorrow: false testOnReturn: false poolPreparedStatements: true filters: stat,wall maxPoolPreparedStatementPerConnectionSize: 20 useGlobalDataSourceStat: true connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500 ``` 这部分定义了一个基于 Alibaba Druid 的 MySQL 数据池连接。以下是一些需要注意的地方: - 使用了 JDBC 协议并通过 `jdbc:mysql:` 方式指定了数据库位置及附加参数。 - 包含丰富的监控选项,例如慢查询日志、合并 SQL 统计等。 - 参数限制较严格,尤其是最大活动连接数只设成了 `maxActive: 1` ,可能会成为瓶颈问题所在。对于高并发场景来说,通常会将其值提升至更高水平(例如 20 到 100),具体取决于硬件资源情况以及业务需求量级大小差异程度的不同而有所区别对待而已啦! --- ### 4. **MyBatis Mapper Locations** ```yaml mybatis: mapper-locations: classpath:mapperxml/*.xml ``` - 映射器 XML 文件位于 `classpath:mapperxml/` 目录下,所有以 `.xml` 结尾的文件都会自动加载进来用于解析持久化层逻辑描述内容信息数据结构特征等方面的需求满足与否取决于实际情况怎样才行啊亲~ --- ### 5. **Socket Server Ports** ```yaml socketServerPort: port001: 54321 port002: 33333 ``` 这两行代码似乎是在声明两个自定义套接字服务器侦听的服务端口号分别是 `54321` 和 `33333` 。不过如果想让这些数字真正生效的话,则还必须额外编写相应的 Java Socket 编程片段去实际开启对应进程实例才可以哟~ --- ### 总结评价 总体而言,这份 YAML 配置非常全面且详细地涵盖了多种不同类型的数据存储媒介之间的协同工作关系构建思路框架体系等等一系列复杂难懂的专业术语表达出来的意思其实就是说它很不错咯哈哈哈~但是也有一些小地方值得进一步探讨改进之处哦比如说那个 MySQL 最大活跃线程数量是不是有点太少了呀?还有关于那些所谓的“安全加密传输协议”之类的玩意儿貌似也没有涉及到耶!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一灰灰blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值