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