为什么您应该在物联网应用中使用关系数据库而不是NoSQL


几乎每个行业都在进行由物联网和大数据驱动的数字转型。重要的是要认识到物联网不是关于事物的;是关于那些东西收集的数据。组织依靠这些数据来提供更好的用户体验,做出更明智的业务决策,并最终推动其发展。

然而,如果没有一个能够处理物联网设备产生的海量数据的可靠数据库,这一切都是不可能的。关系数据库以灵活、易于使用和成熟著称。他们并不特别出名的是规模,这促使了NoSQL数据库的创建。你可能已经知道,也可能不知道,有办法克服这个缺点。

需要注意的另一点是,物联网数据本质上是一个时间序列。通过使用时间序列数据库(例如TimescaleDB),组织可以利用隐藏在机器生成的数据中的洞察力来构建新功能、自动化流程并提高效率(稍后将详细介绍)。工程团队通常会将数据存储在多个数据库中:关系数据库中的元数据,NoSQL商店中的时间序列数据。别这样。

下面,我们概述了您应该使用关系数据库而不是NoSQL的主要原因,解释了关系数据库可以为物联网提供的优势。

利用SQL及其生态系统

物联网数据需要多样的、可定制的接收管道,这些管道需要一个具有广泛生态系统的数据库。为了满足这些要求,开发人员不需要看得比SQL更远。

关系数据库和SQL是密不可分的,跨组织的许多人(即内部数据分析师、应用程序开发人员或希望实时访问数据的外部用户)通常已经知道了SQL。例如,在制造业中,有些团队可能希望监控设备维护并预测故障,有些团队可能希望跟踪生产率和运输物流数据,等等。SQL让他们变得容易。

此外,还有一些非常酷的功能,例如:

  • 联接:基于两个或多个表之间的相关列,组合它们的行
  • 汇总:将多行的值组合在一起,形成一个汇总值(即最小值、最大值、AVG值)
  • 窗口函数:对一组行进行操作,并从基础查询中为每一行返回一个值(即分区依据、排序依据)
  • 通用表表达式:简化复杂的连接和子查询(如WITH)
  • 汇总:GROUP BY子句的扩展,允许您使用单个查询来生成多个分组集

此外,开发人员通常希望在现有物联网基础设施上构建应用。SQL与许多管理工具兼容,比如流管道Kafka或者RabbitMQ消息协议,如MQTT可视化工具,如Seeq工业自动化平台,如Ignition,以及用于使用的扩展geospatial and other datatypes、以及许多其他的。

模式是一件好事

对于关系数据库,您可以使用模式来辅助数据建模。尽管看起来“无模式”数据库似乎更容易启动,但它们会导致重大的技术债务。用户通常不得不提前就如何存储他们的数据做出设计决策,这些决策在未来很难改变。这意味着,如果新的查询模式需要不同的设置来执行,那么就不能很好地支持它们。

另一方面,用SQL预先构建模式实际上支持复杂的查询。用户还可以使用DDL(数据定义语言)命令的集合来调整和更新他们的模式。然而,为了提高性能,正确地对数据建模是很重要的。为给定的工作负载创建适当的索引和表模式可以显著提高性能。相反,设计错误的模式会导致性能显著下降。

本质上,如果你想要的是一个灵活的模式,特别是在存储半结构化数据时(例如,存储来自收集不同测量值的物联网传感器的读数)。您还需要一个能够灵活管理和访问数据的数据库。特别是在物联网中,您收集数据的设备并不总是在线的,导致无序的数据被批量上传。您可能还想更新不正确的传感器测量值。关系模型很好地支持所有这些功能。

消除数据孤岛

我们已经谈到了这样一个事实,即整个组织中的许多人都已经知道了SQL,它允许多个用户访问数据。从我们的客户那里,我们经常听到他们希望时间序列数据库与完整的关系系统相结合,并且他们希望能够加入这些数据。

幸运的是,关系数据库支持JOINs,并且消除了在多个位置存储数据的需要。通过这样做,组织还可以节省运行多个系统的间接成本。此外,它们可以避免与维护独立数据库相关的完整性问题,这将引导我们进入下一步。

信赖关系数据库的可靠性

许多存储敏感数据的组织依赖关系数据库来保护其信息的安全。毕竟,关系数据库自70年代就已经存在,并且在保护财富500强公司的数据安全方面有着良好的记录。

物联网应用通常需要处理大量复杂的查询和事务。借助关系数据库,由于ACID(原子性、一致性、隔离性、持久性),您可以确保这些事务是过程可靠性。如果您不熟悉,ACID是一组在修改数据库时使用的属性。他们保证即使在您可能遇到错误、电源故障、崩溃等情况下,交易也是有效的。

感谢阅读这篇文章!请在下面的评论中分享您对关系数据库和物联网的看法。