选择合适的IoT数据库
物联网系统的特性
为物联网系统选择合适的数据库可能会很困难。它们通常分布在物理和数字领域,物联网设备持续输出大量的时间序列数据。在本网页中,我们将详细介绍物联网应用的架构,以及数据库需要具备的一些特性,然后介绍一些流行的物联网数据库。物联网数据库是由来自各种来源收集的数据点组成的可查询和可更新的数据集。典型的物联网数据源包括工业控制系统、业务应用、可穿戴设备、模拟传感器、网站统计等。
标准物联网架构概述
在典型的物联网架构中,主要有三个组件组:物联网设备本身、传感器和执行器;所谓的“雾”中的边缘服务器;以及通常基于云的数据中心。传感器将它们的数据发送到最近的边缘服务器,这些边缘服务器处理(也许还会转换和分析)这些数据,然后再将其发送到数据中心进行存储。
由于数据库通常在雾和云中运行,我们将详细介绍为什么这些用于物联网,以及该系统在数据库中所需的特点。
云计算
云计算是指通过互联网将数据传输到分布式数据中心网络。它包括许多领域,包括多种托管服务(SaaS、PaaS、IaaS等)。在物联网应用中,它允许增加扩展性、降低成本和提高效率。
基于云计算的物联网解决方案可以更快地扩展,因为当需要额外空间时,它们不需要设置物理服务器,因此它们可以像需要的那样快速增长,同时仅使用当前所需的多少空间。此外,这些解决方案也更加经济:因为它们只需您为使用的计算机付费,并且不需要承担运营物理数据中心的开支。它们还能够更快地将资源提供给开发人员和用户。
雾计算
雾计算,也称为边缘计算,是将云计算扩展到网络边缘的过程。它通过允许在边缘发生大量计算来提高处理效率。
假设我们有一个工业互联网用例,有多个不同的工厂,每个工厂都包含数百台连接的机器。如果一个边缘设备报告有问题,警报和处理应尽快发生:应由发生问题的特定工厂处理,而不是首先发送到互联网上的中央服务器。
这是雾计算的主要好处:通过将处理更接近产生数据的物联网传感器,它减少了决策的延迟。
物联网数据库的需求
用于物联网的数据库需要具有某些特性,以确保它在边缘和云中都正常工作。
边缘服务器的需求
假设我们有一个物联网设置,包含几个传感器(让我们称它们为1、2和3),将数据流式传输到边缘服务器,每10秒接收一批传感器数据。现在,传感器1和2输出他们的数据并将其路由到服务器,但传感器3输出它的数据,它被延迟了20秒。在这段时间内,还产生了两批数据并已发送。
为了处理这种突然的数据堆积,边缘服务器需要支持极快的写入操作。否则,在数据传输中出现任何重大延迟时都会丢失数据。因此,在物联网边缘服务器上运行的数据库需要非常高的摄取速率,不仅足以实时收集数据,而且足以在数据突发的情况下收集数据。
除了快速的写入时间外,边缘服务器还需要快速的读取和用于分析的工具。在大多数相当大的应用程序中,物联网数据不会从传感器传递到云中进行分析。相反,一些转换、分类和聚合是在边缘进行的。这使得边缘本身能够实时做出决策。
云数据中心的需求
云数据中心的第一需求是收集来自边缘服务器的数据,根据需要进一步转换这些数据,并进行分析。为了有效地执行此操作,需要三样东西:分析和计算命令、内置的下采样以及适当的保留策略。
数据库管理系统本身应该具有内置的分析命令,而不是将此任务委托给专用系统,因为使用的数据库和工具越多,保持系统运行的开销就越高。
降采样和保留策略的必要性相同:为了便于快速查询长时间的历史数据。自动降采样是必要的,以确保高精度数据只保留较短期,而低精度数据保留较长时间,以了解季节性和其他趋势。实施保留策略意味着数据将在一定期限后自动删除,为新的数据腾出空间。
除了这些,我们还需要一种类型的可视化引擎来显示我们的物联网系统的状态,以及发布和订阅的能力。
流行的物联网数据库比较
由于物联网数据本质上属于时间序列数据,物联网数据库的要求与任何时间序列数据库的要求非常相似。它需要实时写入数据,对其进行压缩,高效存储,根据需要降采样,并快速查询。
物联网中常用的数据库有很多:其中,一些关系型数据库如PostgreSQL,以及许多NoSQL数据库如MongoDB、Cassandra和InfluxDB,以及专门的物联网解决方案如Azure IoT。在这些中,哪一种最适合物联网?
SQL数据库具有稳定性和历史性的优势,但缺点是未针对处理大数据而构建,而几乎所有物联网数据都是。它们适合于小型、个人物联网项目,但在需要高性能的系统上并不是一个好的选择。
InfluxDB、MongoDB和Cassandra在性能和功能方面处于更加均衡的地位,但即便如此,在写入吞吐量、查询吞吐量和磁盘压缩方面仍然有明显的胜者:InfluxDB在数据摄取、压缩和查询速度方面都超过了这两个数据库2倍以上。更多信息,请下载InfluxDB白皮书:InfluxDB vs MongoDB;InfluxDB vs Cassandra。