InfluxDB 中的连续查询 - 第一部分

导航至

警告! 请注意,本文已超过1年,请查阅最新的InfluxDB信息,并阅读InfluxDB 文档中的连续查询部分。

返回聚合、汇总和计算数据的查询在应用开发中经常被使用。例如,如果您正在构建一个在线仪表板应用程序来报告指标,您可能需要显示汇总数据。这些汇总查询通常计算成本很高,因为它们需要处理大量数据,而且反复运行它们根本无法扩展。现在,如果您能够预先计算并存储聚合查询结果,以便在需要时立即可用,这将显著加快仪表板应用程序中的汇总查询速度,而不会过载您的数据库。这就是 InfluxDB 的连续查询功能的用武之地!

这是本系列的第一部分,将帮助您了解 InfluxDB 中的连续查询。在本篇文章中,我们将介绍连续查询的基本概念及其用例。在第二部分中,我们将深入了解连续查询的工作原理,并在第三部分中解释如何监控和管理连续查询。

那么,让我们开始吧。

介绍 InfluxDB 中的连续查询

如果您有关系型数据库管理系统(RDBMS)的背景,那么连续查询在概念上与物化视图非常相似,其中昂贵的查询结果被预先计算并存储,而不是即时计算。InfluxDB 中的连续查询功能强大且适用于多种不同的用例,主要围绕改进数据分析体验,如下所述。

使用连续查询有效地查看数据

在仪表板应用程序中,指标数据通常以图表的形式呈现。通常,这些指标在显示之前会进行下采样。这意味着它们要么围绕特定的时间间隔进行聚合,要么简单地从指标系列中选取第N个数据点。

使用 InfluxDB 中的连续查询,您可以下采样应用程序数据,并改善最终用户的使用体验。例如,如图所示,输入图被下采样,输出捕获输入图的每第10个点。

downsample

例如,使用下面描述的连续查询,InfluxDB可以对CPU负载指标进行下采样,并且按服务器区域每15分钟保留一个平均值数据点。

CREATE CONTINUOUS QUERY "downsampled_cpu_load"
ON database_name
BEGIN
  SELECT mean(value) as value,
  INTO "downsampled.cpu_load"
  FROM cpu_load
  GROUP BY time(15m), region
END

当您正在检测当前或最近的问题并解决这些问题时,高分辨率数据非常出色,但随着数据变旧,您不需要那么详细的数据时,您可以使用连续查询来进行下采样并降低数据分辨率(可以是每日或每周)。

使用连续查询高效分析数据

除了下采样数据外,连续查询还可以将一个系列中的数据转换和隔离到一或多个其他依赖系列中,以便更有效地访问。当您想要按时间段“汇总”时间序列数据时(例如,在5、10和15分钟期间获取第99百分位的服务时间),它们也非常有用。

例如,假设您正在捕获指向您的Web服务器的HTTP请求作为http_requests系列,并想计算您收集的系列中的请求的95百分位和平均持续时间。您可以使用下面的连续查询来解决这个问题——

CREATE CONTINUOUS QUERY "transformed_http_requests"
ON database_name
BEGIN
  SELECT mean(duration) as mean,
	  PERCENTILE(duration, 95.0) as p95
  FROM http_requests
  GROUP BY time(15m), http_status
END

在下面的下一个示例中,可以在连续查询的FROM子句中使用正则表达式来收集所有测量中选择的数据点,并将它们写入具有相同测量名的policy1保留策略中。

CREATE CONTINUOUS QUERY myquery ON testdb 
	BEGIN 
   		SELECT mean(value) INTO "policy1".:MEASUREMENT 
FROM /.*/ 
GROUP BY time(1h) 
END

在您的应用程序中使用连续查询

要开始使用连续查询,您需要在服务器上创建一个连续查询。在InfluxDB中,可以通过对服务器的查询端点运行CREATE CONTINUOUS QUERY语句来创建连续查询。

使用curl,您可以使用以下命令在InfluxDB中创建连续查询

curl -G 'https://127.0.0.1:8086/query' --data-urlencode 'q=CREATE CONTINUOUS QUERY ...'

一旦创建,连续查询就会作为集群元数据的一部分持久化,并且随着数据的收集而定期运行。

新的连续查询引擎

InfluxDB v0.9在保留、集群和InfluxQL语言方面有一些主要的架构变化。因此,连续查询引擎必须重新设计,v0.9的重新编写与先前的版本(v0.8)相比引入了一些变化。这些变化在下表中有所体现。

[表格ID=2 /]

结论

在今天的文章中,我们只是对连续查询做了表面上的了解。要了解更多关于连续查询在底层是如何工作的,或如何管理连续查询,请关注InfluxDB中连续查询的第二部分和第三部分。

在此之前,我们希望您注册免费14天的托管InfluxDB试用,并开始使用它!

grafana