一种基于循环位图模型的辅助索引方法及装置制造方法

文档序号:6624775阅读:175来源:国知局
一种基于循环位图模型的辅助索引方法及装置制造方法
【专利摘要】本发明涉及一种基于循环位图模型的辅助索引方法及装置,包括以下步骤:从日志文件生产队列里获取当前的日志文件及其文件编号,为该日志文件中的所有关键字分别建立循环位图;判断文件编号是否在索引范围起始位与索引范围结束位之间;检查文件编号是否在索引范围起始位与有效索引范围终点之间;在日志文件的文件编号处执行置位操作;对有效索引范围终点与索引范围结束位之间做复位操作,在待置位的文件编号处执行置位操作,并将有效索引范围终点赋值为索引范围结束位;等待直到文件生产队列中生成新的日志文件,执行步骤1。本发明不随日志编号增加而扩展内存使用空间,能够在客户端和服务器实现,并针对客户端提出基于流水线的提速模型。
【专利说明】
一种基于循环位图模型的辅助索引方法及装置

【技术领域】
[0001]本发明涉及数据查询优化领域,特别涉及基于内存数据库用作加速查询的一种基于循环位图模型的辅助索引方法及装置。

【背景技术】
[0002]随着计算机网络的快速发展,“大数据”吸引了越来越多的关注,如何能在庞大的流式数据中快速,高效地查询目标信息成为了热门话题。为了达到这个目标,能否根据数据的特点建立索引成为了关键问题。
[0003]在某特定应用场景中,服务器每天都会产生大量的系统日志、网络数据等流式数据,这些数据按照时间分片的原则定时收集并以ID号递增的方式为由收集的数据组成的文件命名,同时这些文件有一定的存储周期,例如某服务器收集产生的网络数据,每隔一小时将收集到的数据集中在当前文件中,命名为ID ;然后将创建新的文件,命名为ID+1,继续收集数据;如果存储周期为3个月,则有效文件数为2160 (24*30*3 = 2160),当第2161个文件收集数据完毕后,将删除第I个文件。
[0004]如果要在这样的情景中快速获取相应信息,可以采用这样的方法:对产生的流式数据文件实时更新倒排索引;在每次查询时,能够根据键来查找目标信息在哪些文件中;过期的文件信息可以在更新索引时从索引信息中删除。以位图结构为基础的倒排索引能满足高效查询,使用在基于内存查询数据信息的数据库中可以做到实时更新,添加一些操作可以保证过期日志信息删除后还能正确索引,但是这样的结构随着日志编号的增加,需要不断扩展位图容量,从而耗费了巨大的内存空间。


【发明内容】

[0005]本发明所要解决的技术问题是提供一种不随日志编号增加而扩展内存使用空间的基于循环位图模型的辅助索引方法及装置。
[0006]本发明解决上述技术问题的技术方案如下:一种基于循环位图模型的辅助索引方法,包括以下步骤:
[0007]步骤1:从日志文件生产队列里获取当前的日志文件及其文件编号,并将该日志文件从日志文件生产队列中删除,根据预设的循环位图的最大容量为该日志文件中的所有关键字分别建立循环位图,每个循环位图的索引范围起始位为最小的日志文件的文件编号,每个循环位图的索引范围结束位为最大的日志文件的文件编号,并为每个日志文件中的每个关键字建立一个有效索引范围终点;
[0008]步骤2:判断当前的日志文件的文件编号是否在索引范围起始位与索引范围结束位之间的有效索引范围内,如果是,执行步骤3,否则,执行步骤7 ;
[0009]步骤3:根据当前的日志文件中的所有关键字分别获取与每个关键字对应的有效索引范围终点及与每个关键字对应的循环位图的索引范围起始位,并检查日志文件的文件编号是否在索引范围起始位与每个关键字对应的有效索引范围终点之间,如果是,执行步骤4,否则,执行步骤5,直到将当前的日志文件中的所有关键字全部检查完毕,执行步骤6 ;
[0010]步骤4:在与每个关键字对应的循环位图中的日志文件的文件编号处执行置位操作,执行完毕后,执行步骤7;
[0011]步骤5:对与每个关键字对应的循环位图中有效索引范围终点与索引范围结束位之间做复位操作,在与每个关键字对应的循环位图中的待置位的文件编号处执行置位操作,并将有效索引范围终点赋值为索引范围结束位,执行步骤7 ;
[0012]步骤6:如果日志文件生产队列里没有其他待处理的日志文件,进入等待状态,直到文件生产队列中生成新的日志文件,重新执行步骤I ;
[0013]步骤7:结束。
[0014]本发明的有益效果是:本发明的索引结构是基于循环队列和位图改进而来的,当最大索引空间容量较大时,会占用很多内存空间。将该索引结构应用于100W个关键字的数据规模上时,实现在客户端的该索引结构与流水线模型结合后的平均更新速度为1W次/秒,实现在服务器端的该索引结构的平均更新速度为19W次/秒,该索引结构适合应用于平均置位率在4.5%以上的场景。
[0015]在上述技术方案的基础上,本发明还可以做如下改进。
[0016]进一步,所述索引范围起始位处为有效的用于索引的位,索引范围结束位处为无效的用于索引的位。
[0017]进一步,所述步骤5中的复位清零操作具体为:根据最大容量确定循环位图的边界点,当边界点位于有效索引范围终点与索引范围结束位之间时,将有效索引范围终点与边界点之间及边界点至索引范围结束位之间进行复位清零;
[0018]当边界点位于有效索引范围终点与索引范围结束位外部时,只对有效索引范围终点与索引范围结束位之间进行复位清零。
[0019]进一步,所述步骤5,在执行置位和/或复位时,先检查待置位和/或复位的位所在的字节的存储空间是否存在,如果不存在,将循环位图的边界点扩展到字节的末尾处,然后在相应的位执行置位和/或复位操作。
[0020]进一步,当日志文件生产队列设置于服务器中时,用于操作控制的客户端采用三级流水线的方式与服务器进行信息交互:
[0021]在一级流水线中,客户端从服务器中获取每个关键字的有效索引范围终点,并将有效索引范围终点的集合发送给二级流水线;
[0022]在_■级流水线中,客户端获取每个关键字对应的循环位图中有效索引范围终点与索引范围结束位处的字节的值;
[0023]在三级流水线中,客户端对每个关键字的有效索引范围终点与索引范围结束位处分别执行置位和复位操作。
[0024]进一步,在一级流水线中,客户端从服务器中获取每个关键字的有效索引范围终点时,如果不存在任何关键字,将有效索引范围终点的值标记为第一非法值;如果存在一个或多个关键字,但有效索引范围终点小于索引范围起始位,则将有效索引范围终点标记为第二非法值。
[0025]进一步,在二级流水线中,客户端获取每个关键字对应的循环位图中有效索引范围终点与索引范围结束位处的字节的值时,如果日志文件的文件编号在索引范围起始位于有效索引范围终点之间或者有效索引范围终点为第一非法值或第二非法值时,不获取待置位关键字的循环位图中有效索引范围终点与索引范围结束位之间的字节值。
[0026]进一步,一种基于循环位图模型的辅助索引装置,包括获取建立模块、判断模块、获取检查模块、置位模块、复位模块和等待模块;
[0027]所述获取建立模块,用于从日志文件生产队列里获取当前的日志文件及其文件编号,并将该日志文件从日志文件生产队列中删除,根据预设的循环位图的最大容量为该日志文件中的所有关键字分别建立循环位图,每个循环位图的索引范围起始位为最小的日志文件的文件编号,每个循环位图的索引范围结束位为最大的日志文件的文件编号,并为每个日志文件中的每个关键字建立一个有效索引范围终点;
[0028]所述判断模块,用于判断当前的日志文件的文件编号是否在索引范围起始位与索引范围结束位之间的有效索引范围内,如果是,执行获取检查模块,否则,结束处理;
[0029]所述获取检查模块,用于根据当前的日志文件中的所有关键字分别获取与每个关键字对应的有效索引范围终点及与每个关键字对应的循环位图的索引范围起始位,并检查日志文件的文件编号是否在索引范围起始位与每个关键字对应的有效索引范围终点之间,如果是,执行置位模块,否则,执行复位模块,直到将当前的日志文件中的所有关键字全部检查完毕,执行等待模块;
[0030]所述置位模块,用于在与每个关键字对应的循环位图中的日志文件的文件编号处执行置位操作,执行完毕后,结束处理;
[0031]所述复位模块,用于对与每个关键字对应的循环位图中有效索引范围终点与索引范围结束位之间做复位操作,在与每个关键字对应的循环位图中的待置位的文件编号处执行置位操作,并将有效索引范围终点赋值为索弓I范围结束位,结束处理;
[0032]所述等待模块,用于如果日志文件生产队列里没有其他待处理的日志文件,进入等待状态,直到文件生产队列中生成新的日志文件,重新执行获取建立模块。
[0033]进一步,所述复位模块在执行复位清零操作时,根据最大容量确定循环位图的边界点,当边界点位于有效索引范围终点与索引范围结束位之间时,将有效索引范围终点与边界点之间及边界点至索引范围结束位之间进行复位清零;
[0034]当边界点位于有效索引范围终点与索引范围结束位外部时,只对有效索引范围终点与索引范围结束位之间进行复位清零。
[0035]进一步,所述复位模块在执行置位和/或复位时,先检查待置位和/或复位的位所在的字节的存储空间是否存在,如果不存在,将循环位图的边界点扩展到字节的末尾处,然后在相应的位执行置位和/或复位操作。

【专利附图】

【附图说明】
[0036]图1为本发明方法步骤流程图;
[0037]图2为本发明装置结构图。
[0038]附图中,各标号所代表的部件列表如下:
[0039]1、获取建立模块,2、判断模块,3、获取检查模块,4、置位模块,5、复位模块,6、等待模块。

【具体实施方式】
[0040]以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
[0041]如图1所示,为本发明方法步骤流程图;图2为本发明装置结构图。
[0042]实施例1
[0043]一种基于循环位图模型的辅助索引方法,包括以下步骤:
[0044]步骤1:从日志文件生产队列里获取当前的日志文件及其文件编号,并将该日志文件从日志文件生产队列中删除,根据预设的循环位图的最大容量为该日志文件中的所有关键字分别建立循环位图,每个循环位图的索引范围起始位为最小的日志文件的文件编号,每个循环位图的索引范围结束位为最大的日志文件的文件编号,并为每个日志文件中的每个关键字建立一个有效索引范围终点;
[0045]步骤2:判断当前的日志文件的文件编号是否在索引范围起始位与索引范围结束位之间的有效索引范围内,如果是,执行步骤3,否则,执行步骤7 ;
[0046]步骤3:根据当前的日志文件中的所有关键字分别获取与每个关键字对应的有效索引范围终点及与每个关键字对应的循环位图的索引范围起始位,并检查日志文件的文件编号是否在索引范围起始位与每个关键字对应的有效索引范围终点之间,如果是,执行步骤4,否则,执行步骤5,直到将当前的日志文件中的所有关键字全部检查完毕,执行步骤6 ;
[0047]步骤4:在与每个关键字对应的循环位图中的日志文件的文件编号处执行置位操作,执行完毕后,执行步骤7;
[0048]步骤5:对与每个关键字对应的循环位图中有效索引范围终点与索引范围结束位之间做复位操作,在与每个关键字对应的循环位图中的待置位的文件编号处执行置位操作,并将有效索引范围终点赋值为索引范围结束位,执行步骤7 ;
[0049]步骤6:如果日志文件生产队列里没有其他待处理的日志文件,进入等待状态,直到文件生产队列中生成新的日志文件,重新执行步骤I ;
[0050]步骤7:结束。
[0051]所述索引范围起始位处为有效的用于索引的位,索引范围结束位处为无效的用于索引的位。
[0052]所述步骤5中的复位清零操作具体为:根据最大容量确定循环位图的边界点,当边界点位于有效索引范围终点与索引范围结束位之间时,将有效索引范围终点与边界点之间及边界点至索引范围结束位之间进行复位清零;
[0053]当边界点位于有效索引范围终点与索引范围结束位外部时,只对有效索引范围终点与索引范围结束位之间进行复位清零。
[0054]所述步骤5,在执行置位和/或复位时,先检查待置位和/或复位的位所在的字节的存储空间是否存在,如果不存在,将循环位图的边界点扩展到字节的末尾处,然后在相应的位执行置位和/或复位操作。
[0055]当日志文件生产队列设置于服务器中时,用于操作控制的客户端采用三级流水线的方式与服务器进行信息交互:
[0056]在一级流水线中,客户端从服务器中获取每个关键字的有效索引范围终点,并将有效索引范围终点的集合发送给二级流水线;
[0057]在二级流水线中,客户端获取每个关键字对应的循环位图中有效索引范围终点与索引范围结束位处的字节的值;
[0058]在三级流水线中,客户端对每个关键字的有效索引范围终点与索引范围结束位处分别执行置位和复位操作。
[0059]在一级流水线中,客户端从服务器中获取每个关键字的有效索引范围终点时,如果不存在任何关键字,将有效索引范围终点的值标记为第一非法值;如果存在一个或多个关键字,但有效索引范围终点小于索引范围起始位,则将有效索引范围终点标记为第二非法值。
[0060]在二级流水线中,客户端获取每个关键字对应的循环位图中有效索引范围终点与索引范围结束位处的字节的值时,如果日志文件的文件编号在索引范围起始位于有效索引范围终点之间或者有效索引范围终点为第一非法值或第二非法值时,不获取待置位关键字的循环位图中有效索引范围终点与索引范围结束位之间的字节值。
[0061]一种基于循环位图模型的辅助索引装置,包括获取建立模块1、判断模块2、获取检查模块3、置位模块4、复位模块5和等待模块6 ;
[0062]所述获取建立模块1,用于从日志文件生产队列里获取当前的日志文件及其文件编号,并将该日志文件从日志文件生产队列中删除,根据预设的循环位图的最大容量为该日志文件中的所有关键字分别建立循环位图,每个循环位图的索引范围起始位为最小的日志文件的文件编号,每个循环位图的索引范围结束位为最大的日志文件的文件编号,并为每个日志文件中的每个关键字建立一个有效索引范围终点;
[0063]所述判断模块2,用于判断当前的日志文件的文件编号是否在索引范围起始位与索引范围结束位之间的有效索引范围内,如果是,执行获取检查模块3,否则,结束处理;
[0064]所述获取检查模块3,用于根据当前的日志文件中的所有关键字分别获取与每个关键字对应的有效索引范围终点及与每个关键字对应的循环位图的索引范围起始位,并检查日志文件的文件编号是否在索引范围起始位与每个关键字对应的有效索引范围终点之间,如果是,执行置位模块4,否则,执行复位模块5,直到将当前的日志文件中的所有关键字全部检查完毕,执行等待模块6 ;
[0065]所述置位模块4,用于在与每个关键字对应的循环位图中的日志文件的文件编号处执行置位操作,执行完毕后,结束处理;
[0066]所述复位模块5,用于对与每个关键字对应的循环位图中有效索引范围终点与索引范围结束位之间做复位操作,在与每个关键字对应的循环位图中的待置位的文件编号处执行置位操作,并将有效索引范围终点赋值为索弓I范围结束位,结束处理;
[0067]所述等待模块6,用于如果日志文件生产队列里没有其他待处理的日志文件,进入等待状态,直到文件生产队列中生成新的日志文件,重新执行获取建立模块I。
[0068]所述复位模块5在执行复位清零操作时,根据最大容量确定循环位图的边界点,当边界点位于有效索引范围终点与索引范围结束位之间时,将有效索引范围终点与边界点之间及边界点至索引范围结束位之间进行复位清零;
[0069]当边界点位于有效索引范围终点与索引范围结束位外部时,只对有效索引范围终点与索引范围结束位之间进行复位清零。
[0070]所述复位模块5在执行置位和/或复位时,先检查待置位和/或复位的位所在的字节的存储空间是否存在,如果不存在,将循环位图的边界点扩展到字节的末尾处,然后在相应的位执行置位和/或复位操作。
[0071 ] 以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种基于循环位图模型的辅助索引方法,其特征在于,包括以下步骤: 步骤1:从日志文件生产队列里获取当前的日志文件及其文件编号,并将该日志文件从日志文件生产队列中删除,根据预设的循环位图的最大容量为该日志文件中的所有关键字分别建立循环位图,每个循环位图的索引范围起始位为最小的日志文件的文件编号,每个循环位图的索引范围结束位为最大的日志文件的文件编号,并为每个日志文件中的每个关键字建立一个有效索引范围终点; 步骤2:判断当前的日志文件的文件编号是否在索引范围起始位与索引范围结束位之间的有效索引范围内,如果是,执行步骤3,否则,执行步骤7 ; 步骤3:根据当前的日志文件中的所有关键字分别获取与每个关键字对应的有效索引范围终点及与每个关键字对应的循环位图的索引范围起始位,并检查日志文件的文件编号是否在索引范围起始位与每个关键字对应的有效索引范围终点之间,如果是,执行步骤4,否则,执行步骤5,直到将当前的日志文件中的所有关键字全部检查完毕,执行步骤6 ; 步骤4:在与每个关键字对应的循环位图中的日志文件的文件编号处执行置位操作,执行完毕后,执行步骤7; 步骤5:对与每个关键字对应的循环位图中有效索引范围终点与索引范围结束位之间做复位操作,在与每个关键字对应的循环位图中的待置位的文件编号处执行置位操作,并将有效索引范围终点赋值为索引范围结束位,执行步骤7 ; 步骤6:如果日志文件生产队列里没有其他待处理的日志文件,进入等待状态,直到文件生产队列中生成新的日志文件,重新执行步骤I ; 步骤7:结束。
2.根据权利要求1所述的辅助索引方法,其特征在于:所述索引范围起始位处为有效的用于索引的位,索引范围结束位处为无效的用于索引的位。
3.根据权利要求1所述的辅助索引方法,其特征在于,所述步骤5中的复位操作具体为:根据最大容量确定循环位图的边界点,当边界点位于有效索引范围终点与索引范围结束位之间时,将有效索引范围终点与边界点之间及边界点至索引范围结束位之间进行复位清零; 当边界点位于有效索引范围终点与索引范围结束位外部时,只对有效索引范围终点与索引范围结束位之间进行复位清零。
4.根据权利要求3所述的辅助索引方法,其特征在于:所述步骤5,在执行置位和/或复位时,先检查待置位和/或复位的位所在的字节的存储空间是否存在,如果不存在,将循环位图的边界点扩展到字节的末尾处,然后在相应的位执行置位和/或复位操作。
5.根据权利要求1所述的辅助索引方法,其特征在于:当日志文件生产队列设置于服务器中时,用于操作控制的客户端采用三级流水线的方式与服务器进行信息交互: 在一级流水线中,客户端从服务器中获取每个关键字的有效索引范围终点,并将有效索引范围终点的集合发送给二级流水线; 在二级流水线中,客户端获取每个关键字对应的循环位图中有效索引范围终点与索引范围结束位处的字节的值; 在三级流水线中,客户端对每个关键字的有效索引范围终点与索引范围结束位处分别执行置位和复位操作。
6.根据权利要求5所述的辅助索引方法,其特征在于:在一级流水线中,客户端从服务器中获取每个关键字的有效索引范围终点时,如果不存在任何关键字,将有效索引范围终点的值标记为第一非法值;如果存在一个或多个关键字,但有效索引范围终点小于索引范围起始位,则将有效索引范围终点标记为第二非法值。
7.根据权利要求6所述的辅助索引方法,其特征在于:在二级流水线中,客户端获取每个关键字对应的循环位图中有效索引范围终点与索引范围结束位处的字节的值时,如果日志文件的文件编号在索引范围起始位于有效索引范围终点之间或者有效索引范围终点为第一非法值或第二非法值时,不获取待置位关键字的循环位图中有效索引范围终点与索引范围结束位之间的字节值。
8.一种基于循环位图模型的辅助索引装置,其特征在于:包括获取建立模块(I)、判断模块(2)、获取检查模块(3)、置位模块(4)、复位模块(5)和等待模块(6); 所述获取建立模块(I),用于从日志文件生产队列里获取当前的日志文件及其文件编号,并将该日志文件从日志文件生产队列中删除,根据预设的循环位图的最大容量为该日志文件中的所有关键字分别建立循环位图,每个循环位图的索引范围起始位为最小的日志文件的文件编号,每个循环位图的索引范围结束位为最大的日志文件的文件编号,并为每个日志文件中的每个关键字建立一个有效索引范围终点; 所述判断模块(2),用于判断当前的日志文件的文件编号是否在索引范围起始位与索引范围结束位之间的有效索引范围内,如果是,执行获取检查模块(3),否则,结束处理; 所述获取检查模块(3),用于根据当前的日志文件中的所有关键字分别获取与每个关键字对应的有效索引范围终点及与每个关键字对应的循环位图的索引范围起始位,并检查日志文件的文件编号是否在索引范围起始位与每个关键字对应的有效索引范围终点之间,如果是,执行置位模块(4),否则,执行复位模块(5),直到将当前的日志文件中的所有关键字全部检查完毕,执行等待模块(6); 所述置位模块(4),用于在与每个关键字对应的循环位图中的日志文件的文件编号处执行置位操作,执行完毕后,结束处理; 所述复位模块(5),用于对与每个关键字对应的循环位图中有效索引范围终点与索引范围结束位之间做复位操作,在与每个关键字对应的循环位图中的待置位的文件编号处执行置位操作,并将有效索引范围终点赋值为索弓I范围结束位,结束处理; 所述等待模块(6),用于如果日志文件生产队列里没有其他待处理的日志文件,进入等待状态,直到文件生产队列中生成新的日志文件,重新执行获取建立模块(I)。
9.根据权利要求8所述的辅助索引装置,其特征在于:所述复位模块(5)在执行复位清零操作时,根据最大容量确定循环位图的边界点,当边界点位于有效索引范围终点与索引范围结束位之间时,将有效索引范围终点与边界点之间及边界点至索引范围结束位之间进行复位清零; 当边界点位于有效索引范围终点与索引范围结束位外部时,只对有效索引范围终点与索引范围结束位之间进行复位清零。
10.根据权利要求8所述的辅助索引装置,其特征在于:所述复位模块(5)在执行置位和/或复位时,先检查待置位和/或复位的位所在的字节的存储空间是否存在,如果不存在,将循环位图的边界点扩展到字节的末尾处,然后在相应的位执行置位和/或复位操作。
【文档编号】G06F17/30GK104182522SQ201410425094
【公开日】2014年12月3日 申请日期:2014年8月26日 优先权日:2014年8月26日
【发明者】李波, 王卓, 陈明雨, 古井子, 文雨, 王伟平, 孟丹 申请人:中国科学院信息工程研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1