在設計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數據庫取決于更廣泛的功能和技術要求,尤其是可伸縮性、性能以及集成到舊系統中的需求。