230 likes | 359 Views
A Continuous Query Index for Processing Queries on RFID Data Stream. 一种处理 RFID 数据流 查询的索引技术. 摘要.
E N D
A Continuous Query Index for Processing Queries on RFID Data Stream 一种处理RFID数据流 查询的索引技术
摘要 RFID中间件系统过滤和汇总阅读器收集来的数据流,这些数据是处理应用系统的请求时产生的,这些请求叫做连续查询,因为在标签运动时这些查询会被持续地查询。为了提高RFID中间件的性能,需要建立一个索引去有效处理连续查询,目前已经有几种对连续查询建立索引的方法,EPCglobal提出一种ECspec模型,它是一种RFID应用系统的标准接口。连续查询是基于ECSpec之上的,ECSpec包含很多代表查询条件的段。而这些索引的问题是,当为连续查询当为连续查询建立索引时,它们都需要花费太多时间,因为它们要插入大量的段到索引中。
摘要 为了解决这个问题,我们提出一种能把一组段转换成压缩数据的聚合转换方法。我们也为转换空间提出一种有效的查询索引方案。我们对已经存在的查询索引方法做了比较,我们的方法在多个数据集上都有更高的索引效率。
1.介绍 本文中我们提出一种索引RFID连续查询的技术,基本思想是把压缩大量的查询段,并保存成一个对象。我们分析了这些连续查询并找出合适的关系和有规律的重复,然后我提出一种叫做聚合转换的技术,找出重复的查询段组并把它们转换成压缩数据。另外,为了转换空间,我们提出一种基于KDB-tree的索引方法,相比以前的索引方法,我们的方法提升了我们提出的索引方案的性能。
2.相关工作 以前对数据流连续查询的索引研究可以分为两类:基于移动对象的查询索引和基于传感数据流的查询索引。 对于移动对象数据库,人们已经提出了有多种处理连续查询的索引方法。CQI是基于内存的索引方案,这个方案要比基于R-tree的方法好。它的基本思想是吧查询把分解成多个单元,每个单元有多个查询列表,利用这些列表可以找到查询。VCR也是基于内存的方案,提供一种间接的有效益的搜索计算方法。它使用虚拟结构(VCs)把一个查询域分解成段,并每个VC插入一个查询ID。
2.相关工作 用这种方法的检索可以遍历包含移动对象位置的VCs。这个方法把连续查询看重一个监视区域。然而源于ECSpec的连续查询不是一个单独的域,而是多个段,因为它包含一个RID范围和TID范围。因此,当索引RFID查询时很难应用这种方法,因为它需要太多数据插入。 为了处理传感器网络的连续查询,传感器数据流系统NiagaraCQ和TelegraphCQ采用一种查询索引方案。它使用一种类似IBS间隔二进制检索树的索引作为查询索引。IBS-tree是一个平衡二叉树,每个属性都生产这样的树。
3、问题定义 和传统的数据索引相比,查询索引方法特别适用于流数据的连续查询,因为这些查询在一个时间段内都是激活的,而且数据会持续地到达。查询索引方法也能应用于处理RFID流数据的连续查询,然而,查询和RFID查询索引的数据不用于之前的研究。 对各个标签事件的查询我们叫做stabbing 查询,这些事件在一个RFID阅读器识别到某个标签时发生。这些stabbing查询是用查询索引去找到数据的。定义如下:
3、问题定义 定义1:Stabbing查询代表一个标签被一个阅读器感知的事件。这个标签事件在查询检索中变成一个点查询。StabbingQuery = {(ridi, tidj) ∈ R2} 定义2:查询数据代表一个源于ECSpec的连续查询,查询数据包括针对阅读器和标签的过滤条件。阅读器的条件用RID的范围表示,标签的条件用EPC模式表示,它是一个TID的范围。因此,查询数据是一个包括一个RID范围集和一个TID范围集的对象。
3、问题定义 在二维空间(RID,TID)的查询数据是包含离散段的复杂对象。如图1所示,如果一个用户搜索“在仓库A,今年生产的三星手机”,然后应用系统发生一个ECspec,包含CQ1:readerID=1,EPC—Pattern=<10.[1-3].[3001-4000]>,假设安装在仓库A的阅读器ID是1。CQ1到达RFID中间件并插入到查询索引,那么查询数据三个离散段: 第一个是{(1, 10·260+ 1·236 + 3001), (1, 10·260+ 1·236+ 4000)}, 第二个是 {(1, 10·260+ 2·236+ 3001), (1, 10·260+ 2·236+ 4000)} 最后一个是{(1, 10·260+ 3·236+ 3001), (1, 10·260+ 3·236+ 4000)}。 原因是EPC模式指定了离散的TID范围。
3、问题定义 在二维空间(RID,TID)的查询数据是包含离散段的复杂对象。如图1所示,如果一个用户搜索“在仓库A,今年生产的三星手机”,然后应用系统发生一个ECspec,包含CQ1:readerID=1,EPC—Pattern=<10.[1-3].[3001-4000]>,假设安装在仓库A的阅读器ID是1。CQ1到达RFID中间件并插入到查询索引,那么查询数据三个离散段: 第一个是{(1, 10·260+ 1·236 + 3001), (1, 10·260+ 1·236+ 4000)}, 第二个是 {(1, 10·260+ 2·236+ 3001), (1, 10·260+ 2·236+ 4000)} 最后一个是{(1, 10·260+ 3·236+ 3001), (1, 10·260+ 3·236+ 4000)}。 原因是EPC模式指定了离散的TID范围。
3、问题定义 定义1:Stabbing查询代表一个标签被一个阅读器感知的事件。这个标签事件在查询检索中变成一个点查询。StabbingQuery = {(ridi, tidj) ∈ R2} 定义2:查询数据代表一个源于ECSpec的连续查询,查询数据包括针对阅读器和标签的过滤条件。阅读器的条件用RID的范围表示,标签的条件用EPC模式表示,它是一个TID的范围。因此,查询数据是一个包括一个RID范围集和一个TID范围集的对象。
3、问题定义 在二维空间(RID,TID)的查询数据是包含离散段的复杂对象。如图1所示,如果一个用户搜索“在仓库A,今年生产的三星手机”,然后应用系统发生一个ECspec,包含CQ1:readerID=1,EPC—Pattern=<10.[1-3].[3001-4000]>,假设安装在仓库A的阅读器ID是1。CQ1到达RFID中间件并插入到查询索引,那么查询数据三个离散段: 第一个是{(1, 10·260+ 1·236 + 3001), (1, 10·260+ 1·236+ 4000)}, 第二个是 {(1, 10·260+ 2·236+ 3001), (1, 10·260+ 2·236+ 4000)} 最后一个是{(1, 10·260+ 3·236+ 3001), (1, 10·260+ 3·236+ 4000)}。 原因是EPC模式指定了离散的TID范围。
3、问题定义 如果EPC模式的产品和系列值是一个范围,那么查询数据会包含多个段。如图1所示,段的大小取决于系列值的范围,段的数目等于产品值的范围。查询数据是一个复杂对象,最多包含224 段,因为标签ID的产品编码是24位的,所以很有必要对这些数据建立索引,因为当保存一个连续查询时,需要插入很多段到索引中,另外在多次插入操作后,索引会变得很庞大,这时处理stabbing查询就会很没效率。 为了避免多次插入,可以把多维索引如R-tree应用到数据查找中,假如这样,索引必须用四维空间保存这些数据:RID,manager,product和serial。这种索引的查询性能会成指数幂的衰弱,因此,虽然传统的索引能避免多次数据插入,但它们在处理查询时是低效率的。
4、有效的转换方案 查询索引中的查询数据取决于EPC模式。因此,有必要研究所有的EPC模式去发现查询数据的属性。我们分析了27种模式,因为模式中的每部分是一个常数或者[低--高]或者*。
3、问题定义 如表1所示,有11种模式是有意义的。EPC模式串的第一部分标识manager,第二部分标识product,第三部分标识serial。Manager可以给每个厂家一个全球唯一编号,而product和serial可以根据厂家编制。因此有一些模式是不合理的,如<[a1-a2].*.*>和<*.*.*>等。以上表明查询数据包含单个或者多个段以及段的数目和product部分的值有关。 查询数据包含二维空间(RID,TID)的单个或者多个段。我们称单个段的查询数据为简单查询数据,我也把包含多个段的查询数据称为复杂查询数据。复杂查询数据有两个或者更多段,最多为224段。一个查询段是组成复杂查询数据的最小单位,我们把查询数据设为d,d={d1,….,dn}其中1<=n<=224。查询数据段表示为di={(minrid,mintid),(maxrid,maxtid)},其中di∈d。
4、有效的转换方案 复杂查询数据有多于两个的离散段,它们之间有几何级的关系。段之间的关系是一致的:它们的表示方式和大小是一样的,但他们在几何形态上处于不同位置。 案例1:复杂查询数据的EPC模式的普通格式是<M1.[P1—P2].[S1—S2]>。假设复杂查询数据包含RID坐标轴范围(rida,ridb)的非,TID坐标轴的模式<m1.[p1--p2].[s1—s2]>。假设复杂查询数据d包含段{d0,d1,…dp2-p1},那么di和dj之间就存在一致关系。 复杂查询数据的另一个属性是:查询数据段在TID坐标轴的位置间隔是有规律的。每个段存在同样的RID,第i个段di的开始点和第i+1个段di+1的开始点的距离是236。
4、有效的转换方案 案例2:查询数据段在TID坐标轴上以间隔236 不断重复。 因为插入时间成本和存储成本,不可能把所有的复杂查询数据插入到查询索引中。因此,我们必须把复杂查询数据转换成简单的形式。我提出一种新的转换技术,叫聚合转换,它利用了案例1和2中提到的查询数据段之间的属性关系。 复杂查询数据的段存在多个一致性属性和规律重复。为了简化复杂查询数据,最主要是找到数据的重复形式。可以用一种网结构去抽取复杂查询数据的规律重复形式,因为它包含固定的规律重复的单元格,它就象复杂查询数据一样。
4、有效的转换方案 如图2所示,图2(a)显示复杂查询数据d包含三个离散的段d1,d2和d3.。在案例1和案例2中,d1,d2和d3.在各自的单元空间是同个形状的,如果复杂查询数据由一个固定的网格覆盖,那么它们有不同的单元IDs。我们假设IDs为c,c+1,c+2,如果我们用三维空间表示d1,d2和d3,增加一个ID维度进入单元空间(RID,TIDcell),d1,d2和d3的形状完全一样,他们的cell ID是从c到c+2的序列,如图3(b)所示,我们通过聚合d1,d2和d3产生新的矩形数据。我们把这个对象叫做聚合数据,表示为{(1,3001,c),(1,4000,c+2)}。 把这些步骤统一起来,我们能制定一个转换规则,它让转换处理得更快。
4、有效的转换方案 我们假设查询数据在RID坐标轴为范围(rida,ridb)的非,TID坐标轴的模式<m1.[p1--p2].[s1—s2]>,d0,d1….和dp2-p1为查询数据的段。Cellsize是网格单元在TID坐标轴的长度,c1为包含(rida,d0.mintid)的单元ID,c2为包含(ridb,db2-b1,.maxtid)的单元ID,h1和h2为di之间的最短和最长距离。转换规则如图2:
4、有效的转换方案 聚合转换解决了插入索引时用时过长和存储量太大的问题。这个技术的主要思想是从复杂查询数据中抽取规则重复形状,把复杂查询数据表示成聚合数据,这是通过转换规则来简化的过程。
5.总结 本文我们提出一种复杂连续查询的的索引技术,我们首先建立了查询段之间的一致的和规则重复的属性,基于这些属性我们提出一种叫做聚合转换的技术,它能从把查询段组转换成聚合数据。这些聚合数据代表查询段,及它允许查询索引存储成一个对象,而不是插入所有的段。我们提出的索引技术在很多数据集上的索引性能都比其他方法要好。