分布式内存存储系统的热点数据挖掘方法及装置与流程

文档序号:12747728阅读:387来源:国知局
分布式内存存储系统的热点数据挖掘方法及装置与流程

本发明涉及计算机技术,尤其涉及一种分布式内存存储系统的热点数据挖掘方法及装置。



背景技术:

随着Web2.0和移动互联网时代的到来,庞大的用户量以及不断升高的访问频率使得高并发、高负载已经成为Web应用的主要特点。高吞吐、低延迟及可扩展的数据存储服务面临着全新的挑战。分布式内存存储系统的出现在一定程度上解决了问题,但是在面对特殊的数据访问场景时,还是会出现性能问题。例如社交网络中的热点事件,短时间内某一小部分数据遭受到大规模的并发访问,这一小部分的热点数据造成整个集群的负载不均衡,最终导致系统整体性能的下降。传统Web应用中的20/80定律在Web2.0+移动互联网时代会变得更加极端,热点数据导致的集群负载不均衡问题更加突出。解决分布式内存存储中由于热点数据导致的负载不均衡问题,一种可行的方法是对分布式存储系统中的热点数据创建副本,通过将集群内高负载节点上的热点数据备份到低负载节点上的方式,平衡整个集群内部的访问负载,从而提高整个集群的性能。

现有技术中,可以通过近期最少使用(Least Recently Used;简称:LRU)算法、最不经常使用(least frequently used;简称:LFU)算法、LRU-K(K代表最近使用的次数)算法等内存替换算法来确定热点数据。

但是,在分布式内存存储系统的高速以及大数据量的访问请求下,上述的几种内存替换算法都无法准确地找出热点数据。



技术实现要素:

本发明提供一种分布式内存存储系统的热点数据挖掘方法及装置,以提高热点数据确定的准确性。

本发明提供一种分布式内存存储系统的热点数据挖掘方法,包括:

对所有访问请求进行抽样,获取多个抽样后的访问请求;其中,所述访问请求中包括待访问数据的标识;

对多个所述抽样后的访问请求进行数据过滤,获取多个频繁访问请求;

根据多个所述频繁访问请求确定热点访问请求,并将所述热点访问请求中待访问数据的标识对应的待访问数据确定为热点数据。

进一步地,所述对所述抽样后的访问请求进行数据过滤,获取频繁访问请求,包括:

将多个所述抽样后的访问请求中的每个所述抽样后的访问请求通过k个各不相同的哈希函数后,分别映射到k个布隆计数器的各参考位置;其中,k为大于1的整数;

每映射到一次各所述参考位置,对每个所述参考位置上的元素的当前值均进行加1操作,并获取所述各参考位置上的元素的新的当前值;

若所述抽样后的访问请求对应的k个参考位置上的元素的新的当前值均大于第一预设阈值,则确定所述抽样后的访问请求为所述频繁访问请求。

进一步地,所述方法还包括:

根据预设的周期对k个布隆计数器的各参考位置上的元素的新的当前值进行刷新操作以避免所述各参考位置上的元素的新的当前值无限增大。

进一步地,所述根据多个所述频繁访问请求确定热点访问请求,包括:

确定所述频繁访问请求是否属于频繁计数器集合中的元素对应的访问请求集合;其中,所述频繁计数器集合中的每个元素均包括所述频繁访问请求、所述频繁访问请求的当前周期的相对访问次数、所述频繁访问请求的当前周期的补偿访问次数以及所述频繁访问请求的上一周期的总访问次数,所述相对访问次数与所述补偿访问次数之和为所述频繁访问请求在当前周期的总访问次数;

若频繁访问请求属于所述频繁计数器集合中的元素对应的访问请求集合,则对所述频繁访问请求对应的频繁计数器集合中的元素中的当前周期的相对访问次数进行加1操作,获得当前周期的新的相对访问次数;

若所述频繁访问请求的当前周期的新的相对访问次数、当前周期的补偿访问次数与上一周期的总访问次数之和大于第二预设阈值,则确定所述第一频繁访问请求为所述热点访问请求,将所述第一频繁访问请求加入热点访问请求集合。

进一步地,所述方法还包括:

若频繁访问请求不属于所述频繁计数器集合中的元素对应的访问请求集合,并且所述频繁计数器集合中的元素的数量小于预设的最大数量,则将所述频繁访问请求的当前周期的相对访次数置为1,当前周期的补偿访问次数置为0,上一周期的总访问次数置为0,并将所述频繁访问请求、所述频繁访问请求的当前周期的相对访问次数、所述频繁访问请求的当前周期的补偿访问次数以及所述频繁访问请求的上一周期的总访问次数作为一个新的元素,加入所述频繁计数器集合中;

若所述频繁访问请求不属于所述频繁计数器集合中的元素对应的访问请求集合,并且所述频繁计数器集合中的元素的数量大于或者等于所述预设的最大数量,则对所有频繁计数器集合中的每个元素执行如下操作:如果所述元素中的当前周期的相对访问次数等于0,则将所述元素移出频繁计数器集合;如果所述元素中的当前周期的相对访问次数不等于0,则将所述元素中的当前周期的相对访问次数减1,当前周期的补偿访问次数加1;如果有元素从所述频繁计数器集合中被移出,则将所述频繁访问请求、所述频繁访问请求的当前周期的相对访问次数、所述频繁访问请求的当前周期的补偿访问次数以及所述频繁访问请求的上一周期的总访问次数作为一个新的元素加入所述频繁计数器集合中。

进一步地,所述方法还包括:

根据所述预设的周期对所述频繁计数器集合中的每个元素按照数据刷新规则进行刷新;所述数据刷新规则为:刷新后的所述元素中的当前周期的相对访问次数变为刷新前的当前周期的相对访问次数的一半,刷新后的所述元素中的当前周期的补偿访问次数变为0,刷新后所述元素中的上一周期的总访问次数变为刷新前的当前周期的相对访问次数与刷新前的上一周期的总访问次数之和的一半。

本发明还提供一种分布式内存存储系统的热点数据挖掘装置,包括:

抽样模块,用于对所有访问请求进行抽样,获取多个抽样后的访问请求;其中,所述访问请求中包括待访问数据的标识;

过滤模块,用于对多个所述抽样后的访问请求进行数据过滤,获取多个频繁访问请求;

确定模块,用于根据多个所述频繁访问请求确定热点访问请求,并将所述热点访问请求中待访问数据的标识对应的待访问数据确定为热点数据。

进一步地,所述过滤模块具体用于:

将多个所述抽样后的访问请求中的每个所述抽样后的访问请求通过k个各不相同的哈希函数后,分别映射到k个布隆计数器的各参考位置;其中,k为大于1的整数;

每映射到一次各所述参考位置,对每个所述参考位置上的元素的当前值均进行加1操作,并获取所述各参考位置上的元素的新的当前值;

若所述抽样后的访问请求对应的k个参考位置上的元素的新的当前值均大于第一预设阈值,则确定所述抽样后的访问请求为所述频繁访问请求。

进一步地,所述装置还包括:

更新模块,用于根据预设的周期对k个布隆计数器的各参考位置上的元素的新的当前值进行刷新操作以避免所述各参考位置上的元素的新的当前值无限增大。

进一步地,所述确定模块具体用于:

确定所述频繁访问请求是否属于频繁计数器集合中的元素对应的访问请求集合;其中,所述频繁计数器集合中的每个元素均包括所述频繁访问请求、所述频繁访问请求的当前周期的相对访问次数、所述频繁访问请求的当前周期的补偿访问次数以及所述频繁访问请求的上一周期的总访问次数,所述相对访问次数与所述补偿访问次数之和为所述频繁访问请求在当前周期的总访问次数;

若频繁访问请求属于所述频繁计数器集合中的元素对应的访问请求集合,则对所述频繁访问请求对应的频繁计数器集合中的元素中的当前周期的相对访问次数进行加1操作,获得当前周期的新的相对访问次数;

若所述频繁访问请求的当前周期的新的相对访问次数、当前周期的补偿访问次数与上一周期的总访问次数之和大于第二预设阈值,则确定所述第一频繁访问请求为所述热点访问请求,将所述第一频繁访问请求加入热点访问请求集合。

进一步地,所述确定模块还用于:

若频繁访问请求不属于所述频繁计数器集合中的元素对应的访问请求集合,并且所述频繁计数器集合中的元素的数量小于预设的最大数量,则将所述频繁访问请求的当前周期的相对访次数置为1,当前周期的补偿访问次数置为0,上一周期的总访问次数置为0,并将所述频繁访问请求、所述频繁访问请求的当前周期的相对访问次数、所述频繁访问请求的当前周期的补偿访问次数以及所述频繁访问请求的上一周期的总访问次数作为一个新的元素,加入所述频繁计数器集合中;

若所述频繁访问请求不属于所述频繁计数器集合中的元素对应的访问请求集合,并且所述频繁计数器集合中的元素的数量大于或者等于所述预设的最大数量,则对所有频繁计数器集合中的每个元素执行如下操作:如果所述元素中的当前周期的相对访问次数等于0,则将所述元素移出频繁计数器集合;如果所述元素中的当前周期的相对访问次数不等于0,则将所述元素中的当前周期的相对访问次数减1,当前周期的补偿访问次数加1;如果有元素从所述频繁计数器集合中被移出,则将所述频繁访问请求、所述频繁访问请求的当前周期的相对访问次数、所述频繁访问请求的当前周期的补偿访问次数以及所述频繁访问请求的上一周期的总访问次数作为一个新的元素加入所述频繁计数器集合中。

进一步地,所述更新模块还用于:

根据所述预设的周期对所述频繁计数器集合中的每个元素按照数据刷新规则进行刷新;所述数据刷新规则为:刷新后的所述元素中的当前周期的相对访问次数变为刷新前的当前周期的相对访问次数的一半,刷新后的所述元素中的当前周期的补偿访问次数变为0,刷新后所述元素中的上一周期的总访问次数变为刷新前的当前周期的相对访问次数与刷新前的上一周期的总访问次数之和的一半。

本发明实施例提供的分布式内存存储系统的热点数据挖掘方法及装置,通过对所有访问请求进行抽样,获取多个抽样后的访问请求,访问请求中包括待访问数据的标识,对多个抽样后的访问请求进行数据过滤,获取多个频繁访问请求,根据多个频繁访问请求确定热点访问请求,并将热点访问请求中待访问数据的标识对应的待访问数据确定为热点数据,在确定热点数据的过程中,先获取抽样后的访问请求,减少了计算的复杂度,再对抽样后的访问请求进行数据过滤,获取频繁访问请求,根据频繁访问请求确定热点访问请求,提高了热点数据确定的效率和准确性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的分布式内存存储系统的热点数据挖掘方法实施例的流程示意图;

图2为图1所示实施例中获取多个频繁访问请求的流程示意图;

图3为本发明实施例提供的分布式内存存储系统的热点数据挖掘装置实施例的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

下面以具体地实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。

图1为本发明实施例提供的分布式内存存储系统的热点数据挖掘方法实施例的流程示意图。如图1所示,本发明实施例提供的分布式内存存储系统的热点数据挖掘方法包括如下步骤:

S101:对所有访问请求进行抽样,获取多个抽样后的访问请求。

其中,访问请求中包括待访问数据的标识。

具体地,本发明实施例提供的热点数据挖掘方法应用于分布式内存存储系统中,其可以由分布式内存存储系统中的服务器执行。

当用户需要对分布式内存存储系统中的数据进行访问时,会生成访问请求。访问请求中包括待访问数据的标识,该标识可以是在访问请求中以预设位数的比特数值的形式示出。该标识用以表示用户需要访问分布式内存存储系统中的哪些数据。该标识可以表示的是待访问数据的存储位置,也可以表示待访问数据的关键字。本发明实施例对此不做限制。需要说明的是,在一种具体的实现方式中,待访问数据的标识可以用键来表示,相对应的,待访问数据即为键值。

在现在Web2.0和移动互联网的应用场景下,会有大量的访问请求。本发明实施例在确定热点数据的过程中,为了减少后续计算的数据量,首先对大量的访问请求进行抽样,获取多个抽样后的访问请求,以节约计算资源和空间资源。

在抽样过程中,可以采用简单随机抽样的方式。将被抽中的访问请求称为抽样后的访问请求。

在本发明实施例中,之所以采用简单随机抽样的方式,是因为针对分布式内存存储系统中的访问请求中,待访问数据的标识对应的待访问数据分布情况不可预知,所以不能采用分层抽样及系统抽样等方式。分层抽样和系统抽样等抽样方式会用主观的限制条件去抽样,不能保证抽样的代表性。

S102:对多个抽样后的访问请求进行数据过滤,获取多个频繁访问请求。

具体地,在获得多个抽样后的访问请求后,可以对该多个抽样后的访问请求进行数据过滤,过滤掉非频繁访问请求,获得多个频繁访问请求。

频繁访问请求指的是出现的频数较大的访问请求。

在一种可能的实现方式中,可以采用多重计数布隆过滤器对抽样后的访问请求进行过滤。多重计数布隆过滤器为对现有技术中的布隆过滤器进行改进而获得的。本发明实施例提供的多重计数布隆过滤器与现有的布隆过滤器相比具有以下不同之处:

1、将现有的布隆过滤器中的位计数器换为数值计数器。对于每一次数据访问,相应的计数器大小+1。元素值的判断由原来的判断是否为1变为判断元素的新的当前值是否大于某个阈值。

2、将单个过滤器改为k个过滤器。通过k个不同的Hash函数将同一个访问请求项映射到k个不同的布隆计数器上。k个Hash函数完全独立。

3、多重计数布隆过滤器完成对频繁数据的过滤。频繁项的判断由k个过滤器共同决定,对于某一个设定的阈值,如果某次抽样后的访问请求对应的k个计数器的数值都大于该阈值,则该抽样后的访问请求为频繁访问请求。

图2为图1所示实施例中获取多个频繁访问请求的流程示意图。下面结合图2,对多重计数布隆过滤器的实现过程作一详细说明:

在多重计数布隆过滤器中,设置有k个哈希函数h1、h2、……、hk,该k个哈希函数各不相同且相互完全独立。其中,k是预设的参数,其为大于1的整数。对应于每一个哈希函数,都设置有一个布隆计数器。即在多重计数布隆过滤器,设置有k个哈希函数和与k个哈希函数一一对应的k个布隆计数器。将多个抽样后的访问请求中的每个抽样后的访问请求通过k个各不相同的哈希函数后,分别映射到k个布隆计数器的各参考位置。举例来说,如图2所示,其中的某一个抽样后的访问请求X,在通过k个哈希函数后,分别映射到第1个布隆计数器的第2个位置,映射到第2个布隆计数器的第5个位置,……,映射到第k个布隆计数器的第8个位置,将该第1个布隆计数器的第2个位置、第2个布隆计数器的第5个位置、……、第k个布隆计数器的第8个位置均称为参考位置。需要说明的是,访问请求通过某个哈希函数后会映射到相应的布隆计数器的哪个位置是由该哈希函数确定的。在图2中未示出访问请求X经过h3……hk-1后映射到第3个布隆计数器-第k-1个布隆计数器的上的参考位置。每个布隆计数器中包括多个位置,这些位置上均设置有一个元素,这些多个位置上的元素的初始值均为0。每映射到一次各参考位置,对每个参考位置上的元素的当前值均进行加1操作,并获取各参考位置上的元素对应的新的当前值。如图2所示,当访问请求X映射到k个参考位置后,这些参考位置上的元素均由初始值0变成了1。在图2所示的例子中,元素的当前值为初始值0,新的当前值为1。若抽样后的访问请求对应的k个参考位置上的元素的新的当前值均大于第一预设阈值,则确定该抽样后的访问请求为频繁访问请求。第一预设阈值是预先设置的参数。在图2中,M表示一个布隆计数器的容量的大小,其是预设的参数。

在上述实现方式中,将多个抽样后的访问请求中的每个抽样后的访问请求通过k个各不相同的哈希函数后,如果其中有多个抽样后的访问请求相同,则其会分别映射到k个布隆计数器的相同的参考位置,则该参考位置上的元素新的当前值进行多次加1操作后,得到新的当前值。当该新的当前值大于第一预设阈值时,确定该多个抽样后的访问请求均为频繁访问请求。

需要说明的是,现有的布隆过滤器在访问请求较多时,存在较大的误判率。在分布式内存存储系统中不宜直接使用现有的布隆过滤器。本发明实施例提供的多重计数布隆过滤器能在有海量访问请求时,保证过滤的准确率。

S103:根据多个频繁访问请求确定热点访问请求,并将热点访问请求中待访问数据的标识对应的待访问数据确定为热点数据。

具体地,在确定出多个频繁访问请求后,可以根据该多个频繁访问请求确定热点访问请求。在确定出热点访问请求后,热点访问请求中待访问数据的标识对应的待访问数据即为热点数据。

在一种具体的实现方式中,可以采用改进的频繁(frequent)算法确定热点访问请求。其具体的过程如下所示:

确定频繁访问请求是否属于频繁计数器集合中的元素对应的访问请求集合。其中,频繁计数器集合中的每个元素均包括频繁访问请求、频繁访问请求的当前周期的相对访问次数、频繁访问请求的当前周期的补偿访问次数以及频繁访问请求的上一周期的总访问次数,相对访问次数与补偿访问次数之和为频繁访问请求在当前周期的总访问次数。频繁访问计数器用于对频繁访问请求进行计数。

若频繁访问请求属于频繁计数器集合中的元素对应的访问请求集合,则对频繁访问请求对应的频繁计数器集合中的元素中的当前周期的相对访问次数进行加1操作,获得当前周期的新的相对访问次数。

若频繁访问请求的当前周期的新的相对访问次数、当前周期的补偿访问次数与上一周期的总访问次数之和大于第二预设阈值,则确定频繁访问请求为热点访问请求,将频繁访问请求加入热点访问请求集合。第二预设阈值为预设的参数。其可以根据经验数据进行设定。热点访问请求集合中的访问请求都为最终确定出的热点访问请求。

若频繁访问请求不属于频繁计数器集合中的元素对应的访问请求集合,并且频繁计数器集合中的元素的数量小于预设的最大数量,则将频繁访问请求的当前周期的相对访次数置为1,当前周期的补偿访问次数置为0,上一周期的总访问次数置为0,并将频繁访问请求、频繁访问请求的当前周期的相对访问次数、频繁访问请求的当前周期的补偿访问次数以及频繁访问请求的上一周期的总访问次数作为一个新的元素,加入频繁计数器集合中。

若频繁访问请求不属于频繁计数器集合中的元素对应的访问请求集合,并且频繁计数器集合中的元素的数量大于或者等于预设的最大数量,则对所有频繁计数器集合中的每个元素执行如下操作:如果元素中的当前周期的相对访问次数等于0,则将元素移出频繁计数器集合;如果元素中的当前周期的相对访问次数不等于0,则将该元素中的当前周期的相对访问次数减1,当前周期的补偿访问次数加1;如果有元素从频繁计数器集合中被移出,则将频繁访问请求、频繁访问请求的当前周期的相对访问次数、频繁访问请求的当前周期的补偿访问次数以及频繁访问请求的上一周期的总访问次数作为一个新的元素加入到频繁计数器集合中。

需要说明的是,当有多个元素被从频繁计数器集合中移出,将频繁访问请求、频繁访问请求的当前周期的相对访问次数、频繁访问请求的当前周期的补偿访问次数以及频繁访问请求的上一周期的总访问次数作为一个新的元素加入到频繁计数器集合中时,是将多个被移出的元素替换为一个由频繁访问请求、频繁访问请求的当前周期的相对访问次数、频繁访问请求的当前周期的补偿访问次数以及频繁访问请求的上一周期的总访问次数组成的新的元素。即在移出多个元素的情况下,只添加一个新的元素。换句话说,频繁计数器集合是一个哈希集合。

上述过程可以用以下伪代码的形式具体表示如下:

改进的Frequent算法

Counters:频繁计数器集合

M:频繁计数器的长度

热点访问请求集合

threshold:第二预设阈值.

1.IFi∈Counters:

2.fi++

3.IF fi+dfi+pfi>threshold

4.T=T∪{i};

5.ELSE IFCounters.length<M:

6.fi=1,dfi=0,pfi=0;

7.Counters=Counters∪{i}

8.ELSE:

9.FOREACHj∈CountersDO:

10.IFfi=0:

11.Counters=Counters\{j}∪{i};

12.ELSE

13.fj--,dfj++;

在上述伪代码中,fi表示第i个频繁访问请求的当前周期的相对访问次数,dfi表示第i个频繁访问请求的当前周期的补偿访问次数,pfi表示第i个频繁访问请求的上一周期的总访问次数。需要说明的是S102中,进行数据过滤的过程中也是针对当前周期的抽样后的访问请求进行数据过滤。

通过采用改进的frequent算法,修改现有的frequent算法的计数方法和计数规则,减少了数据统计的内存和计算资源消耗,并且,提高了热点数据确定的准确性。

在确定出热点数据之后,即可以对分布式存储系统中的热点数据创建副本,通过将集群内高负载节点上的热点数据备份到低负载节点上的方式,平衡整个集群内部的访问负载,从而提高整个集群的性能。

本发明实施例提供的分布式内存存储系统的热点数据挖掘方法,通过对所有访问请求进行抽样,获取多个抽样后的访问请求,访问请求中包括待访问数据的标识,对多个抽样后的访问请求进行数据过滤,获取多个频繁访问请求,根据多个频繁访问请求确定热点访问请求,并将热点访问请求中待访问数据的标识对应的待访问数据确定为热点数据,在确定热点数据的过程中,先获取抽样后的访问请求,减少了计算的复杂度,再对抽样后的访问请求进行数据过滤,获取频繁访问请求,根据频繁访问请求确定热点访问请求,提高了热点数据确定的效率和准确性。

进一步地,在上述实施例中,该方法还包括:根据预设的周期对k个布隆计数器的各参考位置上的元素的新的当前值进行刷新操作以避免各参考位置上的元素的新的当前值无限增大,以保证数据过滤的有效性。

进一步地,在上述实施例中,该方法还包括:根据预设的周期对频繁计数器集合中的每个元素按照数据刷新规则进行刷新。具体的数据刷新规则为:刷新后的元素中的当前周期的相对访问次数变为刷新前的当前周期的相对访问次数的一半,刷新后的元素中的当前周期的补偿访问次数变为0,刷新后元素中的上一周期的总访问次数变为刷新前的当前周期的相对访问次数与刷新前的上一周期的总访问次数之和的一半。用公式表示如下:

<mrow> <msub> <mi>f</mi> <mrow> <mi>i</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> <mo>=</mo> <mfrac> <msub> <mi>f</mi> <mi>i</mi> </msub> <mn>2</mn> </mfrac> <mo>;</mo> </mrow>

其中,fi+1为刷新后的元素中的当前周期的相对访问次数,dfi+1=0;fi表示刷新前的元素中的当前周期的相对访问次数,pfi+1表示刷新后的元素中的上一周期的总访问次数,pfi表示刷新前的元素中的上一周期的总访问次数,dfi+1表示刷新后的元素中的当前周期的补偿访问次数。对频繁计数器集合进行刷新可以减弱上一周期数据的权重,进一步提高热点数据确定的准确性。

图3为本发明实施例提供的分布式内存存储系统的热点数据挖掘装置实施例的结构示意图。如图3所示,本发明实施例提供的分布式内存存储系统的热点数据挖掘装置包括如下模块:

抽样模块31,用于对所有访问请求进行抽样,获取多个抽样后的访问请求。

其中,访问请求中包括待访问数据的标识。

过滤模块32,用于对多个抽样后的访问请求进行数据过滤,获取多个频繁访问请求。

过滤模块32具体用于:

将多个抽样后的访问请求中的每个抽样后的访问请求通过k个各不相同的哈希函数后,分别映射到k个布隆计数器的各参考位置。其中,k为大于1的整数。每映射到一次各参考位置,对每个参考位置上的元素的当前值均进行加1操作,并获取各参考位置上的元素的新的当前值。若抽样后的访问请求对应的k个参考位置上的元素的新的当前值均大于第一预设阈值,则确定抽样后的访问请求为频繁访问请求。

确定模块33,用于根据多个频繁访问请求确定热点访问请求,并将热点访问请求中待访问数据的标识对应的待访问数据确定为热点数据。

确定模块33具体用于:

确定频繁访问请求是否属于频繁计数器集合中的元素对应的访问请求集合。其中,频繁计数器集合中的每个元素均包括频繁访问请求、频繁访问请求的当前周期的相对访问次数、频繁访问请求的当前周期的补偿访问次数以及频繁访问请求的上一周期的总访问次数,相对访问次数与补偿访问次数之和为频繁访问请求在当前周期的总访问次数。若频繁访问请求属于频繁计数器集合中的元素对应的访问请求集合,则对频繁访问请求对应的频繁计数器集合中的元素中的当前周期的相对访问次数进行加1操作,获得当前周期的新的相对访问次数。若频繁访问请求的当前周期的新的相对访问次数、当前周期的补偿访问次数与上一周期的总访问次数之和大于第二预设阈值,则确定第一频繁访问请求为热点访问请求,将第一频繁访问请求加入热点访问请求集合。

确定模块33还用于:

若频繁访问请求不属于频繁计数器集合中的元素对应的访问请求集合,并且频繁计数器集合中的元素的数量小于预设的最大数量,则将频繁访问请求的当前周期的相对访次数置为1,当前周期的补偿访问次数置为0,上一周期的总访问次数置为0,并将频繁访问请求、频繁访问请求的当前周期的相对访问次数、频繁访问请求的当前周期的补偿访问次数以及频繁访问请求的上一周期的总访问次数作为一个新的元素,加入频繁计数器集合中。若频繁访问请求不属于频繁计数器集合中的元素对应的访问请求集合,并且频繁计数器集合中的元素的数量大于或者等于预设的最大数量,则对所有频繁计数器集合中的每个元素执行如下操作:如果元素中的当前周期的相对访问次数等于0,则将元素移出频繁计数器集合;如果元素中的当前周期的相对访问次数不等于0,则将元素中的当前周期的相对访问次数减1,当前周期的补偿访问次数加1。如果有元素从频繁计数器集合中被移出,则将频繁访问请求、频繁访问请求的当前周期的相对访问次数、频繁访问请求的当前周期的补偿访问次数以及频繁访问请求的上一周期的总访问次数作为一个新的元素加入频繁计数器集合中。

本发明实施例提供的分布式内存存储系统的热点数据挖掘装置具体可用于执行图1所示实施例的分布式内存存储系统的热点数据挖掘方法,其实现过程和技术原理类似,此处不再赘述。

本发明实施例提供的分布式内存存储系统的热点数据挖掘装置,通过设置抽样模块,用于对所有访问请求进行抽样,获取多个抽样后的访问请求,访问请求中包括待访问数据的标识,过滤模块,用于对多个抽样后的访问请求进行数据过滤,获取多个频繁访问请求,确定模块,用于根据多个频繁访问请求确定热点访问请求,并将热点访问请求中待访问数据的标识对应的待访问数据确定为热点数据,在确定热点数据的过程中,先获取抽样后的访问请求,减少了计算的复杂度,再对抽样后的访问请求进行数据过滤,获取频繁访问请求,根据频繁访问请求确定热点访问请求,提高了热点数据确定的效率和准确性。

进一步地,在上述实施例中,装置还包括:

更新模块,用于根据预设的周期对k个布隆计数器的各参考位置上的元素的新的当前值进行刷新操作以避免各参考位置上的元素的新的当前值无限增大,以保证数据过滤的有效性。

更新模块还用于:

根据预设的周期对频繁计数器集合中的每个元素按照数据刷新规则进行刷新。数据刷新规则为:刷新后的元素中的当前周期的相对访问次数变为刷新前的当前周期的相对访问次数的一半,刷新后的元素中的当前周期的补偿访问次数变为0,刷新后元素中的上一周期的总访问次数变为刷新前的当前周期的相对访问次数与刷新前的上一周期的总访问次数之和的一半。

对频繁计数器集合进行刷新可以减弱上一周期数据的权重,进一步提高热点数据确定的准确性。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1