Flux 与 Python 的使用场景

导航至

更新InfluxDB 3.0 放弃了 Flux 和内置任务引擎。用户可以使用外部工具,例如基于 Python 的 Quix,在 InfluxDB 3.0 中创建任务。)

如果您是 InfluxDB 的新手,您可能会想,“为什么 InfluxDB 有自己的查询和脚本语言(又名 Flux)?”您可能还在想,“InfluxDB 有 客户端库。为什么以及何时我应该使用 Python 客户端库,以及何时我应该使用 Flux?”在这篇文章中,我们将讨论开发者何时应该使用 Flux,以及何时应该使用 Python 来开发他们的物联网应用程序。

将 Python 与 InfluxDB 结合使用的优势

如果您是 Python 开发者,您可能已经清楚地了解了这一部分。Python 是一种流行的语言,因此对于您在 InfluxDB 之上构建的任何时间序列应用程序或解决方案,您都将拥有大量的资源、支持和贡献机会。此外,Python 拥有超过 137,000 个 Python 库,您可以利用这些库来完成各种时间序列任务,例如数据准备、清理、分析、预测、分类、异常检测等。

如果您希望执行以下时间序列任务,我建议使用 Python

  • 复杂的数据处理

  • 预测

  • 异常检测

当涉及到可用工具的庞大规模和复杂性时,Python 无与伦比。在这些情况下,与 Flux 相比,Python 是显而易见的选择。您应该将 InfluxDB 视为您的时间序列数据湖,使用 InfluxDB Python 客户端库查询数据,使用 Python 执行数据分析或机器学习任务,并将数据写回 InfluxDB。

对于此类工作的示例集合,我鼓励您查看以下 repo。它包括如何结合使用以下流行的机器学习、数据转换和数据分析 Python 库以及 Python 客户端库的示例

  • Pandas

  • Tensorflow

  • Keras

  • ADTK

  • Prophet

  • Kats

  • ScikitLearn

  • 以及更多!

如果您希望在 InfluxDB 之上构建时间序列应用程序,我也建议您为此使用 Python。事实上,InfluxData 的开发者关系团队正是使用 Plant Buddy 演示应用程序 这样做的。

Plant Buddy IoT Demo App - Chart

正如 Plant Buddy 的这张架构图所示,这是一个 Python Flask 物联网演示应用程序,用于监控植物的健康状况。它使用 InfluxDB 作为时间序列数据的存储后端。

这个演示应用程序帮助用户监控他们的室内植物,并充分发挥他们作为植物父母的潜力。Plant Buddy 使用 InfluxDB 存储关于用户植物的时间序列数据,例如湿度和温度。它使用 Python 客户端库从 InfluxDB 查询数据。我鼓励您亲自试用这个应用程序。查看 此处 的 repo。

使用 Python 构建您的物联网应用程序并将 InfluxDB 作为存储后端的另一个优势是,您可以在边缘的微控制器上使用 MicroPython,并保持语言一致性。但是,我建议在 InfluxDB 生态系统中使用 Flux 进行时间序列数据管理和警报。

将 Flux 与 InfluxDB 结合使用的优势

Flux 是 InfluxDB 的函数式查询和脚本语言。我们开发它是为了为 InfluxDB 用户提供比其前身 InfluxQL 更多的功能。InfluxQL 是一种类似 SQL 的语言,允许用户执行基本查询。Flux 允许您构建数据管道来查询、分析、转换和对您的数据执行操作。Flux 还在服务器端处理数据,与使用客户端库相比,这提供了更好的性能。

Flux 在数据库级别运行的另一个好处是,它允许我们执行这些任务,而无需第三方应用程序来完成。如果您是 InfluxDB Cloud 用户,这意味着您也不必担心托管、维护或扩展这些任务。总而言之,Flux 是一种在整个平台中使用的全方位解决方案,它允许您

  • 查询您的时间序列数据。

  • 将时间序列数据写入 InfluxDB。

  • 管理您的时间序列数据生命周期。

  • 对您的数据发出警报。

  • 分析、清理和转换您的数据。

InfluxDB 处理引擎运行任务。任务是在用户定义的计划上执行的 Flux 脚本。事实上,我们使用 Flux 来处理和下采样 Plant Buddy 演示应用程序的边缘植物传感器数据。然后我们使用 边缘数据复制,这是 InfluxDB 的一项功能,用于将数据复制到其他 OSS 实例,以将该数据整合到 InfluxDB 的云实例中。

虽然您无法访问 Python 提供的数千个用于时间序列分析的软件包和函数,但在基本时间序列分析方面,您仍然拥有相当大的能力。Flux 具有以下函数和软件包

  • 用于统计时间序列分析的转换函数

  • 协方差、标准差、分位数、离差、偏度等。

  • 用于动态统计和基本时间序列分析的转换函数

  • 导数、移动平均线、双重和三重指数平滑等。

  • 用于金融分析的技术动量指标

  • Chande 动量震荡指标、考夫曼自适应移动平均线等。

  • 用于处理和操作时间戳的函数

  • 截断时间、移动时间、处理时区、小时选择、添加/减去持续时间等。

Flux 还具有以下软件包,使用户能够管理和处理其时间序列数据

  • 用于数学应用的 Math 包。

  • 用于地理时空数据的 Geopackage。

  • 用于查询 SQL 数据库以及从 SQL 数据库写入数据的 SQL 包。

  • 用于发出 get 和 post 请求的 HTTP 包。您可以使用 Flux、HTTP 包和 InfluxDB API 完全管理您的 InfluxDB 实例。

  • 用于处理和解析 json 的 JSON 包。

结论

我希望这篇博文能启发您在 InfluxDB 之上构建物联网应用程序时,充分利用 Python 客户端库和 Flux。如果您希望使用任何一种语言解决问题,我鼓励您使用我们的 社区网站Slack 频道与我们联系。我很乐意了解您尝试实现的目标,以及您希望 InfluxDB 中的任务系统具备哪些功能。

最后,如果您正在 InfluxDB 之上开发一个很酷的物联网应用程序,我们很乐意了解它,因此请务必在社交媒体上使用 #InfluxDB 分享它!此外,请随时在我们的社区 Slack 频道直接与我联系,分享您的想法、疑虑或问题。我很乐意获得您的反馈,并帮助您解决遇到的任何问题!