一种基于流式数据的局部性非聚簇索引方法及系统的制作方法

文档序号:9579363阅读:362来源:国知局
一种基于流式数据的局部性非聚簇索引方法及系统的制作方法
【技术领域】
[0001] 本发明涉及大规模数据处理领域,特别是涉及一种基于流式数据的局部性非聚簇 索引方法及系统。
【背景技术】
[0002] 目前的流式索引技术主要通过传统数据库的索引方式,实时地对每条数据建立对 应的索引。
[0003] 如图1所示为现有技术中的索引建立方式的示意图。
[0004] 图1中左侧表为流式数据处理系统源源不断收到的流式数据,以数据表的形式进 行显示,表中主键用于以时间递增的方式标识各条数据,待索引列为每条数据所携带的可 供索引的数据项目,每条数据还可带有数据列等其他数据项目。
[0005] 在现有技术中,为了便于检索和查询,快速定位数据,需为每条数据基于待索引的 项目建立索引,目前有序索引通常利用的数据结构为B树,将索引键相同的数据插置在同 一B树上,从而为数据归类,以便于检索定位。图1中右侧为索引表,如表可见索引键同为 a的数据包括外键为P1、P3、P5的数据,该外键即指向数据表中的主键。可见现有技术中的 索引表顺序记载了对应同一索引键的所有数据的出现位置。
[0006] 目前基于有序索引的优化方案集中于对索引表的存储方式的优化,如使用优化的 B树,压缩索引表,编码索引表等。
[0007] 图1所述方法的缺点在于:
[0008] 1、存储该索引表需占用大量空间,对于流式数据实时建立该索引表开销极大。
[0009]2、顺序扫描一段索引表将导致随机访问数据表,失去空间局部性,读取性能下降。
[0010] 3、没有利用流式数据的时间局部性。

【发明内容】

[0011] 本发明解决的技术问题在于,提出一种基于流式数据的局部性非聚簇索引方法及 系统,针对流式数据,借助时间局部性进行实时索引。
[0012] 为了解决以上问题,本发明公开了一种基于流式数据的局部性非聚簇索引方法, 包括:
[0013] 实时更新步骤,实时更新哈希索引表中针对所接收到的每条流式数据而产生的索 引记录,该索引记录记载了该流式数据中出现的索引键、该索引键首次出现时所对应的主 键以及从首次出现到当前最末次出现所覆盖的数据个数;
[0014] 写入步骤,当达到触发条件时,将该哈希索引表中的该索引记录写入索引表中,继 续执行该实时更新步骤。
[0015] 该方法还包括一查询步骤,在该哈希索引表以及该索引表中分别找到索引键为待 查询的索引值的全部索引记录,根据所找到的索引记录中所记载的主键,在流式数据的数 据表中确认查询起点,根据索引记录中所记载的数据个数,确定查询终点,从该查询起点到 查询终点所覆盖的数据中,过滤掉索引键与该索引值不符的数据。
[0016] 该触发条件包括预设的触发计数以及预设的触发时长;
[0017] 如果该哈希索引表中任一索引键所对应的该数据个数达到该触发计数,将该哈希 索引表中该索引键所对应的索引记录写入该索引表中;
[0018] 在达到该触发时长时,执行写入步骤,将该哈希索引表中所有索引记录写入该索 引表中。
[0019] 该写入步骤后还包括维护索引一致性步骤,每次以达到该预设的触发时长而触发 该写入步骤时,存储当前最后一条数据的主键,当发生系统重启时,从该主键所对应的数据 开始,重新执行该实时更新步骤。
[0020] 在该维护索引一致性步骤之后执行该查询步骤时,还包括:过滤掉主键相同的索 引记录。
[0021] 该方法可以分别利用不同的哈希索引表执行该实时更新步骤,但任一时刻仅一个 哈希索引表可以执行该实时更新步骤。
[0022] 该方法还包括:当达到触发条件时,将该哈希索引表送入一索引写队列,以排队等 待写入该索引表。
[0023] 该方法还包括:当需要对索引表中的索引记录进行更新,将原始索引键修改为目 标索引键时,在索引表中利用该目标索引键进行查询,得到目标扫描窗口,判断该原始索引 键所对应的主键是否被覆盖于该目标扫描窗口,如果是,直接将所述索引记录中的原始索 引键修改为目标索引键,如果否,在索引表中增加一条索引记录,索引键为该目标索引键, 主键为该原始索引键所对应的主键,数据个数为1。
[0024] 本发明公开了一种基于流式数据的局部性非聚簇索引系统,包括:
[0025] 实时更新单元,用于实时更新哈希索引表中针对所接收到的每条流式数据而产生 的索引记录,该索引记录记载了该流式数据中出现的索引键、该索引键首次出现时所对应 的主键以及从首次出现到当前最末次出现所覆盖的数据个数;
[0026] 写入单元,用于当达到触发条件时,将该哈希索引表中的该索引记录写入索引表 中,继续执行该实时更新步骤。
[0027] 该系统还包括一查询单元,用于在该哈希索引表以及该索引表中分别找到索引键 为待查询的索引值的全部索引记录,根据所找到的索引记录中所记载的主键,在流式数据 的数据表中确认查询起点,根据索引记录中所记载的数据个数,确定查询终点,从该查询起 点到查询终点所覆盖的数据中,过滤掉索引键与该索引值不符的数据。
[0028] 该触发条件包括预设的触发计数以及预设的触发时长;
[0029] 如果该哈希索引表中任一索引键所对应的该数据个数达到该触发计数,该写入单 元将该哈希索引表中该索引键所对应的索引记录写入该索引表中;
[0030] 在达到该触发时长时,该写入单元将该哈希索引表中所有索引记录写入该索引表 中。
[0031] 该系统还包括维护索引一致性单元,用于在每次以达到该预设的触发时长而调用 该写入单元时,存储当前最后一条数据的主键,当发生系统重启时,从该主键所对应的数据 开始,重新调用该实时更新单元。
[0032] 该系统还包括维护查询一致性单元,用于在调用该维护索引一致性单元后并进行 查询时,过滤掉主键相同的索引记录。
[0033] 该实时更新单元可以分别利用不同的哈希索引表,但任一时刻仅能利用一个哈希 索引表。
[0034] 当该系统达到触发条件时,该写入单元将该哈希索引表送入一索引写队列,以排 队等待与入该索引表。
[0035] 该系统还包括更新单元,用于当需要对索引表中的索引记录进行更新,将原始索 弓丨键修改为目标索引键时,在索引表中利用该目标索引键进行查询,得到目标扫描窗口,判 断该原始索引键所对应的主键是否被覆盖于该目标扫描窗口,如果是,直接将所述索引记 录中的原始索引键修改为目标索引键,如果否,在索引表中增加一条索引记录,索引键为该 目标索引键,主键为该原始索引键所对应的主键,数据个数为1。
[0036] 通过使用本发明的方法,实现了如下技术成效:
[0037] 1、极大地缩小了索引表的空间及构建索引表所产生的带宽开销。
[0038] 2、该索引方法将随机访问与顺序扫描结合起来,有效地利用了流式数据的时间局 部特性,更符合存储介质的访问模型,提高了索引数据查询的效率。
[0039] 3、利用哈希表池和索引写入队列实现了异步聚合索引写入,减缓了流式数据索引 的压力,增加了系统的吞吐量。
【附图说明】
[0040] 图1所示为现有技术中的索引建立方式的示意图。
[0041] 图
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1