一種海量rfid標籤信息的內存數據存儲方法
2023-10-10 02:00:49 1
專利名稱::一種海量rfid標籤信息的內存數據存儲方法
技術領域:
:本發明涉及信息處理
技術領域:
,尤其涉及RFID技術應用中對海量RFID標籤信息進行內存數據存儲的方法,可以應用於RFID技術行業應用中涉及到需要對海量RFID標籤信息進行內存數據存儲的各種軟體開發
技術領域:
。
背景技術:
:本發明中涉及到的RFID(RadioFrequencyIdentification,射頻識別)是一種非接觸式的自動識別技術,它通過射頻信號自動識別RFID標籤並獲取相關數據信息。RFID技術為貨物的跟蹤、管理及監控提供了快捷、準確、自動化的技術手段,目前在倉儲、配送等物流環節也有許多成功的應用。隨著RFID技術的深入發展,其應用領域正逐步從傳統的物流供應鏈向生產製造、交通控制管理等其他領域不斷擴展。由於實際RFID應用的客觀需求,往往需要存儲大量RFID標籤信息。在對這些海量RFID標籤信息進行操作處理時,面對這種「數據爆炸"的現實,如何在內存中對數據進行有效的存儲將成為研究利用RFID技術行業應用的重點。海量RFID標籤信息應用系統中RFID標籤的時空狀態信息更新很快,傳統基於磁碟的數據管理技術,由於主資料庫常駐磁碟,數據處理往往涉及磁碟I/O操作,在處理海量數據更新應用中存在較大的性能問題。現有的RFID數據管理技術無法滿足實時RFID應用系統要求的時間約束,RFID標籤信息管理的實時性無法得到保證。另一方面,傳統基於磁碟的數據管理技術在處理海量RFID實時數據時,系統性能低下,數據延遲較為嚴重,而且可能產生嚴重的時空一致性問題,無法為上層RFID應用系統提供實時準確的數據。內存資料庫技術就是將數據放在內存中直接操作的技術。採用內存資料庫技術雖然可以加快RFID標籤信息的處理速度,但它並不是專門針對RFID應用系統設計的。內存資料庫技術不能根據RFID標籤內存數據的特點和RFID標籤動態信息的應用特性對RFID標籤信息進行存儲,在面對海量RFID標籤信息應用時,內存資料庫技術仍然無法滿足系統處理RFID標籤數據信息的性能和吞吐量的要求。為了提高對海量RFID標籤信息的內存數據存儲效率,除了合理使用工具,合理分配系統資源,最關鍵的還是要使用好的內存存儲方法。由於數據量巨大,而各種RFID屬性數據的訪問更新頻率各不相同。如果將所有的數據統一存儲,在訪問更新數據的同時也要訪問查找大量不相關的數據,這樣會造成很大的內存消耗。在研發軟體系統過程中對數據進行操作處理時,通常會遇到內存數據的存儲問題。如果涉及到的數據量少,用統一存儲管理的內存數據存儲方法不會對軟體的性能造成很大的影響。但是,當有海量的數據信息需要進行處理時,由於數據量巨大同時有相當一部分數據的更新訪問頻率極低,此時如果仍然採用統一的內存存儲管理方法,會造成很大的內存消耗及浪費,也會極大地降低軟體的性能。在一些對性能要求較高的軟體系統中,有時會涉及到對海量RFID標籤信息的訪問和更新。在訪問RFID標籤信息時,需要在儘可能短的時間內查找到相關數據;在更新RFID標籤信息時,需要具有很高的吞吐量。為了滿足此要求,除了使用好的硬體,更為重要的是在軟體方面提供一個高效的對海量RFID標籤信息的內存存儲方法。
發明內容為了解決現有技術中存在的問題,提高內存的使用效率,本發明針對海量RFID標籤數據信息的內存存儲過程中對訪問更新RFID標籤數據信息的性能和吞吐量的要求,根據RFID標籤內存數據的特點和RFID標籤動態信息的應用特性,提出一種能夠對海量RFID標籤信息進行有效地內存數據存儲的方法。此方法既能保證海量RFID標籤動態信息訪問更新的性能,同時又能夠保證內存與磁碟間進行海量數據交換時的吞吐量。同時為了提高對RFID標籤動態信息的更新訪問速度,本發明的存儲方法還保證可以針對海量RFID標籤信息進行快速查詢。為了實現本發明的目的,本發明提出了一種針對海量RFID標籤信息的內存數據存儲方法,該方法可以滿足軟體系統對海量RFID標籤信息進行訪問、更新等操作的性能和吞吐量要求。一種海量RFID標籤信息的內存數據存儲方法,包括以下步驟1)RFID標籤屬性信息按照屬性更新頻率高、訪問頻率高,更新頻率低、訪問頻率高和更新頻率低、訪問頻率低劃分為三類;2)對每一類中的RFID標籤屬性信息,逐一訪問RFID標籤屬性數據,並將更新數據批量順序存儲到一個緩存塊中;3)當緩存塊空間滿或者碰到一個未更新的RFID標籤屬性數據組時,將此緩存塊中的內容寫入文件中。每個RFID標籤屬性信息中,LID、PID、Status和Time為更新頻率高、訪問頻率高的屬性數據組。每個RFID標籤屬性信息中,CompressThresholcUHID和HistoryFlags為更新頻率低、訪問頻率高的屬性數據組。每RFID豐示fM個生ft;i中,Description、Portable>RefreshIntervaUImportance和CreateTime為更新頻率低、訪問頻率低的屬性數據組。對RFID標籤的名稱屬性建立hash映射,具有相同hash映射值的名稱對應的RFID標籤節點放在hash表的衝突桶中並建立鍊表。對於更新頻率高、訪問頻率高,和更新頻率低、訪問頻率高的RFID標籤屬性信息,分別申請一個可存儲tagCoimt個數屬性數據組的大緩存塊進行存儲。若tagCoimt個屬性數據組所佔空間過大,則申請多個大緩存塊進行存儲。對於更新頻率高、訪問頻率高,和更新頻率低、訪問頻率高的RFID標籤屬性信息,在每個RFID標籤節點中都有一個指向此屬性數據組的指針。對於更新頻率低、訪問頻率低的屬性數據,申請一個可存儲α^tagCount個此屬性數據組的緩存塊,α為一個小於1的比例係數。在此緩存塊中按數組存儲的方式順序存儲更新頻率低、訪問頻率低的RFID屬性數據組中訪問頻率相對較高的屬性數據組。對於每一個更新頻率低、訪問頻率低的RFID屬性數據組,在每個RFID標籤節點中都有一個記錄此屬性數據組在緩存塊中所在數組下標的數字。與現有技術相比,本發明方法具有的有益技術效果1、本發明提出了根據RFID標籤的屬性信息按照不同屬性更新訪問頻率高低分為三類在內存中進行分塊存儲管理的方法。由於RFID標籤的各屬性信息更新訪問頻率不同,進行分塊內存存儲,可以有效地提高內存的利用率。2、本發明針對RFID標籤的屬性數據的訪問特點,對第1類、第2類RFID標籤的屬性數據組和第3類RFID標籤的屬性數據組採用不同的內存組織方式,可以有效地提高訪問數據的性能。3、本發明採用批量順序更新的方式更新數據。專門開闢一個大數據緩存塊寫入更新數據,當達到條件時再將大數據緩存塊的數據寫入文件中,有效地提高了更新數據的吞吐量。4、本發明對每個RFID標籤的名稱屬性計算一個hash映射的key值並建立對應的映射。對於具有相同hash映射key值的RFID標籤名稱,則將它們放在hash表的衝突桶中並建立鍊表,有效地提高了查詢索引的速度。圖1為本發明方法的第1類RFID屬性數據組內存存儲方式示意圖;圖2為本發明方法的第1類RFID屬性數據組批量順序更新方式示意圖;圖3為本發明方法的第2類RFID屬性數據組內存存儲方式示意圖;圖4為本發明方法的第2類RFID屬性數據組批量順序更新方式示意圖;圖5為為本發明方法的第3類RFID屬性數據組內存存儲方式示意圖;圖6為本發明方法的第3類RFID屬性數據組批量順序更新方式示意圖;圖7為本發明方法根據RFID標籤名稱屬性建立哈希查詢索引示意圖;圖8為本發明方法的整體存儲方式示意圖。具體實施例方式以下結合附圖詳細描述本發明所提供的海量RFID標籤信息的內存數據存儲方法。如圖8所示,本發明的方法主要涉及四個部分1、更新頻率高、訪問頻率高的RFID屬性數據(即第1類RFID屬性數據組)的內存存儲;2、更新頻率低、訪問頻率高的RFID屬性數據(即第2類RFID屬性數據組)的內存存儲;3、更新頻率低、訪問頻率低的RFID屬性數據(即第3類RFID屬性數據組)的內存存儲;4、根據RFID標籤名稱屬性建立哈希表進行查詢索引。將RFID標籤的屬性信息按照不同屬性更新訪問頻率的高低分為三類進行分塊存儲管理一、更新頻率高、訪問頻率高的屬性數據(即第1類RFID屬性數據組);二、更新頻率低、訪問頻率高的屬性數據(即第2類RFID屬性數據組);三、更新頻率低、訪問頻率低的屬性數據(即第3類RFID屬性數據組)。對於第1類RFID屬性數據組,申請一個可存儲tagCount(海量,十萬數量級)個數此屬性數據組的大數據緩存塊。對於每一個屬性數據組,在每個RFID標籤節點中分別有一個指向第1類RFID屬性數據組的指針對應。若tagCoimt個數的此屬性數據組過大,難以申請到一個足夠大的連續內存空間進行存儲,則申請多個大緩存塊進行存儲。對於第2類RFID屬性數據組,申請一個可存儲tagCoimt(海量)個數此屬性數據組的大數據緩存塊。對於每一個屬性數據組,在每個RFID標籤節點中分別有一個指向第2類RFID屬性數據組的指針對應。若tagCoimt個數的此屬性數據組過大,難以申請到一個足夠大的連續內存空間進行存儲,則申請多個大緩存塊進行存儲。對於第3類RFID屬性數據組,申請一個可存儲α^tagCount(α為一個小於1的比例係數)個數此屬性數據組的大數據緩存塊。在此緩存塊中按數組存儲的方式順序存儲第3類RFID屬性數據組中訪問頻率相對較高的屬性數據組。對於每一個屬性數據組,在每個RFID標籤節點中分別有一個記錄第3類RFID屬性數據組所在數組下標的數字與之對應。對此三類RFID屬性數組均採用批量順序更新的方法對數據進行更新。開闢一個大數據緩存塊,逐一訪問標籤屬性數據並將更新數據批量順序寫入。當緩存塊空間填滿或者碰到一個未更新的數據時,則將此緩存塊中的已有內容批量寫入文件中。由於涉及到的是海量的RFID標籤數據信息,數據量巨大,為了提高查詢索引的效率,對每個RFID標籤的名稱屬性計算一個hash映射的key值並建立對應的hash映射。對於具有相同hash映射key值的名稱屬性對應的RFID標籤節點,則將它們放在hash表的衝突桶中並建立鍊表。具體實施方式如下(1)更新頻率高、訪問頻率高的RFID屬性數據(即第1類RFID屬性數據組)的內存組織方式,示意圖如圖1所示。一個RFID標籤中,LID、PID、Status和Time為更新訪問頻率高的屬性數據組。對於每一個RFID標籤點,都包含一個指向這一類屬性數據組的指針。tagCoimt(海量)個數的RFID標籤數據信息則包含tagCoimt個指向此類屬性數據組的指針。如圖1所示,需要申請一個大小為tagCount*sizeof(LID+PID+Matus+Time)的數據緩存塊,用來存放第1類RFID屬性數據組。當sizeof(LID+PID+Status+Time)過大時,可能難以申請到一塊足夠大的連續內存空間存放第1類RFID屬性數據組。這種情況下,則需要申請多個大數據緩存塊用來存放第1類RFID屬性數據組。(2)更新頻率高、訪問頻率高的RFID屬性數據(即第1類RFID屬性數據組)的批量順序更新方式,示意圖如圖2所示。如圖2所示,開闢一個大數據緩存塊,逐一訪問RFID標籤的LID、PID、Status和Time屬性數據。當一個RFID標籤LID、PID、Status和Time中的屬性數據有更新時,將更新數據批量順序寫入此數據緩存塊中。當緩存塊空間填滿或者順次訪問過程中碰到一個未更新的屬性數據組時,則將此緩存塊中的已有內容批量寫入文件中。(3)更新頻率低、訪問頻率高的RFID屬性數據(即第2類RFID屬性數據)的內存組織方式,示意圖如圖3所示。一個RFID標籤中,CompressThresholcUHID和HistoryFlags為更新頻率低、訪問頻率高的屬性數據組。對於每一個RFID標籤點,都包含一個指向這一類屬性數據組的指針。tagCoimt個數的RFID標籤數據信息則包含tagCoimt個指向此類屬性數據組的指針。如圖3所示,需要申請一個大小為tagCount*sizeof(CompressThreshold+HID+HistoryFlags)的數據緩存塊,用來存放第2類RFID屬性數據。當sizeof(CompressThreshold+HID+HistoryFlags)過大時,可能難以申請到一塊足夠大的連續內存空間存放第2類RFID屬性數據。這種情況下,則需要申請多個大數據緩存塊用來存放第2類RFID屬性數據。(4)更新頻率低、訪問頻率高的RFID屬性數據(即第2類RFID屬性數據)的批量順序更新方式,示意圖如圖4所示。如圖4所示,開闢一個大數據緩存塊,逐一訪問RFID標籤的CompressThreshold、HID和HistoryFlags屬性數據。當一個RFID標籤CompressThreshold,HID和HistoryFlags中的屬性數據有更新時,將更新數據批量順序寫入此數據緩存塊中。當緩存塊空間填滿或者順次訪問過程中碰到一個未更新的屬性數據組時,則將此緩存塊中的已有內容批量寫入文件中。(5)更新頻率低、訪問頻率低的RFID屬性數據(即第3類RFID屬性數據)的內存組織方式,示意圖如圖5所示。一個RFID標籤中,Description、Portable、RefreshInterval>Importance禾口CreateTime為更新頻率低、訪問頻率低的屬性數據組。對於每一個RFID標籤點,都包含一個指示此類屬性數據組在申請的按數組順序存儲的大緩存塊中對應數組的下標數字。如圖5所示,需要申請一個大小為(α^tagCount)^sizeof(Description+Portable+Refreshlnterval+Importance+CreateTime)的數據緩存塊,用來順序存儲第3類RFID屬性數據中訪問頻率相對較高的屬性數據組。當要訪問的數第3類RFID屬性數據不在此緩存塊時,採用類似作業系統的「缺頁」方法將所需的屬性數據組調入此緩存塊中。(6)更新頻率低、訪問頻率低的RFID屬性數據(即第3類RFID屬性數據)的批量順序更新方式,示意圖如圖6所示。如圖6所示,開闢一個大數據緩存塊,逐一訪問RFID標籤的Description、Portable、RefreshInterval、Importance禾口CreateTime屬性數據。當一個RFID標籤Description、Portable、RefreshInterval>Importance禾口CreateTime中的屬性數據有更新時,將更新數據批量順序寫入此數據緩存塊中。當緩存塊空間填滿或者順次訪問過程中碰到一個未更新的屬性數據組時,則將此緩存塊中的已有內容批量寫入文件中。(7)根據RFID標籤的名稱屬性建立哈希查詢索引,示意圖如圖7所示。如圖7所示,對RFID標籤的關鍵屬性名稱屬性進行hash映射計算出一個哈希key值。此key值即為對應的hash表的數組下標。對有相同哈希key值的名稱屬性對應的標籤節點,則放在hash表的衝突桶中並形成鍊表。權利要求1.一種海量RFID標籤信息的內存數據存儲方法,包括以下步驟1)RFID標籤屬性信息按照屬性更新頻率高、訪問頻率高,更新頻率低、訪問頻率高和更新頻率低、訪問頻率低劃分為三類;2)對每一類中的RFID標籤屬性信息,逐一訪問RFID標籤屬性數據組,並將更新數據批量順序存儲到一個內存緩存塊中;3)當內存緩存塊空間滿或者碰到一個未更新的RFID標籤屬性數據組時,將此緩存塊中的內容寫入文件中。2.如權利要求1所述的存儲方法,其特徵在於,對RFID標籤的名稱屬性建立hash映射,具有相同hash映射值的名稱對應的RFID標籤節點放在hash表的衝突桶中並建立鍊表。3.如權利要求1所述的存儲方法,其特徵在於,每個RFID標籤屬性信息中,LID、PID、Status和Time為更新訪問頻率高的屬性數據組。4.如權利要求1所述的存儲方法,其特徵在於,每個RFID標籤屬性信息中,CompressThresholcUHID和HistoryFlags為更新頻率低、訪問頻率高的屬性數據組。5.如權利要求1所述的存儲方法,其特徵在於,每個RFID標籤屬性信息中,Description、Portable、RefreshInterval、Importance禾口CreateTime為更新步頁率低、訪問頻率低的屬性數據組。6.如權利要求1所述的存儲方法,其特徵在於對於更新頻率高、訪問頻率高,和更新頻率低、訪問頻率高的RFID標籤屬性數據組,分別申請一個可存儲tagCoimt個數屬性數據組的大緩存塊進行存儲。7.如權利要求6所述的存儲方法,其特徵在於若tagCoimt個屬性數據組所佔空間過大,則申請多個大緩存塊進行存儲。8.如權利要求1所述的存儲方法,其特徵在於對於更新頻率高、訪問頻率高,和更新頻率低、訪問頻率高的RFID標籤屬性數據組,在每個RFID標籤節點中都有一個指向此屬性數據組的指針。9.如權利要求1所述的存儲方法,其特徵在於對於更新頻率低、訪問頻率低的屬性數據組,申請一個α*tagC0imt個數此屬性數據組的緩存塊,α為一個小於1的比例係數。10.如權利要求7所述的存儲方法,其特徵在於對於每一個更新頻率低、訪問頻率低的RFID屬性數據組,在每個RFID標籤節點中都有一個記錄此屬性數據組在緩存塊中所在數組下標的數字。全文摘要本發明公開了一種海量RFID標籤信息的內存數據存儲方法,涉及信息處理
技術領域:
,本發明方法包括步驟1)RFID標籤屬性信息按照屬性更新頻率高、訪問頻率高,更新頻率低、訪問頻率高和更新頻率低、訪問頻率低劃分為三類;2)對每一類中的RFID標籤屬性信息,逐一訪問RFID標籤屬性數據,並將更新數據批量順序存儲到一個緩存塊中;3)當緩存塊空間滿或者碰到一個未更新的RFID標籤屬性數據組時,將此緩存塊中的內容寫入文件中。此方法既保證了海量RFID標籤信息訪問更新的性能,同時又能夠保證內存與磁碟間進行海量數據交換時的吞吐量。文檔編號G06F17/30GK102184229SQ20111012119公開日2011年9月14日申請日期2011年5月11日優先權日2011年5月11日發明者李坤,王永炎,羅雄飛,郭超,駱小芳申請人:中國科學院軟體研究所