时序数据库:InfluxDB安装与解读

目录

InfluxDB简介

InfluxDB应用场景

InfluxDB特征

InfluxDB版本差异

InfluxDB v1.x

InfluxDB v2.x

InfluxDB数据模型解析

​​​​​​​​​​​​​​InfluxDB存储架构

​​​​​​​​​​​​​​InfluxDB安装


InfluxDB简介

InfluxDB 是一款开源的时间序列数据库,专为处理和分析带有时间戳的数据设计,如监控数据、物联网传感器数据等。它由InfluxData公司开发,使用Go语言编写,具备高效的数据写入与查询性能,支持类SQL查询语言(InfluxQL)。它能够轻松应对高容量时间序列数据的存储与管理,广泛应用于实时分析、监控系统及物联网领域,提供灵活的数据保留策略及强大的聚合功能。

InfluxDB应用场景

InfluxDB 作为一种高效的时间序列数据库,适用于多种应用场景。以下是其主要应用领域:

  1. 实时监控与告警:用于系统、网络及应用程序的性能监控,支持设定复杂的告警规则,实现自动化监控与响应。

  2. 物联网(IoT)数据存储与分析:处理来自传感器和设备的大量时间序列数据,支持快速写入和查询操作,适合实时分析和历史数据分析。

  3. 应用性能监控(APM):追踪和优化应用程序性能,通过收集和分析性能指标来识别瓶颈和提升用户体验。

  4. 业务度量与分析:记录并分析关键业务指标(KPIs),帮助企业做出基于数据驱动的决策。

  5. 工业互联网:在制造业中,用于机器状态监测、预测性维护等,提高生产效率和设备可靠性。

  6. 金融交易分析:处理金融市场中的高频交易数据,支持风险管理和交易策略优化。

InfluxDB特征

  • 时间序列数据:天然支持时间戳数据的存储与查询,适用于随时间变化的数据

  • 高性能:TSM存储引擎提供高速的数据写入与压缩,优化了时序数据的存储和查询效率。

  • Schemaless(无结构):允许灵活的数据模式,每条记录可以有任意数量的列,无需预先定义表结构。

  • Retention Policies:自动管理数据生命周期,可设定数据保留策略,自动删除过期数据。

  • Continuous Queries:自动执行的聚合查询,定期计算并存储汇总数据,提高查询效率。

  • API支持:提供HTTP API,支持方便的数据写入和查询,兼容多种数据输入协议,如Graphite、CollectD、OpenTSDB等。

  • 水平扩展性:支持集群部署,允许通过添加更多节点来扩展存储容量和查询性能,适应大规模数据的增长需求。

InfluxDB版本差异

InfluxDB 的版本之间存在一些关键差异,主要体现在功能集、性能优化及使用许可等方面。以下是 InfluxDB 主要版本的一些显著差异:

InfluxDB v1.x

  • 开源且免费:v1.x 系列是完全开源的,并采用 Apache 2.0 许可证。
  • 单一节点架构:默认情况下支持单节点部署,虽然可以通过手动配置实现集群模式,但这不是官方推荐的做法。
  • 数据保留策略:用户可以设置数据保留策略来自动删除过期数据。
  • 查询语言 InfluxQL:提供了类 SQL 查询语言 InfluxQL,用于数据查询和操作。
  • 插件系统有限:与后续版本相比,v1.x 的插件系统相对简单。

InfluxDB v2.x

  • 改进的存储引擎:引入了新的存储引擎,提高了写入速度和查询效率,同时减少了磁盘空间占用。
  • 增强的安全性:增加了对多租户的支持,提供了更细粒度的访问控制列表(ACL),以及更好的认证机制。
  • Flux 查询语言:除了传统的 InfluxQL 外,v2.x 引入了全新的 Flux 查询语言,旨在提供更强的数据处理能力。
  • 内置仪表板和可视化工具 Chronograf:在 v2.x 中更加集成化,提供了更强大的数据可视化和监控能力。
  • 自动化任务管理 Kapacitor:更好地集成于平台内,使得告警和事件响应更为灵活高效。
  • 企业级功能:包括高可用性集群、水平扩展等特性,部分高级功能需要订阅 InfluxDB Cloud 或者购买 InfluxDB Enterprise 版本。

​​​​​​​InfluxDB数据模型解析

InfluxDB的数据模型:

  • Measurement: 主要用来存储具有相似特征或属于同一类别的数据点集合,类似于关系型数据库中的表(table);包含了列Timestamp时间戳,field字段和tag标签

  • Field set: 每组field key和field value的集合,即我们需要的字段,如internale[key] = 76[value], external[key]= 18[value]。不可索引

  • Tag set: 不同的每组tag key和tag value的集合,如device[key]= dev1[value], buiding[key]= b1[value]。可索引

  • Point:表里面的一行数据,由时间戳(timestamp)、标签(tag)、字段(field)和组成:

    • 时间戳time:每条数据记录的时间,也是数据库自动生成的主索引,如果时间戳没有指定。那么InfluxDB就使用当前系统的时间戳(纳秒)

    • 字段field:字段包含数据的实际值,可以是各种数据类型(整数、浮点数、字符串、布尔值等);与标签不同,字段在查询时可以进行数学运算。

    • 标签tag:用于索引和过滤数据;通常是字符串类型。

  • series:series是共同retention policy(数据保留策略),Measurement 和 tag set的集合。

注意:在 InfluxDB 表结构中,Field 和 Tag 是用于存储数据的两种不同类型。

  1. Field(字段)

  • Field 用于存储实际的数值数据,例如温度、湿度等测量值。

  • Field 是可变的,可以随时间的推移而改变其值。

  • Field 的值可以进行聚合计算,例如求平均值或总和等。

  • Field 不适合用于过滤和索引数据,因为它没有元数据信息。

  1. Tag(标签)

  • Tag 用于存储元数据信息和标识数据的键值对,例如传感器名称、地理位置等。

  • Tag 是不可变的,一旦设置就不能更改。

  • Tag 的值不能进行聚合计算,只能用于过滤和分组查询。

  • Tag 是 InfluxDB 中的主要索引机制之一,可以提高查询性能和数据过滤效率。

​​​​​​​​​​​​​​InfluxDB存储架构

  • Database(数据库):与传统关系型数据库相似,InfluxDB 中的数据首先被组织在数据库中。
  • Retention Policy (RP):定义了数据在数据库中的保存期限。当数据超过了指定的时间限制,它们将自动被删除。
  • Shard Group(分片组):InfluxDB 将数据按时间段划分成不同的 shard group。每个 shard group 覆盖特定的时间范围。
  • Shard(分片):shard 是物理存储的基本单位,包含在一个特定时间段内的所有数据。每个 shard group 可能包含多个 shard,这些 shard 可分布在不同的节点上以实现分布式存储。

​​​​​​​

InfluxDB 使用一种名为 TSM (Time-Structured Merge Tree) 的存储引擎来管理数据:​​​​​​​

  • TSM 文件:数据持久化后会存储为 TSM 格式的文件。TSM 文件优化了写入性能,并提供了高效的压缩算法。
  • WAL (Write-Ahead Log):为了防止数据丢失,在数据写入到 TSM 文件之前,会先写入 WAL 中。这保证了即使在崩溃的情况下也能恢复未持久化的数据。

InfluxDB 和 Elasticsearch 都使用了倒排索引(Inverted Index)来加速数据查询,但是Elasticsearch与InfluxDB在数据模型和应用场景上有显著区别。

Elasticsearch采用文档模型,适用于全文搜索、日志分析等非结构化数据处理,强调复杂查询和文本分析能力。针对多变文本数据优化。

InfluxDB基于时间序列模型,专注于如监控、传感器数据的时间序列分析,重点在于高效存储和查询带时间戳的数据,支持快速聚合计算及数据保留策略管理。针对和时间相关数值数据优化。

​​​​​​​​​​​​​​InfluxDB安装

步骤 1: 拉取 InfluxDB 1.8 镜像

docker pull influxdb:1.8

步骤 2: 运行 InfluxDB 容器,并数据持久化

/local/path 应替换为您希望存储 InfluxDB 数据的主机路径

docker run -d --name influxdb -p 8086:8086 -v /local/path:/var/lib/influxdb influxdb:1.8

步骤3:验证安装(查看日志或进入容器内)

docker logs influxdb

进入容器内命令如下:

可以看到版本,则安装成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值