何时使用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拥有超过13,7000个Python库,您可以利用这些库来完成各种时间序列任务,如数据准备、清理、分析、预测、分类、异常检测等。

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

  • 复杂数据处理

  • 预测

  • 异常检测

在可用的工具数量和复杂性方面,Python没有竞争对手。在这些情况下,与Flux相比,Python是明显的选择。您可以将InfluxDB视为您的时序数据湖,使用InfluxDB Python客户端库查询数据,使用Python进行数据分析或机器学习任务,然后将数据写回InfluxDB。

为了查看此类工作的示例集合,我鼓励您查看以下仓库。它包括如何使用以下流行机器学习、数据转换和分析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查询数据。我鼓励您亲自尝试这个应用程序。查看这里的仓库。

使用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动量振荡器、Kaufman自适应移动平均等。

  • 处理和操纵时间戳的函数

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

Flux还具有以下包,使用户能够管理和处理他们的时序数据

  • 数学包用于数学应用。

  • 地理包用于地理时序数据。

  • SQL包用于查询和写入SQL数据库中的数据。

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

  • JSON包用于处理和分析JSON。

结论

我希望这篇博客文章能够激发您利用Python客户端库和Flux在InfluxDB之上构建IoT应用程序。如果您想要在任意语言中解决一个问题,我鼓励您通过我们的社区网站Slack频道与我们联系。我很乐意了解您想要实现的目标以及您希望InfluxDB的任务系统具备哪些功能。

最后,如果您在InfluxDB之上开发了一个酷炫的IoT应用程序,我们很乐意了解它,所以请确保使用#InfluxDB在社交网络上分享它。此外,您可以直接在我们的社区Slack频道联系我,分享您的想法、关注点或问题。我很乐意得到您的反馈,并帮助您解决遇到的问题!