在設(shè)計(jì)IoT數(shù)據(jù)庫時(shí),企業(yè)可以有很多選擇,但是技術(shù)人員必須通過評(píng)估不同的IoT數(shù)據(jù)庫體系結(jié)構(gòu)(例如static vs. streaming and SQL vs. NoSQL)來確定最合適的方案。
正確的物聯(lián)網(wǎng)數(shù)據(jù)庫取決于每個(gè)物聯(lián)網(wǎng)項(xiàng)目的需求。因此,選擇數(shù)據(jù)庫的第一步是在數(shù)據(jù)庫架構(gòu)中進(jìn)行選擇時(shí)考慮到物聯(lián)網(wǎng)項(xiàng)目應(yīng)用的關(guān)鍵特性。物聯(lián)網(wǎng)技術(shù)人員必須確定要存儲(chǔ)和管理的數(shù)據(jù)類型、數(shù)據(jù)流、分析、管理和安全的功能要求、以及性能和業(yè)務(wù)要求。
在確定組織對(duì)數(shù)據(jù)庫的需求之后,IT管理員必須評(píng)估IoT數(shù)據(jù)庫體系結(jié)構(gòu)以及它們?nèi)绾未龠M(jìn)或抑制IoT數(shù)據(jù)需求。
了解靜態(tài)和流式IoT數(shù)據(jù)庫架構(gòu)
首先,了解靜態(tài)數(shù)據(jù)庫與流式數(shù)據(jù)庫之間的根本區(qū)別。
靜態(tài)數(shù)據(jù)庫,也稱為批處理數(shù)據(jù)庫,用于管理靜態(tài)數(shù)據(jù)。用戶需要訪問的數(shù)據(jù)作為由數(shù)據(jù)庫管理系統(tǒng)(DBMS)管理的存儲(chǔ)數(shù)據(jù)駐留。用戶進(jìn)行查詢并從DBMS接收響應(yīng),該DBMS通常但并非總是使用SQL。
流式數(shù)據(jù)庫處理運(yùn)動(dòng)中的數(shù)據(jù)。數(shù)據(jù)不斷地流經(jīng)數(shù)據(jù)庫,并具有一系列連續(xù)的查詢,通常以特定于流式數(shù)據(jù)庫的語言進(jìn)行。流式數(shù)據(jù)庫的輸出最終可以存儲(chǔ)在其他地方,例如云中,并可以通過標(biāo)準(zhǔn)查詢機(jī)制進(jìn)行訪問。
流式數(shù)據(jù)庫通常是分布式的,以處理大量數(shù)據(jù)的規(guī)模和負(fù)載要求。當(dāng)前,有一系列商用、專有和開源流數(shù)據(jù)庫,包括Google Cloud Dataflow、Microsoft StreamInsight、Azure Stream Analytics、IBM InfoSphere Streams和Amazon Kinesis。
開源系統(tǒng)主要基于Apache,包括Databricks提供的Apache Spark Streaming,Data Artisans提供的Apache Flink,Confluent提供的Apache Kafka和Twitter所擁有的Apache Storm。組織主要使用流數(shù)據(jù)庫進(jìn)行實(shí)時(shí)決策并滿足幾乎即時(shí)的延遲要求。
但是,組織仍然可以從標(biāo)準(zhǔn)查詢技術(shù)和模式中受益,這就是為什么許多流式數(shù)據(jù)庫還包括靜態(tài)數(shù)據(jù)庫組件的原因。這些統(tǒng)一數(shù)據(jù)庫結(jié)合了流式數(shù)據(jù)庫和靜態(tài)數(shù)據(jù)庫的優(yōu)點(diǎn),因?yàn)樗鼈兗戎С至魇綌?shù)據(jù)庫的實(shí)時(shí)功能,又支持靜態(tài)數(shù)據(jù)庫的查詢過程和架構(gòu)的靈活性。
對(duì)于大多數(shù)物聯(lián)網(wǎng)應(yīng)用來說,最好的數(shù)據(jù)庫是結(jié)合了流式和靜態(tài)功能的統(tǒng)一數(shù)據(jù)庫。也正是由于這個(gè)原因,大多數(shù)最受歡迎的供應(yīng)商的數(shù)據(jù)庫都包括兩種類型的數(shù)據(jù)庫。
靜態(tài)與流式數(shù)據(jù)庫
探索更多細(xì)微差別的數(shù)據(jù)庫架構(gòu)
時(shí)間序列數(shù)據(jù)庫在很多方面都基于與流式數(shù)據(jù)庫相同的技術(shù),但是兩者的開發(fā)重點(diǎn)稍有不同。時(shí)間序列數(shù)據(jù)庫更具戰(zhàn)術(shù)性。它們通常涉及在NoSQL數(shù)據(jù)庫上植入特定的索引技術(shù),以實(shí)現(xiàn)高性能事件處理。流式數(shù)據(jù)庫更加全面,可實(shí)現(xiàn)更廣泛的數(shù)據(jù)分析組合,例如機(jī)器學(xué)習(xí)或窗口化。
SQL vs NoSQL ?
SQL數(shù)據(jù)庫是關(guān)系和功能靜態(tài)模式,描述了信息的組織方式。這使它們易于管理。但是,它們會(huì)遇到有效擴(kuò)展的問題。NoSQL數(shù)據(jù)庫是非關(guān)系型的,沒有架構(gòu),并且通常被提倡為高度可擴(kuò)展且性能優(yōu)于SQL數(shù)據(jù)庫。
一些技術(shù)專業(yè)人員可能會(huì)認(rèn)為NoSQL數(shù)據(jù)庫將是顯而易見的選擇,因?yàn)榭缮炜s性對(duì)于許多物聯(lián)網(wǎng)應(yīng)用至關(guān)重要。但是可伸縮性和性能只是技術(shù)人員選擇數(shù)據(jù)庫時(shí)需要考慮的兩個(gè)因素。
在許多情況下,關(guān)鍵因素是易于集成到現(xiàn)有系統(tǒng)中,而在現(xiàn)有系統(tǒng)中SQL更有效。許多物聯(lián)網(wǎng)工具和系統(tǒng)都采用SQL。在基于較舊消息協(xié)議或工業(yè)自動(dòng)化平臺(tái)的工業(yè)環(huán)境中尤其如此。
具有創(chuàng)建和管理模式的能力也是一個(gè)加分項(xiàng)。盡管技術(shù)人員可能會(huì)發(fā)現(xiàn)模式開發(fā)受到限制,必須組織信息。預(yù)先投入精力來開發(fā)模式可以節(jié)省大量的工作,以后可以在非架構(gòu)環(huán)境中組織數(shù)據(jù)。
當(dāng)在SQL和NoSQL之間進(jìn)行選擇時(shí),企業(yè)可能還會(huì)發(fā)現(xiàn)將靜態(tài)數(shù)據(jù)庫與流式數(shù)據(jù)庫結(jié)合起來會(huì)遇到挑戰(zhàn)。從理論上講,靜態(tài)數(shù)據(jù)庫或流式數(shù)據(jù)庫可以是SQL或NoSQL。實(shí)際上,數(shù)據(jù)庫專門設(shè)置為任何一個(gè)。對(duì)特定統(tǒng)一數(shù)據(jù)庫感興趣的IoT技術(shù)人員可能會(huì)發(fā)現(xiàn),數(shù)據(jù)庫設(shè)計(jì)決定了他們的SQL vs. NoSQL決策。
企業(yè)最終是選擇SQL還是NoSQL數(shù)據(jù)庫取決于更廣泛的功能和技術(shù)要求,尤其是可伸縮性、性能以及集成到舊系統(tǒng)中的需求。
? ? ? ?責(zé)任編輯:pj
評(píng)論