唐洪奎,張 程,劉 驥
(重慶大學計算機學院,重慶 400044)
基于NoSQL的物聯網數據本體模型存儲技術研究與實現
唐洪奎,張 程,劉 驥
(重慶大學計算機學院,重慶 400044)
隨著信息技術的發(fā)展,物聯網為實現萬物互聯互通孕育而生。數據存儲是物聯網重要部分,但是物聯網數據具有海量、異構、復雜多變的特點。本文根據物聯網數據的特點,提出一種基于NoSQL數據庫和本體概念模型的物聯網中間數據存儲模型,提出物聯網數據存儲的方案,解決了物聯網海量異構數據存儲的問題,并使用tDB數據庫驗證該方案在物聯網存儲方面的高效性。
物聯網;本體存儲模型;NoSQL數據庫
1995年,比爾蓋茨提出“物聯網”的概念,之后麻省理工大學自動識別中心將物聯網定義為:把所有物品通過射頻識別等信息傳感設備與互聯網連接起來,實現智能化識別和管理[1]。2005年,國際電信聯盟發(fā)布《The Internet of things》年度報告,擴展了“物聯網”的概念,認為物聯網涵蓋任何時刻、任何地點、任何物體之間互聯,無處不在的網絡、無處不在的計算[2]。隨著科學技術和社會的發(fā)展,物理網已經成為了學術界和工業(yè)界關注的焦點,不同國家或地區(qū)都提出了物聯網戰(zhàn)略,比如歐洲的“e-Europe”[3]、美國的“智慧地球”,以及中國的“感知中國”[4]。
物聯網的體系結構可以分成感知層、網絡層、數據層以及應用層四個層次:感知層從環(huán)境中感知到物理狀態(tài),在經過網絡層將數據傳輸到數據層,數據層由存儲節(jié)點組成,存儲節(jié)點中的數據可供應用層使用,比如數據挖掘、實時交通分析等等[5],如圖1所示。其中數據層保存感知的物理狀態(tài),同時為應用層提供數據支持,所以物聯網的核心功能之一就是存儲感知到的數據,以一定的形式將數據保存在存儲介質當中,這也就是數據層要完成的功能。
本文嘗試對物聯網體系結構中較低層次存儲節(jié)點的存儲模型進行研究,并根據物聯網的特點提出存儲模型方案。
圖1 物聯網架構Fig.1 the Architecture of IoT
1.1 海量數據存儲模型
基于不同的思路和技術,比如文件系統(tǒng)、數據庫等,可以構建出不同的物聯網存儲模型。
從文件系統(tǒng)的角度出發(fā),面對物聯網海量數據的存儲與管理,大部分研究者關注到文件存儲系統(tǒng)的研究,這種文件系統(tǒng)建立在節(jié)點的本地文件系統(tǒng)上,通過網絡將多個節(jié)點相連,同時通過管理節(jié)點關聯和協調多個節(jié)點的訪問、控制、管理,提供多用戶文件訪問,可以解決I/O瓶頸和系統(tǒng)擴展問題[5]。早期文件系統(tǒng)運用比較簡單的實現的存儲方案,如:用XML存儲數據為嵌入式設備提供Web服務[6];數據存儲在PML中,作為物聯網的數據服務器[7]。隨著技術的發(fā)展,出現了分布式文件系統(tǒng)的存儲方案,如:Lustre[8],GFS[9]以及HDFS[10]。
但是,使用文件系統(tǒng)進行存儲的缺陷是:文件結構與應用的耦合性太強,實現數據共享比較困難;數據冗余大,數據出現不一致;對于物聯網的大量數據,文件系統(tǒng)無法提供多維度的數據檢索功能;面對實時的數據流處理能力差。所以,基于文件系統(tǒng)的存儲方案無法勝任儲存物聯網海量數據的任務。
除文件系統(tǒng)外,也有研究者從數據庫技術的角度看待物聯網的存儲問題。根據存儲模型的不同,可以將數據庫分為:關系型數據庫和非關系型數據庫。
關系數據庫技術已經非常成熟,許多物聯網的存儲也采用關系數據庫作為解決方案。但是將關系數據庫模型直接應用到解決物聯網存儲的問題,很難物聯網功能的需求。主要原因在于,關系數據庫本身設計是針對實務型的數據處理,在關系模型當中,一但數據庫模型構建完成,生成數據庫實例后,數據對象、數據對象(數據庫表)之間的關系也就固定,在數據庫實例運行期間,只存在表記錄數量的變化、對象間確定關系數量的變化、表單元內容“值”的變化,而數據的類型結構、類型關系固定,無法滿足物聯網海量數據類型異構多樣、動態(tài)變化的特點。
在非關系型數據庫方面,一些新的數據庫技術的得到關注,尤其是NoSQL技術[11]。NoSQL技術可分為四類:(1)鍵值型(Key-Value),通過構建索引,值通過一個唯一鍵進行索引;(2)文檔型(Document),Key-Value存儲到文檔中,比如 json文檔;(3)列式(Column Family),存儲的數據以列為單位;(4)圖式(Graph),利用圖論構建Key-Value關系,適用于關系復雜的數據管理。由于 NoSQL技術有性能、擴展性方面的優(yōu)勢,已經在大數據處理方面有較為成功的應用。當前,較為流行的開源NoSQL 數據庫有 MongoDB[12]、CouchDB[13]、HBase[14]、Redis以及 Cassandra[15]等,應用較廣的非開源數據庫有Google的Bigtable[16]以及亞馬遜的Dynamo[17]等。
也有研究者將上述兩種技術思路結合起來,發(fā)揮兩者的優(yōu)點,彌補缺點,稱為混合技術[18-19],但是兩種技術結合必然增加額外的開銷,影響到存儲系統(tǒng)的性能。
1.2 本體技術
“本體”(Ontology)一詞很早就有人提出,許多哲學家都探討過本體的概念。哲學意義上講,本體研究的主題是“什么是存在、什么是永恒、什么是不變”,但是不同學派持有不同觀點,對于“本體”概念內涵的解讀也不盡相同。對于計算機技術而言,“計算”含義可以看成是一種思維過程,而思維過程依賴于概念之間的關系,利用唯心主義學派“本體”的觀點,將“本體”概念引入計算機理論。但區(qū)別于哲學研究,計算機研究提出符合技術要求的“本體”定義。
人工智能領域,Neches等人定義本體為“給出相關領域詞匯的基本術語和關系,以及利用這些術語和關系構成規(guī)定這些詞匯外延的規(guī)則的定義”[20]。1993年,Gruber定義本體為“本體是概念模型的明確規(guī)范說明”。Brost定義本體為“本體是共享概念的形式化規(guī)范說明”。Studer認為“本體是共享概念模型的明確的形式化規(guī)范說明”??梢钥闯觥氨倔w”有4層含義:概念模型、明確、形式化和共享[21]。
當前已研究者提出了許多基于“本體”概念的存儲模型,如論文[22]介紹的 Sesame模型[22]。與NoSQL相似,本體存儲管理系統(tǒng)根據存儲介質可以分為三種:(1)基于主存,在內存中按照某種結構進行組織,并在內存中進行數據儲存、數據操作,如OWLim[23]、OWLJessKB[24];(2)基于文件系統(tǒng),用文件存儲和管理數據,如簡單的 XML文件,相對比較復雜的有Kowari[25];(3)基于關系數據庫,利用成熟的關系數據庫技術實現數據類型的維系、類型之間的關系、數據的儲存,如Rstar[22],Jena[22]。
NoSQL技術和本體技術有一定的相似性,可將兩種理念結合起來。面對物聯網海量復雜多變的數據類型,盡量體現NoSQL技術和本體技術的優(yōu)勢,滿足物聯網的數據存儲需求。
2.1 模型設計
本文嘗試利用本體技術構建概念模型,實現明確、共享的功能,對存儲的物聯網數據類型進行本體的概念描述,一方面可以維系復雜多變的非結構化數據類型,另一方面可以提出類型數據實例的合法性監(jiān)測,并結合大數據NoSQL數據庫特點,提出了滿足大數據等應用需求的物聯網的本體描述及存儲模型。
該存儲模型中的基礎記錄單元定義為 SampleElement:
SampleElement=
在SampleElemet中,key∈Char,是value的名稱;value∈Char∪Number,用于存儲值,例如:
圖2表示存儲系統(tǒng)的記錄模型,在該存儲系統(tǒng)中,記錄所收到的數據按照Record的格式進行存儲。Record是基本存儲單元,Record主要包括兩部分內容:解析數據的概念模型和數據實例部分,數據實例部分又分靜態(tài)和動態(tài)兩部分數據。Record記錄中的rID唯一標識當前記錄,ClassID指向的是這條記錄的概念模型,sID指向當前記錄的數據實例的靜態(tài)部分,例如存儲移動設備的名稱、廠商、物品碼等信息,InstID 指向的是數據實例的動態(tài)部分,Location標識的是當前這條記錄采集時設備的物理位置,RecordTime標識的是當前這條記錄發(fā)生時的時間。
實例數據的靜態(tài)部分,存儲不經常改變的數據,通常是人為設定的一些數據,比如設備名稱、廠商、物品碼等信息,這些數據,物聯網設備一旦使用,基本就已經確定。靜態(tài)部分中,ID唯一標識該條記錄,Len表示這條記錄的長度,tID表示物品碼等信息,sV1,sV2表示更多的靜態(tài)信息,其以 NoSQL Key-Value的形式存儲。
實例數據的動態(tài)部分,儲存經常在更新的數據,比如溫度,濕度等等會隨著環(huán)境改變有著劇烈變化的數據,這些數據一般都是物聯網設備從環(huán)境中測量采用出來的,其大小多少由環(huán)境來決定。在動態(tài)部分中,ID唯一標識一條動態(tài)數據記錄,Len表示數據記錄的長度,V1,V2,……表示存儲的動態(tài)數據,其以NoSQL Key-Value的形式存儲。
其中實體數據中的數據采用之前定義的SampleElement結構進行保存,比如一個數據實例的動態(tài)部分可以表達為{ID:”1”,Len:”3”,field:”trafic”,temperature:50,context:”None”}.
基本單元中的 ClassID指向一個基于本體理念設計的一個結構,用于維護數據模式的概念模型,包括概念(也就是類)與屬性之間的關系、概念和概念之間的關系,還包括對于類屬性的描述。概念模型圖如圖3所示。
圖2 存儲模型Fig.2 the Storage Model
圖3 本體概念模型Fig.3 the Ontology Conceptual Model
類在概念模型中表達基本的概念,ID用于唯一標識一個概念,Name表明類的名字;范疇屬性表達的是模型中的最基本類型,如整數類型、浮點數類型、字符類型等等,因為是基本類型,所以命名為“范疇屬性”;域、類屬性表用于將類與范疇屬性進行關聯,關聯則意味著類所代表的概念下蘊含范疇屬性表達的性質,域、類屬性表的省略號可以是當前這個類屬性的一些描述,比如值的范圍等等;類關系表表達的是類之間的關系,也就概念之間的關系,比如繼承關系(蘊含關系),又比如面向對象里提到的“有”關系也可表達,Type標定關系的類型,IDsup和IDsub分別表示兩個類的ID指向類表。
我們將本體技術和NoSQL技術結合起來,本體技術可用于維護數據類型的結構,并且可以根據需要發(fā)生改變,這一點主要是用于滿足物聯網數據存儲的異構性,并且理由概念模型,我們也可進行對數據類型的合法性進行檢查。
為了更加高效的實現檢索功能,使用B+樹等數據結構構建索引,使用哈希表等數據結構完成檢索過程當中涉及到的集合運算,從而提高查詢性能。
2.2 模型舉例
現在以重慶電網某變電站的實時監(jiān)控系統(tǒng)來具體說明存儲模型的存儲方案。
在一個變電站中,有交流線路、變壓器、母線等設備。其相關信息如下:
(1)交流線路的屬性有:設備狀態(tài)、線路基本名稱、設備類型、設備子類、鏈接場站 1、鏈接開關1、鏈接間隔1、鏈接場站2、鏈接開關2、鏈接間隔 2、電壓等級、全路徑名稱、資產單位、運維單位等等。
(2)變壓器的屬性有:設備狀態(tài)、所屬廠站命名、設備類型、設備子類、變壓器編號、電壓等級、全路徑名稱、設備名等等稱、資產單位、所屬間隔、運維單位、所屬調度機構等等。
(3)母線的屬性有:所屬廠站命名、設備類型、設備子類、母線編號、電壓等級、全路徑名稱、設備名稱、設備間隔、資產單位、運維單位。
以上屬性是對象實例數據中的靜態(tài)部分,這些數據反映為管理變電站而人為的設定的信息,比如配置信息、命名信息、組織信息等等。
同時,在該電力系統(tǒng)中這些設備還存在大量實時動態(tài)信息,用于反映環(huán)境的變化,比如設備的有功功率、無功功率,變電器開關的實時電壓,監(jiān)測設備測量的變壓器放電次數(每分鐘)、放電幅值等。
下文以有功功率、無功功率為例說明本文提出的模型與關系數據庫存儲方案的區(qū)別。
2.2.1 關系數據庫的存儲方案
根據關系數據庫的特點和模型要求,針對設備有功功率、無功功率的關系數據庫存儲模式如下:
圖4 關系型數據表模式Fig.4 the Pattern of Relational Data Table
其中 Ouur_time表明記錄的時間,Cur_01、Cur_02、……、Cur_99、Cur_100記錄有功功率和無功功率,具體記錄的是哪個設備的有功功率和無功功率,用另外一張數據表表達,如圖5所示:
圖5 設備屬性關聯表Fig.5 the Table of Device Attribute Association
上圖中,Cur_01Cur_02分別表達設備1的有功功率和無功功率,Cur_03Cur_04分別表達設備 2的有功功率和無功功率,以此類推。
根據以上設計,存儲動態(tài)實時數據表最多可以記錄50個設備的有功功率和無功功率,當設備少于50個設備時,會出現存儲空間的浪費;當設備大于50個設備時,需要重新建表,并且維護表之間的關系,增加了管理和復雜程度,同時,也增加了計算負擔。
2.2.2 基于NoSQL與本體的存儲方案
采用本文提出的存儲模型,可以對以上問題進行改進,從而使得存儲模型更好適應物聯網的數據特點和物聯網應用的需要。
首先是對變電站中設備之間在組織關系的表達,使用本體概念模型來表達設備之間的關系,圖6所示。
圖6 該變電站本體概念模型實例Fig.6 the Ontology Conceptual Model Instance of this Transformer Substation
圖6所示實例存儲是變電站概念與變電站下屬設備概念之間的關系:類表中有變電站、變壓器、母線、交流線路概念;范疇屬性表中描述了整數(Int)、單精度浮點數(Float)、雙精度浮點數(Double)、字符串(String)等等基本類型;類關系表中表達概念之間的關系,如第一條記錄(1,2,have,...)表示,變電站概念包括變壓器的概念(have關系),其他以此類推;類屬性表關聯概念與屬性,比如第一條記錄(2,4,’設備狀態(tài)’,’靜’,...)將變電站概念與范疇屬性String關聯,并且命名屬性名設備狀態(tài),”靜”指明此屬性為靜態(tài)屬性,其值存儲在實例數據的靜態(tài)部分,又例如記錄(2,2,’有功功率’,’動’,...)將變電站概念與范疇屬性Float關聯,屬性名為有功功率,為動態(tài)屬性,其內容將存儲在實例數據的動態(tài)部分,其他以此類推。
概念的本體模型表達清楚后,變電站物聯網設備數據實例的存儲如圖7。
如圖7中所示,Records記錄了4條記錄,以第一條為例,sID為1,指向實例數據的靜態(tài)部分,可知該設備所示變電站為敖山站,ClassID為2,指向本體概念模型中變壓器概念的ID,可知此條記錄的設備為變壓器,InstID為100,指向實例數據的動態(tài)部分,Location為(106.46183,29.41379),表明該變壓器的經緯度,RecordTime為’2016/10/1012:20: 18’,表明該數據產生時間。實例數據(靜態(tài)部分)第一條記錄數據長度為 254,tID類型為 1,其后Shebeizhuangtai:’啟用’、Suoshuchangzhan:’敖山站’、Shebeileixing:’變壓器’等等,以 Key-Value鍵值對的方式存儲。同理,實例數據(動態(tài)部分)第一條記錄數據長度 38,YouGong_Power:100.1、WuGong_Power:21.4,同樣也是以Key-Value形式記錄有功功率和無功功率,其值分別為100.1、21.4。
圖7 該變電站存儲實例Fig.7 the Storage Instance of this Transformer Substation
其他記錄以此類推。
3.1 實驗背景描述
為驗證本方案,本文采用了重慶電網某變電站的 2015年所有設備的累積數據,并使用 Oracle數據庫按照3.2.1的傳統(tǒng)方式加以存儲;另外,作者按照本文提出的存儲模型開發(fā)了一個簡單的存儲系統(tǒng)tDB(Windows,vs2010,C++開發(fā)),用于相同數據的存儲,并通過實驗加以對比驗證。
該變電站累積數據的數據量為9567996條。我們將數據按照200萬、400萬、600萬、800萬的規(guī)格導入到關系型數據庫(Oracle)和tDB中,比較在不同規(guī)模數據的情況下單條記錄數據的平均查找時間,同時也比較計算所有設備全年每條功率因數所消耗的時間。
3.2 實驗結果與分析
3.2.1 查詢時間對比
圖8展示了查詢實驗結果,水平坐標是實驗的數據量大小,豎直方向代表多次單條記錄查詢平均時間,藍色線條是Oracle的實驗結果,紅色線條是tDB的實驗結果。隨著數據量的增加,兩條查詢所需要平均時間逐漸增加,同時斜率逐漸增大,說明系統(tǒng)所消耗的時間有所增加。從兩條線的對比來看,在數據規(guī)模較小時,Oracle數據庫的時間優(yōu)于 tDB數據,但隨著數據量的增加,tDB的優(yōu)勢逐漸體現出來,說明基于NoSQL技術和本體理念的tDB數據庫在應對物聯網海量異構多變的數據存儲方面有優(yōu)勢。3.2.2 功率因素計算
圖8 平均查詢時間對比Fig.8 the Comparison of Average Query Time
在電力系統(tǒng)當中,功率因數是用來衡量用電設備或電力輸出設備的用電或是傳輸效率的數據。功率因數定義為:
其中,P是有功功率是設備消耗了的,轉換為其他能量的功率;K是無功功率,是維持設備運轉,但是并不消耗的能量。
圖9展示了功率因數實驗結果,水平坐標是實驗的數據量大小,豎直方向代表計算所有功率因數所消耗的時間,藍色線條是Oracle的實驗結果,紅色線條是tDB的實驗結果。隨著數據量的增加,計算所需要的系統(tǒng)耗時逐漸增加,但是基于 NoSQL和本體概念模型的tBD系統(tǒng)計算耗時優(yōu)于同等數量級別的Oracle的耗時時間,可見基于NoSQL和本體概念存儲模型針對物聯網的大數據應用有較好的支持,在計算性上優(yōu)于關系型數據庫。
圖9 功率因數計算時間對比Fig.9 the Comparison of Power Factor Computation Time
面對大物聯網海量類型異構多變的數據的存儲需求,本文提出了基于NoSQL技術和技術的存儲模型,NoSQL技術用于應對半結構、非結構的異構數據,本體概念模型用于維系異構多變數據類型間的關系,使NoSQL技術面對異構數據時,有本可依,提高了數據的安全性,兩者相輔相成。根據本文提出的存儲模型開發(fā)的tDB系統(tǒng)驗證了,在面對海量異構數據時,本文提出的存儲模型方案優(yōu)于關系數據庫。未來,基于本文思路,可開發(fā)分布式的物聯網存儲系統(tǒng)。
[1]AutoID Labs homepage.http://www.autoidlabs.org/.
[2]International Telecommunication Union,Internet Reports-2005: The Internet of thing[R].Geneva: ITU, 2005.
[3]Commission of the European communities, COM (2009)278 final.Internet of things-an action plan for Europe, Brussels[J].(2009-06-18)[2010-05-12].http://ec.europa.eu/information_ society/policy/rfid/documents/commiot2009.Pdf.
[4]溫家寶.2010年政府工作報.(2010-03-15)[2010-05-12].http://www.gov.cn/2010lh/content_1555767.Htm.
[5]田野, 袁博, 李廷力.物聯網海量異構數據存儲與共享策略研究[J].電子學報, 2016(2): 247-257.
[6]CASTELLANI A P, GHEDA M, BUI N, et al.Web services for the Internet of things through CoAP and EXI[C]/ /Proc of IEEE International Conference on Communications.2011: 1-6.
[7]李再進, 謝勇, 鄔方, 等.物聯網中PML服務器的設計和實現[J].物流技術, 2004(11): 80-83.
[8]Lustre (file system) [EB/OL].http: //en.wikipedia.org/wiki/ Lustre_(file_system).
[9]GHEMAWAT S, GOBIOFF H,LEUNG S The Google file system[C].//Proc of the 19th ACM Symposium on Operating Systems Principles.New York: ACM Press, 2003: 29-43.
[10]Hadoop.HDFS architecture guide[EB/OL].http://hadoop.apache.org/docs/r1.0.4/hdfs_design.html.
[11]HAN Jing, HAIHONG E, LE Guan, et al.Survey on NoSQL database[C].//Proc of the 6th International Conference on Pervasive Computing and Applications.2011: 363-366.
[12]MogoDB Inc.MongoDB[EB/OL].http://www.mongodb.org/.
[13]Apache Software Foundation.Apache CouchDB[EB/OL].http://couchdb.apache.org/.
[14]Apache Software Foudation.Apache HBase[EB/OL]http: //hbase.apache.org/.
[15]Apache Software Foundation.Apache Cassandra[EB/OL].http://cassandra.apache.org/.
[16]CHANG F, DEAN J, GHEMAWAT S, et al.Bigtable: a distributed storage system for structured data[C]//Proc of the 7th USENIX Symposiumon Operationg Systems Design and Implementation.2006: 1-11.
[17]DeCANDIA G, HASTORUN D, JAMPANI M, et al.Dynamo: Amazon’shighly available key-value store[C]//Proc of the 21st ACM Symposium on Operating Systems Principles.New York: ACM Press, 2007: 205-220.
[18]Zhang Guigang, Li Chao, Zhang Yong, et al.SemanMedical: a kind of semantic medical monitoring system model based on the IoT sensors[C].Proceedings of the IEEE 14th International Conference on e-Health Networking, Applications and Services.USA: IEEE, 2012.238-243.
[19]A M Marìa, H L Sergio, S Abel, et al.A comparative study of data storage and processing architectures for the smart grid[A].Proceedings of the First IEEE International Conference on Smart Grid Communications[C].USA: IEEE, 2010.285-290.
[20]Neches R, Frikes R E, Gruber T R, et al.Enabling Technology for Knowledge Sharing.AI Magazine, 1991, 12(3): 36-56.
[21]Studer R, Benjiamins VR, Fensel D.Knowledge Enineering, Principles and Methods.Data and Knowledge Engineering, 1988, 25(1-2), 161-197.
[22]鮑文, 李冠宇.本體存儲技術研究[J].計算機技術與發(fā)展, 2008(10), 147-150.
[23]Lukac R.Adaptive vector median filtering[M].Pattern Recognition Letters, 2003, 24(12): 1889-1899.
[24]曲延鋒.有效去除圖像中脈沖噪聲的新型濾波算法[J].計算機輔助設計與圖形學學報, 2003, 15(4): 397-401.
[25]章毓晉.圖像工程(上冊)[M].北京: 清華大學出版社, 2002.
Research and Implementation of Ontology Storage Model for Internet of Things Based on NoSQL
TANG Hong-kui1, ZHANG Cheng, LIU Ji
(School of computer science, Chongqing University, ChongQing 40044)
With the development of Information Technology, Internet of things(IoT) emerges for the requirements of connecting all things.Data storage is an important part of the Internet of things, but the data of the Internet of things has the characteristics of massive, heterogeneous and complex compared with the traditional IT system.According to the characteristics of IoT data.This paper presents a network intermediate data storage model based on NoSQL database and Ontology Conceptual Model.This paper solved massive and heterogeneous data storage problem of IoT, and use the tDB database to verify the high-efficiency of the storage model in IoT.
Internet of things; Ontology Storage Model; NoSQL database
TP311.131
A
10.3969/j.issn.1003-6970.2017.03.006
國家自然科學基金(61502060)
唐洪奎(1988-),男,重慶大學計算機學院研究生,主要研究方向為物聯網數據存儲。
張程,副教授,主要研究方向為移動智能,無線傳感器網絡。
本文著錄格式:唐洪奎,張程,劉驥.基于NoSQL的物聯網數據本體模型存儲技術研究與實現[J].軟件,2017,38(3):27-33