專利名稱:一種用于rfid中間件的冗余數(shù)據(jù)過濾方法
技術(shù)領(lǐng)域:
本發(fā)明涉及射頻通信領(lǐng)域數(shù)據(jù)處理方法,尤其是一種用于RFID中間件的冗余數(shù)據(jù)過濾方法。
背景技術(shù):
RFID (Radio Frequency Identification)是一種利用射頻信號和空間稱合技術(shù)實(shí)現(xiàn)無接觸的自動識別的技木。RFID中間件通過屏蔽閱讀器的復(fù)雜性與種類,為上層系統(tǒng)提供統(tǒng)ー的調(diào)用接ロ及統(tǒng)ー的數(shù)據(jù)格式,同時為應(yīng)用系統(tǒng)提供數(shù)據(jù)的過濾,清洗,數(shù)據(jù)匯集統(tǒng)計(jì)等,為業(yè)務(wù)系統(tǒng)提供強(qiáng)大的支撐。在大規(guī)模的RFID應(yīng)用中,RFID閱讀器在每個讀寫周期中讀取的原始RFID數(shù)據(jù)量非常巨大,如EPC global標(biāo)準(zhǔn)規(guī)定的第二代(Gen2) RFID 閱讀器規(guī)范對閱讀器的閱讀速率做出了規(guī)定每秒鐘1800個電子標(biāo)簽。這意味著,ー個擁有30臺閱讀器的中型倉庫在高峰期一秒鐘可以產(chǎn)生4. 8萬條數(shù)據(jù),數(shù)據(jù)包含閱讀器的Id, RFID數(shù)據(jù),讀取的時間等,其大小一般20字節(jié),則每天將會產(chǎn)生上百G的數(shù)據(jù),需要處理的數(shù)據(jù)量非常龐大。如何實(shí)時地對海量的RFID原始數(shù)據(jù)進(jìn)行處理及如何充分提取出RFID數(shù)據(jù)所包含的有價值信息已成為RFID中間件研究的重要內(nèi)容。而在這些從閱讀器收集的原始RFID數(shù)據(jù)中,存在著大量的重復(fù),在實(shí)際的應(yīng)用中,對業(yè)務(wù)系統(tǒng)真正有價值有意義的數(shù)據(jù)并不多,如果不加處理直接將原始的數(shù)據(jù)傳輸?shù)綐I(yè)務(wù)系統(tǒng)中,則會帶來巨大的帶寬浪費(fèi)并對系統(tǒng)的內(nèi)存及處理器造成沉重的數(shù)據(jù)處理負(fù)擔(dān)。當(dāng)前常用的處理冗余的RFID數(shù)據(jù)的方法主要有兩種,ー種主要通過在數(shù)據(jù)庫中創(chuàng)建ー張臨時表存儲原始的RFID數(shù)據(jù),然后通過在臨時表的增刪查改實(shí)現(xiàn)數(shù)據(jù)的過濾,該方法易于實(shí)現(xiàn),但處理大規(guī)模的RFID數(shù)據(jù)時,涉及大量磁盤1/0,效率低下,并不具有實(shí)用價值。更為常用的方法是通過在中間件系統(tǒng)中開辟一大片內(nèi)存緩沖區(qū),儲存臨時的RFID數(shù)據(jù),進(jìn)行冗余過濾,由于內(nèi)存操作相比于磁盤I/O在處理效率上有幾個數(shù)量級的提升,而中間件需要實(shí)時處理大量的RFIDRFID數(shù)據(jù),因此要求其過濾算法具有較低的查找時間,同時要求算法對資源占用要低。傳統(tǒng)冗余數(shù)據(jù)過濾算法多以線性鏈表,樹,隊(duì)列等作為存儲數(shù)據(jù)結(jié)構(gòu),如線性鏈表在查找ー個RFID數(shù)據(jù)需遍歷整個鏈表,每次查詢都需要耗費(fèi)大量的查找時間,樹形結(jié)構(gòu)則需要維持一個相對穩(wěn)定的序列,操作復(fù)雜,時間復(fù)雜度理論上只能達(dá)到O(Ign),在大規(guī)模或者實(shí)時的應(yīng)用,仍然無法滿足數(shù)據(jù)高速處理的需求,存在一定的效率缺陷。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供ー種應(yīng)用于RFID中間件的多階哈希表的過濾算法,以對來自閱讀器的RFID數(shù)據(jù)進(jìn)行高效的冗余數(shù)據(jù)過濾處理。為了解決上述技術(shù)問題,本發(fā)明所采用的技術(shù)方案是
一種用于RFID中間件的冗余數(shù)據(jù)過濾方法,包括以下步驟在內(nèi)存中創(chuàng)建用于存儲來自閱讀器的RFID數(shù)據(jù)的多階哈希表,所述多階哈希表內(nèi)創(chuàng)建有用于查詢、刪除該RFID數(shù)據(jù)的標(biāo)簽節(jié)點(diǎn);
判斷是否有RFID數(shù)據(jù)流,若否則結(jié)束進(jìn)程,若是則執(zhí)行下ー步驟;
根據(jù)RFID數(shù)據(jù)的標(biāo)簽ID查詢多階哈希表中的標(biāo)簽節(jié)點(diǎn),判斷RFID數(shù)據(jù)流中各RFID數(shù)據(jù)的狀態(tài);
根據(jù)各RFID數(shù)據(jù)的狀態(tài)對其進(jìn)行冗余數(shù)據(jù)過濾處理。進(jìn)ー步作為優(yōu)選的實(shí)施方式,所述標(biāo)簽ID為用于唯一標(biāo)識該RFID數(shù)據(jù)的ニ進(jìn)制序列,所述RFID數(shù)據(jù)在多階哈希表中的存儲位置為基于標(biāo)簽ID的映射函數(shù)。
進(jìn)ー步作為優(yōu)選的實(shí)施方式,所述多階哈希表中定義的標(biāo)簽節(jié)點(diǎn)包括標(biāo)簽ID、標(biāo)簽首次讀取時間、標(biāo)簽?zāi)┐巫x取時間及讀取次數(shù)。進(jìn)ー步作為優(yōu)選的實(shí)施方式,所述RFID數(shù)據(jù)的狀態(tài)包括未知、捕捉和已存在;所述未知狀態(tài)是指該RFID數(shù)據(jù)未存在多階哈希表中;所述捕捉狀態(tài)是指該RFID數(shù)據(jù)在多階哈希表中已存在但未被確認(rèn);所述已存在狀態(tài)是指該RFID數(shù)據(jù)在多階哈希表中已被確認(rèn)。進(jìn)ー步作為優(yōu)選的實(shí)施方式,所述根據(jù)各RFID數(shù)據(jù)的狀態(tài)對其進(jìn)行冗余數(shù)據(jù)過濾處理包括
在未知狀態(tài)下,將該RFID數(shù)據(jù)存儲到多階哈希表中,并為該RFID數(shù)據(jù)生成標(biāo)簽節(jié)點(diǎn),將該RFID數(shù)據(jù)在整個數(shù)據(jù)傳輸通道中作為冗余數(shù)據(jù)過濾掉,轉(zhuǎn)入捕捉狀態(tài);
在捕捉狀態(tài)下,判斷最近兩次RFID數(shù)據(jù)的讀取時間差是否超過時間閾值,若是則將該RFID數(shù)據(jù)從多階哈希表中移除并轉(zhuǎn)入未知狀態(tài),若否則更新該RFID數(shù)據(jù)的標(biāo)簽節(jié)點(diǎn)并判斷該RFID數(shù)據(jù)的讀取次數(shù)是否達(dá)到次數(shù)閾值,若未達(dá)到次數(shù)閾值則保持捕捉狀態(tài),將該RFID數(shù)據(jù)作為冗余數(shù)據(jù)過濾掉,若達(dá)到次數(shù)閾值則將該RFID數(shù)據(jù)加入輸出隊(duì)列,作為過濾后的干凈數(shù)據(jù)提供給上層系統(tǒng),并轉(zhuǎn)入已存在狀態(tài);
在已存在狀態(tài)下,判斷最近兩次RFID數(shù)據(jù)的讀取時間差是否超過時間閾值,若是則將該RFID數(shù)據(jù)從多階哈希表中移除并轉(zhuǎn)入未知狀態(tài),若否則更新該RFID數(shù)據(jù)的標(biāo)簽節(jié)點(diǎn)并直接將該RFID數(shù)據(jù)作為冗余數(shù)據(jù)過濾掉。進(jìn)ー步作為優(yōu)選的實(shí)施方式,所述多階哈希表的創(chuàng)建包括以下步驟
定義在多階哈希表中存儲RFID數(shù)據(jù)的標(biāo)簽節(jié)點(diǎn),所述標(biāo)簽節(jié)點(diǎn)包括標(biāo)簽ID、標(biāo)簽首次讀取時間、標(biāo)簽?zāi)┐巫x取時間及讀取次數(shù);
設(shè)定時間閾值、次數(shù)閾值及標(biāo)簽數(shù)據(jù)規(guī)模,所述時間閾值表征在該時間內(nèi)ー個RFID數(shù)據(jù)多次被讀取則認(rèn)定為重復(fù)數(shù)據(jù);所述次數(shù)閾值表征只有讀取次數(shù)達(dá)到該數(shù)值的RFID數(shù)據(jù)為穩(wěn)定數(shù)據(jù);所述標(biāo)簽數(shù)據(jù)規(guī)模表征該多階哈希表內(nèi)標(biāo)簽節(jié)點(diǎn)的容量;
設(shè)定多階哈希表的最大桶數(shù)M和階數(shù)N ;
在內(nèi)存中申請M*N個存儲空間,以ニ維數(shù)組HashTable [M] [N]表示,作為存儲RFID數(shù)據(jù)的哈希矩陣;
以基于標(biāo)簽ID的映射函數(shù)建立RFID數(shù)據(jù)與該RFID數(shù)據(jù)在多階哈希表中存儲位置的對應(yīng)關(guān)系。進(jìn)ー步作為優(yōu)選的實(shí)施方式,所述時間閾值、次數(shù)閾值及標(biāo)簽數(shù)據(jù)規(guī)??梢哉{(diào)整。本發(fā)明的有益效果是本發(fā)明通過在內(nèi)存中建立多階哈希表,將中間件接收的RFID數(shù)據(jù)分配到多階哈希表中,并通過判斷該RFID數(shù)據(jù)的狀態(tài)進(jìn)行冗余數(shù)據(jù)過濾處理,實(shí)現(xiàn)了海量冗余RFID數(shù)據(jù)的過濾,大大減少了網(wǎng)絡(luò)的傳輸量,從而為上層應(yīng)用提供了更為干凈、更有價值的RFID數(shù)據(jù),并且本發(fā)明方法通過利用多階哈希表的存儲結(jié)構(gòu),大大提升了RFID數(shù)據(jù)的過濾效率。
下面結(jié)合附圖對本發(fā)明的具體實(shí)施方式
作進(jìn)ー步說明
圖I是本發(fā)明用于RFID中間件的冗余數(shù)據(jù)過濾方法的步驟流程 圖2是本發(fā)明RFID數(shù)據(jù)的狀態(tài)機(jī)結(jié)構(gòu)示意 圖3是本發(fā)明多階哈希表創(chuàng)建的流程 圖4是本發(fā)明多階哈希表的結(jié)構(gòu)示意圖;
圖5是本發(fā)明基于多階哈希表的冗余數(shù)據(jù)過濾方法優(yōu)選實(shí)施例的步驟流程 圖6是本發(fā)明優(yōu)選實(shí)施例中多階哈希表結(jié)構(gòu)的數(shù)據(jù)儲存示意圖。
具體實(shí)施例方式本發(fā)明采用在內(nèi)存中建立多階哈希表來存儲接收到的RFID數(shù)據(jù),并根據(jù)各RFID數(shù)據(jù)的狀態(tài)進(jìn)行冗余數(shù)據(jù)過濾處理,可以高效的過濾掉重復(fù)的RFID數(shù)據(jù)。參照圖1,一種用于RFID中間件的冗余數(shù)據(jù)過濾方法,包括以下步驟
在內(nèi)存中創(chuàng)建用于存儲來自閱讀器的RFID數(shù)據(jù)的多階哈希表,所述多階哈希表內(nèi)創(chuàng)建有用于查詢、刪除該RFID數(shù)據(jù)的標(biāo)簽節(jié)點(diǎn);
判斷是否有RFID數(shù)據(jù)流,若否則結(jié)束進(jìn)程,若是則執(zhí)行下ー步驟;
根據(jù)RFID數(shù)據(jù)的標(biāo)簽ID查詢多階哈希表中的標(biāo)簽節(jié)點(diǎn),判斷RFID數(shù)據(jù)流中各RFID數(shù)據(jù)的狀態(tài);
根據(jù)各RFID數(shù)據(jù)的狀態(tài)對其進(jìn)行冗余數(shù)據(jù)過濾處理。進(jìn)ー步作為優(yōu)選的實(shí)施方式,所述多階哈希表中定義的標(biāo)簽節(jié)點(diǎn)包括標(biāo)簽ID、標(biāo)簽首次讀取時間tFirstRead、標(biāo)簽?zāi)┐巫x取時間tLastRead及讀取次數(shù)tagCnt。所述標(biāo)簽ID為用于唯一標(biāo)識該RFID數(shù)據(jù)的ニ進(jìn)制序列,所述RFID數(shù)據(jù)在多階哈希表中的存儲位置為基于標(biāo)簽ID的映射函數(shù)。參照圖2,進(jìn)ー步作為優(yōu)選的實(shí)施方式,所述RFID數(shù)據(jù)的狀態(tài)包括未知(unknown)、捕捉(captured)和已存在(observed);所述未知狀態(tài)是指該RFID數(shù)據(jù)未存在多階哈希表中,;所述捕捉狀態(tài)是指該RFID數(shù)據(jù)在多階哈希表中已存在但未被確認(rèn);所述已存在狀態(tài)是指該RFID數(shù)據(jù)在多階哈希表中已被確認(rèn)。進(jìn)ー步作為優(yōu)選的實(shí)施方式,對本發(fā)明中從閱讀器獲取的RFID數(shù)據(jù)的格式進(jìn)行限定,所述RFID數(shù)據(jù)包括閱讀器ID、RFID數(shù)據(jù)編碼及RFID數(shù)據(jù)的時間戳?,F(xiàn)舉例說明,假設(shè)RFID數(shù)據(jù)的格式均是以〈reader, epc, time)三元組作為元數(shù)據(jù)存在,reader表示閱讀器ID,epc表示RFID數(shù)據(jù)編碼,兩者都可以唯一標(biāo)識,time則是表示閱讀器讀到的時間戳。閱讀器是以這樣的格式將RFID數(shù)據(jù)傳送到中間件。進(jìn)ー步作為優(yōu)選的實(shí)施方式,所述根據(jù)該RFID數(shù)據(jù)的狀態(tài)對其進(jìn)行冗余數(shù)據(jù)過濾處理包括
當(dāng)RFID數(shù)據(jù)被首次讀取之前,RFID數(shù)據(jù)處于未知狀態(tài);當(dāng)中間件接收到RFID數(shù)據(jù)〈reader,epc, time)吋,首先按映射函數(shù)從多階哈希表中查找該RFID數(shù)據(jù)是否存在,若找到則判定該RFID數(shù)據(jù)處于捕捉或者已存在狀態(tài),若未找到則判定該RFID數(shù)據(jù)處于未知狀態(tài);
在未知狀態(tài)下,將該RFID數(shù)據(jù)根據(jù)映射函數(shù)存儲到多階哈希表中,并為該RFID數(shù)據(jù)生成標(biāo)簽節(jié)點(diǎn),設(shè)定標(biāo)簽節(jié)點(diǎn)數(shù)據(jù)為tagCnt=l,更新tFirstRead和tLastRead為當(dāng)前的讀取時間currentTime。將該RFID數(shù)據(jù)在整個數(shù)據(jù)傳輸通道中作為冗余數(shù)據(jù)過濾掉,轉(zhuǎn)入捕捉狀態(tài);
在捕捉狀態(tài)下,判斷最近兩次RFID數(shù)據(jù)的讀取時間差是否超過時間閾值,若是則將該RFID數(shù)據(jù)從多階哈希表中移除并轉(zhuǎn)入未知狀態(tài),若否則更新該RFID數(shù)據(jù)的標(biāo)簽節(jié)點(diǎn)并判斷該RFID數(shù)據(jù)的讀取次數(shù)是否達(dá)到次數(shù)閾值,若未達(dá)到次數(shù)閾值則保持捕捉狀態(tài),將該RFID數(shù)據(jù)作為冗余數(shù)據(jù)過濾掉,若達(dá)到次數(shù)閾值則將該RFID數(shù)據(jù)加入輸出隊(duì)列Queue,作為過濾后的干凈數(shù)據(jù)提供給上層系統(tǒng),并轉(zhuǎn)入已存在狀態(tài);
在已存在狀態(tài)下,判斷最近兩次RFID數(shù)據(jù)的讀取時間差是否超過時間閾值,若是則將 該RFID數(shù)據(jù)從多階哈希表中移除并轉(zhuǎn)入未知狀態(tài),若否則更新該RFID數(shù)據(jù)的標(biāo)簽節(jié)點(diǎn)并直接將該RFID數(shù)據(jù)作為冗余數(shù)據(jù)過濾掉。進(jìn)ー步作為優(yōu)選的實(shí)施方式,參照圖3,所述多階哈希表的創(chuàng)建包括以下步驟 定義在多階哈希表中存儲RFID數(shù)據(jù)的標(biāo)簽節(jié)點(diǎn),所述標(biāo)簽節(jié)點(diǎn)包括標(biāo)簽ID、標(biāo)簽首
次讀取時間tFirstRead、標(biāo)簽?zāi)┐巫x取時間tLastRead及讀取次數(shù)tagCnt ;
例如,在實(shí)際應(yīng)用中可以如下設(shè)置標(biāo)簽節(jié)點(diǎn)的格式 struct TagNode {
tagld : long //標(biāo)簽ID,也是哈希表的key
tFirstRead: time //表示標(biāo)簽節(jié)點(diǎn)首次讀到時間,作為時間閾值
T threshold
計(jì)時起始時刻
tLastRead: time //記錄標(biāo)簽節(jié)點(diǎn)最后一次讀取的時間
tagCnt: long //記錄標(biāo)簽節(jié)點(diǎn)在ー個時間閾值T threshaLd所讀取的次數(shù)
}
設(shè)定時間閾值T threshaLd、次數(shù)閾值TagCntttoestold及標(biāo)簽數(shù)據(jù)規(guī)模DataScaleSize,所述時間閾值T ttesh()ld表征在該時間內(nèi)ー個RFID數(shù)據(jù)多次被讀取則認(rèn)定為重復(fù)數(shù)據(jù),可以直
接過濾棹。如果連續(xù)兩次讀取到的時間差值超出該時間閾值T thMstold,則認(rèn)為是不同的事
件。該值可以根據(jù)實(shí)際的業(yè)務(wù)情況進(jìn)行調(diào)整,獲取靜態(tài)的數(shù)據(jù)如掃描庫存可以相應(yīng)増大其閾值,獲取動態(tài)的數(shù)據(jù)如傳輸帶的RFID數(shù)據(jù)則需要調(diào)小該閾值。所述次數(shù)閾值TagCntttoestold表征只有讀取次數(shù)達(dá)到該數(shù)值的RFID數(shù)據(jù)為穩(wěn)定數(shù)據(jù),才確認(rèn)讀取到該RFID數(shù)據(jù),若低于該閾值則認(rèn)為誤讀的數(shù)據(jù),該閾值可以根據(jù)實(shí)際的業(yè)務(wù)進(jìn)行調(diào)整;所述標(biāo)簽數(shù)據(jù)規(guī)模DataScaleSize表征該多階哈希表內(nèi)標(biāo)簽節(jié)點(diǎn)的容量;設(shè)定多階哈希表的最大桶數(shù)M和階數(shù)N;所述最大桶數(shù)M根據(jù)標(biāo)簽數(shù)據(jù)規(guī)模DataScaleSize來設(shè)定,一般設(shè)置M=2*DataScaleSize,同時確定哈希表的階數(shù)N,一般不宜過大,若過大,多階哈希表則可能退化成多鏈表。在內(nèi)存中申請M*N個存儲空間,以ニ維數(shù)組HashTabIe[M] [N]表示,作為存儲RFID數(shù)據(jù)的哈希矩陣,其中N代表哈希表的階數(shù),M代表哈希表的最大桶數(shù);
以基于標(biāo)簽ID的映射函數(shù)建立RFID數(shù)據(jù)與該RFID數(shù)據(jù)在多階哈希表中存儲位置的對應(yīng)關(guān)系,由于RFID數(shù)據(jù)是唯一的,以標(biāo)簽ID作為其進(jìn)入多階哈希表的key,建立映射函數(shù)f,計(jì)算出f (tagld) = (tagld+M) % primTable [η],其中tagld為標(biāo)簽ID,M為哈希表的最
大桶數(shù),primTable[n]代表該階哈希表的桶數(shù),n=l, 2,3......N。參照圖4,計(jì)算姆階哈希表
的桶數(shù)primTable[n],即取前η個小于最大桶數(shù)M的素數(shù)作為每階的桶數(shù),從大到小依次作為各階的桶數(shù),并存于數(shù)組primTable中,本作法的目的在于提供較小的哈希沖突。計(jì)算得到的f (tagld)作為hash值,即為該RFID數(shù)據(jù)在該階哈希桶中的存儲地址。通過映射函數(shù)f,為多階哈希表提供了 RFID數(shù)據(jù)的查詢、修改、刪除及増加的方法。優(yōu)選的,所述時間閾值T threshold>次數(shù)閾值TagCntthreshtjld及標(biāo)簽數(shù)據(jù)規(guī)模DataScaleSize可以根據(jù)實(shí)際應(yīng)用情況而調(diào)整。圖5是本發(fā)明基于多階哈希表的冗余數(shù)據(jù)過濾方法優(yōu)選實(shí)實(shí)施例的步驟流程圖,參照圖5
根據(jù)實(shí)際的RFID業(yè)務(wù)用途,確定預(yù)設(shè)的參數(shù),包括取有效讀取時間閾值T threstold,確認(rèn)
數(shù)據(jù)有效的次數(shù)閾值TagCntttoestold,以及標(biāo)簽數(shù)據(jù)規(guī)模DataScaleSize在內(nèi)存中創(chuàng)建多階哈希表,并創(chuàng)建對RFID數(shù)據(jù)進(jìn)行查詢、修改、刪除等操作的標(biāo)簽節(jié)點(diǎn)。如圖2所示,定義RFID數(shù)據(jù)的狀態(tài)轉(zhuǎn)換的狀態(tài)機(jī),確定RFID數(shù)據(jù)過濾的準(zhǔn)則。當(dāng)有RFID數(shù)據(jù)<readern, epcn, timen>到來時,首先確認(rèn)該RFID數(shù)據(jù)的狀態(tài),通過查詢該RFID數(shù)據(jù)在哈希表中存不存在,以及讀取的時間,及以讀取次數(shù)來確認(rèn)。而在進(jìn)一步確認(rèn)RFID數(shù)據(jù)的狀態(tài)之前,需要先判斷該RFID數(shù)據(jù)是否處于有效的
讀取間隔內(nèi),即最新的讀取時間與最后一次的讀取間隔若超過時間閾值T threslTOld,若超過即則表示之前RFID數(shù)據(jù)的讀取記錄已失效,其作為首次讀取進(jìn)行處理。ij)該RFID數(shù)據(jù)不在哈希表中,則表示該RFID數(shù)據(jù)處于unknown狀態(tài);
:f.該RFID數(shù)據(jù)在哈希表中,但在有效讀取時間內(nèi)的讀取次數(shù)小于確認(rèn)數(shù)據(jù)有效的讀取次數(shù)閾值,則表示該RFID數(shù)據(jù)處于captured狀態(tài);
亥RFID數(shù)據(jù)在哈希表中,但在有效讀取時間內(nèi)的讀取次數(shù)大于確認(rèn)數(shù)據(jù)有效的讀取次數(shù)閾值,則表示該RFID數(shù)據(jù)處于observed狀態(tài)。確定RFID數(shù)據(jù)的狀態(tài)以后,對哈希表中該標(biāo)簽節(jié)點(diǎn)的最新讀取時間和讀取次數(shù)進(jìn)行更新,通過查看標(biāo)簽節(jié)點(diǎn)的總的讀寫次數(shù)及讀取的時間間隔,如圖2所示,確定RFID數(shù)據(jù)的狀態(tài)轉(zhuǎn)換過程。QJ當(dāng)RFID數(shù)據(jù)處于unknown狀態(tài)時,則將其按應(yīng)設(shè)函數(shù)f計(jì)算出的存儲位置加
入多階哈希表中,設(shè)定其的讀取次數(shù)tagCnt為I次,更新tFirstRead和tLastRead為當(dāng)前的讀取時間currentTime,該RFID數(shù)據(jù)作為冗余數(shù)據(jù)被暫時過濾掉并轉(zhuǎn)入captured狀態(tài)。(f;當(dāng)RFID數(shù)據(jù)處于captured狀態(tài)時,表明在多階哈希表中已存在該RFID 數(shù)據(jù),判斷讀取時間間隔是否在時間閾值T threshoid內(nèi),若currentTime_tLastRead> T
threshold 表明該rFID數(shù)據(jù)已失效,更新為unknown狀態(tài),并將數(shù)據(jù)過濾處理;若
currentTime-tLastRead ^ T tJireshold,更新讀取次數(shù) tagCnt=tagCnt+l, tLastRead 為
currentTime,再判斷讀取次數(shù)tagCnt是否剛好到達(dá)有效讀取的次數(shù)閾值TagCntthreshtjld,如若剛好,該RFID數(shù)據(jù)轉(zhuǎn)入observed狀態(tài),該RFID數(shù)據(jù)作為過濾后的干凈數(shù)據(jù)加入隊(duì)列Queue中,供上層業(yè)務(wù)系統(tǒng)調(diào)用;如若小于有效讀取的次數(shù)閾值TagCntthreshtjld,則該RFID數(shù)據(jù)仍然處于observed狀態(tài),此時該RFID數(shù)據(jù)仍然作為不穩(wěn)定數(shù)據(jù),被暫時過濾掉。φ當(dāng)RFID數(shù)據(jù)處于observed狀態(tài)時,表明在多階哈希表中已存在該RFID數(shù)據(jù),且讀到的次數(shù)超過了次數(shù)閾值,此時再次讀到該RFID數(shù)據(jù),判斷讀取時間間隔是否在時間閾值T threshold 內(nèi),若 currentTime-tLastRead〉T threshoid,表明該 rFID 數(shù)據(jù)已失效,更新為
unknown狀態(tài),并將數(shù)據(jù)過濾處理;若currentTime-tLastRead threshold,更新讀取次數(shù)
tagCnt=tagCnt+l, tLastRead為currentTime,該RFID數(shù)據(jù)作為冗余數(shù)據(jù)過濾掉,在實(shí)際的應(yīng)用中,絕大多數(shù)的RFID數(shù)據(jù)均處于該狀態(tài)。本方法通過將多階哈希表作為RFID中間件的過濾通道,快速有效實(shí)現(xiàn)了海量冗余RFID數(shù)據(jù)的準(zhǔn)確過濾,大大減少了網(wǎng)絡(luò)的傳輸量,降低了業(yè)務(wù)的數(shù)據(jù)處理規(guī)模,節(jié)省了大量的處理時間。下面結(jié)合圖6說明ー下本發(fā)明的ー個具體實(shí)例。第一歩,對于本發(fā)明的ー些與RFID實(shí)際應(yīng)用規(guī)模跟場景等關(guān)系密切參數(shù)進(jìn)行配
置,本實(shí)例確定有效的讀取時間閾值T tlireshold為100s,有效讀取次數(shù)閾值TagCntth-設(shè)
置為5,哈希桶的階數(shù)為10,假定標(biāo)簽數(shù)據(jù)規(guī)模DataScaleSize為10000,則設(shè)最大的哈希桶數(shù)M為20000,則可以以ニ維數(shù)組HashTable [20000] [10]表示。計(jì)算每階的桶數(shù),在本實(shí)例中,以20000作為最大的桶數(shù),則每I階到第10階哈希桶的桶數(shù)依次設(shè)定為 19997,19993,19991,19979,19973,19963,19961,19949,19937,19927,存儲在primTable數(shù)組中。
假若在IOS同時有ー批RFID數(shù)據(jù)到來,如100個標(biāo)簽ID值為0000000100的RFID數(shù)據(jù),99個標(biāo)簽ID值為000000099的RFID數(shù)據(jù),98個標(biāo)簽ID值為00000000098的RFID數(shù)據(jù),……2個標(biāo)簽ID值為0000000002的RFID數(shù)據(jù),I個標(biāo)簽ID值為0000000001的RFID數(shù)據(jù),舉例對于標(biāo)簽ID值為0000000100的RFID數(shù)據(jù),按照f (tagld) = (tagld+M)%primTable [η],其在第一階哈希桶的索引位置index= (100+20000) % 19997,即是第一階哈
希桶位置 103,同理 0000000099 在位置 102,0000000098 在位置 101......,0000000001 在
位置4。因?yàn)樵O(shè)定讀取有效次數(shù)的閾值為5次,則5次以下的RFID數(shù)據(jù)均只存儲于哈希
表中,并不輸出。經(jīng)過過濾后輸出在隊(duì)列中,只有(0000000100,000000099......000000006, 000000005)共96個RFID數(shù)據(jù)值,數(shù)據(jù)的規(guī)模大大減低。標(biāo)簽ID值范圍為000000005-0000000100的RFID數(shù)據(jù)此時均處observed狀態(tài),若此時在該范圍的RFID數(shù)據(jù)到達(dá)中間件,其將均為冗余數(shù)據(jù)過濾棹。而標(biāo)簽ID值000000001-000000004的RFID數(shù)據(jù)則處于captured狀態(tài),假若此時標(biāo)簽ID值為0000000004的RFID數(shù)據(jù)傳到中間件,則其值剛好到達(dá)有效次數(shù)的閾值,其將作為干凈數(shù)據(jù)加入到隊(duì)列中,其RFID數(shù)據(jù)轉(zhuǎn)為observed狀態(tài)。若是有標(biāo)簽ID值為0000000003的RFID數(shù)據(jù)到來,總的讀寫次數(shù)只有4次,仍然處于captured狀態(tài),其仍然作為不穩(wěn)定數(shù)據(jù)被過濾掉。若此時有標(biāo)簽ID值為000000101的RFID數(shù)據(jù)到來,因?yàn)樵诠1碇袥]有該RFID數(shù)據(jù)的讀取記錄,所以在讀取前處于unknown狀態(tài),此時將其加入哈希表中,該RFID數(shù)據(jù)狀態(tài)也轉(zhuǎn)為captured。假若在IOOs有效讀取時間閾值T threshold內(nèi),均沒有標(biāo)簽ID值為0000000100的
RFID數(shù)據(jù)讀取記錄,IOls以后,當(dāng)標(biāo)簽ID值為0000000100的RFID數(shù)據(jù)再次被讀取到的時候,由于超過有效的讀取時間閾值,所以該RFID數(shù)據(jù)讀取記錄實(shí)際已經(jīng)失效,處于unknow狀態(tài),此時再次讀到,則作為首次讀到處理,其讀取次數(shù)設(shè)置為1,首次讀取時間,最新讀取時間均會設(shè)置為當(dāng)前的時間,該RFID數(shù)據(jù)將轉(zhuǎn)入captured狀態(tài)。若此時有標(biāo)簽ID值為000020097的RFID數(shù)據(jù)到來,從第一階哈希表開始計(jì)算,其index= (20097+20000) % 19997其值為103,因?yàn)樵谠撏耙延?000000100的RFID數(shù)據(jù),處于哈希沖突,接著計(jì)算第2階,其index= (20097+20000)% 19993,其值為111,所以該RFID數(shù)據(jù)存儲在第二階的索引位置為111的位置中。本發(fā)明通過構(gòu)造多階哈希表的數(shù)據(jù)結(jié)構(gòu)作為過濾的管道,實(shí)現(xiàn)了海量冗余RFID數(shù)據(jù)的過濾,大大減少了網(wǎng)絡(luò)的傳輸量,從而為上層應(yīng)用提供了更為干凈,有價值的RFID數(shù)據(jù)。本發(fā)明通過定義RFID數(shù)據(jù)的狀態(tài),通過設(shè)定時間閾值和讀取次數(shù)閾值,可以有效的過濾那些由于RFID技術(shù)的天生的不穩(wěn)定,不可靠所帶來的誤讀,多讀等情況,帶來更干凈的數(shù)據(jù)。根據(jù)算法的評價標(biāo)準(zhǔn),衡量ー個數(shù)據(jù)處理算法的優(yōu)劣主要有三個方面的參數(shù)吋間復(fù)雜度、空間復(fù)雜度和平均查找長度。本發(fā)明的三個評價指標(biāo)如下;!;時間復(fù)雜度本發(fā)明采用多階哈希表,動態(tài)匹配RFID數(shù)據(jù)的規(guī)模,有效利用RFID數(shù)據(jù)獨(dú)ー無ニ的特性,將其標(biāo)簽ID作為key,在設(shè)計(jì)多階哈希表的時候,使得每階的桶的個數(shù)是質(zhì)數(shù),這樣利用key%桶的個數(shù)得出在哈希桶的索引位置,使得每個RFID數(shù)據(jù)在哈希表的位置足夠散射,最大程度了減少沖突,實(shí)現(xiàn)簡單,經(jīng)過測試對比,其查找效率在可維持在常數(shù)數(shù)量級,即0(1)的時間復(fù)雜度,相比于線性鏈表的0(n),樹結(jié)構(gòu)的0(lgn),效率相比之下有質(zhì)的提升。(I)空間復(fù)雜度哈希函數(shù)的本質(zhì)在以空間換取時間,通過引進(jìn)多個哈希桶作為輔助空間,空間復(fù)雜度為0(n)
平均查找長度平均查找長度是指對一個結(jié)構(gòu)內(nèi)的所有節(jié)點(diǎn)的查找長度按查找概
率的加權(quán)值。在一般的情況下,本發(fā)明在常數(shù)的時間內(nèi)均可以通過哈希映射找到目標(biāo)標(biāo)簽的存儲位置。最壞的情況是就是需要查找η次,η代表哈希表的階數(shù)。以上是對本發(fā)明的較佳實(shí)施進(jìn)行了具體說明,但本發(fā)明創(chuàng)造并不限于所述實(shí)施 例,熟悉本領(lǐng)域的技術(shù)人員在不違背本發(fā)明精神的前提下還可以作出種種的等同變形或替換,這些等同的變形或替換均包含在本申請權(quán)利要求所限定的范圍內(nèi)。
權(quán)利要求
1.一種用于RFID中間件的冗余數(shù)據(jù)過濾方法,其特征在于,包括以下步驟 在內(nèi)存中創(chuàng)建用于存儲來自閱讀器的RFID數(shù)據(jù)的多階哈希表,所述多階哈希表內(nèi)創(chuàng)建有用于查詢、刪除該RFID數(shù)據(jù)的標(biāo)簽節(jié)點(diǎn); 判斷是否有RFID數(shù)據(jù)流,若否則結(jié)束進(jìn)程,若是則執(zhí)行下ー步驟; 根據(jù)RFID數(shù)據(jù)的標(biāo)簽ID查詢多階哈希表中的標(biāo)簽節(jié)點(diǎn),判斷RFID數(shù)據(jù)流中各RFID數(shù)據(jù)的狀態(tài); 根據(jù)各RFID數(shù)據(jù)的狀態(tài)對其進(jìn)行冗余數(shù)據(jù)過濾處理。
2.根據(jù)權(quán)利要求I所述的ー種用于RFID中間件的冗余數(shù)據(jù)過濾方法,其特征在于所述標(biāo)簽ID為用于唯一標(biāo)識該RFID數(shù)據(jù)的ニ進(jìn)制序列,所述RFID數(shù)據(jù)在多階哈希表中的存儲位置為基于標(biāo)簽ID的映射函數(shù)。
3.根據(jù)權(quán)利要求I所述的ー種用于RFID中間件的冗余數(shù)據(jù)過濾方法,其特征在于所述多階哈希表中定義的標(biāo)簽節(jié)點(diǎn)包括標(biāo)簽ID、標(biāo)簽首次讀取時間、標(biāo)簽?zāi)┐巫x取時間及讀取次數(shù)。
4.根據(jù)權(quán)利要求I所述的ー種用于RFID中間件的冗余數(shù)據(jù)過濾方法,其特征在于所述RFID數(shù)據(jù)的狀態(tài)包括未知、捕捉和已存在;所述未知狀態(tài)是指該RFID數(shù)據(jù)未存在多階哈希表中;所述捕捉狀態(tài)是指該RFID數(shù)據(jù)在多階哈希表中已存在但未被確認(rèn);所述已存在狀態(tài)是指該RFID數(shù)據(jù)在多階哈希表中已被確認(rèn)。
5.根據(jù)權(quán)利要求4所述的ー種用于RFID中間件的冗余數(shù)據(jù)過濾方法,其特征在于,所述根據(jù)各RFID數(shù)據(jù)的狀態(tài)對其進(jìn)行冗余數(shù)據(jù)過濾處理包括 在未知狀態(tài)下,將該RFID數(shù)據(jù)存儲到多階哈希表中,并為該RFID數(shù)據(jù)生成標(biāo)簽節(jié)點(diǎn),將該RFID數(shù)據(jù)在整個數(shù)據(jù)傳輸通道中作為冗余數(shù)據(jù)過濾掉,轉(zhuǎn)入捕捉狀態(tài); 在捕捉狀態(tài)下,判斷最近兩次RFID數(shù)據(jù)的讀取時間差是否超過時間閾值,若是則將該RFID數(shù)據(jù)從多階哈希表中移除并轉(zhuǎn)入未知狀態(tài),若否則更新該RFID數(shù)據(jù)的標(biāo)簽節(jié)點(diǎn)并判斷該RFID數(shù)據(jù)的讀取次數(shù)是否達(dá)到次數(shù)閾值,若未達(dá)到次數(shù)閾值則保持捕捉狀態(tài),將該RFID數(shù)據(jù)作為冗余數(shù)據(jù)過濾掉,若達(dá)到次數(shù)閾值則將該RFID數(shù)據(jù)加入輸出隊(duì)列,作為過濾后的干凈數(shù)據(jù)提供給上層系統(tǒng),并轉(zhuǎn)入已存在狀態(tài); 在已存在狀態(tài)下,判斷最近兩次RFID數(shù)據(jù)的讀取時間差是否超過時間閾值,若是則將該RFID數(shù)據(jù)從多階哈希表中移除并轉(zhuǎn)入未知狀態(tài),若否則更新該RFID數(shù)據(jù)的標(biāo)簽節(jié)點(diǎn)并直接將該RFID數(shù)據(jù)作為冗余數(shù)據(jù)過濾掉。
6.根據(jù)權(quán)利要求I所述的ー種用于RFID中間件的冗余數(shù)據(jù)過濾方法,其特征在于所述多階哈希表的創(chuàng)建包括以下步驟 定義在多階哈希表中存儲RFID數(shù)據(jù)的標(biāo)簽節(jié)點(diǎn),所述標(biāo)簽節(jié)點(diǎn)包括標(biāo)簽ID、標(biāo)簽首次讀取時間、標(biāo)簽?zāi)┐巫x取時間及讀取次數(shù); 設(shè)定時間閾值、次數(shù)閾值及標(biāo)簽數(shù)據(jù)規(guī)模,所述時間閾值表征在該時間內(nèi)ー個RFID數(shù)據(jù)多次被讀取則認(rèn)定為重復(fù)數(shù)據(jù);所述次數(shù)閾值表征只有讀取次數(shù)達(dá)到該數(shù)值的RFID數(shù)據(jù)為穩(wěn)定數(shù)據(jù);所述標(biāo)簽數(shù)據(jù)規(guī)模表征該多階哈希表內(nèi)標(biāo)簽節(jié)點(diǎn)的容量; 設(shè)定多階哈希表的最大桶數(shù)M和階數(shù)N ; 在內(nèi)存中申請M*N個存儲空間,以ニ維數(shù)組HashTable [M] [N]表示,作為存儲RFID數(shù)據(jù)的多階哈希矩陣;以基于標(biāo)簽ID的映射函數(shù)建立RFID數(shù)據(jù)與該RFID數(shù)據(jù)在多階哈希表中存儲位置的對應(yīng)關(guān)系。
7.根據(jù)權(quán)利要求6所述的ー種用于RFID中間件的冗余數(shù)據(jù)過濾方法,其特征在于所述時間閾值、次數(shù)閾值及標(biāo)簽數(shù)據(jù)規(guī)模可以調(diào)整。
全文摘要
本發(fā)明公開了一種用于RFID中間件的冗余數(shù)據(jù)過濾方法,包括以下步驟在內(nèi)存中創(chuàng)建用于存儲RFID數(shù)據(jù)的多階哈希表,所述多階哈希表內(nèi)創(chuàng)建有該RFID數(shù)據(jù)的標(biāo)簽節(jié)點(diǎn);判斷是否有RFID數(shù)據(jù)流,若否則結(jié)束進(jìn)程,若是則執(zhí)行下一步驟;判斷RFID數(shù)據(jù)流中各RFID數(shù)據(jù)的狀態(tài);根據(jù)各RFID數(shù)據(jù)的狀態(tài)對其進(jìn)行冗余數(shù)據(jù)過濾處理。通過在內(nèi)存中建立多階哈希表,將中間件接收的RFID數(shù)據(jù)分配到多階哈希表中,并通過判斷該RFID數(shù)據(jù)的狀態(tài)進(jìn)行冗余數(shù)據(jù)過濾處理,實(shí)現(xiàn)了海量冗余RFID數(shù)據(jù)的過濾,大大減少了網(wǎng)絡(luò)的傳輸量,從而為上層應(yīng)用提供了更為干凈、更有價值的RFID數(shù)據(jù),并且本發(fā)明方法通過利用多階哈希表的存儲結(jié)構(gòu),大大提升了RFID數(shù)據(jù)的過濾效率。
文檔編號G06F17/30GK102662988SQ20121006665
公開日2012年9月12日 申請日期2012年3月14日 優(yōu)先權(quán)日2012年3月14日
發(fā)明者江煉鑫 申請人:中山大學(xué)