一種傳感設(shè)備實(shí)時(shí)數(shù)據(jù)的管理方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種數(shù)據(jù)管理方法,特別是涉及傳感設(shè)備實(shí)時(shí)數(shù)據(jù)管理方法。
【背景技術(shù)】
[0002] 當(dāng)下市場(chǎng)上的傳感設(shè)備,均為根據(jù)按上報(bào)頻率定時(shí)上報(bào)數(shù)據(jù)到上位機(jī),傳感設(shè)備 實(shí)時(shí)數(shù)據(jù)是傳感設(shè)備上報(bào)的最新數(shù)據(jù)。為確保上報(bào)數(shù)據(jù)的及時(shí)性和精確性,要求上報(bào)的頻 率較高,導(dǎo)致傳感設(shè)備上報(bào)次數(shù)頻繁,數(shù)據(jù)存儲(chǔ)數(shù)據(jù)量巨大,上位機(jī)與數(shù)據(jù)庫(kù)的交互頻繁。 同時(shí),傳感實(shí)時(shí)數(shù)據(jù)通常應(yīng)用于業(yè)務(wù)預(yù)警等場(chǎng)景,應(yīng)用和查詢(xún)較為頻繁,頻繁的數(shù)據(jù)庫(kù)查詢(xún) 也對(duì)數(shù)據(jù)庫(kù)造成巨大性能壓力,同時(shí)對(duì)數(shù)據(jù)的時(shí)效性和查詢(xún)效率要求高,存儲(chǔ)在數(shù)據(jù)庫(kù)中 的設(shè)備實(shí)時(shí)數(shù)據(jù)不能很好滿(mǎn)足業(yè)務(wù)需要。
[0003] 因此,當(dāng)下的傳感器設(shè)備均存在以下缺點(diǎn):對(duì)傳感設(shè)備上報(bào)的數(shù)據(jù)缺乏有效的優(yōu) 化和過(guò)濾,存儲(chǔ)到數(shù)據(jù)庫(kù)的數(shù)據(jù)量巨大;對(duì)數(shù)據(jù)庫(kù)的頻繁寫(xiě)入,增加了數(shù)據(jù)庫(kù)的性能壓力; 頻繁對(duì)數(shù)據(jù)庫(kù)進(jìn)行設(shè)備實(shí)時(shí)數(shù)據(jù)的查詢(xún),導(dǎo)致數(shù)據(jù)庫(kù)查詢(xún)壓力大等。
【發(fā)明內(nèi)容】
[0004] 根據(jù)以上不足,本發(fā)明對(duì)傳感設(shè)備上報(bào)的實(shí)時(shí)數(shù)據(jù)進(jìn)行管理和優(yōu)化,提供了一種 傳感設(shè)備實(shí)時(shí)數(shù)據(jù)的管理的裝置和方法。
[0005] 本發(fā)明一種傳感設(shè)備實(shí)時(shí)數(shù)據(jù)的管理方法包括以下情形: 根據(jù)設(shè)備數(shù)據(jù)實(shí)例定義設(shè)備實(shí)時(shí)數(shù)據(jù)集合,通過(guò)對(duì)靜態(tài)對(duì)象的鎖定,實(shí)現(xiàn)對(duì)實(shí)時(shí)數(shù)據(jù) 集合的并發(fā)控制; 所述的設(shè)備數(shù)據(jù)實(shí)例,其屬性包括設(shè)備內(nèi)碼、設(shè)備名稱(chēng)、設(shè)備實(shí)時(shí)數(shù)據(jù)、更新時(shí)間、最后 同步數(shù)據(jù)、最后同步時(shí)間和更新閾值; 設(shè)備內(nèi)碼(deviceID):設(shè)備的唯一標(biāo)識(shí); 設(shè)備名稱(chēng):設(shè)備的顯示名稱(chēng); 設(shè)備實(shí)時(shí)數(shù)據(jù):設(shè)備最后上報(bào)的數(shù)據(jù); 更新時(shí)間:設(shè)備最后上報(bào)數(shù)據(jù)的時(shí)間; 最后同步數(shù)據(jù):同步數(shù)據(jù)到數(shù)據(jù)庫(kù)的最后數(shù)據(jù); 最后同步時(shí)間:同步數(shù)據(jù)到數(shù)據(jù)庫(kù)的最后時(shí)間; 更新閾值:作為數(shù)據(jù)更新的標(biāo)準(zhǔn),當(dāng)設(shè)備實(shí)時(shí)數(shù)據(jù)和最后同步數(shù)據(jù)相差絕對(duì)值大于更 新閾值后,則更新數(shù)據(jù)到數(shù)據(jù)庫(kù); 當(dāng)設(shè)備實(shí)時(shí)數(shù)據(jù)集合初始化時(shí),從數(shù)據(jù)庫(kù)查詢(xún)并加載設(shè)備數(shù)據(jù)實(shí)例到設(shè)備實(shí)時(shí)數(shù)據(jù)集 合中; 當(dāng)創(chuàng)建設(shè)備實(shí)時(shí)數(shù)據(jù)時(shí),先判斷設(shè)備實(shí)時(shí)數(shù)據(jù)集合內(nèi)是否存在相應(yīng)的設(shè)備數(shù)據(jù)實(shí)例, 若不存在,則創(chuàng)建設(shè)備數(shù)據(jù)實(shí)例并添加到設(shè)備實(shí)時(shí)數(shù)據(jù)集合,添加設(shè)備數(shù)據(jù)實(shí)例到數(shù)據(jù)庫(kù); 當(dāng)查詢(xún)?cè)O(shè)備實(shí)時(shí)數(shù)據(jù)時(shí),直接從設(shè)備實(shí)時(shí)數(shù)據(jù)集合中查詢(xún)相應(yīng)的設(shè)備數(shù)據(jù)實(shí)例; 當(dāng)傳感設(shè)備上報(bào)數(shù)據(jù)時(shí),更新相應(yīng)設(shè)備數(shù)據(jù)實(shí)例中的設(shè)備實(shí)時(shí)數(shù)據(jù)和更新時(shí)間,然后 判斷當(dāng)前設(shè)備實(shí)時(shí)數(shù)據(jù)和最后同步數(shù)據(jù)之間差值的絕對(duì)值,是否大于更新閾值的數(shù)值;若 其相差絕對(duì)值大于更新閾值屬性的數(shù)值,則將設(shè)備實(shí)時(shí)數(shù)據(jù)和更新時(shí)間更新至數(shù)據(jù)庫(kù)的最 后同步數(shù)據(jù)和最后同步時(shí)間;若其相差絕對(duì)值小于更新閾值的數(shù)值,不更新數(shù)據(jù)庫(kù); 當(dāng)刪除設(shè)備實(shí)時(shí)數(shù)據(jù)時(shí),從設(shè)備實(shí)時(shí)數(shù)據(jù)集合刪除設(shè)備數(shù)據(jù)實(shí)例,同時(shí)從數(shù)據(jù)庫(kù)刪除 對(duì)應(yīng)的設(shè)備數(shù)據(jù)實(shí)例。
[0006] 進(jìn)一步地,所述的設(shè)備數(shù)據(jù)實(shí)例,用于記錄單個(gè)設(shè)備實(shí)時(shí)數(shù)據(jù)信息。
[0007] 進(jìn)一步地,在并發(fā)情況下,通過(guò)對(duì)靜態(tài)對(duì)象加鎖實(shí)現(xiàn)對(duì)設(shè)備實(shí)時(shí)數(shù)據(jù)集合的獨(dú)享。
[0008] 定義靜態(tài)的設(shè)備實(shí)時(shí)數(shù)據(jù)集合〇6¥;[06111;1^0030116,定義靜態(tài)對(duì)象1001^)6¥;[06,通過(guò) 對(duì)靜態(tài)對(duì)象lockDevice加鎖,實(shí)現(xiàn)在并發(fā)等情況下對(duì)DevicelnfoCache的獨(dú)享。
[0009] 進(jìn)一步地,當(dāng)設(shè)備實(shí)時(shí)數(shù)據(jù)集合初始化時(shí),靜態(tài)對(duì)象鎖定設(shè)備實(shí)時(shí)數(shù)據(jù)集合,判斷 設(shè)備實(shí)時(shí)數(shù)據(jù)集合是否為空,若為空,則從數(shù)據(jù)庫(kù)查詢(xún)并加載設(shè)備數(shù)據(jù)實(shí)例到設(shè)備實(shí)時(shí)數(shù) 據(jù)集合中;最后釋放靜態(tài)對(duì)象。
[0010] 進(jìn)一步地,當(dāng)創(chuàng)建設(shè)備實(shí)時(shí)數(shù)據(jù)時(shí),靜態(tài)對(duì)象鎖定設(shè)備實(shí)時(shí)數(shù)據(jù)集合,判斷設(shè)備實(shí) 時(shí)數(shù)據(jù)集合中是否存在相應(yīng)的設(shè)備數(shù)據(jù)實(shí)例,若不存在,則創(chuàng)建設(shè)備數(shù)據(jù)實(shí)例并生成設(shè)備 內(nèi)碼,將設(shè)備數(shù)據(jù)實(shí)例添加至設(shè)備實(shí)時(shí)數(shù)據(jù)集合中,并在數(shù)據(jù)庫(kù)添加該設(shè)備數(shù)據(jù)實(shí)例;最后 釋放靜態(tài)對(duì)象。
[0011] 進(jìn)一步地,靜態(tài)對(duì)象根據(jù)設(shè)備內(nèi)碼鎖定設(shè)備實(shí)時(shí)數(shù)據(jù)集合中對(duì)應(yīng)的設(shè)備數(shù)據(jù)實(shí) 例。
[0012] 進(jìn)一步地,當(dāng)刪除設(shè)備實(shí)時(shí)數(shù)據(jù)時(shí),靜態(tài)對(duì)象鎖定設(shè)備實(shí)時(shí)數(shù)據(jù)集合,根據(jù)設(shè)備內(nèi) 碼查找對(duì)應(yīng)的設(shè)備數(shù)據(jù)實(shí)例并從設(shè)備實(shí)時(shí)數(shù)據(jù)集合內(nèi)刪除;然后根據(jù)設(shè)備內(nèi)碼刪除數(shù)據(jù)庫(kù) 相應(yīng)的設(shè)備數(shù)據(jù)實(shí)例;最后釋放靜態(tài)對(duì)象。
[0013] 進(jìn)一步地,當(dāng)更新、查詢(xún)和刪除設(shè)備實(shí)時(shí)數(shù)據(jù)時(shí),靜態(tài)對(duì)象鎖定設(shè)備實(shí)時(shí)數(shù)據(jù)集 合,根據(jù)設(shè)備內(nèi)碼屬性鎖定對(duì)應(yīng)的設(shè)備數(shù)據(jù)實(shí)例,從設(shè)備實(shí)時(shí)數(shù)據(jù)集合中檢索獲取當(dāng)前對(duì) 象后,修改、查詢(xún)和刪除設(shè)備數(shù)據(jù)實(shí)例;解除靜態(tài)對(duì)象。
[0014] 進(jìn)一步地,通過(guò)對(duì)設(shè)備實(shí)時(shí)數(shù)據(jù)集合進(jìn)行加載,實(shí)現(xiàn)對(duì)單個(gè)設(shè)備數(shù)據(jù)實(shí)例的新增、 查詢(xún)、修改、刪除。
[0015] 綜上所述,一種傳感設(shè)備實(shí)時(shí)數(shù)據(jù)的管理方法的加載設(shè)備實(shí)時(shí)數(shù)據(jù)集合,檢索、更 新、創(chuàng)建、刪除和同步設(shè)備實(shí)時(shí)數(shù)據(jù)行為的具體流程分別如下: 加載設(shè)備實(shí)時(shí)數(shù)據(jù)集合:通過(guò)靜態(tài)對(duì)象lockDevice鎖定設(shè)備實(shí)時(shí)數(shù)據(jù)集合 DevicelnfoCache,判斷設(shè)備實(shí)時(shí)數(shù)據(jù)集合DevicelnfoCache是否為空,當(dāng)為空時(shí),從數(shù)據(jù)庫(kù) 獲取設(shè)備實(shí)時(shí)數(shù)據(jù),填充數(shù)據(jù)到DevicelnfoCache中,釋放鎖lockDevice。
[0016] 檢索設(shè)備實(shí)時(shí)數(shù)據(jù):通過(guò)靜態(tài)對(duì)象1 〇 c k D e v i c e鎖定設(shè)備實(shí)時(shí)數(shù)據(jù)集合 DevicelnfoCache,通過(guò)設(shè)備內(nèi)碼device ID從設(shè)備實(shí)時(shí)數(shù)據(jù)集合DevicelnfoCache中檢索獲 取當(dāng)前對(duì)象currDevice,解鎖lockDevice。檢索設(shè)備實(shí)時(shí)數(shù)據(jù)不需要從數(shù)據(jù)庫(kù)中檢索數(shù)據(jù), 減小網(wǎng)絡(luò)開(kāi)銷(xiāo)及減小數(shù)據(jù)庫(kù)查詢(xún)壓力。同時(shí)直接從設(shè)備實(shí)時(shí)數(shù)據(jù)集合DevicelnfoCache查 詢(xún),查詢(xún)的效率比從數(shù)據(jù)庫(kù)查詢(xún)效率高。
[0017] 更新設(shè)備實(shí)時(shí)數(shù)據(jù):通過(guò)靜態(tài)對(duì)象lockDevice鎖定設(shè)備實(shí)時(shí)數(shù)據(jù)集合 Devi celnfoCache,通過(guò)設(shè)備devicelD從設(shè)備實(shí)時(shí)數(shù)據(jù)集合DevicelnfoCache中檢索獲取當(dāng) 前對(duì)象currDevice,更新當(dāng)前設(shè)備currDevice的設(shè)備實(shí)時(shí)數(shù)據(jù)和更新時(shí)間,解鎖 lockDevice。
[0018] 創(chuàng)建設(shè)備實(shí)時(shí)數(shù)據(jù):創(chuàng)建〇6¥;[06111;1^0對(duì)象0111^06¥;[06,通過(guò)靜態(tài)對(duì)象1001<1)6¥;^6 鎖定00¥;[06111;1^00&0116,添加0111^06¥;[06對(duì)象到設(shè)備實(shí)時(shí)數(shù)據(jù)集合06¥;[06111;1^00&0116集合, 解鎖 lockDevice。
[0019] 刪除設(shè)備實(shí)時(shí)數(shù)據(jù):通過(guò)靜態(tài)對(duì)象lockDe vice鎖定設(shè)備實(shí)時(shí)數(shù)據(jù)集合 Devi celnfoCache,通過(guò)設(shè)備devicelD從設(shè)備實(shí)時(shí)數(shù)據(jù)集合Device Inf oCache中檢索獲取當(dāng) 前對(duì)象currDevice,從設(shè)備實(shí)時(shí)數(shù)據(jù)集合Device Inf oCache中移除currDe vice對(duì)象,解鎖 lockDevice。
[0020] 同步設(shè)備實(shí)時(shí)數(shù)據(jù):在更新設(shè)備實(shí)時(shí)數(shù)據(jù)過(guò)程中,當(dāng)更新當(dāng)前設(shè)備currDevice的 設(shè)備實(shí)時(shí)數(shù)據(jù)和更新時(shí)間后,判斷當(dāng)前設(shè)備實(shí)時(shí)數(shù)據(jù)和設(shè)備最后同步數(shù)據(jù)之間差值的絕對(duì) 值,是否大于更新閾值,當(dāng)大于更新閾值,則更新設(shè)備實(shí)時(shí)數(shù)據(jù)到數(shù)據(jù)庫(kù)進(jìn)行存儲(chǔ),同時(shí),更 新最后同步數(shù)據(jù)為設(shè)備實(shí)時(shí)數(shù)據(jù)集合Devicelnf oCache中實(shí)時(shí)數(shù)據(jù),更新最后同步時(shí)間為 當(dāng)前時(shí)間。否則不更新數(shù)據(jù)庫(kù),避免了每次數(shù)據(jù)變化都更新數(shù)據(jù)庫(kù),大大減少更新次數(shù),同 時(shí)減少存儲(chǔ)的數(shù)據(jù)量。
[0021] 本發(fā)明的有益效果是: 1、 避免頻繁的數(shù)據(jù)更新,減少數(shù)據(jù)庫(kù)更新壓力; 2、 避免頻繁的數(shù)據(jù)查詢(xún),減少數(shù)據(jù)庫(kù)查詢(xún)壓力; 3、 直接從對(duì)象集合中獲取數(shù)據(jù),不用到數(shù)據(jù)庫(kù)中獲取,數(shù)據(jù)實(shí)時(shí)性高,獲取效率高。
【附圖說(shuō)明】
[0022]圖1,一種傳感設(shè)備實(shí)時(shí)數(shù)據(jù)的管理方法示意圖; 圖2,一種傳感設(shè)備實(shí)時(shí)數(shù)據(jù)的實(shí)時(shí)數(shù)據(jù)創(chuàng)建方法示意圖。
【具體實(shí)施方式】
[0023]本發(fā)明公開(kāi)了一種傳感設(shè)備實(shí)時(shí)數(shù)據(jù)的管理方法,下面結(jié)合附圖對(duì)本發(fā)明的具體 實(shí)施方式作進(jìn)一步詳細(xì)說(shuō)明。
[0024] 如附圖1和附圖2所示: 根據(jù)設(shè)備數(shù)據(jù)實(shí)例定義設(shè)備實(shí)時(shí)數(shù)據(jù)集合,通過(guò)對(duì)靜態(tài)對(duì)象的鎖定,實(shí)現(xiàn)對(duì)實(shí)時(shí)數(shù)據(jù) 集合的并發(fā)控制; 所述的設(shè)備數(shù)據(jù)實(shí)例,其屬性包括設(shè)備內(nèi)碼、設(shè)備名稱(chēng)、設(shè)備實(shí)時(shí)數(shù)據(jù)、更新時(shí)間、最后 同步數(shù)據(jù)、最后同步時(shí)間和更新閾值; 設(shè)備內(nèi)碼(deviceID):設(shè)備的唯一標(biāo)識(shí); 設(shè)備名稱(chēng):設(shè)備的顯示名稱(chēng); 設(shè)備實(shí)時(shí)數(shù)據(jù):設(shè)備最后上報(bào)的數(shù)據(jù); 更新時(shí)間:設(shè)備最后上報(bào)數(shù)據(jù)的時(shí)間; 最后同步數(shù)據(jù):同步數(shù)據(jù)到數(shù)據(jù)庫(kù)的最后數(shù)據(jù); 最后同步時(shí)間:同步數(shù)據(jù)到數(shù)據(jù)庫(kù)的最后時(shí)間; 更新閾值:作為數(shù)據(jù)更新的標(biāo)準(zhǔn),當(dāng)設(shè)備實(shí)時(shí)數(shù)據(jù)和最后同步數(shù)據(jù)相差絕對(duì)值大于更 新閾值后,則更新數(shù)據(jù)到數(shù)據(jù)庫(kù); 設(shè)備數(shù)據(jù)實(shí)例Deviceinfo示例:
設(shè)備實(shí)時(shí)數(shù)據(jù)集合DevicelnfoCache示例:
當(dāng)設(shè)備實(shí)時(shí)數(shù)據(jù)集合初始化時(shí),從數(shù)據(jù)庫(kù)查詢(xún)并加載設(shè)備數(shù)據(jù)實(shí)例到設(shè)備實(shí)時(shí)數(shù)據(jù)集 合中; 當(dāng)創(chuàng)建設(shè)備實(shí)時(shí)數(shù)據(jù)時(shí),先判斷設(shè)備實(shí)時(shí)數(shù)據(jù)集合內(nèi)是否存在相應(yīng)的設(shè)備數(shù)據(jù)實(shí)例, 若不存在,則創(chuàng)建設(shè)備數(shù)據(jù)實(shí)例并添加到設(shè)備實(shí)時(shí)數(shù)據(jù)集合,添加設(shè)備數(shù)據(jù)實(shí)例到數(shù)據(jù)庫(kù); 當(dāng)查詢(xún)?cè)O(shè)備實(shí)時(shí)數(shù)據(jù)時(shí),直接從設(shè)備實(shí)時(shí)數(shù)據(jù)集合中查詢(xún)相應(yīng)的設(shè)備數(shù)據(jù)實(shí)例; 當(dāng)傳感設(shè)備上報(bào)數(shù)據(jù)時(shí),更新相應(yīng)設(shè)備數(shù)據(jù)實(shí)例中的設(shè)備實(shí)時(shí)數(shù)據(jù)和更新時(shí)間,然后 判斷當(dāng)前設(shè)備實(shí)時(shí)數(shù)據(jù)和最后同步數(shù)據(jù)之間差值的絕對(duì)值,是否