与 InfluxDB 配合使用的最佳查询语言
作者: Gary Fowler / 产品
2022年11月21日
导航至
人们经常问我们:“与 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的最佳语言吗?答案是:这取决于。
那么我该选择什么?
我们对InfluxDB中的SQL作为查询语言持乐观态度,并认为在许多情况下它是一个很好的选择,比如
-
您正在将已经对PostgreSQL进行调用的代码迁移到不同的SQL数据库。
-
您非常熟悉SQL,但没有时间学习新的工具。
-
您的首要需求是查询数据和数据转换,而其他操作在此阶段并不那么重要。
但InfluxQL仍然有其位置,在许多其他情况下都是好的,比如
-
您喜欢类似SQL的体验,但希望有InfluxQL带来的时间序列扩展。
-
您已经编写了很多使用InfluxQL的查询脚本,并且不想迁移它们。
-
您非常喜欢InfluxQL!
而Flux当您想要一种能够执行比简单查询语言更高级数据库级操作的完整脚本语言时,无疑是赢家。
我们不仅推荐或推广特定的语言,我们继续遵循“在开发者所在的地方相遇”的格言。当涉及到在InfluxDB中查询数据时,我们为您提供多种选项,希望至少有一种选项适合您的环境和工作经验。而且,这不仅仅关于选择一种查询语言。一些用户可能需要(或需要)利用支持查询语言的组合。
但我们也不满足于这三种语言选项。对于在InfluxDB平台上运行的任务,我们还计划添加对Python和JavaScript的支持。这将为您提供更多的任务创建选项,并让您在过程中利用现有的技能。
所以,虽然你可能期望我说Flux是最佳查询语言(我们确实认为它非常棒),或者你可能认为我会说SQL是最佳查询语言,因为我们的IOx引擎支持它,但实际上并不是。这些都是两个非常好的选择,InfluxQL是第三个。关键在于,你最了解自己的环境,可能已经对最适合你的方案有了很好的了解。考虑到这一点,我对你的官方建议是
与InfluxDB配合使用的最佳查询语言完全取决于你自己的选择。