根據(jù)Gartner的報告,估計未來五年物聯(lián)網(wǎng)設(shè)備的數(shù)量將達(dá)到數(shù)萬億。物聯(lián)網(wǎng)呈現(xiàn)出高度新穎的挑戰(zhàn),特別是對數(shù)據(jù)庫管理系統(tǒng)的挑戰(zhàn),如如何實時集成大量龐大的數(shù)據(jù),并處理數(shù)據(jù)的安全性。例如,智能城市中應(yīng)用的基于物聯(lián)網(wǎng)的交通傳感器將實時生成大量的交通數(shù)據(jù)。數(shù)據(jù)庫在充分處理物聯(lián)網(wǎng)數(shù)據(jù)方面發(fā)揮著非常重要的作用。因此,隨著一個適當(dāng)?shù)钠脚_,正確的數(shù)據(jù)庫同樣重要。由于物聯(lián)網(wǎng)在全球多元化的環(huán)境中運(yùn)作,選擇適當(dāng)?shù)臄?shù)據(jù)庫變得非常具有挑戰(zhàn)性。另一個例子就是安裝在智能城市中的基于物聯(lián)網(wǎng)的環(huán)境溫度傳感器,它可以在幾分鐘內(nèi)產(chǎn)生大量關(guān)于活躍大氣溫度和濕度的數(shù)據(jù)
可見,物聯(lián)網(wǎng)一個重要特點(diǎn)是以數(shù)據(jù)為中心:
1、海量性
假設(shè)有一個擁有100個傳感器的傳感網(wǎng),而每個傳感節(jié)點(diǎn)每分鐘只傳回1Kb的數(shù)據(jù),那么每天的數(shù)據(jù)量就達(dá)到1.4Gb。如果是一些大型的敏感的傳感網(wǎng),每天的數(shù)據(jù)量可達(dá)1TB以上。至于未來物物互聯(lián)的物聯(lián)網(wǎng)時代,產(chǎn)生的數(shù)據(jù)就是十分龐大的數(shù)量。因此物聯(lián)網(wǎng)數(shù)據(jù)具有海量性。
2、多態(tài)性
物聯(lián)網(wǎng)的應(yīng)用包羅萬象,產(chǎn)生的數(shù)據(jù)自然也是多種多樣。有溫度、濕度等環(huán)境數(shù)據(jù);有視頻、音頻等多媒體數(shù)據(jù);還有與用戶交換信息的結(jié)構(gòu)化數(shù)據(jù)等等。數(shù)據(jù)的多態(tài)性必然增加數(shù)據(jù)的復(fù)雜性,不同網(wǎng)絡(luò)產(chǎn)生的數(shù)據(jù)格式可能不同,就算是相同類型的數(shù)據(jù)也會有單位和精度的差別,一個測量量在不同的時間也在變化。因此物聯(lián)網(wǎng)數(shù)據(jù)具有多態(tài)性。
3、關(guān)聯(lián)性及語義性
物聯(lián)網(wǎng)中的數(shù)據(jù)都不會是相互獨(dú)立的。描述同一個實體的數(shù)據(jù)在時間上具有關(guān)聯(lián)性;描述不同實體的數(shù)據(jù)在空間上會有關(guān)聯(lián)性;描述實體的不同維度之間也具有關(guān)聯(lián)性。而不同的關(guān)聯(lián)性組合會產(chǎn)生豐富的語義,可以通過數(shù)據(jù)在時間或空間或維度上的關(guān)聯(lián)性推斷出實體的變化。
簡言之,在很多物聯(lián)網(wǎng)系統(tǒng)中都需要對數(shù)量龐大的聯(lián)網(wǎng)設(shè)備進(jìn)行監(jiān)控,并對監(jiān)控采樣到的數(shù)據(jù)進(jìn)行持久化。經(jīng)過分析不難看出,物聯(lián)網(wǎng)中的數(shù)據(jù)類型有:
1)RFID:射頻識別
2)地址/唯一標(biāo)識符
3)過程,系統(tǒng)和對象的描述性數(shù)據(jù)
4)普遍的環(huán)境數(shù)據(jù)和位置數(shù)據(jù)
5)傳感器數(shù)據(jù):多維時間序列數(shù)據(jù)
6)歷史數(shù)據(jù)
7)物理模型:模型是現(xiàn)實的模板
8)用于控制的執(zhí)行器和命令數(shù)據(jù)的狀態(tài)
所以,我們在為物聯(lián)網(wǎng)應(yīng)用選擇數(shù)據(jù)庫之前應(yīng)考慮的因素有:
1)尺寸,比例和索引
2)處理大量數(shù)據(jù)時的有效性
3)用戶友好的模式
4)便攜性
5)查詢語言
6)流程建模和交易
7)異質(zhì)性和一體化
8)時間序列聚合
9)存檔
10)安全性和成本
下面通過一張圖來簡單分析一下當(dāng)前各種用于大數(shù)據(jù)時代的數(shù)據(jù)庫特點(diǎn)
從這張對比圖不難看出,這些基于存儲的數(shù)據(jù)庫各有其自己的優(yōu)勢和缺陷,Hbase 屬于 NO SQL ,雖然適合于高并發(fā)查詢,但它不直接支持SQL 查詢;HIVE 數(shù)據(jù)庫 更適合批處理大量數(shù)據(jù),無法實現(xiàn)聯(lián)機(jī)事務(wù)處理(OLTP);MYSQL 屬于傳統(tǒng)的 RDS, 其系統(tǒng)的擴(kuò)展性較差,不適合海量數(shù)據(jù)大批量處理;Redis 屬于內(nèi)存數(shù)據(jù)庫系統(tǒng), 過分依賴于內(nèi)存計算, 系統(tǒng)的擴(kuò)展性和安全性較差。
那么究竟什么樣的數(shù)據(jù)適合于物聯(lián)網(wǎng)呢?
其實,很多年前在工業(yè)領(lǐng)域已經(jīng)有專門的數(shù)據(jù)庫來完成這個任務(wù)了,在工業(yè)領(lǐng)域這個叫實時數(shù)據(jù)庫。工業(yè)領(lǐng)域的實時數(shù)據(jù)庫具有數(shù)據(jù)采集、實時數(shù)據(jù)緩存、數(shù)據(jù)回寫(向設(shè)備發(fā)送指令)、采樣數(shù)據(jù)歸檔存盤等主要功能。
目前工業(yè)領(lǐng)域?qū)崟r數(shù)據(jù)庫基本上被國外廠家所壟斷,價格昂貴。例如,PI(Plant Information System)是由美國OSIsoft公司開發(fā)的一套基于Client/Server結(jié)構(gòu)的商品化軟件應(yīng)用平臺,作為工廠底層控制網(wǎng)絡(luò)與上層管理信息系統(tǒng)網(wǎng)絡(luò)連接的橋梁,PI在工廠信息集成中扮演著特殊和重要的角色。PI數(shù)據(jù)庫基礎(chǔ)版本(只有5000個測點(diǎn))就需要大約10萬美元,每個數(shù)據(jù)采集接口需要6000美元。這個價格對新興的物聯(lián)網(wǎng)公司來說代價太大了。
以下重點(diǎn)推薦幾款適用于物聯(lián)網(wǎng)的開源數(shù)據(jù)庫:
InfluxDB:
開源網(wǎng)址:https://github.com/influxdata/influxdb
InfluxDB于2013年首次發(fā)布,是最近的數(shù)據(jù)庫之一。 Go編程語言用于開發(fā)此數(shù)據(jù)庫,該數(shù)據(jù)庫完全基于LevelDB,一個鍵值數(shù)據(jù)庫。 InfluxDB是一個時間序列數(shù)據(jù)庫,用于優(yōu)化和處理時間序列數(shù)據(jù)。 2000年Kdb首次發(fā)布時間序列數(shù)據(jù),但隨著物聯(lián)網(wǎng)的興起,InfluxDB開始流行起來,因為它推動了NoSQL,NewSQL和大量不斷增加的數(shù)據(jù)。
使用InfluxDB進(jìn)行物聯(lián)網(wǎng)數(shù)據(jù)的優(yōu)勢包括:
1)允許編制索引
2)它有一個類似于SQL的查詢語言
3)它還提供了缺失數(shù)據(jù)的內(nèi)置線性插值
4)它支持自動數(shù)據(jù)下采樣
5)支持連續(xù)查詢來計算聚合
CrateDB:
開源網(wǎng)址:https://github.com/crate/crate
CrateDB是一個分布式SQL數(shù)據(jù)庫管理系統(tǒng)。作為開源代碼并以Java編寫,它包含了來自Facebook Presto,Apache Lucene,Elasticsearch和Netty的組件,因此它的設(shè)計具有很高的可擴(kuò)展性。 CrateDB是為了使物聯(lián)網(wǎng)數(shù)據(jù)正常工作而開發(fā)的。從工業(yè)互聯(lián)網(wǎng)和連接汽車到可穿戴設(shè)備,CrateDB是新型物聯(lián)網(wǎng)解決方案創(chuàng)新者的首選數(shù)據(jù)庫。
使用CrateDB進(jìn)行物聯(lián)網(wǎng)數(shù)據(jù)的優(yōu)勢包括:
1)每秒數(shù)百萬個數(shù)據(jù)點(diǎn):快速,可線性擴(kuò)展的數(shù)據(jù)攝取
2)實時查詢:列式索引和字段緩存提供內(nèi)存中的SQL性能
3)動態(tài)模式:即時添加和查詢新的傳感器數(shù)據(jù)結(jié)構(gòu)
4)物聯(lián)網(wǎng)分析:快速,強(qiáng)大的時間序列,AI,地理空間,文本搜索,連接,聚合
5)始終開啟:內(nèi)置數(shù)據(jù)復(fù)制和群集重新平衡確保不間斷的性能
6)ANSI SQL:無需鎖定,便于任何開發(fā)人員使用和集成
7)內(nèi)置MQTT代理:直接從設(shè)備到數(shù)據(jù)庫集成
8)物聯(lián)網(wǎng)生態(tài)系統(tǒng):適用于Kafka,Grafana,NodeRED和其他流行的物聯(lián)網(wǎng)堆棧軟件
9)在任何地方運(yùn)行,以便在邊緣或云中進(jìn)行高效處理
RethinkDB:
開源網(wǎng)址:https://github.com/rethinkdb/rethinkdb
在開源數(shù)據(jù)庫列表中,RethinkDB位于頂部。它是用于實時Web的可擴(kuò)展JSON數(shù)據(jù)庫,它是從頭開始構(gòu)建的。 RethinkDB通過轉(zhuǎn)換傳統(tǒng)的數(shù)據(jù)庫體系結(jié)構(gòu)引入了令人興奮的新訪問模式。當(dāng)開發(fā)人員向其發(fā)送命令時,它可以不斷將更新后的查詢結(jié)果推送至應(yīng)用程序。這是開發(fā)人員稱為換卡的功能。 RethinkDB作為系統(tǒng)狀態(tài)的數(shù)據(jù)庫,實時存儲庫和消息代理,這是更改進(jìn)程允許的。其實時推送體系結(jié)構(gòu)大大減少了構(gòu)建可擴(kuò)展實時應(yīng)用程序所需的時間和精力。
將RethinkDB用于物聯(lián)網(wǎng)傳感器數(shù)據(jù)的優(yōu)點(diǎn)包括:
1)RethinkDB具有適用于檢查API的查詢語言,這非常容易設(shè)置和學(xué)習(xí)。
2)如果任何主服務(wù)器發(fā)生故障,命令會自動轉(zhuǎn)移到新服務(wù)器。
3)實時即插即用的節(jié)點(diǎn)功能,即使是一秒鐘也沒有停機(jī)時間,有助于節(jié)點(diǎn)的輕松添加。
4)通過Ruby和Tornado中的Eventmachine提供異步查詢,從而提供異步應(yīng)用程序編程接口。
5)它提供SSL訪問只是為了通過公共互聯(lián)網(wǎng)安全地訪問RethinkDB。
6)Floor,Ceil和Round是由RethinkDB提供的各種數(shù)學(xué)運(yùn)算符。
Apache Cassand?ra:
開源網(wǎng)址:http://cassandra.apache.org/, https://github.com/apache/cassandra

Apache Cassandra是一個免費(fèi)的開源分布式NoSQL數(shù)據(jù)庫管理系統(tǒng),最初于2008年發(fā)布。它旨在通過許多商品服務(wù)器處理大量數(shù)據(jù),提供高可用性,無單點(diǎn)故障。
在物聯(lián)網(wǎng)中,由于大量連接的設(shè)備,通過各種網(wǎng)絡(luò)生成,跟蹤和共享數(shù)據(jù)的規(guī)模非常巨大。 Cassandra非常擅長利用大量時間序列數(shù)據(jù),這些數(shù)據(jù)直接來自設(shè)備,用戶,傳感器以及存在于不同地理位置的類似機(jī)制。
使用Apache Cassandra獲得物聯(lián)網(wǎng)數(shù)據(jù)的優(yōu)勢包括:
1)容錯
2)演示高性能
3)分散化:集群中的每個節(jié)點(diǎn)都是相同的
4)可擴(kuò)展
5)耐用
6)確保您處于控制之下:每個更新都可以選擇同步和異步復(fù)制
7)彈性:讀取和寫入都是實時執(zhí)行的,因此任何應(yīng)用程序都沒有停機(jī)時間
8)專業(yè)支持:它強(qiáng)化了第三方提供的合同和服務(wù)。