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