第二部分:深入了解 InfluxDB 3.0

导航至

简介

在本系列的第一个博客《设置 InfluxDB 和可视化数据:第 1 部分》中,我们使用 InfluxDB Cloud Serverless 构建了一个用于时间序列数据的数据收集和可视化平台。受带有 PID 控制器的 CSTR 用例的启发,该项目展示了如何摄取实时数据并使用 InfluxDB 和 Grafana 对其进行可视化。

这篇后续文章重点介绍 InfluxDB 3.0 架构,深入了解该平台的内部工作原理。通过了解 InfluxDB 的核心组件,您将深入了解系统如何高效地处理和存储大规模时间序列数据,从而为您更高级的用例做好准备。

时间序列数据库概述

时间序列数据库 (TSDB) 是处理大量时间戳数据的最佳选择。与优先考虑数据类型和关系灵活性的关系数据库不同,TSDB 专注于高效存储和检索按时间索引的数据点。

这在物联网监控、金融系统和实时分析等应用中至关重要,在这些应用中,数据流快速涌入,需要快速处理。InfluxDB 是领先的时间序列数据库平台,为此类数据提供高写入吞吐量和高效的查询处理,使其非常适合实时洞察和长期存储。

InfluxDB 3.0 架构

InfluxDB 3.0 引入了关键的架构改进,以处理大规模时间序列数据。以下是其主要组件的细分

核心组件

  • InfluxDB 引擎:该引擎专为高速摄取和查询处理而构建,可处理大规模数据应用程序,例如物联网和分析。
  • Apache Arrow:InfluxDB 3.0 使用 Apache Arrow 进行内存数据处理。Arrow 的列式内存格式允许更快的数据访问和查询性能,尤其适用于实时分析。
  • 存储引擎:该引擎使用 Parquet 文件进行磁盘存储,利用列式格式实现高效压缩和快速查询性能。
  • Ingester:InfluxDB 3.0 中的 Ingester 在处理实时数据摄取和处理方面起着至关重要的作用。它管理以下任务
    • 实时查询: 它通过将新数据加载到内存中(通过 Apache Arrow)使其可查询,然后再写入磁盘,从而可以立即访问最近的数据。
    • 数据存储: 它处理传入的数据并将其写入对象存储中的 Parquet 文件,从而确保高效的长期存储。
    • 元数据管理: Ingester 使用关于摄取数据的最新信息更新系统的元数据目录,从而优化查询性能和检索。

数据存储

  • Parquet 文件和对象存储:InfluxDB 3.0 将数据存储为 Parquet 文件。这些文件经过高度压缩,并针对大规模数据分析进行了优化。它们保存在对象存储中,对象存储为长期数据保留提供经济高效、可扩展的存储。
  • 数据写入:InfluxDB 3.0 实时摄取数据。它首先将数据加载到 Apache Arrow 中进行内存处理,使其可以立即查询。然后,数据被批量处理并写入紧凑的 Parquet 文件以进行长期对象存储。此过程优化了存储效率,同时确保了快速数据检索。

数据模型

InfluxDB 的数据模型专为时间序列数据量身定制。它将信息组织到指标标签字段中,从而实现高效的存储和检索。

  • 指标:这些类似于传统数据库中的表,表示正在收集的数据的名称(例如,“cpu_usage”、“temperature”)。
  • 标签:标签是键值对,可向数据添加元数据,例如“location=server_room”或“device=sensor_1”。标签已索引,这使得基于这些元数据字段的查询非常高效。
  • 字段:字段表示测量值,例如温度读数或 CPU 利用率,并且不像标签那样被索引。字段针对高写入性能进行了优化。

此模型紧凑地存储大型数据集,尤其是那些频繁写入的数据集,例如传感器或性能数据,即使数据扩展,也能实现更快的查询响应。

数据保留和优化

管理大量时间序列数据需要高效的存储和保留策略。InfluxDB 3.0 引入了几种技术来优化数据存储、检索和长期保留。用户可以通过利用高级保留策略、压缩技术和降采样来控制数据量,同时保持有价值的见解。这些策略确保存储成本保持在可管理范围内,同时系统能够大规模处理高频数据摄取。

让我们探索 InfluxDB 如何处理保留策略和高级优化技术,如降采样和压缩

保留策略:InfluxDB 的保留策略允许用户指定在删除数据之前存储数据的时间长度。此功能确保用户仅保留最相关的数据,从而有助于平衡存储空间和长期分析。例如,保留策略可能会将高分辨率数据保留 30 天,同时自动丢弃较旧的数据。

降采样:InfluxDB 3.0 使用降采样技术来聚合数据(随着时间的推移降低数据分辨率)。通过聚合数据,InfluxDB 3.0 仅零售相关的摘要数据用于长期分析,从而保持存储成本可管理。

压缩技术:InfluxDB 3.0 利用 Parquet 文件,Parquet 文件提供高效的数据压缩并减少存储需求。Parquet 的列式格式允许更小的文件大小,同时保持快速查询性能,这对于数据量可能呈指数级增长的大规模部署至关重要。

通过实施保留策略、降采样和压缩技术,InfluxDB 能够实现大规模高效的数据管理,同时保持时间序列数据的完整性和可用性。

可扩展性、集群和高可用性

随着数据量的增长和系统需求的增加,确保可扩展性和可靠性对于任何时间序列数据库都至关重要。InfluxDB 3.0 通过专为企业级可扩展性、容错能力和可用性而设计的功能来满足这些需求。其架构支持无缝水平扩展,在分布式环境中提供高吞吐量和弹性。

以下是 InfluxDB 如何在适应多租户和分布式工作负载的同时实现可扩展性和高可用性

集群:InfluxDB 3.0 引入了集群功能,允许数据库通过跨多个节点分发数据来水平扩展。此功能确保 InfluxDB 可以处理更大的工作负载,提供更高的吞吐量和改进的容错能力。

高可用性:集群还实现了高可用性,其中数据跨节点复制,即使在硬件故障或网络问题的情况下也能确保持续运行。

多租户:InfluxDB 支持多租户,允许多个用户或组织安全地共享同一基础设施,使其适用于企业级部署。

分布式架构:InfluxDB 的分布式架构支持跨多个区域轻松扩展,从而提高性能并确保跨不同环境的高效工作负载管理。

InfluxDB 提供各种部署选项,以满足不同的可扩展性和运营需求

  • InfluxDB Cloud Serverless:此多租户、低成本选项非常适合需要快速设置和最少基础设施管理的项目。它非常适合较小规模的应用程序,如物联网和家庭项目,在这些项目中,灵活性和易用性至关重要。
  • InfluxDB Cloud Dedicated 和 Clustered:这两个选项都是单租户的,专为需要保证资源和隔离的更大应用程序而设计。Cloud Dedicated 提供对基础设施的完全控制,而 Clustered 部署提供水平扩展和高可用性,跨多个节点分发数据以处理更大的工作负载。

这些灵活的选项确保 InfluxDB 可以高效扩展,无论您处理的是较小的数据集还是大规模的企业应用程序,所有这些都提供强大的可扩展性、性能和资源优化,以满足您的需求。

性能优化

InfluxDB 3.0 可以处理海量的时间序列数据,并且一些性能优化策略有助于确保它高效地执行此操作。

主要策略

  • 索引:InfluxDB 3.0 使用 Apache Arrow 进行内存处理,并使用 Parquet 进行高度压缩、高效的存储,从而优化查询性能。基于时间的索引允许 InfluxDB 快速定位和检索数据,尤其是在大型数据集中,而无需传统的、繁重的索引结构。
  • 压缩:用于数据存储的 Apache Parquet 引入了出色的压缩,而不会牺牲读取速度。通过使用列式存储和压缩算法,InfluxDB 确保即使是大型数据集也能高效存储,从而最大限度地降低存储成本和检索时间。
  • 并行处理:InfluxDB 使用并行查询处理,跨多个 CPU 或节点分发查询任务。这种方法加快了复杂查询的速度,尤其是那些跨大型数据集或需要复杂聚合的查询。
  • 自定义分区: InfluxDB 允许用户定义自定义分区以提高查询性能。根据标签值或特定时间间隔调整数据分区方式可以显着减少查询期间扫描的数据,特别是对于常用筛选标签。通过限制查询期间扫描的数据,自定义分区可以加快大型数据集环境中的响应时间。

时间序列数据处理权衡

  • 数据精度与存储成本:更高的精度(例如,纳秒时间戳)允许更精细的数据分析,但会显着增加存储需求。对于不需要极端精度的用例,选择较低的精度(例如,秒或毫秒)可以降低存储成本,同时保留有价值的见解。
  • 保留策略:更长的保留期会增加存储成本,并可能随着数据集的增长而影响查询性能。另一方面,设置较短的保留期可以降低成本并提高查询性能,但可能会限制对历史数据的访问。找到正确的平衡点是优化成本和性能的关键。
  • 降采样:通过降采样降低数据分辨率会降低存储需求,但可能会导致长期数据精度降低。这种方法非常适合长期趋势分析,但如果需要详细的历史数据,则可能需要权衡取舍。

这些策略有助于 InfluxDB 3.0 即使在数据量扩展的情况下也能保持高性能,但了解权衡取舍对于针对您的特定用例优化系统至关重要。

结论

在这篇文章中,我们探讨了 InfluxDB 3.0 的核心架构,重点介绍了其关键组件,如 Ingester、用于内存处理的 Apache Arrow 以及用于高效数据存储的 Parquet。我们还讨论了保留策略和降采样如何帮助优化可扩展性和性能。

无论您是管理物联网数据还是处理大规模实时分析,InfluxDB 3.0 都提供专为时间序列数据量身定制的强大解决方案。开始使用 InfluxDB,了解它如何支持您今天的数据需求。