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