目录
编辑
引言
数据库(database)
创建数据库
删除数据库
进入数据库
展示influxdb中所有数据库
测量(measurement)
写入测量
展示测量
总结
引言
InfluxDB是一个开源的时序数据库,专门设计用于处理时间序列数据。它是由InfluxData公司开发的,并且被广泛用于监控、分析和存储具有时间戳的数据,例如应用程序指标、系统性能数据、传感器数据等。以下是InfluxDB的一些关键特点和概念:
-
时序数据库: InfluxDB专注于存储和查询时间序列数据,这使得它非常适合处理按时间顺序生成的数据流,如传感器数据、日志文件、应用程序指标等。
-
数据模型: InfluxDB采用了一种灵活的数据模型,其中数据被组织成测量(Measurements)、标签(Tags)、字段(Fields)和时间戳。这种模型使用户能够高效地存储和查询不同类型的时间序列数据。
- 测量(Measurements): 表示一类相似的时间序列数据。
- 标签(Tags): 用于标识和过滤数据,提供了额外的元数据。标签是键值对的形式,附加在测量上。
- 字段(Fields): 包含实际的数据值,可以是数字、字符串或布尔类型。
- 时间戳: 表示数据点生成的时间。
-
查询语言: InfluxDB使用类似于SQL的查询语言(InfluxQL),允许用户执行各种查询、过滤和聚合操作。用户可以根据时间范围、标签等条件来检索数据。
-
连续查询和聚合: InfluxDB支持连续查询,允许用户定期计算和存储聚合数据,以加速后续查询。这对于处理大量数据并提供实时分析非常有用。
-
保留策略: 用户可以定义数据的保留策略,以控制存储在数据库中的数据的保留时间。这有助于有效地管理存储空间。
-
插件和集成: InfluxDB具有丰富的插件生态系统,可以与各种其他工具和系统集成,如Grafana、Telegraf、Kapacitor等,以提供更全面的解决方案。
-
集群支持: InfluxDB具有内置的集群支持,可以横向扩展以处理大规模的数据。
-
Telegraf: Telegraf是InfluxDB的插件驱动的代理,用于从各种源收集数据,并将其写入InfluxDB。它是一个开源项目,支持多种输入和输出插件。
-
开源和社区支持: 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;
查询测量
-
基本查询:
SELECT * FROM <measurement_name>
-
范围查询:
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'
注意如果插入的时候未自定义时间戳,则无法按照国际时间进行时间戳查询,需要进行计算机时间纳秒转换。
-
选择查询:
SELECT field1, field2 FROM measurement_name
例如:
SELECT temperature, humidity FROM weather
-
条件查询:
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简化了数据库结构的管理。