与 InfluxDB 配合使用的最佳查询语言

导航至

人们经常问我们,“与 InfluxDB 配合使用的最佳查询语言是什么?” 这个问题的答案多年来有所演变,目前的答案可能会让您感到惊讶。

早期

InfluxDB 的第一个查询语言是 InfluxQL。 InfluxQL 是一种类似 SQL 的语言,具有一些专门为时序数据设计的增强功能。

它绝对是与 InfluxDB 配合使用的最佳查询语言,因为它是您可以与 InfluxDB 配合使用的唯一查询语言。它非常受欢迎,并且至今仍在使用。

Flux 到来

即使 InfluxQL 取得了成功,我们也认识到,我们的用户将从比类似 SQL 的查询更高级的功能中受益。我们想要一些可以让我们的客户直接在数据库级别执行操作的东西。因此,我们构建了一个完整的脚本语言,称为 Flux。您可以使用 Flux 执行各种操作,例如

  • 通过使用 sql.from 函数从关系数据库中提取或引用数据来组合数据源

  • 使用 sql.to 函数写回到关系数据库

  • 执行简单或复杂的降采样或聚合

  • 进行出站 API 调用以触发您自己的应用程序中的操作

我们仍然对 Flux 感到非常兴奋(查看 Flux 1.0 公告!),并认为它是我们真正的差异化因素。与此同时,我们也认识到 Flux 并非一定适合所有人。它有一个学习曲线,并非每个人都愿意投入时间来学习这种语言。但是,如果您问一个 Influxer,我们可能会告诉您 Flux 是与 InfluxDB 配合使用的最佳查询语言。

InfluxDB IOx

随着我们最近 InfluxDB IOx 公告的发布,我们也引入了对原生 SQL 查询语言的支持。

对于启用 IOx 的存储桶的组织,您可以从 InfluxQL、Flux 和 SQL 中选择一种来查询您的数据。那么,自从我们宣布支持 SQL 以来,这是否意味着 SQL 是与 InfluxDB 配合使用的最佳语言?答案通常是:视情况而定。

那么我该如何选择?

我们看好 SQL 作为 InfluxDB 中的查询语言,并且认为它在许多情况下都是一个不错的选择,例如

  • 您正在迁移已经对不同的 SQL 数据库进行 PostgreSQL 调用的代码。

  • 您非常了解 SQL,并且没有时间学习新工具。

  • 您的主要需求涉及查询数据和数据转换,而其他操作此时并不那么重要。

但是 InfluxQL 仍然有它的位置,并且在许多其他情况下都很好,例如

  • 您喜欢类似 SQL 的体验,但想要 InfluxQL 附带的时序扩展。

  • 您已经使用 InfluxQL 编写了许多查询脚本,并且不想迁移它们。

  • 您热爱 InfluxQL!

当您想要一种功能齐全的脚本语言,可以在数据库级别执行超出简单查询语言可以执行的高级操作时,Flux 当然是一个赢家。

我们继续遵守“在开发者所在之处与他们会面”的口号,而不是推荐或推广特定的语言。在 InfluxDB 中查询数据时,我们为您提供多种选择,希望至少有一个选择适合您自己的环境和工作经验。而且,这并不总是关于只选择一种查询语言。一些用户可能想要(或需要)使用受支持的查询语言的组合。

但是,我们也不仅仅满足于这三种语言选项。对于在 InfluxDB 平台上运行的写入任务,我们还计划增加对 Python 和 Javascript 的支持。这将为您提供更多创建任务的选项,并让您利用您现有的技能。

因此,虽然您可能期望我说 Flux 是要使用的最佳查询语言(我们确实认为它非常棒),或者您可能认为我会说 SQL 是要使用的最佳查询语言,因为我们的 IOx 引擎支持它,但我不会这样说。事实上,这两种都是非常好的选择,InfluxQL 是第三种。最重要的是,您最了解您的环境,并且可能已经对最适合您的环境有了很好的了解。考虑到这一点,我对您的正式建议是

与 InfluxDB 配合使用的最佳查询语言是您选择使用的任何语言。