存储、收集和分析时间序列数据的最佳方式
在本技术文档中,InfluxData 首席技术官 Paul Dix 将带您了解什么是时间序列(以及不是什么)、它与流处理、全文搜索和其他解决方案的不同之处。

通过阅读本技术文档,您将
- 了解时间序列数据如何在我们周围存在,
- 了解为什么专门构建的 TSDB 很重要。
- 阅读关于时间序列数据库如何针对时间戳数据进行优化的内容。
- 理解指标、事件和跟踪之间的差异,以及时间序列数据的一些关键特征。
- 理解指标、事件和跟踪之间的差异。
存储时间序列数据
时间序列数据最好存储在专门为处理时间戳指标和事件而构建的时间序列数据库 (TSDB) 中。 这是因为时间序列数据通常以海量形式摄取,需要专门构建的数据库来处理这种规模。时间序列数据还需要独特的数据工程解决方案,以高效执行常见的时间序列任务,例如数据生命周期管理、数据汇总以及跨大时间范围的查询。时间序列数据库旨在处理这些任务——同时考虑随时间的变化。
使用时间序列数据库,通常可以
- 请求在较长时间段内的数据摘要——TSDB 针对此用例进行了优化,可以在数月的数据中提供毫秒级的查询时间。
- 写入大量数据
- 自动降采样或使不再有用的旧时间序列过期,或者将高精度数据保留短时间——这种数据生命周期管理对于应用程序开发人员来说,在常规数据库之上实现起来很困难。借助时间序列数据库,此功能开箱即用。
InfluxDB 是最流行的开源时间序列数据库 (TSDB),因为
- 它是专门构建的,具有多项设计洞察,旨在针对时间序列数据进行优化,并处理更高的写入和查询性能。
- 它具有低采用门槛,或“Time to Awesome ™”。 InfluxData 通过提供引导式入门体验、多云支持、可视化编码数据分析解决方案或查询构建器、适用于多种语言的强大客户端库以及通过社区渠道为开源用户提供的全天候支持,优先考虑开发者的幸福感。
- 通过使用 TSI 将索引存储在磁盘上,从而支持高基数用例。
- 它是一致的、可用的和分区容错的——这在 NoSQL 世界中是一个例外,因为它是一个 混合非严格 CA/AP 数据库。
- 用 Go 编写,用于快速并发数据获取,并易于二进制部署。
想了解更多?
下载文档专门构建的时间序列数据库
InfluxDB 从头开始构建,成为专门构建的时间序列数据库,以处理高写入和查询负载。时间从一开始就内置在其中。 InfluxDB 是一个综合平台的一部分,该平台支持时间序列数据的收集、存储、监控、可视化和警报。它不仅仅是一个时间序列数据库
- InfluxDB 1.x 是 TICK Stack(Telegraf、InfluxDB、Chronograf、Kapacitor)的开源时间序列数据库组件。
- InfluxDB 2.0 将您在时间序列平台中需要的一切都集成到一个二进制文件中。
InfluxDB OSS(InfluxDB 的开源版本)在单个节点上运行。
InfluxDB 也以以下形式提供
- 云版本——弹性、无服务器的托管数据库即服务 (InfluxDB Cloud)
- 企业版——订阅将任何 InfluxData 实例转变为可在任何地方运行的生产就绪集群(InfluxDB Enterprise),并提供高可用性以消除单点故障。
时间序列数据库已被证明在时间序列数据方面优于关系数据库,从而使您的数据能够更快地为您工作。 与关系数据库相比,像 InfluxDB 这样的专用时间序列数据库具有更低的运营成本,这意味着更高的生产力。 它可以轻松处理大量时间戳数据,可用于实时监控,并且还可以轻松管理数据的生命周期。 要识别时间序列数据库中数据的关系和关联,您可以使用数据仓库。
最佳时间序列数据库
InfluxDB 是开源的、高性能且可扩展的
- InfluxDB 数据模型与其他时间序列解决方案(如 Graphite、RRD 或 OpenTSDB)截然不同。 InfluxDB 1.8 具有用于发送时间序列数据的行协议(通过告知 InfluxDB 数据的度量、标签集、字段集和时间戳,使特定序列的查找非常快速)。 InfluxDB 1.7+ 内置了 Flux,这是一种强大的数据脚本和查询语言,可帮助开发人员查看随时间的变化。
- InfluxDB 中的时间戳可以是秒、毫秒、微秒或纳秒精度。 微秒和纳秒级精度使 InfluxDB 成为金融和科学计算用例的理想选择,而其他解决方案将被排除在外。
- 压缩程度因用户需要的精度级别而异。 在磁盘上,数据以列式格式组织,其中为度量、标签集、字段设置了连续的时间块。 因此,每个字段都按时间块在磁盘上顺序组织,这使得计算单个字段上的聚合成为一项非常快速的操作。
- 可以使用的标签和字段数量没有限制。 其他时间序列解决方案不支持多个字段,并且对可以使用的标签数量有限制。
InfluxDB 加快了开发人员实现“Time to Awesome”的时间,支持多种数据类型,并允许用户使用无限的字段和标签——使您能够在增长时轻松扩展。 由于所有这些因素,InfluxDB 是处理时间序列数据的最佳解决方案。
InfluxDB 功能概述
使 InfluxDB 成为处理时间序列数据的绝佳选择的特性包括
- 专门为时间序列数据编写的自定义高性能数据存储。 TSM 引擎允许高摄取速度和数据压缩。
- 编译成单个二进制文件,没有外部依赖项(InfluxDB 完全用 Go 编写)。
- 简单、高性能的写入和查询 HTTP API。
- 对其他数据摄取协议(如 Graphite、collectd 和 OpenTSDB)的插件支持。
- 为轻松查询聚合数据量身定制的富有表现力的类 SQL 查询语言 (InfluxDB 1.8),以及 Flux,一种强大的新语言,使您能够一起查询和编码 (InfluxDB 2.0)。
- 标签允许索引序列以进行快速高效的查询。
- 保留策略有效地自动使过时数据过期。
- 连续查询和任务自动计算聚合数据,以使频繁查询更有效率。
了解 InfluxDB 1.8(针对生产工作负载优化的基本时间序列工具包)和 InfluxDB 2.0 的关键概念。
InfluxDB 的开源指标收集代理
使用 InfluxDB 存储时间序列数据的一个主要优势是它具有本机指标收集代理 Telegraf。 Telegraf 是一款开源插件驱动的服务器代理,可用于收集和发送来自数据库、系统和物联网传感器的指标和事件。
Telegraf 用 Go 编写,并编译成单个二进制文件,没有外部依赖项,并且需要非常小的内存占用。 它的插件系统允许轻松添加新的输入和输出,并与来自流行的容器和系统的各种指标、事件和日志集成。 Telegraf 使集成变得无缝且容易。 了解 Telegraf 的所有 250 多个集成
- Telegraf 输入插件从系统、服务或第三方 API 收集指标。
- Telegraf 输出插件将指标写入各种目标。
- Telegraf 聚合器插件创建聚合指标(例如平均值、最小值、最大值、分位数)。
- Telegraf 处理器插件转换、修饰和过滤指标。
InfluxDB 用于时间序列分析
Flux 是 InfluxData 新的功能性、独立数据脚本语言,专为查询、分析和处理时间序列数据而设计。 它结合了 InfluxQL 的强大功能和 TICKscript 的功能,并将它们组合成一个统一的语法。 Flux 标准库包括内置函数和可导入的包,用于检索、转换、处理和输出数据。
Flux 旨在实现可用性、可读性、灵活性、可组合性、可测试性、可贡献性和可共享性。 它的语法在很大程度上受到 2018 年最流行的脚本语言 JavaScript 的启发,并采用函数式方法进行数据探索和处理。 Flux 提高了生产力和代码重用率。 它针对 ETL、监控和警报进行了优化,具有内联计划器和优化器。 Flux 是开源社区推动时间序列数据创新的成果。
以下示例说明了如何从 bucket
(类似于 InfluxQL 数据库)中提取过去五分钟的数据,按 cpu measurement
和 cpu=cpu-total
标签过滤该数据,以 1 分钟间隔对数据进行窗口化,并计算每个窗口的平均值
from(bucket:"telegraf/autogen") |> range(start:-1h) |> filter(fn:(r) => r._measurement == "cpu" and r.cpu == "cpu-total" ) |> aggregateWindow(every: 1m, fn: mean)
Flux 与 InfluxDB v1.7+ 打包在一起,不需要任何额外的安装;但是,它需要启用。 熟悉 Flux 的最佳方法是逐步创建简单的 Flux 查询。 Flux 入门文档正是这样做的。 了解有关使用 InfluxDB 进行时间序列分析和时间序列预测的更多信息,并下载包含 Flux 的 InfluxDB。
InfluxDB 用例和解决方案
InfluxDB 被世界各地的开发人员和企业广泛用作任何涉及大量时间戳数据的用例的后端存储,包括DevOps 监控、应用程序指标、物联网传感器数据、实时分析和机器学习。
使用 InfluxDB 构建的解决方案包括
您可以找到大量时间序列案例研究示例,了解各个行业的公司如何将 InfluxDB 应用于他们的用例。
开始使用无服务器数据库即服务
由于 InfluxDB Cloud 是 SaaS 解决方案,因此它是最容易入门的方式,InfluxDB Cloud。 InfluxDB Cloud 从开源核心构建,是一个无服务器弹性扩展数据库即服务,由 InfluxData 的专家维护和管理。 InfluxDB Cloud 架构设计为可在任何云上运行——Amazon Web Services (AWS)、Google Cloud Platform (GCP) 和 Microsoft Azure。