在设计IoT数据库时,企业可以有很多选择,但是技术人员必须通过评估不同的IoT数据库体系结构(例如static vs. streaming and SQL vs. NoSQL)来确定最合适的方案。
正确的物联网数据库取决于每个物联网项目的需求。因此,选择数据库的第一步是在数据库架构中进行选择时考虑到物联网项目应用的关键特性。物联网技术人员必须确定要存储和管理的数据类型、数据流、分析、管理和安全的功能要求、以及性能和业务要求。
在确定组织对数据库的需求之后,IT管理员必须评估IoT数据库体系结构以及它们如何促进或抑制IoT数据需求。
了解静态和流式IoT数据库架构
首先,了解静态数据库与流式数据库之间的根本区别。
静态数据库,也称为批处理数据库,用于管理静态数据。用户需要访问的数据作为由数据库管理系统(DBMS)管理的存储数据驻留。用户进行查询并从DBMS接收响应,该DBMS通常但并非总是使用SQL。
流式数据库处理运动中的数据。数据不断地流经数据库,并具有一系列连续的查询,通常以特定于流式数据库的语言进行。流式数据库的输出最终可以存储在其他地方,例如云中,并可以通过标准查询机制进行访问。
流式数据库通常是分布式的,以处理大量数据的规模和负载要求。当前,有一系列商用、专有和开源流数据库,包括Google Cloud Dataflow、Microsoft StreamInsight、Azure Stream Analytics、IBM InfoSphere Streams和Amazon Kinesis。
开源系统主要基于Apache,包括Databricks提供的Apache Spark Streaming,Data Artisans提供的Apache Flink,Confluent提供的Apache Kafka和Twitter所拥有的Apache Storm。组织主要使用流数据库进行实时决策并满足几乎即时的延迟要求。
但是,组织仍然可以从标准查询技术和模式中受益,这就是为什么许多流式数据库还包括静态数据库组件的原因。这些统一数据库结合了流式数据库和静态数据库的优点,因为它们既支持流式数据库的实时功能,又支持静态数据库的查询过程和架构的灵活性。
对于大多数物联网应用来说,最好的数据库是结合了流式和静态功能的统一数据库。也正是由于这个原因,大多数最受欢迎的供应商的数据库都包括两种类型的数据库。
静态与流式数据库
探索更多细微差别的数据库架构
时间序列数据库在很多方面都基于与流式数据库相同的技术,但是两者的开发重点稍有不同。时间序列数据库更具战术性。它们通常涉及在NoSQL数据库上植入特定的索引技术,以实现高性能事件处理。流式数据库更加全面,可实现更广泛的数据分析组合,例如机器学习或窗口化。
SQL vs NoSQL?
SQL数据库是关系和功能静态模式,描述了信息的组织方式。这使它们易于管理。但是,它们会遇到有效扩展的问题。 NoSQL数据库是非关系型的,没有架构,并且通常被提倡为高度可扩展且性能优于SQL数据库。
一些技术专业人员可能会认为NoSQL数据库将是显而易见的选择,因为可伸缩性对于许多物联网应用至关重要。但是可伸缩性和性能只是技术人员选择数据库时需要考虑的两个因素。
在许多情况下,关键因素是易于集成到现有系统中,而在现有系统中SQL更有效。许多物联网工具和系统都采用SQL。在基于较旧消息协议或工业自动化平台的工业环境中尤其如此。
具有创建和管理模式的能力也是一个加分项。尽管技术人员可能会发现模式开发受到限制,必须组织信息。预先投入精力来开发模式可以节省大量的工作,以后可以在非架构环境中组织数据。
当在SQL和NoSQL之间进行选择时,企业可能还会发现将静态数据库与流式数据库结合起来会遇到挑战。从理论上讲,静态数据库或流式数据库可以是SQL或NoSQL。实际上,数据库专门设置为任何一个。对特定统一数据库感兴趣的IoT技术人员可能会发现,数据库设计决定了他们的SQL vs. NoSQL决策。
企业最终是选择SQL还是NoSQL数据库取决于更广泛的功能和技术要求,尤其是可伸缩性、性能以及集成到旧系统中的需求。