一种海量rfid标签信息的内存数据存储方法

文档序号:6423963阅读:290来源:国知局

专利名称::一种海量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日发明者李坤,王永炎,罗雄飞,郭超,骆小芳申请人:中国科学院软件研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1