从零到一:influxdb时序性数据库的基本概念与操作指南

2023-12-13 23:20:38

目录

?编辑

引言

数据库(database)

创建数据库

删除数据库

进入数据库

展示influxdb中所有数据库

测量(measurement)

写入测量

展示测量

总结


引言

InfluxDB是一个开源的时序数据库,专门设计用于处理时间序列数据。它是由InfluxData公司开发的,并且被广泛用于监控、分析和存储具有时间戳的数据,例如应用程序指标、系统性能数据、传感器数据等。以下是InfluxDB的一些关键特点和概念:

  1. 时序数据库: InfluxDB专注于存储和查询时间序列数据,这使得它非常适合处理按时间顺序生成的数据流,如传感器数据、日志文件、应用程序指标等。

  2. 数据模型: InfluxDB采用了一种灵活的数据模型,其中数据被组织成测量(Measurements)、标签(Tags)、字段(Fields)和时间戳。这种模型使用户能够高效地存储和查询不同类型的时间序列数据。

    • 测量(Measurements): 表示一类相似的时间序列数据。
    • 标签(Tags): 用于标识和过滤数据,提供了额外的元数据。标签是键值对的形式,附加在测量上。
    • 字段(Fields): 包含实际的数据值,可以是数字、字符串或布尔类型。
    • 时间戳: 表示数据点生成的时间。
  3. 查询语言: InfluxDB使用类似于SQL的查询语言(InfluxQL),允许用户执行各种查询、过滤和聚合操作。用户可以根据时间范围、标签等条件来检索数据。

  4. 连续查询和聚合: InfluxDB支持连续查询,允许用户定期计算和存储聚合数据,以加速后续查询。这对于处理大量数据并提供实时分析非常有用。

  5. 保留策略: 用户可以定义数据的保留策略,以控制存储在数据库中的数据的保留时间。这有助于有效地管理存储空间。

  6. 插件和集成: InfluxDB具有丰富的插件生态系统,可以与各种其他工具和系统集成,如Grafana、Telegraf、Kapacitor等,以提供更全面的解决方案。

  7. 集群支持: InfluxDB具有内置的集群支持,可以横向扩展以处理大规模的数据。

  8. Telegraf: Telegraf是InfluxDB的插件驱动的代理,用于从各种源收集数据,并将其写入InfluxDB。它是一个开源项目,支持多种输入和输出插件。

  9. 开源和社区支持: InfluxDB是开源的,拥有活跃的社区,用户可以在GitHub上找到其源代码和文档。

官网链接:InfluxDB | InfluxData

数据库(database)

创建数据库

create database <database_name>

这里<database_name>应该替换为你的数据库名称

删除数据库

drop database <database_name>

进入数据库

use <database_name>

展示influxdb中所有数据库

show databases;

测量(measurement)

结构: measurement 由以下组成:

  • 名称(Name,可以理解为关系型数据库中的表名称): measurement 的名称标识了存储的数据类型或事件。例如,一个气象站可能有一个 measurement 名称为 "weather",用于存储与天气相关的数据。
  • 标签(Tags,可以理解为关系型数据库中的索引列): 可选的标签是键值对,用于为数据点添加元数据,以便更容易过滤和查询。标签通常用于标识数据的来源或其他维度信息。
  • 字段(Fields,可以理解为关系型数据库中的非索引字段,主要用来存储数据): 字段包含实际的数值或测量数据。每个字段都有一个名称和相应的数值。字段的类型可以是整数、浮点数、字符串等
  • 时间戳(Time,可以理解为关系型数据库中的主键,可以自己生成、也可以由influxdb自动生成):表示数据点生成的时间。

写入测量

influxdb在插入数据的时候不需要像关系型数据库一样先创建表,在插入数据的时候制定measurement的名字会自动创建相应的measurement

INSERT measurement_name,tag_key=tag_value field_key=field_value

例如:

INSERT weather,location=us-west temperature=75,humidity=40

展示测量

show measurements
-- 类似与mysql中的show tables;

查询测量

  1. 基本查询:

    SELECT * FROM <measurement_name>
  2. 范围查询:

    SELECT * FROM measurement_name WHERE time > start_time AND time < end_time

    例如:

    SELECT * FROM weather WHERE time > '2023-01-01T00:00:00Z' AND time < '2023-01-02T00:00:00Z'

    注意如果插入的时候未自定义时间戳,则无法按照国际时间进行时间戳查询,需要进行计算机时间纳秒转换。

  3. 选择查询:

    SELECT field1, field2 FROM measurement_name

    例如:

    SELECT temperature, humidity FROM weather

  4. 条件查询:

    SELECT * FROM measurement_name WHERE tag_key = 'tag_value' AND field_key > 50

    例如:

    SELECT * FROM weather WHERE location = 'us-west' AND temperature > 70

聚合函数:

SELECT COUNT(field_key) FROM measurement_name WHERE time > start_time GROUP BY time(interval), tag_key

例如:

SELECT COUNT(temperature) FROM weather WHERE time > '2023-01-01T00:00:00Z' GROUP BY time(1h), location

总结

InfluxDB是一款专为处理时间序列数据而设计的开源时序数据库。其核心概念包括测量(Measurements)、标签(Tags)、字段(Fields)和时间戳,这些元素共同构建了灵活而高效的数据存储和查询系统。测量代表一类相似的时间序列数据,而标签和字段则提供了元数据和实际数值的存储。时间戳则用于表示数据点生成的时间。通过插入数据时自动创建测量,InfluxDB简化了数据库结构的管理。

文章来源:https://blog.csdn.net/weixin_54703767/article/details/134982576
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。