国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

面向物聯(lián)網(wǎng)系統(tǒng)歷史數(shù)據(jù)服務(wù)的設(shè)計(jì)與實(shí)現(xiàn)

2017-10-17 11:00張玉杰張婷婷
關(guān)鍵詞:歷史數(shù)據(jù)文檔客戶端

張玉杰, 張婷婷

(陜西科技大學(xué) 電氣與信息工程學(xué)院, 陜西 西安 710021)

面向物聯(lián)網(wǎng)系統(tǒng)歷史數(shù)據(jù)服務(wù)的設(shè)計(jì)與實(shí)現(xiàn)

張玉杰, 張婷婷

(陜西科技大學(xué) 電氣與信息工程學(xué)院, 陜西 西安 710021)

物聯(lián)網(wǎng)系統(tǒng)中大量的用戶終端及設(shè)備終端之間的信息交互會(huì)產(chǎn)生海量的異構(gòu)數(shù)據(jù)流,數(shù)據(jù)中心需要及時(shí)分析和處理這些數(shù)據(jù),選擇對(duì)用戶有用的數(shù)據(jù)進(jìn)行存儲(chǔ),可以便于對(duì)設(shè)備的當(dāng)前與歷史狀態(tài)進(jìn)行查詢,同時(shí)為設(shè)備的大數(shù)據(jù)服務(wù)提供數(shù)據(jù)基礎(chǔ).針對(duì)此問題,同時(shí)結(jié)合物聯(lián)網(wǎng)系統(tǒng)異構(gòu)型數(shù)據(jù)存儲(chǔ)的特點(diǎn)和通信實(shí)時(shí)性、可靠性需求以及對(duì)不同終端的通用性,提出一種結(jié)合MongoDB數(shù)據(jù)庫(kù)、RESTful Web Service、MQTT通信、JMS消息服務(wù)等技術(shù)的物聯(lián)網(wǎng)系統(tǒng)歷史數(shù)據(jù)的管理及存儲(chǔ)系統(tǒng)架構(gòu),實(shí)現(xiàn)各設(shè)備節(jié)點(diǎn)歷史數(shù)據(jù)的獲取、選擇性存儲(chǔ)、刪除及查詢等功能,并可適用于不同設(shè)備終端.該系統(tǒng)架構(gòu)經(jīng)過長(zhǎng)期測(cè)試,可實(shí)現(xiàn)物聯(lián)網(wǎng)系統(tǒng)中各設(shè)備節(jié)點(diǎn)數(shù)據(jù)的獲取和集中管理,并可有效提高數(shù)據(jù)庫(kù)的存儲(chǔ)效率及存儲(chǔ)利用率.

物聯(lián)網(wǎng)系統(tǒng); 歷史數(shù)據(jù); 選擇性存儲(chǔ); 集中管理

Abstract:The information exchange between a large number of user terminals and equipment terminals in the Internet of Things system will produce massive heterogeneous data streams.The data center needs to analyze and process these data in time and select the useful data for users to store,in order to facilitate the current and historical status of the equipment to query,and provide data base for equipment large data services.In view of this problem,a management and storage system architecture of historical data of Internet of Things System combined of MongoDB database,RESTful Web Service,MQTT communication,JMS message service was put forward to meet the characteristics of heterogeneous data storage system and the real-time communication,reliability requirements and the versatility of different terminals.For the result,the system can achieve the device node historical data acquisition,selective storage,delete and query functions,and can be applied to different equipment terminals.Through long-term testing,the system architecture can be achieved in the Internet of Things in the system node data acquisition and centralized management,and can effectively improve the database storage efficiency and storage utilization.

Keywords:IOT system; history data; selective storage; centralized management

0 引言

近年來,隨著物聯(lián)網(wǎng)技術(shù)的發(fā)展,互聯(lián)設(shè)備的增多,對(duì)海量設(shè)備的歷史數(shù)據(jù)進(jìn)行集中存儲(chǔ)與查詢處理尤為重要.通過對(duì)海量設(shè)備歷史數(shù)據(jù)的集中管理,一方面,用戶可以直接獲得任一設(shè)備的當(dāng)前與歷史狀態(tài),通過對(duì)群體數(shù)據(jù)進(jìn)行分析,可以實(shí)現(xiàn)對(duì)復(fù)雜事件與規(guī)律的感知[1].另一方面,還使得物物互聯(lián)、基于物的搜索引擎、采樣數(shù)據(jù)的統(tǒng)計(jì)分析與數(shù)據(jù)挖掘[2]等成為可能.然而物聯(lián)網(wǎng)系統(tǒng)中大量的用戶終端及設(shè)備終端之間的信息交互會(huì)產(chǎn)生海量的異構(gòu)數(shù)據(jù)流,使得數(shù)據(jù)規(guī)模呈爆發(fā)式增長(zhǎng)態(tài)勢(shì)[3].因此數(shù)據(jù)中心需要及時(shí)地分析和處理這些數(shù)據(jù),選擇對(duì)用戶有用的數(shù)據(jù)進(jìn)行存儲(chǔ),進(jìn)而滿足用戶對(duì)海量設(shè)備歷史數(shù)據(jù)的集中管理的需求.

同時(shí)物聯(lián)網(wǎng)系統(tǒng)中各終端數(shù)據(jù)靈活多變,數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)類型呈多樣化,數(shù)據(jù)的存儲(chǔ)處理較為復(fù)雜;終端設(shè)備多樣化,計(jì)算能力有限的設(shè)備在低帶寬、不可靠的網(wǎng)絡(luò)信道上遠(yuǎn)程通訊實(shí)時(shí)性差、可靠性差[4].基于此,提出一種結(jié)合RESTful Web Service、MongoDB數(shù)據(jù)庫(kù)、MQTT通信、JMS消息服務(wù)等技術(shù)的物聯(lián)網(wǎng)系統(tǒng)歷史數(shù)據(jù)的管理及存儲(chǔ)系統(tǒng)架構(gòu).該系統(tǒng)支持不同規(guī)模數(shù)據(jù)(實(shí)時(shí)的、歷史性的)的信息處理,并具有通用性,可實(shí)現(xiàn)不同終端的接入及管理.

1 系統(tǒng)整體架構(gòu)

系統(tǒng)由云平臺(tái)、設(shè)備端和用戶端三部分組成.設(shè)備端與云平臺(tái)建立實(shí)時(shí)通信連接,將傳感數(shù)據(jù)傳輸?shù)皆破脚_(tái);云平臺(tái)采用面向資源架構(gòu)以統(tǒng)一資源描述的方式,并結(jié)合數(shù)據(jù)庫(kù),實(shí)現(xiàn)對(duì)用戶和設(shè)備資源的注冊(cè)、存儲(chǔ)和管理.同時(shí),云平臺(tái)授權(quán)用戶通過B/S或C/S架構(gòu)實(shí)現(xiàn)對(duì)資源的訪問和操作.系統(tǒng)的基本框架圖如圖1所示.

圖1 系統(tǒng)基本框架圖

根據(jù)功能需求,云平臺(tái)主要包括API接口、數(shù)據(jù)存儲(chǔ)、MQTT通信服務(wù)以及數(shù)據(jù)運(yùn)算處理等模塊,下面對(duì)云平臺(tái)中各模塊做詳細(xì)介紹.

1.1 Restful API

根據(jù)物聯(lián)網(wǎng)系統(tǒng)的需求,采用REST風(fēng)格的Web服務(wù)封裝用戶、設(shè)備和數(shù)據(jù)管理的業(yè)務(wù)流程接口.REST(Representational State Transfer)是一種分布式軟件架構(gòu)風(fēng)格,RESTful Web服務(wù)是使用HTTP和REST原理實(shí)現(xiàn)的Web服務(wù).通常,RESTful Web服務(wù)應(yīng)該定義以下方面:Web服務(wù)的基/根URI,支持MIME類型的響應(yīng)數(shù)據(jù)(包括 JSON/XML/ATOM 等),以及服務(wù)支持的操作集合[5].

在RESTful架構(gòu)中,建立一套友好的API函數(shù),通過URL描述終端,以HTTP常用操作實(shí)現(xiàn)資源的CURD(增刪改查)等功能,該系列API既可適應(yīng)不同平臺(tái),具有跨平臺(tái)、跨語言的優(yōu)勢(shì)[6].另外,本系統(tǒng)選用JSON型數(shù)據(jù)格式[7]實(shí)現(xiàn)數(shù)據(jù)的請(qǐng)求與響應(yīng),在不同終端接入云平臺(tái)時(shí),均需對(duì)數(shù)據(jù)格式進(jìn)行解析和處理轉(zhuǎn)化為JSON格式,以實(shí)現(xiàn)對(duì)不同終端的通用性.

1.2 MongoDB數(shù)據(jù)庫(kù)

MongoDB 是一種文檔型非關(guān)系型數(shù)據(jù)庫(kù),它不需要預(yù)先定義模式和數(shù)據(jù)庫(kù)結(jié)構(gòu),支持的數(shù)據(jù)結(jié)構(gòu)較為松散,適合物聯(lián)網(wǎng)系統(tǒng)中海量的結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù)的存儲(chǔ)[8].文檔(document)是MongoDB的核心概念,由多個(gè)鍵及其相應(yīng)的值有序地存放在一起組成.若干個(gè)文檔便組成集合(collection),集合類似于關(guān)系型數(shù)據(jù)庫(kù)中的表,可包括多個(gè)文檔.多個(gè)集合可以組成一個(gè)數(shù)據(jù)庫(kù),一個(gè) MongoDB的實(shí)例可以承載多個(gè)數(shù)據(jù)庫(kù),每個(gè)數(shù)據(jù)庫(kù)之間可以是完全獨(dú)立的[9].

1.3 MQTT通信

MQTT是基于TCP/IP的即時(shí)通訊協(xié)議,采用輕量級(jí)基于代理的發(fā)布/訂閱式消息傳輸模式.MQTT協(xié)議具有以下特點(diǎn):采用發(fā)布/訂閱消息模式,提供一對(duì)多的消息發(fā)布,有效解除應(yīng)用程序耦合;MQTT協(xié)議本身的開銷很小,幀格式較為精簡(jiǎn);具有心跳包機(jī)制,可維持與服務(wù)器的長(zhǎng)連接;支持QoS服務(wù),提供了三種消息發(fā)布服務(wù)質(zhì)量[10].

以上MQTT協(xié)議的這些特性對(duì)計(jì)算能力有限,網(wǎng)絡(luò)低帶寬且不可靠的低端嵌入式硬件設(shè)備意義巨大,解決了物聯(lián)網(wǎng)系統(tǒng)中傳感設(shè)備和控制設(shè)備的遠(yuǎn)程通訊實(shí)時(shí)性差和可靠性差等關(guān)鍵問題.

1.4 JMS消息服務(wù)

JMS(Java Message Service,Java消息服務(wù)應(yīng)用程序接口),是一個(gè)Java平臺(tái)中關(guān)于面向消息中間件的API,能夠通過消息收發(fā)服務(wù)從一個(gè) JMS 客戶機(jī)向另一個(gè) JMS客戶機(jī)發(fā)送消息.用于在兩個(gè)應(yīng)用程序之間,或分布式系統(tǒng)中創(chuàng)建、發(fā)送、接收和讀取消息,進(jìn)行異步通信[11].JMS應(yīng)用由JMS提供者、JMS客戶端、消息、受管理對(duì)象四部分組成,大部分消息傳送產(chǎn)品都支持點(diǎn)對(duì)點(diǎn)或發(fā)布/訂閱消息兩種傳送模式.

由于云平臺(tái)需要完成各終端數(shù)據(jù)的接收、解析、存儲(chǔ)、反饋等各種復(fù)雜操作,而對(duì)于一個(gè)云平臺(tái)整體架構(gòu)設(shè)計(jì)來說,每一個(gè)模塊都有其特定的功能,為了協(xié)調(diào)各模塊的工作,保障各模塊間通信正常,需要通過消息隊(duì)列的方式實(shí)現(xiàn)各模塊間異步通信,保證云平臺(tái)工作正常進(jìn)行,同時(shí)提高數(shù)據(jù)的處理效率.在本系統(tǒng)中選用JSM服務(wù)器實(shí)現(xiàn)云平臺(tái)各模塊間消息傳遞及異步通信.

2 數(shù)據(jù)庫(kù)模型設(shè)計(jì)

2.1 數(shù)據(jù)關(guān)系分析

為方便物聯(lián)網(wǎng)系統(tǒng)中對(duì)用戶和設(shè)備的管理,需對(duì)數(shù)據(jù)庫(kù)中一些概念做明確的解釋及規(guī)定.將物聯(lián)網(wǎng)系統(tǒng)中的用戶端的信息統(tǒng)稱為用戶;將設(shè)備端信息統(tǒng)稱為設(shè)備;將某一個(gè)硬件系統(tǒng)或某一項(xiàng)目稱為產(chǎn)品,產(chǎn)品是同一個(gè)硬件系統(tǒng)中所有設(shè)備的集合;將傳感器采集的溫度、濕度、光照、圖像等實(shí)時(shí)數(shù)據(jù)的抽象描述稱為設(shè)備的數(shù)據(jù)點(diǎn)[12],將采集到的數(shù)據(jù)點(diǎn)的數(shù)據(jù)稱為歷史數(shù)據(jù).

在MongoDB數(shù)據(jù)庫(kù)中建立用戶(users)、產(chǎn)品(products)、設(shè)備(devices)、歷史數(shù)據(jù)(datas)四個(gè)集合,四個(gè)集合是依次包含的關(guān)系,四個(gè)集合的關(guān)系結(jié)構(gòu)圖如圖2所示.每個(gè)集合都有自己的主鍵,作為該集合的唯一標(biāo)識(shí),集合之間通過將父集合主鍵嵌入子集合的形式,來確定集合之間的包含關(guān)系.

圖2 集合關(guān)系圖

2.2 數(shù)據(jù)集合設(shè)計(jì)

通常情況下,MongoDB數(shù)據(jù)庫(kù)具有以下設(shè)計(jì)原則:優(yōu)先考慮內(nèi)嵌文檔,將子集合以數(shù)組形式嵌入父集合中;需要單獨(dú)訪問一個(gè)對(duì)象時(shí),將父集合的objectId引入到子集合中[13].根據(jù)以上設(shè)計(jì)原則,結(jié)合各集合中文檔的具體內(nèi)容,設(shè)計(jì)各集合如表1所示.根據(jù)四個(gè)集合的關(guān)系,依次將父集合的標(biāo)識(shí)存儲(chǔ)在子集合中,便于對(duì)子集合的數(shù)據(jù)進(jìn)行管理.

表1 數(shù)據(jù)庫(kù)集合設(shè)計(jì)

3 歷史數(shù)據(jù)服務(wù)的實(shí)現(xiàn)

在完成對(duì)用戶、產(chǎn)品、設(shè)備的創(chuàng)建操作以后,本節(jié)就設(shè)備數(shù)據(jù)的采集、對(duì)數(shù)據(jù)點(diǎn)的歷史數(shù)據(jù)進(jìn)行選擇性存儲(chǔ)及用戶端對(duì)歷史數(shù)據(jù)的獲取等過程進(jìn)行方案設(shè)計(jì).此部分工作涉及RESTful API、MongoDB數(shù)據(jù)庫(kù)、MQTT服務(wù)器、JMS消息服務(wù)器等多項(xiàng)技術(shù),系統(tǒng)框圖如圖3所示.

圖3 歷史數(shù)據(jù)服務(wù)框圖

用戶端通過訪問API接口控制設(shè)備數(shù)據(jù)的保存、取消保存以及刪除等操作,API接口將接收到的指令信息通過JMS消息服務(wù)器傳遞給JMS客戶端,JMS客戶端通過對(duì)消息類型進(jìn)行解析,控制MQTT客戶端對(duì)設(shè)備數(shù)據(jù)的訂閱或取消訂閱,同時(shí),MQTT客戶端將接收到的設(shè)備數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中.

3.1 創(chuàng)建數(shù)據(jù)點(diǎn)

在進(jìn)行數(shù)據(jù)選擇性存儲(chǔ)之前,首先需要?jiǎng)?chuàng)建數(shù)據(jù)點(diǎn),用于對(duì)歷史數(shù)據(jù)的過濾和篩選.用戶端訪問"創(chuàng)建數(shù)據(jù)點(diǎn)"的URL,通過POST方法將數(shù)據(jù)點(diǎn)信息發(fā)送給云平臺(tái).云平臺(tái)以產(chǎn)品標(biāo)識(shí)productId及設(shè)備mac地址為條件,在數(shù)據(jù)庫(kù)中的設(shè)備集合devices中查詢到相應(yīng)的設(shè)備,并添加該數(shù)據(jù)點(diǎn)信息,包括數(shù)據(jù)點(diǎn)名稱nodeName、類型nodeType,默認(rèn)數(shù)據(jù)存儲(chǔ)狀態(tài)為false.數(shù)據(jù)點(diǎn)成功創(chuàng)建后,將在數(shù)據(jù)庫(kù)中生成的數(shù)據(jù)點(diǎn)唯一標(biāo)識(shí)nodeId返回給用戶.

3.2 設(shè)置數(shù)據(jù)點(diǎn)存儲(chǔ)狀態(tài)

用戶根據(jù)系統(tǒng)需求,設(shè)置某個(gè)數(shù)據(jù)點(diǎn)的存儲(chǔ)屬性,實(shí)現(xiàn)對(duì)某個(gè)數(shù)據(jù)點(diǎn)歷史數(shù)據(jù)的選擇性存儲(chǔ).云平臺(tái)通過產(chǎn)品標(biāo)識(shí)productId、設(shè)備mac地址及數(shù)據(jù)點(diǎn)標(biāo)識(shí)nodeId為查詢條件,在數(shù)據(jù)庫(kù)devices集合中查找到相應(yīng)的數(shù)據(jù)點(diǎn)信息,并修改數(shù)據(jù)點(diǎn)的存儲(chǔ)Store屬性.

通過發(fā)布/訂閱消息傳送方式,建立JMS客戶端將產(chǎn)品標(biāo)識(shí)productId、設(shè)備mac地址、數(shù)據(jù)點(diǎn)標(biāo)識(shí)nodeId以及相應(yīng)的歷史數(shù)據(jù)存儲(chǔ)狀態(tài)(store/unstore)通過JMS服務(wù)器傳遞至JMS客戶端.JMS客戶端通過對(duì)消息進(jìn)行解析,控制MQTT客戶端訂閱或取消訂閱MQTT服務(wù)器中設(shè)備端發(fā)布的數(shù)據(jù)點(diǎn)的數(shù)據(jù)信息.

2.1 過表達(dá)B7-H3對(duì)乳腺癌細(xì)胞活力的影響 將轉(zhuǎn)染了空載體和B7-H3真核表達(dá)載體的細(xì)胞接種于96孔板中,分別于培養(yǎng)不同時(shí)間后用MTT法檢測(cè)細(xì)胞的活力,過表達(dá)B7-H3后明顯抑制了MDA-MB-231細(xì)胞的活力。見圖1。

3.3 存儲(chǔ)歷史數(shù)據(jù)

為提高數(shù)據(jù)庫(kù)的存儲(chǔ)利用率,將MQTT客戶端接收到的設(shè)備端的數(shù)據(jù)以內(nèi)嵌文檔的形式存儲(chǔ)在歷史數(shù)據(jù)(datas)集合中,但由于MongoDB對(duì)文檔的最大限制為16 M,所以在數(shù)據(jù)存儲(chǔ)時(shí)應(yīng)注意由于文檔超限而引起數(shù)據(jù)庫(kù)存儲(chǔ)故障,因而在數(shù)據(jù)存儲(chǔ)前應(yīng)對(duì)已經(jīng)存儲(chǔ)的歷史數(shù)據(jù)集合進(jìn)行一些集合長(zhǎng)度判斷和處理,數(shù)據(jù)存儲(chǔ)過程的流程圖如圖4所示.

圖4 歷史數(shù)據(jù)存儲(chǔ)過程流程圖

在數(shù)據(jù)處理過程中,以數(shù)據(jù)點(diǎn)名稱nodeName為條件對(duì)MQTT客戶端接收到的消息進(jìn)行篩選.經(jīng)過長(zhǎng)期測(cè)試,設(shè)置歷史數(shù)據(jù)文檔中內(nèi)嵌文檔最大長(zhǎng)度為10 000.為提高數(shù)據(jù)集合的遍歷效率,在datas集合中添加count參數(shù),每插入一條數(shù)據(jù)只需將count值加1,插入數(shù)據(jù)前判斷count值即可.避免采用查詢數(shù)組的長(zhǎng)度的方式,造成MongoDB讀寫頻繁而鎖死[15].

3.4 刪除歷史數(shù)據(jù)

在執(zhí)行“刪除設(shè)備”、“刪除產(chǎn)品”或“刪除數(shù)據(jù)點(diǎn)”的命令時(shí),除了在數(shù)據(jù)庫(kù)中進(jìn)行相應(yīng)的操作外,還需要取消MQTT客戶端對(duì)設(shè)備端數(shù)據(jù)的訂閱,同時(shí)刪除其相對(duì)應(yīng)的歷史數(shù)據(jù)記錄.

通過發(fā)布/訂閱消息傳送方式,建立JMS客戶端將產(chǎn)品標(biāo)識(shí)productId、設(shè)備mac地址、數(shù)據(jù)點(diǎn)標(biāo)識(shí)nodeId以及刪除操作(delete)通過JMS服務(wù)器傳遞至JMS客戶端.JMS客戶端控制MQTT客戶端取消訂閱設(shè)備端發(fā)布的數(shù)據(jù)點(diǎn)的數(shù)據(jù)信息.

在刪除歷史數(shù)據(jù)時(shí),在歷史數(shù)據(jù)集合datas中以數(shù)據(jù)點(diǎn)標(biāo)識(shí)nodeId為查詢條件,將其相對(duì)應(yīng)的歷史數(shù)據(jù)記錄刪除.

3.5 查看歷史數(shù)據(jù)

用戶端通過訪問“查詢歷史數(shù)據(jù)”的API接口將數(shù)據(jù)點(diǎn)標(biāo)識(shí)nodeId發(fā)送到云平臺(tái),云平臺(tái)在歷史數(shù)據(jù)集合中以nodeId作為查詢條件,查詢到符合條件的歷史數(shù)據(jù),經(jīng)過整合后以數(shù)組形式反饋給用戶端.用戶端可以用圖表形式整合歷史數(shù)據(jù),觀察數(shù)據(jù)的走向趨勢(shì),并可根據(jù)歷史數(shù)據(jù)進(jìn)行專家系統(tǒng)診斷,發(fā)現(xiàn)設(shè)備的一些潛在問題等.

4 系統(tǒng)測(cè)試

以阿里云服務(wù)器為載體,搭建系統(tǒng)測(cè)試平臺(tái).首先在云服務(wù)器上搭建Apache Tomcat服務(wù)器(HTTP服務(wù)器)、MongoDB數(shù)據(jù)庫(kù)、Apache ActiveMQ服務(wù)器(JMS服務(wù)器)、Apache Apollo服務(wù)器(MQTT服務(wù)器)[16],然后將編譯好的程序部署在云平臺(tái)上.API接口程序測(cè)試?yán)没鸷鼮g覽器的HttpRequester工具,數(shù)據(jù)庫(kù)測(cè)試采用數(shù)據(jù)庫(kù)可視化工具Robomongo,采用MQTT客戶端web版測(cè)試工具模擬硬件設(shè)備,向云服務(wù)器發(fā)送數(shù)據(jù).

4.1 數(shù)據(jù)選擇性存儲(chǔ)測(cè)試

如圖5(a)所示,以“演示設(shè)備”中三個(gè)數(shù)據(jù)點(diǎn)temp、hum、light為例,測(cè)試數(shù)據(jù)的選擇性存儲(chǔ)實(shí)現(xiàn),將temp和light數(shù)據(jù)點(diǎn)的存儲(chǔ)狀態(tài)設(shè)為true(存儲(chǔ)),hum數(shù)據(jù)點(diǎn)的存儲(chǔ)狀態(tài)設(shè)置為false(不存儲(chǔ)).

如圖5(b)所示,通過MQTT客戶端測(cè)試工具上傳temp、hum和light三個(gè)數(shù)據(jù)點(diǎn)的數(shù)據(jù)值,圖5(c)所示歷史數(shù)據(jù)集合(datas)中由數(shù)據(jù)點(diǎn)標(biāo)識(shí)(nodeId)對(duì)比可看出,temp和light的歷史數(shù)據(jù)保存下來,且格子存放在不同文檔中,而hum數(shù)據(jù)點(diǎn)的歷史數(shù)據(jù)未保存.

(a)數(shù)據(jù)點(diǎn)存儲(chǔ)狀態(tài)設(shè)置

(b)MQTT客戶端發(fā)布數(shù)據(jù)

(c)歷史數(shù)據(jù)集合存儲(chǔ)結(jié)果圖5 數(shù)據(jù)選擇性存儲(chǔ)測(cè)試

4.2 數(shù)據(jù)存儲(chǔ)效率測(cè)試

以“演示設(shè)備”中數(shù)據(jù)點(diǎn)temp為例,如圖6所示,將MQTT客戶端接收到數(shù)據(jù)的時(shí)間及數(shù)據(jù)成功存儲(chǔ)在歷史數(shù)據(jù)集合中的時(shí)間輸出,通過兩個(gè)時(shí)間的時(shí)間差為測(cè)試標(biāo)準(zhǔn),分別測(cè)試當(dāng)數(shù)據(jù)點(diǎn)temp中歷史數(shù)據(jù)的條數(shù)為0條、100條、1 000條、5 000條、9 999條時(shí)所用的時(shí)間進(jìn)行對(duì)比.在此基礎(chǔ)上,在“演示設(shè)備”中創(chuàng)建10個(gè)數(shù)據(jù)點(diǎn),并將其存儲(chǔ)狀態(tài)都設(shè)為true,采用MQTT客戶端測(cè)試工具同時(shí)上傳10個(gè)數(shù)據(jù)點(diǎn)的數(shù)據(jù),查看上述數(shù)據(jù)存儲(chǔ)時(shí)間變化趨勢(shì).如表2所示,當(dāng)數(shù)據(jù)增多時(shí),數(shù)據(jù)存儲(chǔ)所用時(shí)間呈增長(zhǎng)趨勢(shì);且隨著數(shù)據(jù)點(diǎn)增多,數(shù)據(jù)存儲(chǔ)時(shí)間也增加,但總體變化較小,維持在10 ms到25 ms之內(nèi).

圖6 數(shù)據(jù)處理時(shí)間輸出

已插入內(nèi)嵌文檔個(gè)數(shù)1個(gè)數(shù)據(jù)點(diǎn)所用時(shí)間/ms10個(gè)數(shù)據(jù)點(diǎn)所用時(shí)間/ms010151001117100014185000172199992125

4.3 數(shù)據(jù)庫(kù)存儲(chǔ)利用率測(cè)試

本系統(tǒng)歷史數(shù)據(jù)的存儲(chǔ)采用內(nèi)嵌文檔的形式,圖7(a)、(b)分別為內(nèi)嵌文檔形式存儲(chǔ)10 000條歷史數(shù)據(jù)及不使用內(nèi)嵌文檔存儲(chǔ)的形式數(shù)據(jù)庫(kù)內(nèi)存大小的對(duì)比.由圖7可得,使用內(nèi)嵌文檔數(shù)據(jù)集合內(nèi)存為1 048 560 byte,而不使用內(nèi)嵌文檔數(shù)據(jù)集合內(nèi)存為2 400 000 byte,使用內(nèi)嵌文檔形式存儲(chǔ)比不使用內(nèi)嵌文檔存儲(chǔ)數(shù)據(jù)庫(kù)內(nèi)存節(jié)省56.31%,因此利用內(nèi)嵌文檔存儲(chǔ)方式可增加數(shù)據(jù)庫(kù)存儲(chǔ)利用率.

(a)使用內(nèi)嵌文檔存儲(chǔ)

(b)不使用內(nèi)嵌文檔存儲(chǔ)圖7 數(shù)據(jù)庫(kù)存儲(chǔ)利用率測(cè)試

5 結(jié)論

本文結(jié)合物聯(lián)網(wǎng)系統(tǒng)異構(gòu)型數(shù)據(jù)存儲(chǔ)和通信實(shí)時(shí)性、可靠性需求,提出一種物聯(lián)網(wǎng)系統(tǒng)歷史數(shù)據(jù)的管理及存儲(chǔ)系統(tǒng)架構(gòu).該架構(gòu)通過RESTful Web Service、MongoDB數(shù)據(jù)庫(kù)、JMS消息服務(wù)器、MQTT通信等技術(shù)實(shí)現(xiàn)不同設(shè)備節(jié)點(diǎn)中,不同數(shù)據(jù)點(diǎn)的歷史數(shù)據(jù)的選擇性存儲(chǔ),通過設(shè)置可實(shí)現(xiàn)歷史數(shù)據(jù)的有效感知,避免物聯(lián)網(wǎng)系統(tǒng)中海量數(shù)據(jù)的冗余.同時(shí)利用內(nèi)嵌文檔形式存儲(chǔ)歷史數(shù)據(jù),有效地提高了數(shù)據(jù)庫(kù)的存儲(chǔ)利用率,除此之外還實(shí)現(xiàn)了對(duì)歷史數(shù)據(jù)的刪除及查詢等功能.該架構(gòu)支持物聯(lián)網(wǎng)系統(tǒng)中不同規(guī)模包括實(shí)時(shí)的和歷史性的數(shù)據(jù)信息處理及管理功能,并具有通用性,實(shí)現(xiàn)不同終端的接入及管理,可廣泛應(yīng)用于不同行業(yè)物聯(lián)網(wǎng)應(yīng)用中.

[1] 丁治明,高 需.面向物聯(lián)網(wǎng)海量傳感器采樣數(shù)據(jù)管理的數(shù)據(jù)庫(kù)集群系統(tǒng)框架[J].計(jì)算機(jī)學(xué)報(bào),2012,35(6):1 175-1 182.

[2] Jeffrey Dean,Sanjay Ghemawat.MapReduce:Simplified data processing on large clusters[J].OSDI,2008,51(1):107-113.

[3] 于宏文.智能電網(wǎng)調(diào)度控制系統(tǒng)中歷史數(shù)據(jù)服務(wù)優(yōu)化方案[J].電力系統(tǒng)自動(dòng)化,2016,40(19):113-117.

[4] 東 輝.物聯(lián)網(wǎng)通信技術(shù)的發(fā)展現(xiàn)狀及趨勢(shì)綜述[J].通信技術(shù),2014,47(11):1 233-1 239.

[5] 章武媚.基于RESTful Web技術(shù)的資源管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2014,31(5):23-28.

[6] 左文娟,張秋菊.基于REST物聯(lián)網(wǎng)監(jiān)控系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)工程與設(shè)計(jì),2016,37(1):21-25.

[7] 龔建華.JSON格式數(shù)據(jù)在Web開發(fā)中的應(yīng)用[J].辦公自動(dòng)化應(yīng)用,2013(20):46-48.

[8] 鐘 麟,員建廈.一種基于 MongoDB 的大數(shù)據(jù)管理架構(gòu)[J].計(jì)算機(jī)與網(wǎng)絡(luò),2016(5):62-74.

[9] Ktistina Cbodorow.MongoDB權(quán)威指南[M].程顯峰.北京:人民郵電出版社,2011.

[10] 張亞慧.物聯(lián)網(wǎng)環(huán)境下輕量級(jí)發(fā)布訂閱系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].北京:北京郵電大學(xué),2015.

[11] Eric Jendrock.Java EE 7 權(quán)威指南[M].蘇金國(guó),江健.北京:機(jī)械工業(yè)出版社,2015.

[12] 陳文藝.基于MongoDB的物聯(lián)網(wǎng)開放平臺(tái)數(shù)據(jù)存儲(chǔ)設(shè)計(jì)[J].西安郵電大學(xué)學(xué)報(bào),2016,21(2):78-82.

[13] 李曉娟.物聯(lián)網(wǎng)中海量數(shù)據(jù)管理技術(shù)研究[D].廣州:廣東工業(yè)大學(xué),2015.

[14] 韓 陸.Java RESTful Web Service實(shí)戰(zhàn)[M].北京:機(jī)械工業(yè)出版社,2014.

[15] David Hows.MongoDB大數(shù)據(jù)處理權(quán)威指南[M].2版.王肖峰.北京:清華大學(xué)出版社,2015.

[16] 黃驍飛.異構(gòu)云平臺(tái)性能監(jiān)控與分析研究[J].計(jì)算機(jī)科學(xué),2013,40(11):147-152.

【責(zé)任編輯:蔣亞儒】

Designandimplementationofhistoricaldataserviceforinternetofthingssystem

ZHANG Yu-jie, ZHANG Ting-ting

(College of Electrical and Information Engineering, Shaanxi University of Science & Technology, Xi′an 710021, China)

2017-07-28

陜西省科技廳科技計(jì)劃項(xiàng)目(2014K07-17); 西安市科技計(jì)劃項(xiàng)目(CXY1436(1))

張玉杰(1966-),男,陜西武功人,教授,碩士生導(dǎo)師,研究方向:信息采集與處理、模式識(shí)別、嵌入式系統(tǒng)開發(fā)

2096-398X(2017)05-0178-06

TP311.11

A

猜你喜歡
歷史數(shù)據(jù)文檔客戶端
淺談Matlab與Word文檔的應(yīng)用接口
基于設(shè)備PF性能曲線和設(shè)備歷史數(shù)據(jù)實(shí)現(xiàn)CBM的一個(gè)應(yīng)用模型探討
基于故障歷史數(shù)據(jù)和BP神經(jīng)網(wǎng)絡(luò)的接地選線方案研究
有人一聲不吭向你扔了個(gè)文檔
如何看待傳統(tǒng)媒體新聞客戶端的“斷舍離”?
縣級(jí)臺(tái)在突發(fā)事件報(bào)道中如何應(yīng)用手機(jī)客戶端
孵化垂直頻道:新聞客戶端新策略
基于Hadoop技術(shù)實(shí)現(xiàn)銀行歷史數(shù)據(jù)線上化研究
用好細(xì)節(jié)材料 提高課堂實(shí)效
基于RI碼計(jì)算的Word復(fù)制文檔鑒別
卫辉市| 昭通市| 和林格尔县| 荔浦县| 滦南县| 驻马店市| 苏尼特左旗| 石台县| 平安县| 东乌珠穆沁旗| 兴文县| 黔南| 新疆| 吕梁市| 临湘市| 大冶市| 郴州市| 上高县| 玉林市| 沈丘县| 分宜县| 广灵县| 子长县| 全南县| 阿图什市| 洪雅县| 四子王旗| 广汉市| 河北区| 威海市| 堆龙德庆县| 茌平县| 永平县| 东辽县| 乐昌市| 兴仁县| 达拉特旗| 朝阳市| 旬邑县| 剑河县| 清镇市|