本发明涉及数据统计
技术领域:
,特别涉及一种针对消息系统的数据统计方法及装置。
背景技术:
:随着网络技术的发展,更多的人选择利用网络来获取信息,对于发布这些信息的网站的服务器而言,在消息系统中产生了庞大的消息流,尤其是访问量比较巨大的网站服务器而言,在消息系统中产生的消息流更为庞大。为了更好的服务用户,运维人员需要对服务器接收的消息流中的某些信息进行统计,进而采取应对措施。因此,对消息流中的某些信息进行统计是十分必要的。目前,现有技术中针对消息系统中的消息流中的某些信息进行统计,采用的是先将服务器接收的消息流进行处理,把处理后的消息流存储到数据库中,然后利用SQL语句统计数据库中的信息,得到统计结果。应用现有技术,需要将消息中的数据写入数据库,然后针对数据库中存储的数据进行统计。但在实际应用中,网站的服务器接收消息的数量非常庞大,如果将这些消息中的数据存储到数据库中,将会占用大量的数据库的存储空间。技术实现要素:本发明实施例的目的在于提供一种针对消息系统的数据统计方法及装置,以减少数据统计过程中,对数据库存储空间的占用。为达到上述目的,本发明实施例公开了一种针对消息系统的数据统计方法,所述方法包括:将消息系统中的每一条消息抽象为一个虚拟表的一行记录;根据接收到的统计指令,对所述虚拟表中记录的数据进行统计。较佳的,所述将消息系统中的每一条消息抽象为一个虚拟表的一行记录,包括:将消息系统中的消息流按照预设时间窗口进行分段;针对每一段消息流,将该段消息流中的每一条消息抽象为一个虚拟表的一行记录;所述根据接收到的统计指令,对所述虚拟表中记录的数据进行统计,包括:根据当前接收到的统计指令,对当前虚拟表中记录的数据进行统计。较佳的,所述每一条消息包含的数据的格式符合键值对格式。较佳的,所述方法还包括:输出当前统计结果。较佳的,所述输出当前统计结果,包括:将当前统计结果输出到控制台和/或预设文件中和/或预设数据库中。为达到上述目的,本发明实施例还提供了一种针对消息系统的数据统计装置,所述装置包括:抽象模块和统计模块,其中,所述抽象模块,用于将消息系统中的每一条消息抽象为一个虚拟表的一行记录;所述统计模块,用于根据接收到的统计指令,对所述虚拟表中记录的数据进行统计。较佳的,所述抽象模块,具体用于:将消息系统中的消息流按照预设时间窗口进行分段;针对每一段消息流,将该段消息流中的每一条消息抽象为一个虚拟表的一行记录;所述统计模块,具体用于:根据当前接收到的统计指令,对当前虚拟表中记录的数据进行统计。较佳的,所述每一条消息包含的数据的格式符合键值对格式。较佳的,所述装置还包括输出模块,用于输出当前统计结果。较佳的,所述输出模块,具体用于:将当前统计结果输出到控制台和/或预设文件中和/或预设数据库中。本发明实施例提供了一种针对消息系统的数据统计方法及装置,方法包括:将消息系统中的每一条消息抽象为一个虚拟表的一行记录;根据接收到的统计指令,对所述虚拟表中记录的数据进行统计。应用本发明实施例,针对消息系统生成的虚拟表是只存在缓存中的,无需占用数据库的存储空间的,因此,应用本发明实施例,减少了数据统计过程中,对数据库存储空间的占用。当然,实施本发明的任一产品或方法必不一定需要同时达到以上所述的所有优点。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例提供的一种针对消息系统的数据统计方法的流程示意图;图2为本发明实施例提供的另一种针对消息系统的数据统计方法的流程示意图;图3为本发明实施例提供的一种针对消息系统的数据统计装置的结构示意图;图4为本发明实施例提供的另一种针对消息系统的数据统计装置的结构示意图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。为解决现有技术问题,本发明实施例提供了一种针对消息系统的数据统计方法及装置,下面首先就本发明实施例提供的一种针对消息系统的数据统计方法进行介绍。图1为本发明实施例提供的一种针对消息系统的数据统计方法的流程示意图,可以包括:S101:将消息系统中的每一条消息抽象为一个虚拟表的一行记录。具体的,可以将消息系统中的消息流按照预设时间窗口进行分段;针对每一段消息流,将该段消息流中的每一条消息抽象为一个虚拟表的一行记录。通常情况下,每一条消息包含的数据的格式符合键值对格式。在实际应用中,假设一个大型消息流的时长为30分钟,预设时间窗口为1分钟,该大型消息流就被分成了30段时长为1分钟的消息流,也可以把预设时间窗口设置为30分钟。假设,在当前时间窗口内接收到的当前消息流包含5条消息,每个消息包含4个键值对,如下所示:MassageID:50231,userID:zhangluzhi,videoID:1129876098,request_time:0.083MassageID:50232,userID:haiminxue,videoID:1129876095,request_time:0.211MassageID:50233,userID:zhangludu,videoID:1129870001,request_time:0.057MassageID:50234,userID:jiayibindun,videoID:1129870009,request_time:0.077MassageID:50235,userID:shihuanlen,videoID:1129875667,request_time:0.180将该段消息流中的每一条消息抽象为一个虚拟表的一行记录,该段消息流中共有5条消息,对应虚拟表中的5条记录。通常情况下,可以把每一条消息中的所有键值对对应的数据存储到虚拟表中,也可以将消息中的部分键值对对应的数据存储到虚拟表中。根据上述步骤,得到的虚拟表如表1所示:表1MessageIDuserIDvideoIDrequest_time50231zhangluzhi11298760980.08350232haiminxue11298760950.21150233zhangludu11298700010.05750234jiayibindun11298700090.07750235shihuanlen11298756670.180S102:根据接收到的统计指令,对所述虚拟表中记录的数据进行统计。具体的,根据当前接收到的统计指令,对当前虚拟表中记录的数据进行统计。在实际应用中,可以根据接收到的统计指令中包含的SQL(结构化查询语言)语句,统计S101中的虚拟表中MessageID、userID、videoID和request_time中的一种或多种。假设,用户需要的是针对当前信息流的平均request_time。S101中的虚拟表的平均request_time(响应时间):平均request_time=(0.083+0.211+0.057+0.077+0.180)/5=0.1216秒应用本发明图1所示实施例,针对消息系统生成的虚拟表是只存在缓存中的,无需占用数据库的存储空间的,因此,应用本发明实施例,减少了在针对消息系统中的消息中的数据统计过程中,对数据库存储空间的占用。在当前时间窗口的数据流进行统计结束后,用户可以更改统计指令中的SQL语句,再次发送统计指令。如果统计指令中的SQL语句要求统计userID(用户身份标识)号码的数量。在下一时间窗口内统计userID号码的数量。应用本发明图1所示实施例,可以在当前时间窗口结束时,结束统计过程,再重新接收统计指令,根据统计指令中的SQL语句,针对下一时间窗口的数据流进行数据统计,可以灵活的进行数据统计。图2为本发明实施例提供的另一种针对消息系统的数据统计方法的流程示意图。图2所示实施例在图1所示实施例的基础上增加了S103:输出当前统计结果。具体的,将当前统计结果输出到控制台和/或预设文件中和/或预设数据库中。将S101中的统计的平均request_time=0.1216秒输出到控制台和/或预设文件中和/或预设数据库中。具体的,假设,用户需要的是针对该大型消息流的平均request_time。根据输出到控制台和/或预设文件中和/或预设数据库中的30个统计结果,进行针对大型消息流的平均request_time的计算。在实际应用中,在当前时间窗口结束时,将针对当前消息流的统计结果输出到控制台和/或预设文件中和/或预设数据库中,再统计下一消息流的统计结果,直至将所有的消息流统计完成,针对该大型消息流,共输出30个统计结果。应用本发明图2所示实施例,将针对消息系统的统计结果输出到控制台和/或预设文件中和/或预设数据库中,可以使运维人员直观的看到针对消息系统中各消息流的统计结果,也可以让用户对输出到控制台和/或预设文件中和/或预设数据库中的统计结果进行处理。与上述方法实施例相对应,本发明还提供了一种针对消息系统的数据统计装置。图3为本发明实施例提供的一种针对消息系统的数据统计装置的结构示意图,包括:抽象模块301和统计模块302,其中,抽象模块301,用于将消息系统中的每一条消息抽象为一个虚拟表的一行记录。具体的,所述抽象模块,具体用于:将消息系统中的消息流按照预设时间窗口进行分段;针对每一段消息流,将该段消息流中的每一条消息抽象为一个虚拟表的一行记录。通常情况下,每一条消息包含的数据的格式符合键值对格式。统计模块302,用于根据接收到的统计指令,对所述虚拟表中记录的数据进行统计。具体的,根据当前接收到的统计指令,对当前虚拟表中记录的数据进行统计。应用本发明实施例图3所示实施例,针对消息系统生成的虚拟表是只存在缓存中的,无需占用数据库的存储空间的,因此,应用本发明实施例,减少了在针对消息系统中的消息中的数据统计过程中,对数据库存储空间的占用。应用本发明图3所示实施例,可以在当前时间窗口结束时,结束统计过程,再重新接收统计指令,根据统计指令中的SQL语句,针对下一时间窗口的数据流进行数据统计,可以灵活的进行数据统计。图4为本发明实施例提供的另一种针对消息系统的数据统计装置的结构示意图。图4所示实施例在图3所示实施例的基础上增加了输出模块303,用于输出当前统计结果。具体的,所述输出模块,具体用于:将当前统计结果输出到控制台和/或预设文件中和/或预设数据库中。应用本发明图4所示实施例,将针对消息系统的统计结果输出到控制台和/或预设文件中和/或预设数据库中,可以使运维人员直观的看到针对消息系统中各消息流的统计结果,也可以让用户对输出到控制台和/或预设文件中和/或预设数据库中的统计结果进行处理。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:ROM/RAM、磁碟、光盘等。以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。当前第1页1 2 3