统计数据清理方法、装置、设备及存储介质与流程

文档序号:23090583发布日期:2020-11-27 12:42阅读:184来源:国知局
统计数据清理方法、装置、设备及存储介质与流程

本发明实施例涉及计算机技术领域,尤其涉及统计数据清理方法、装置、设备及存储介质。



背景技术:

目前,对于很多设备或应用程序来说,后台服务经常需要对各种类型的数据进行统计,以便对设备或应用程序等进行有针对性的优化。

数据统计过程一般是长时间存在的,随着时间的推移,一些陈旧的或者不需要再用到的统计资源需要及时清理,避免数据膨胀。

对于依赖具体的有状态的对象(一般具有独立的存储能力和明确的生命周期)进行的数据统计,一般只需要根据对象的生命周期是否结束就能进行相关资源清理。比如传输控制协议(transmissioncontrolprotocol,tcp)连接,连接断开就可以对连接的相关统计数据进行清理。

对于与有状态对象相反的无状态对象的数据统计,因没有明确的数据生命周期,因此清理时机不好确定。比如常见的用户数据报协议(userdatagramprotocol,udp)协议就是一种无状态的运输层协议,而高层的应用层对udp进行统计(如收发包等)时,自然无法通过udp的状态来决定什么时候对数据进行清理。针对无状态对象的数据统计,现有的统计数据清理方式一般包括以下两种:第一种,在到达设定时间或统计数据量达到设定阈值时,直接清理整个统计表中的所有统计数据,是现在媒体后台服务对udp收发包进行统计时采用的常见做法,但是全部删除的方式会影响到正在使用的统计项的准确性;第二种,为统计项增加访问时间字段,当有数据修改到统计项之后,把访问时间置为当前时间,定时全量扫描整个统计数据表查找超时的访问时间并删除对应统计数据,但是一次性扫描哈希表全量数据容易导致服务卡顿。

因此,现有的统计数据清理方案仍不够完善,需要改进。



技术实现要素:

本发明实施例提供了统计数据清理方法、装置、设备及存储介质,可以。

第一方面,本发明实施例提供了一种统计数据清理方法,基于主统计表和副统计表实现,该方法包括:

检测到统计数据的清理事件被触发,其中,在相邻两次检测到所述清理事件被触发之间,待统计的原始数据被统计至所述主统计表中,所述副统计表保持不变;

将所述副统计表中的第一统计条目取出,其中,所述第一统计条目中包含第一统计项和与所述第一统计项对应的第一统计值;

判断所述主统计表中是否存在包含所述第一统计项的统计条目,并根据判断结果对所述第一统计条目进行相应的清除处理。

第二方面,本发明实施例提供了一种统计数据清理装置,基于主统计表和副统计表实现,该装置包括:

清理事件触发检测模块,用于检测统计数据的清理事件是否被触发,其中,在相邻两次检测到所述清理事件被触发之间,待统计的原始数据被统计至所述主统计表中,所述副统计表保持不变;

统计条目取出模块,用于在检测到统计数据的清理事件被触发时,将所述副统计表中的第一统计条目取出,其中,所述第一统计条目中包含第一统计项和与所述第一统计项对应的第一统计值;

清除处理模块,用于判断所述主统计表中是否存在包含所述第一统计项的统计条目,并根据判断结果对所述第一统计条目进行相应的清除处理。

第三方面,本发明实施例提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如本发明实施例提供的统计数据清理方法。

第四方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例提供的统计数据清理方法。

本发明实施例中提供的统计数据清理方案,基于主统计表和副统计表实现,检测到统计数据的清理事件被触发时,将副统计表中的第一统计条目取出,判断主统计表中是否存在包含第一统计项的统计条目,并根据判断结果对第一统计条目进行相应的清除处理,其中,在相邻两次检测到清理事件被触发之间,待统计的原始数据被统计至主统计表中,副统计表保持不变,第一统计条目中包含第一统计项和与第一统计项对应的第一统计值。通过采用上述技术方案,采用主统计表和副统计表分别进行统计数据的存储,在一次清理事件被触发后到下一次清理事件被触发之前,待统计的原始数据被统计至主统计表中,而副统计表保持不变,即主统计表中的各统计项对应的统计值是动态更新的,可认为是即时统计数据,而副统计表中存储了较为陈旧的统计数据,相比于现有技术中仅存在单个完整的统计表的方案,在进行统计操作时,可避免对整个统计表进行操作,降低统计操作复杂度,同时根据统计项在主副统计表中的交叠情况仅针对副统计表中的陈旧统计数据进行清除处理,不仅降低清除操作的复杂度,还能够合理有效地保留即时统计数据,避免影响正在使用的统计项的准确性。

附图说明

图1为本发明实施例提供的一种统计数据清理方法的流程示意图;

图2为本发明实施例提供的又一种统计数据清理方法的流程示意图;

图3为本发明实施例提供的另一种统计数据清理方法的流程示意图;

图4为本发明实施例提供的一种统计数据清理过程示意图;

图5为本发明实施例提供的一种统计数据清理装置的结构框图;

图6为本发明实施例提供的一种计算机设备的结构框图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。此外,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。

图1为本发明实施例提供的一种统计数据清理方法的流程示意图,该方法可以由统计数据清理装置执行,其中该装置可由软件和/或硬件实现,一般可集成在计算机设备中。如图1所示,该方法包括:

步骤101、检测到统计数据的清理事件被触发,其中,在相邻两次检测到所述清理事件被触发之间,待统计的原始数据被统计至主统计表中,副统计表保持不变。

示例性的,可设置主统计表和副统计表,统计表具体表现形式不做限定,例如可以是哈希表。在主统计表和副统计表中,可存储统计条目,一个统计条目中可包含统计项和对应的统计值,以哈希表为例,一个统计条目对应一个键值对,统计项为key(键),统计值为value(值)。统计项可包括无状态数据对应的统计项,如基于udp协议的收包数或发包数等,也可包括有状态数据对应的统计项,如基于tcp协议的收包数或发包数等。当然,统计项还可包括其他项目,可根据实际需求设置。

示例性的,统计数据的清理事件的触发条件可根据实际需求进行设置。例如,可以按照固定周期进行周期性触发,也可根据实际情况不等间隔地触发(也即),还可以将检测到其他需要进行统计数据清理的情况(如主统计表和副统计表对应的存储空间达到或超过预设空间阈值等)的发生作为触发条件。

本发明实施例中,在相邻两次检测到所述清理事件被触发之间(为了便于说明,下文中将这段时间称为清理周期,可以理解的是,清理周期可以是固定的,也可以是动态变化的),待统计的原始数据(如底层实时获取到的或产生的数据,以基于udp协议的发包数为例,可以是底层检测到的当前发送了一个udp数据包)被统计至主统计表中,副统计表保持不变,即主统计表中的各统计项对应的统计值是动态更新的,可认为是即时数据,而副统计表中存储了较为陈旧的即将或可能超时的统计数据。另外,由于主统计表中和副统计表中的统计项一般不会完全一致,因此,在将待统计的原始数据统计到主统计表时,相比于现有技术中只存在单个完整统计表的方案来说,不需要遍历所有统计项,而仅在主统计表中查找该待统计的原始数据对应的统计项即可,从而提高数据统计效率。

步骤102、将所述副统计表中的第一统计条目取出,其中,所述第一统计条目中包含第一统计项和与所述第一统计项对应的第一统计值。

示例性的,第一统计条目可以包括副统计表中的任意一个或多个统计条目,具体数量不做限定,可以按照统计条目在副统计表中的排序依次单个或批量取出。副统计表中的各统计条目的排序规则可自由设置,例如可以按照统计项被创建的先后顺序进行排序,也可按照统计项对应的统计值最新更新时间进行排序等。第一统计条目被从副统计表中取出后,副统计表中当前不再存在第一统计条目,也即相当于将第一统计条目从副统计表中删除。而被取出的第一统计条目可以即时得到相应的清除处理或可以被放到缓存等位置等待后续清除处理。

步骤103、判断所述主统计表中是否存在包含所述第一统计项的统计条目,并根据判断结果对所述第一统计条目进行相应的清除处理。

示例性的,由于在两次清理事件被触发之间,新的待统计原始数据仅被统计到主统计表中,因此,主统计表和副统计表中的统计项交叠情况可以反映出一个统计项在过去的一段时间内的新增待统计原始数据情况,例如,是否存在对应的新增待统计原始数据,该统计项是否为新增统计项等等。当需要对包含第一统计项的第一统计条目进行清除处理时,可以根据第一统计项是否包含于主统计表中而进行有针对性的清除处理。

本发明实施例中提供的统计数据清理方法,基于主统计表和副统计表实现,检测到统计数据的清理事件被触发时,将副统计表中的第一统计条目取出,判断主统计表中是否存在包含第一统计项的统计条目,并根据判断结果对第一统计条目进行相应的清除处理,其中,在相邻两次检测到清理事件被触发之间,待统计的原始数据被统计至主统计表中,副统计表保持不变,第一统计条目中包含第一统计项和与第一统计项对应的第一统计值。通过采用上述技术方案,采用主统计表和副统计表分别进行统计数据的存储,在一次清理事件被触发后到下一次清理事件被触发之前,待统计的原始数据被统计至主统计表中,而副统计表保持不变,即主统计表中的各统计项对应的统计值是动态更新的,可认为是即时统计数据,而副统计表中存储了较为陈旧的统计数据,相比于现有技术中仅存在单个完整的统计表的方案,在进行统计操作时,可避免对整个统计表进行操作,降低统计操作复杂度,避免造成服务卡顿,同时根据统计项在主副统计表中的交叠情况仅针对副统计表中的陈旧统计数据进行清除处理,不仅降低清除操作的复杂度,避免造成服务卡顿,还能够合理有效地保留即时统计数据,避免影响正在使用的统计项的准确性。

在一些实施例中,所述根据判断结果对所述第一统计条目进行相应的清除处理,包括:若判断出所述主统计表中不存在包含所述第一统计项的统计条目,则将所述第一统计条目删除。这样设置的好处在于,当主统计表中不存在当前取出的统计项时,说明在上一个清理周期内,该统计项并未新增需要统计的原始数据,则该统计项以及对应的统计值已经比较陈旧,可能已经不再需要进行保存,因此,可直接将第一统计条目删除。

在一些实施例中,所述根据判断结果对所述第一统计条目进行相应的清除处理,包括:若判断出所述主统计表中存在包含所述第一统计项的第二统计条目,则将所述第一统计值累加至所述第二统计条目中的第二统计值上,以实现对所述第一统计项的统计更新。这样设置的好处在于,当主统计表中存在当前取出的统计项时,说明在上一个清理周期内,该统计项新增了需要统计的原始数据,则需要将副统计表中的第一统计值累加到主统计表中对应统计条目的第二统计值上,保证第一统计项对应统计值的实时准确性,同时,也达到了清除副统计表中的第一统计条目的效果。

在一些实施例中,在所述将副统计表中的第一统计条目取出之后,还包括:依次将所述副统计表中剩余的第三统计条目取出,并执行判断所述主统计表中是否存在包含第三统计项的统计条目的相关操作,直到在本次清理事件被触发后已取出的统计条目的数量达到预设数量阈值或所述副统计表被清空,其中,所述第三统计条目中包含第三统计项和与所述第三统计项对应的第三统计值。这样设置的好处在于,通过设置预设数量阈值,可以对副统计表中的统计条目进行分批清理,也即多轮清理,可以对每轮清理操作最多处理单项(即一个统计项)的数量进行限制,从而避免一次性全量对副统计表中的统计条目进行清除处理,避免程序卡顿的情况发生。

其中,第三统计条目的数量不做限定,可以根据预设数量阈值的大小来确定。一般的,假设预设数量阈值为n,则第三统计条目的数量为n-1。例如,副统计表中有100个统计条目,其中,排序第一的统计条目可以视为第一统计条目,若预设数量阈值为10,则排序第二至第十这9个统计条目均可视为第三统计条目。

在一些实施例中,该方法还可包括:若检测到在将所述副统计表中的第四统计条目取出后,所述已取出的统计条目的数量达到所述预设数量阈值,则接收到本次清理事件对应的继续清理指令时,将所述第四统计条目的下一个统计条目取出,并执行判断所述主统计表中是否存在包含下一统计项的统计条目的相关操作,其中,所述下一统计项包含于所述下一个统计条目中。这样设置的好处在于,若本轮清理操作已清理的统计条目已达到上限,则可在接收到本次清理事件对应的继续清理指令时继续后续统计条目的清理操作。需要说明的是,这里的第四统计条目可以认为是上一轮清理操作中的最后一个第三统计条目,如上述举例,排序第十的统计条目可视为第四统计条目,而排序第十一的统计条目可以视为第四统计条目的下一个统计条目。其中,继续清理指令的生成间隔可根据实际情况设置,一般可设置成足够清理预设数量阈值的统计条目的时间。可选的,继续清理指令的生成可以由时钟信号触发。

可以理解的是,可以利用多轮清理操作来实现将副统计表清空。在将副统计表清空后,可以将主统计表中的统计条目放入副统计表中,成为较陈旧的统计数据,而主统计表为空,继续新增原始数据的统计。

在一些实施例中,还可包括:若检测到所述副统计表被清空,则将所述主统计表和所述副统计表的身份互调。这样设置的好处在于,可以避免数据拷贝产生的性能损耗。

在一些实施例中,所述检测到统计数据的清理事件被触发,包括:在当前时刻距离上一次统计数据的清理事件被触发时刻的时间间隔达到预设时长阈值时,确定所述清理事件被触发。这样设置的好处在于,可以合理设置清理事件的触发条件,采用预设时长阈值来对最短超时时间进行限制,也即当经过一个清理周期后,可以认为副统计表中的数据至少已经存在了预设时长阈值,可认为已经达到超时时间,因此,可以进行清除处理。

在一些实施例中,还可包括:在确定预设时段内将待统计的原始数据统计至所述主统计表的统计操作的频率低于预设频率阈值的情况下,检测到所述主统计表中的第五统计条目中的第五统计项存在对应的待统计的原始数据时,若所述副统计表中存在与所述第五统计项对应的第六统计值,则将所述第六统计值累加至所述第五统计条目中的第五统计值上,以实现对所述第五统计项的统计更新。这样设置的好处在于,将待统计的原始数据统计至主统计表的统计操作可以认为是写操作,若写操作比较少的情况下,可以把单个统计项的统计值同步操作在数据输入过程中进行,也即在将待统计的原始数据统计到主统计表中的过程中进行,可以保证不会造成程序卡顿的情况下,使得数据同步流程更加迅速,效率更高。

在一些实施例中,还可包括:在检测到目标统计项对应的目标统计值获取事件被触发时,读取所述主统计表中与所述目标统计项对应的第一目标统计值,以及读取所述副统计表中与所述目标统计项对应的第二目标统计值;计算所述第一目标统计值和所述第二目标统计值的和,得到所述目标统计值。这样设置的好处在于,统计值获取操作(可认为是读操作)的执行时机可能是不确定的,因此,目标统计项可能同时存在于主统计表和副统计表中,同时读取主统计表和副统计表中对应的统计值并进行合并,可以获取到准确的目标统计值。

图2为本发明实施例提供的又一种统计数据清理方法的流程示意图,以主副统计表均为哈希表为例,如图2所示,该方法可包括:

步骤201、检测当前时刻距离上一次统计数据的清理事件被触发时刻的时间间隔是否达到预设时长阈值,若是,则执行步骤202;否则,重复执行步骤201。

示例性的,预设时长阈值可理解为清理周期,也即超时时间。可增加一个字段用于记录完成上一次清理事件(可认为是上一次完成主副哈希表之间的数据同步)时的时间戳,例如可记为同步完成时间戳(或简称同步时间戳),则本步骤中可以判断当前时刻距离同步完成时间戳之间的时间间隔是否达到预设时长阈值。

其中,在相邻两次检测到所述清理事件被触发之间,待统计的原始数据被统计至主统计表中,副统计表保持不变。

步骤202、将副统计表中的当前统计条目取出,其中,当前统计条目中包含当前统计项和与当前统计项对应的第一统计值。

示例性的,首次执行本步骤时,当前统计条目可以是副统计表中的第一个统计条目。再次执行本步骤时,当前统计条目可以是下一个统计条目。

步骤203、判断主统计表中是否存在包含当前统计项的统计条目,若是,则执行步骤204;否则,执行步骤205。

步骤204、将第一统计值累加至主统计表中当前统计项对应的第二统计值上,以实现对当前统计项的统计更新,执行步骤206。

步骤205、将当前统计条目删除,执行步骤206。

步骤206、判断副统计表是否被清空,若是,则返回执行步骤209;否则,执行步骤207。

步骤207、判断本轮清理操作已取出的统计条目的数量是否达到预设数量阈值,若是,则执行步骤208;否则,返回执行步骤202。

步骤208、判断是否接收到本次清理事件对应的继续清理指令,若是,则返回执行步骤202;否则,重复执行步骤208。

其中,继续清理指令可以由时钟信号周期性驱动生成。

步骤209、将主统计表和副统计表的身份互调,返回执行步骤201。

可选的,本步骤中,还可更新上述同步完成时间戳为当前时间戳。

示例性的,在上述流程中,若检测到新增的待统计的原始数据,则将该原始数据统计到主统计表中对应的统计项上。若检测到目标统计项对应的目标统计值获取事件被触发时,读取主统计表中与目标统计项对应的第一目标统计值,以及读取副统计表中与目标统计项对应的第二目标统计值,计算第一目标统计值和第二目标统计值的和,得到目标统计值。

本发明实施例提供的统计数据清理方法,基于主统计表和副统计表实现,即利用双缓冲区机制存储和同步数据,一块缓冲区存放即时数据,另一块存放即将或已经超时的数据。整个处理和清理过程为复杂度o(n)的操作,但是利用分块处理的思想,对数据分块分时段处理,避免一次性处理导致程序卡顿,也即时间均摊到了多次时钟驱动周期,由于每轮数据同步和清理的过程有数量限制,可以避免全量的数据清理判断带来的卡顿。数据输入时,只需要修改主统计表的数据,数据输出时,只需要读主副统计表中的数据并求和,读写均是复杂度为o(1)的操作,适用于对统计性能要求非常高的情况。另外,采用主副统计表身份切换的方式而不是数据拷贝的方式进行数据转移,可避免拷贝造成的性能损耗。

图3为本发明实施例提供的另一种统计数据清理方法的流程示意图,假设主统计表为主哈希表,副统计表为副哈希表。如图3所示,等待时钟信号的到来,在检测到时钟信号时,先判断同步时间戳是否超时,也即判断当前时刻距离同步时间戳之间的时间间隔是否达到预设时长阈值,若是,则进行本轮清理操作,否则继续等待下一个时钟信号。在进行本轮清理操作时,将本轮计数设置为0,判断本轮计数是否小于单轮最多处理数量(预设数量阈值),若小于,则继续判断副哈希表是否为非空,若非空,则进行单项数据同步,也即针对当前统计条目进行相应的清理操作,随后将本轮计数加一,继续判断本轮计数是否小于单轮最多处理数量,若不小于,则继续判断副哈希表是否为非空,若是非空,则等待下一个时钟信号,以便进行下一轮的清理操作,若不是非空,也即副哈希表为空,交换主副哈希表身份,并置同步时间戳为当前时间戳,并继续等待时钟信号。

为了更好地理解本发明实施例,下面进行举例说明,图4为本发明实施例提供的一种统计数据清理过程示意图。如图4所示,主统计表为主哈希表,副统计表为副哈希表。在最开始,主哈希表和副哈希表中均为空,清理周期记为t,一个清理周期内的每轮清理操作对应的操作周期为t。在第一个清理周期t1内,主哈希表中统计了4个统计项,分别为a、b、c和d,对应的统计值分别为a1、b1、c1和d1,清理事件被触发后,由于副哈希表为空,因此,主副哈希表互换身份。在第二个清理周期t2内,主哈希表中统计了2个统计项,分别为a和c,对应的统计值分别为a2和c2,等到清理事件被触发后(进入第三个清理周期t3),将a-a1这个统计条目取出,发现主哈希表中存在a,则将a1累加到a2上,随后将b-b1这个统计条目取出,发现主哈希表中不存在b,也即在上一个清理周期t2内,b并不存在新的待统计的原始数据,因此,b1成为较陈旧的统计数据,可以清除。假设预设数量阈值为2,则需要等待继续清理指令,在接收到继续清理指令后,再继续对c-c1和d-d1这两个条目进行清理,也即可经过2个t的时间将副哈希表清空。在等待过程中,若存在新的待统计的原始数据,则统计到主哈希表中,若检测到针对统计项c的统计值获取事件被触发时,读取主哈希表中的c2和副哈希表中的c1,将两者之和作为最终的统计值返回给需要读取统计值的对象。

图5为本发明实施例提供的一种统计数据清理装置的结构框图,该装置可由软件和/或硬件实现,一般可集成在计算机设备中,可通过执行统计数据清理方法来进行统计数据的清理。如图5所示,该装置基于主统计表和副统计表实现,包括:

清理事件触发检测模块501,用于检测统计数据的清理事件是否被触发,其中,在相邻两次检测到所述清理事件被触发之间,待统计的原始数据被统计至所述主统计表中,所述副统计表保持不变;

统计条目取出模块502,用于在检测到统计数据的清理事件被触发时,将所述副统计表中的第一统计条目取出,其中,所述第一统计条目中包含第一统计项和与所述第一统计项对应的第一统计值;

清除处理模块503,用于判断所述主统计表中是否存在包含所述第一统计项的统计条目,并根据判断结果对所述第一统计条目进行相应的清除处理。

本发明实施例中提供的统计数据清理装置,基于主统计表和副统计表实现,检测到统计数据的清理事件被触发时,将副统计表中的第一统计条目取出,判断主统计表中是否存在包含第一统计项的统计条目,并根据判断结果对第一统计条目进行相应的清除处理,其中,在相邻两次检测到清理事件被触发之间,待统计的原始数据被统计至主统计表中,副统计表保持不变,第一统计条目中包含第一统计项和与第一统计项对应的第一统计值。通过采用上述技术方案,采用主统计表和副统计表分别进行统计数据的存储,在一次清理事件被触发后到下一次清理事件被触发之前,待统计的原始数据被统计至主统计表中,而副统计表保持不变,即主统计表中的各统计项对应的统计值是动态更新的,可认为是即时统计数据,而副统计表中存储了较为陈旧的统计数据,相比于现有技术中仅存在单个完整的统计表的方案,在进行统计操作时,可避免对整个统计表进行操作,降低统计操作复杂度,同时根据统计项在主副统计表中的交叠情况仅针对副统计表中的陈旧统计数据进行清除处理,不仅降低清除操作的复杂度,还能够合理有效地保留即时统计数据,避免影响正在使用的统计项的准确性。

本发明实施例提供了一种计算机设备,该计算机设备中可集成本发明实施例提供的统计数据清理装置。图6为本发明实施例提供的一种计算机设备的结构框图。计算机设备600包括存储器601、处理器602及存储在存储器601上并可在处理器602上运行的计算机程序,所述处理器602执行所述计算机程序时实现本发明实施例提供的统计数据清理方法。

本发明实施例还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行本发明实施例提供的统计数据清理方法。

上述实施例中提供的统计数据清理装置、设备以及存储介质可执行本发明任意实施例所提供的统计数据清理方法,具备执行该方法相应的功能模块和有益效果。未在上述实施例中详尽描述的技术细节,可参见本发明任意实施例所提供的统计数据清理方法。

注意,上述仅为本发明的较佳实施例。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由权利要求范围决定。

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