一种数据的窗口统计方法、装置及***
技术领域
本申请属于计算机数据处理领域,尤其涉及一种数据的窗口统计方法、装置及***。
背景技术
在搜索***中,常常需要统计过去一段时间内用户搜索最高的TOPN关键词,以捕捉用户的关注焦点。例如实时统计过去24小时内用户搜索次数最高的100个关键词。
在搜索统计中常用的搜索关键词统计方式包括采用加法模式和减法模式的窗口统计。所述的窗口统计指在对过去窗口时窗长度时间内段的数据值进行统计,生成当前统计时刻的统计结果。例如当前统计时刻2016-3-13 10:20“关键词A”的5分钟窗口统计可以指从2016-3-13 10:15到2016-3-13 10:20时间段内“关键词A”的总搜索次数。现有技术中常用的窗口统计方法包括加法模式的窗口统计。图1是现有技术中一种采用加法模式进行窗口统计的流程示意图。具体的如图1所示,在实施过程中,可以以分钟为单位时间,***每分钟将用户所搜索的关键词及关键词的搜索次数以搜索日志的方式存储在数据库中,如HBase(HBase是一个分布式的、面向列的开源数据库)。窗口统计时,在当前这一分钟统计时刻将过去24小时记录的每分钟的关键词及统计次数从HBase中查询出来。然后可以将查询出的过去24小时的搜索关键词及统计次数(24*60)累加,累加后的值加上当前这一分钟关键词及统计次数得到当前统计时刻关键词的24小时窗口统计值。进一步的,可以将所述当前统计时刻关键词的24小时窗口统计值按照关键词的搜索次数进行TOP100排序,得到当前统计时刻的搜索关键词TOP100。最后,可以实时更新当前这一分钟的搜索关键TOP100的记录信息。
而随着互联网信息技术的快速发展,用户单位时间内的关键词搜索量呈大幅上升趋势。一些业务***的搜索***中,两天内的搜索关键词可以达到百万数量级,每分钟搜索关键词可以达到2000个左右,甚至更高。相应的,数据库如HBase每天需要存储的数据达2000*24*60条。在上述加法模式的窗口统计中,***需要将大约2000*24*60*0.4K(某***中的每条数据大小)=1152MB数据加载到内存中进行计算。这样,在分钟级的窗口计算时需要将大约1G,甚至有些***达到2G或3G的庞大数据加载到内存进行计算处理,大大增加了***的处理风险和***开销。甚至,有些***限于处理能力不能再规定时间内将需要处理的数据加载到应用内存中,无法完成实时计算。同时,若采用现有技术中的减法模式的窗口统计方式,需要查询上一分钟所有关键词的累计值,以及24小时前所有关键词的累计值。即使按照每分钟1000条关键搜索的数据记录来算,在每分钟窗口统计时,***的QPS(QueryPer Second,QPS,每秒查询率)将达到1000*24*60/60=24000。并且需要将每分钟的关键词累计值更新至数据库HBase,***的TPS(Transaction Per Second,TPS,每秒事务处理量)也常常达到1万以上,对数据库的性能要求也会非常的高,相应的增加了***成本。
现有技术中采用的加法模式或减法模式的窗口统计方法,对数据存储有较高的TPS、QPS性能要求,在***窗口统计运行计算时本身需要较高的内存开销和网络开销,增加了***负载。并且随着业务的不断增加,采用现有技术中的窗口统计方法通常对***的服务器性能要求也越来越高,也相应的增加了数据处理成本。
发明内容
本申请目的在于提供一种数据的窗口统计方法、装置及***,可以有效降低***的内存开销,提高***性能,降低网络开销,提高窗口统计***的数据处理效率。
本申请提供的一种数据的窗口统计方法、装置及***是这样实现的:
一种数据的窗口统计方法,所述方法包括:
获取当前时刻业务维度的单位时间级数据,以及所述当前时刻的上一个单位时间业务维度的历史窗口统计结果;
从存储的历史单位时间级数据中查询出所述当前时刻的周期窗口负数据,根据所述周期窗口负数据和所述当前时刻业务维度的单位时间级数据计算得到当前时刻的业务维度增量数据;
基于所述历史窗口统计结果和所述当前时刻的业务维度增量数据确定所述当前时刻业务维度的窗口统计结果。
一种数据的窗口统计方法,所述方法包括:
获取当前时刻关键词的单位时间级数据,以及所述当前时刻的上一个单位时间关键词的历史窗口统计结果;
从存储的历史单位时间级数据中查询出所述当前时刻关键词的周期窗口负数据,根据所述周期窗口负数据和所述当前时刻关键词的单位时间级数据计算得到当前时刻的关键词增量数据;
基于所述历史窗口统计结果和所述当前时刻的关键词增量数据确定所述当前时刻关键词的窗口统计结果。
一种数据的窗口统计装置,所述装置包括:
数据获取模块,用于获取当前时刻业务维度的单位时间级数据,以及所述当前时刻的上一个单位时间业务维度的历史窗口统计结果;
增量数据计算模块,用于从存储的历史单位时间级数据中查询出所述当前时刻的周期窗口负数据,根据所述周期窗口负数据和所述当前时刻业务维度的单位时间级数据计算得到当前时刻的业务维度增量数据;
窗口统计结果模块,用于基于所述历史窗口统计结果和所述当前时刻的业务维度增量数据确定所述当前时刻业务维度的窗口统计结果。
一种数据的窗口统计***,所述***包括:
第一数据处理单元,用于获取统计数据,并对所述统计数据做单位时间的业务维度统计,生成业务维度在统计时刻的单位时间级数据,以及生成所述业务维度在所述统计时刻加上窗口时窗长度时刻的周期窗口负数据;还可以用于基于所述单位时间级数据及所述周期窗口负数据计算当前时刻窗口时窗长度的业务维度统计增量数据;
数据库,用于存储生成的单位时间级数据和相应的周期窗口负数据,以及存储第二数据处理单元计算得到的窗口统计结果;
第二数据处理单元,用于获取当前时刻业务维度的单位时间级数据,以及所述当前时刻的上一个单位时间业务维度的历史窗口统计结果;还用于从存储的历史单位时间级数据中查询出所述当前时刻的周期窗口负数据,根据所述周期窗口负数据和所述当前时刻业务维度的单位时间级数据计算得到当前时刻的业务维度增量数据;还用于基于所述历史窗口统计结果和所述当前时刻的业务维度增量数据确定所述当前时刻业务维度的窗口统计结果。
本申请提供的一种数据的窗口统计方法、装置及***,采用基于增量数据的方式实现数据的窗口统计。由于单位时间内增量数据相比于现有技术窗口统计需要处理的数据在数据量级别上要小很多,因此本申请中采用基于增量数据的方式完成统计数据的窗口统计,可以大幅度降低***的内存开销和网络开销,提升***的整体处理性能。在本申请实施方案中,可以计算得到当前时刻需要统计的单位时间内业务维度的增量数据,将该增量数据与上一个单位时间业务维度的历史窗口统计结果(如TOPN排序)的数据进行合并运算,从而得到当前时刻的窗口统计结果。这样,本申请基于单位时间内的增量数据实现窗口实时统计,可以有效降低***负载和网络开销,节约了***服务器和数据存储器的硬件成本。采用在做单位时间的业务维度统计时同时生成当前统计时间加上统计周期的周期时刻的负数统计值,存储在数据库中。这样,在达到所述周期时刻进行单位时间的窗口统计时,可以将上一个统计周期之前过期的业务维度统计数据抵消掉,有效保障本申请中计算业务维度统计增量数据的准确性。采用本申请实施方案可以有效降低***负载和网络开销,相应的节约了***服务器和数据存储器的硬件成本。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是现有技术中一种采用加法模式进行窗口统计的流程示意图;
图2是本申请提供的一种数据的窗口统计方法一种实施例的方法流程图;
图3是本申请生成的一种分钟级数据及相应周期窗口负数据的数据记录示意图;
图4是本申请提供的一种数据的窗口统计方法另一种实施例的方法流程图;
图5是本申请提供的一种数据的窗口统计方法另一种实施例的方法流程图;
图6是本申请提供的一种数据的窗口统计装置一种实施例的模块结构示意图;
图7是本申请提供的一种数据的窗口统计装置另一种实施例的模块结构示意图;
图8是本申请提供的一种数据的窗口统计装置另一种实施例的模块结构示意图;
图9是本申请提供的一种数据的窗口统计装置另一种实施例的模块结构示意图;
图10是本申请提供的一种数据的窗口统计***一种实施例的构架结构示意图;
图11是本申请提供的一种数据的窗口统计***一种实施例应用场景中的构架结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
图2是本申请所述一种数据的窗口统计方法一种实施例的方法流程图。虽然本申请提供了如下述实施例或附图所示的方法操作步骤或装置结构,但基于常规或者无需创造性的劳动在所述方法或装置中可以包括更多或者更少的操作步骤或模块结构。在逻辑性上不存在必要因果关系的步骤或结构中,这些步骤的执行顺序或装置的模块结构不限于本申请实施例提供的执行顺序或模块结构。所述的方法或模块结构的在实际中的装置或终端产品应用时,可以按照实施例或者附图所示的方法或模块结构进行顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。
具体的如图2所述,本申请一种实施例提供的一种数据的窗口统计方法可以包括:
S1:获取当前时刻业务维度的单位时间级数据,以及所述当前时刻的上一个单位时间业务维度的历史窗口统计结果。
本实施例以某搜索***中的关键词统计为应用场景进行说明。在本实施例应用场景中个,业务***可以对记录的数据做单位时间的业务维度统计,生成单位时间级数据以及所述单位时间级数据的周期窗口负数据。本申请所述的单位时间可以包括设定的记录的数据做周期性统计的单位时间,例如本实施例中搜搜***可以以分钟为单位时间,可以每一分钟对数据做一次分钟级的数据统计,生成当前分钟的搜索关键词分钟级数据。当然,所述的单位时间可以根据实际数据处理或场景、设计需求等进行自定义设置,如可以以小时为单位时间,或天、周等作为单位时间,然后进行相同的单位时间的业务维度统计,生成相应的单位时间级数据。在数据窗口统计中,一般的还会设置窗口统计的窗口时窗长度,该时窗口时窗长度可以为预先设置的进行窗口统计的时间段,如24小时,或者一周、一个月等。一般的,***可以以所述单位时间为时间间隔将记录的数据进行单位时间统计后存储到数据库中(统计一分钟内的关键词搜索记录并进行存储),在进行数据的实时窗口统计时,可以基于存储的单位时间级(如分钟级)进行窗口统计,因此,通常情况下进行窗口统计的窗口时窗长度大于***业务维度统计的单位时间,如关键词的分钟级统计、24小时的窗口统计。
本实施例可以以分钟为单位时间进行业务维度统计、以24小时为窗口统计的窗口时窗长度、以用户搜索的关键词为业务维度,执行每分钟统计过去24小时该使用搜索***进行搜索的TOP100关键词为应用场景进行说明。具体的,本实施例中可以将每分钟的窗口统计结果存储在“关键词TOP100分钟级结果计算表”中,然后可以根据当前分钟时刻的窗口统计结果实时更新该“关键词TOP100分钟级结果计算表”。因此,本申请实施例中可以获取需要处理的统计数据,然后可以对统计数据做关键词的业务维度统计,生成分钟级数据,可以将该分钟级数据存储在数据库HBase中。然后,在进行当前时刻业务维度的窗口统计时,可以获取所述当前时刻也为维度单位时间级数据,同时可以获取所述当前时刻的上一个单位时间业务维度的历史窗口统计结果,如计算当前时刻2016-3-12 10:20的“关键词TOP100分钟级结果计算表”,则可以获取2016-3-12 10:20***中关键词在这一分钟的分钟级数据,和上一分钟2016-3-12 10:19的历史窗口统计结果“关键词TOP100分钟级结果计算表”。
当然,本申请所述的业务维度可以根据具体的应用场景由作业人员指定设置,如本实施例应用场景中搜索***中可以以用户搜索的关键词为业务维度,其他的应用场景中所述的业务维度可以包括但不限于数据接口的流量、地理位置、访问源、指定关键字段等等,具体的可以根据窗口统计实际的业务数据处理场景进行设定。本实施例应用场景中可以以关键词为业务维度执行分钟级数据统计为例进行说明。
本申请中所述的统计数据可以包括数据操作、执行等生成的日志信息,如本实施例应用场景中所述统计数据可以包括搜索应用对搜索的关键词及搜索次数的原始日志信息。在本实施例中,可以每分钟实时获取关键词搜索的原始日志信息,然后根据当前分钟的原始日志信息生成当前时刻关键词的分钟级数据,并存储在数据库HBase中。
本申请实施例在进行当前时刻的实时窗口统计时,可以获取当前时刻业务维度的单位时间级数据,以及所述当前时刻的上一个单位时间业务维度的历史窗口统计结果。
S2:从存储的历史单位时间级数据中查询出所述当前时刻的周期窗口负数据,根据所述周期窗口负数据和所述当前时刻业务维度的单位时间级数据计算得到当前时刻的业务维度增量数据。
在本申请实施方案中,在做单位时间级数据统计时同时可以生成当前时刻加上窗口时窗长度后对应时刻的周期窗口负数据。具体的,本申请的一种实施例中,所述的周期窗口负数据可以包括取统计时刻T的统计值N的负数统计值-N作为统计时刻T加上设置的窗口时窗长度L的时刻(T+L)相应业务维度统计数据的取值。这样,本实施例通过设置窗口时窗长度,在进行实时窗口统计时,可以将窗口时窗长度之前的过期无效的统计数据抵消掉,实现业务维度增量数据的计算,保障本申请准确、有效的以业务维度增量数据的方式实现窗口统计。在本申请实施方案中,在做单位时间级数据统计时同时可以生成当前时刻加上窗口时窗长度后对应时刻的周期窗口负数据。所述的周期窗口负数据具体的设定或转换、生成方式可以根据统计数据类型或者场景需求进行设定。本申请实施例提供的一种实施方式中,所述当前时刻的周期窗口负数据包括:
S201:在所述当前时刻的上一个窗口统计时刻,基于所述上一个窗口统计时刻业务维度的单位时间级数据中业务维度统计值的负数值生成的所述业务维度在当前时刻的负数统计值。
具体的例如本实施例搜索应用中以关键词为业务维度统计的应用场景中,在获取的原始日志信息中当前时刻2016-3-12 10:20关键词“手机”一分钟的搜索次数统计值为10,那么可以生成的当前时刻2016-3-12 10:20的单位时间级数据中可以包括关键词“手机”搜索次数统计值为10的数据记录。同时,可以生成当前时刻2016-3-12 10:20加上窗口时窗长度24小时后的周期时刻2016-3-13 10:20关键词“手机”的周期窗口负数据,可以包括2016-3-13 10:20关键词“手机”搜索次数统计值为-10的数据记录。图3是本申请生成的一种分钟级数据及相应周期窗口负数据的记录示意图。当然,图3所示,对于所述当前时刻2016-3-12 10:20的其他关键词如“家电”、“iPhone SE”、“汽车”等可以分别根据原始日志信息做分钟级的统计,生成相应的单位时间级数据及相应的周期窗口负数据。如2016-3-1210:20关键词“家电”、,一分钟的搜索次数统计值分别为20,关键词“iPhone SE”一分钟的搜索次数统计值为0,可以记录当前时刻刻2016-3-12 10:20的24小时周期时刻2016-3-1210:20关键词“家电”的周期窗口负数据为-20,当然,本实施例应用场景中可以由于2016-3-12这一天未对外公开将要发行“iPhone SE”,在这一分钟仅有一次搜索。当然,如果有没有搜索记录,则可以没有“iPhone SE”搜索记录数据,或者将其搜索次数设置为0。
本申请实施例应用场景中在对统计数据做单位时间的关键词统计生成单位时间级数据时,可以相应的生成关键词在当前时间加窗口时窗长度时刻的负数统计值,并可以存储在数据库如HBase中。
本申请实施例在可以从数据库存储的历史单位时间级数据中查询出所述当前时刻的周期窗口负数据,然后可以根据所述周期窗口负数据和所述当前时刻业务维度的单位时间级数据计算得到当前时刻的业务维度增量数据。
具体的例如本实施例搜索***中的关键词统计的应用场景中,可以从数据库HBase存储的历史分钟级统计数据中查询出当前时刻2016-3-13 10:20中关键词“手机”一分钟的搜索次数统计值为35、关键词“家电”一分钟的搜索次数统计值为20、关键词“iPhoneSE”一分钟的搜索次数统计值为50。同时,数据库HBase中还记录了上一个窗口统计时刻2016-3-12 10:20的统计生成的在周期时刻2016-3-13 10:20的周期窗口负数据为关键词“手机”一分钟的搜索次数统计值为-10、关键词“家电”一分钟的搜索次数统计值为-25。然后可以将关键词做加法计算得到当前这一分钟2016-3-13 10:20的24小时窗口时窗长度的关键词增量数据可以包括:关键词“手机”24小时窗口增量值为35+(-10)=25,关键词“家电”24小时窗口增量值为20+(-25)=-5,关键词“iPhone SE”24小时窗口增量值为0+50=50。这样,由关键词搜索的增量数据可以看出,随着苹果手机SE即将上市,手机及SE型号搜索热度也随之增加。相对比较而言,家电在2016-3-12 10:20统计时刻的搜索次数为25次,在第二天2016-3-13 10:20统计时刻搜索次数为20次,相对下降了5次。由于本申请在2016-3-12 10:20统计时刻设置了窗口时窗长度24小时以后即2016-3-13 10:20关键词“家电”的周期窗口负数据,因此,在执行到2016-3-13 10:20进行窗口统计时可以准确统计出当前时刻关键词“家电”的24小时窗口增量值为-5。
本申请实施例应用场景中可以根据分钟级关键词统计生成的分钟级数据和相应加上24小时窗口时窗长度后的周期窗口负数据计算得到当前时刻的关键词增量数据。
S3:基于所述历史窗口统计结果和所述当前时刻的业务维度增量数据确定所述当前时刻业务维度的窗口统计结果。
显然,单位时间内的业务维度统计增量数据的计算量通常远小于窗口时窗长度中所有单位时间业务维度统计的数据计算量。本申请基于周期窗口负数据的实施方案消除掉了窗口时窗长度中的过期数据,因此可以基于计算得到的当前时刻窗口时窗长度的业务维度统计增量数据计算得到当前时刻的窗口统计结果。具体的,本申请中所述基于业务维度统计增量数据确定窗口统计结果可以根据具体的应用场景或设计窗口统计方式进行相应的计算得到。
本申请实施例提供的一种数据的窗口统计方法,采用基于增量数据的方式实现数据的窗口统计。由于单位时间内增量数据相比于现有技术窗口统计需要处理的数据在数据量级别上要小很多,因此本申请中采用基于增量数据的方式完成统计数据的窗口统计,可以大幅度降低***的内存开销和网络开销,提升***的整体处理性能。在本申请实施方案中,采用在处理单位时间的业务维度统计时同时生成当前统计时间加上统计周期(实施例中所述的窗口时窗长度)的周期时刻的负数统计值,存储在数据库中。这样,在达到所述周期时刻进行单位时间的窗口统计时,可以将早于所述周期时刻一个统计周期之前的过期的业务维度统计数据抵消掉,有效保障本申请中计算业务维度统计增量数据的准确性。采用本申请实施方案可以有效大幅度的降低***负载和网络开销,提高窗口统计的数据处理效率和服务器性能。
当然,在当前时刻的业务维度的窗口统计时,也可以同时生成当前时刻的周期窗口负数据,然后存储至数据库中,便于后续数据的实时窗口统计。因此,本申请所述一种数据的窗口统计方法的另一种实施例中,所述方法还可以包括:
S4:取所述当前时刻业务维度的单位时间级数据中业务维度统计值的负数值,以所述负数值作为所述业务维度在所述当前时刻加上设置的窗口时窗长度后对应的周期时刻的周期窗口负数据。
本申请的一种实施方式中,每次单位时间更新的业务维度窗口统计记录数据可以用于表示当前时刻实时的统计数据的窗口统计结果。例如上述实施例应用场景中,“HBase关键词窗口计算结果表”可以实时记录更新当前分钟时刻的24小时窗口统计关键词搜索统计结果数据,具体的可以包括过去24小时用户搜索了哪些关键词以及这些关键词的搜索次数等信息。因此,本申请所述一种数据的窗口统计方法的一种实施例中,所述基于所述历史窗口统计结果和所述当前时刻的业务维度增量数据确定所述当前时刻业务维度的窗口统计结果包括:
S301:从存储的历史业务维度窗口结果数据中查询出当前时刻在窗口统计时间段内的业务维度窗口结果数据,将所述业务维度窗口结果数据与所述业务维度增量数据合并运算后更新至所述历史业务维度窗口结果数据中。
图4是本申请提供的一种数据的窗口统计方法另一种实施例的方法流程图。存储的历史业务维度窗口结果数据中查询出当前时刻在窗口统计时间段内的业务维度窗口结果数据,将该业务维度窗口结果数据与所述业务维度增量数据合并运算,得到当前时刻的业务维度窗口结果数据,然后可以将当前时刻的业务维度窗口结果数据更新值所述存储的历史业务维度窗口结果数据中。本申请中所述的业务维度窗口时窗长度记录数据可以包括上述所述的“HBase关键词窗口计算结果表”的形式,也可包括其他形式存储计算的业务维度窗口结果数据。
本申请实施例中可以以存储记录的业务维度窗口结果数据表示当前时刻统计数据实时的窗口统计结果。具体的可以从设置的单位时间级的关键词窗口统计记录数据中查询出当前时刻的窗口时窗长度内的业务维度窗口时窗长度记录数据,将该窗口时窗长度内的历史业务维度窗口时窗长度记录数据和该窗口时窗长度内的业务维度统计增量数据进行合并,得到当前时刻更新后的窗口时窗长度内的业务维度窗口时窗长度记录数据。例如上述实施例应用场景所示,可以设置有记录24小时窗口统计的分钟级关键词搜索记录的“HBase关键词窗口计算结果表”,在当前时刻2016-3-13 10:20可以从所述“HBase关键词窗口计算结果表”中查询上一个单位时间2016-3-13 10:19的历史24小时窗口时窗长度的关键词窗口数据记录,假设包括关键词“手机”的24小时窗口搜索次数统计值15000、关键词“家电”的24小时窗口搜索次数统计值25000、关键词“iPhone SE”的24小时窗口搜索次数统计值50000。将查询出的历史关键词窗口数据记录分别与当前时刻2016-3-13 10:20的关键词增量数据25、-5、50相加,合并后当前时刻2016-3-13 10:20的24小时关键词窗口数据记录包括关键词“手机”的24小时窗口搜索次数统计值15025、关键词“家电”的24小时窗口搜索次数统计值24995、关键词“iPhone SE”的24小时窗口搜索次数统计值50050。然后将当前时刻2016-3-13 10:20合并后的关键窗口记录数据更新至“HBase关键词窗口计算结果表”中的关键词窗口记录数据中。
当然,在其他的一些应用场景中还可以对窗口统计进行TOP排序后得到最终的窗口统计结果。例如根据关键词搜索次数每分钟统计更新分钟机的关键词TOP100计算结果,筛选出用户热点关注的前N个关键词。本申请所述一种数据的窗口统计方法的一种实施例中,可以基于当前单位时间统计的业务维度统计增量数据和上一个单位时间的TOPN结果数据来计算当前单位时间的TOPN排序结果。因此,本申请所述一种数据的窗口统计方法的另一种实施例中,所述基于所述历史窗口统计结果和所述当前时刻的业务维度增量数据确定所述当前时刻业务维度的窗口统计结果包括:
S302:获取上一个单位时间的业务维度统计搜索排序结果,将所述上一个单位时间的业务维度统计搜索排序结果与所述当前时刻的业务维度统计增量数据合并运算后进行排序,得到当前时刻的业务维度统计搜索排序结果。
图5是本申请提供的一种数据的窗口统计方法另一种实施例的方法流程图。例如上述搜索应用中的关键词统计的应用场景中,可以以分钟为单位时间(当然,其他的应用场景中也可以以小时或天、周等为单位时间),可以从HBase数据库中将上一分钟的TOP100计算结果检索出来,然后与当前时刻计算出的关键词增量数据合并,然后重新排序,得到当前时刻最新的TOP100关键词搜索排序结果,并可以存储至设置的“关键词TOP100分钟级计算结果表”中。具体的,例如在09:55时刻TOP2结果为:“家电”搜索统计值为200、“手机”搜索统计值为100。在09:56时刻的“手机”24小时窗口关键增量数据的统计值变成150(当前09:56搜索的200次加上24小时前9:56搜索50次的周期窗口负数据-50),即在在当前时刻09:56,将上一分钟在09:55的TOP2和在09:56的窗口时窗长度增量数据合并后为:“手机”搜索统计值为100、“家电”搜索统计值为200、“手机”搜索统计值为150,三个数据合并后得到当前时刻09:56“手机”搜索统计值为150、“家电”搜索统计值为200。然后对这两个结果进行排序得到当前时刻09:56的TOPN为:“家电”搜索统计值为200、“手机”搜索统计值为150。
这样,基于业务维度统计增量数据进行当前时刻的TOPN排序,相比于现有技术中的例如加法模式或减法模式的窗口统计中大量的数据读取、请求、计算以及常常多达几个G的内存消耗,本申请实施例在计算单位时间级业务维度统计TOPN结果时可以大幅度降低***内存消耗和网络开销,显著提高窗口统计效率。
本申请上述实施例应用场景提供的实施方案在搜索***中进行数据的窗口统计计算时,一分钟窗口统计计算可以仅查询两次分钟级数据,QPS=2/60,假设每分钟搜索关键词2000个,查询数据量最大为2000*2*0.4=1.6MB数据,查询“HBase关键词窗口计算结果表”的QPS=2000*2/60≈66QPS,最后更新存储到HBase的处理数据负载为TPS=2000*2/60≈66TPS。本申请窗口统计时由于采用数量级远小于现有的增量数据方式,可以大幅度降低***内存开销,现有的例如分钟级统计时可能要加载1G或更高的数据到内存,一分钟内***可能处理不了或开销巨大,而采用本申请方法可以只要加载甚至几M内存数据就可以,可以完成一分钟的实时窗口统计。由此可见,本申请实施例提供的数据的窗口统计方法,采用基于增量数据的方式实现数据的窗口统计,由于单位时间内增量数据相比于现有技术窗口统计需要处理的数据在数据量级别上要小很多,因此本申请中采用基于增量数据的方式完成统计数据的窗口统计,可以大幅度降低***的内存开销和网络开销,提升***的整体处理性能。因此,本申请还提供一种可以应用于对关键词数据进行实时窗口统计的方法,具体的所述方法可以包括:
获取当前时刻关键词的单位时间级数据,以及所述当前时刻的上一个单位时间关键词的历史窗口统计结果;
从存储的历史单位时间级数据中查询出所述当前时刻关键词的周期窗口负数据,根据所述周期窗口负数据和所述当前时刻关键词的单位时间级数据计算得到当前时刻的关键词增量数据;
基于所述历史窗口统计结果和所述当前时刻的关键词增量数据确定所述当前时刻关键词的窗口统计结果。
当然,本申请上述实施例提供的实施方案可以应用于包括但不限于搜索***中的对搜索关键词数据进行窗口统计的应用场景。在其他的应用场景中仍然可以本申请所述的基于增量数据进行窗口统计的实施方案,例如流水账单的用户维度的窗口统计,数据库存储的业务数据的流量窗口统计等等。当然,在一些应用场景中,既可以包括对业务数据的窗口统计,也可以同时包括搜索业务的搜索关键词窗口统计。
本申请提供的所述数据的窗口统计方法可以应用到多种进行数据窗口统计的服务器***中,可以有效解决窗口统计如窗口统计值或TOP排序过程中对数据存储有较高的TPS、QPS性能要求和对服务器内存开销过高的问题。因此,本申请基于提供的所述一种数据的窗口统计方法提供一种数据的窗口统计装置。图6是本申请提供的一种数据的窗口统计装置一种实施例的模块结构示意图,如图6所示,所述装置可以包括:
数据获取模块101,可以用于获取当前时刻业务维度的单位时间级数据,以及所述当前时刻的上一个单位时间业务维度的历史窗口统计结果;
增量数据计算模块102,可以用于从存储的历史单位时间级数据中查询出所述当前时刻的周期窗口负数据,根据所述周期窗口负数据和所述当前时刻业务维度的单位时间级数据计算得到当前时刻的业务维度增量数据;
窗口统计结果模块103,可以用于基于所述历史窗口统计结果和所述当前时刻的业务维度增量数据确定所述当前时刻业务维度的窗口统计结果。
本申请实施例提供的一种数据的窗口统计装置,采用基于增量数据的方式实现数据的窗口统计。由于单位时间内增量数据相比于现有技术窗口统计需要处理的数据在数据量级别上要小很多,因此本申请中采用基于增量数据的方式完成统计数据的窗口统计,可以大幅度降低***的内存开销和网络开销,提升***的整体处理性能。在本申请实施方案中,采用在处理单位时间的业务维度统计时同时生成当前统计时间加上统计周期的周期时刻的负数统计值,存储在数据库中。这样,在达到所述周期时刻进行单位时间的窗口统计时,可以将早于所述周期时刻一个统计周期之前的过期的业务维度统计数据抵消掉,有效保障本申请中计算业务维度统计增量数据的准确性。
本申请所的周期窗口负数据可以包括***做业务维度的单位时间统计时生成的相应周期时刻的周期窗口负数据,所述的周期窗口负数据可以由本申请装置生成,也可以由***的其他模块装置生成存储在数据库中,供所述装置读取使用。在做每一次单位时间统计生成单位时间级数据时均可以相应的生成该数据的周期窗口负数据。因此,本申请所述装置的一种实施例中,所述当前时刻的周期窗口负数据可以包括:
在所述当前时刻的上一个窗口统计时刻,基于所述上一个窗口统计时刻业务维度的单位时间级数据中业务维度统计值的负数值生成的所述业务维度在当前时刻的负数统计值。
如前所述,在处理完当前时刻的窗口统计时,同时可以生成当前时刻在所述当前时刻加上设置的窗口时窗长度后对应的周期时刻的周期窗口负数据,以便于后续统计时刻的窗口统计时可以消除过期数据,准确计算增量数据。图7是本申请提供的一种数据的窗口统计装置另一种实施例的模块结构示意图。因此,本申请所述装置的另一种实施例中,所述装置还可以包括:
窗口负数据生成模块104,可以用于取所述当前时刻业务维度的单位时间级数据中业务维度统计值的负数值,以所述负数值作为所述业务维度在所述当前时刻加上设置的窗口时窗长度后对应的周期时刻的周期窗口负数据。
在本申请实施方案中,采用在处理单位时间的业务维度统计时同时生成当前统计时间加上统计周期的周期时刻的负数统计值,存储在数据库中。这样,在达到所述周期时刻进行单位时间的窗口统计时,可以将早于所述周期时刻一个统计周期之前的过期的业务维度统计数据抵消掉,有效保障本申请中计算业务维度统计增量数据的准确性。
图8是本申请提供的一种数据的窗口统计装置另一种实施例的模块结构示意图,如图8所示,所述装置的一种实施方式中,所述窗口统计结果模块103可以包括:
业务维度窗口计算结果单元1301,可以用于存储计算的历史业务维度窗口结果数据,以及从存储的历史业务维度窗口结果数据中查询出当前时刻在窗口统计时间段内的业务维度窗口结果数据,将所述业务维度窗口结果数据与所述业务维度增量数据合并运算后更新所述历史业务维度窗口结果数据。
本实施例所述的历史业务维度窗口结果数据可以包括上述所述的“HBase关键词窗口计算结果表”的形式,也可包括其他形式存储计算的统计窗口时间长度的业务维度统计搜索统计结果。“HBase关键词窗口计算结果表”可以实时记录更新当前分钟时刻的24小时窗口统计关键词搜索统计结果数据,具体的可以包括过去24小时用户搜索了哪些关键词以及这些关键词的搜索次数等信息。
在其他的一些应用场景中还可以对窗口统计数据进行TOP排序,生成最终当前时刻实时的窗口统计结果。例如根据关键词搜索次数每分钟统计更新分钟机的关键词TOP100计算结果,,筛选出用户热点关注的前N个关键词。本申请所述一种数据的窗口统计装置的一种实施例中,可以基于当前单位时间统计的业务维度统计增量数据和上一个单位时间的TOPN结果数据来计算当前单位时间的TOPN排序结果。图9是本申请提供的一种数据的窗口统计装置另一种实施例的模块结构示意图,如图9所示,所述装置的一种实施方式中,所述窗口统计结果模块103可以包括:
业务维度窗口排序结果单元1302,可以用于获取上一个单位时间的业务维度统计搜索排序结果,将所述上一个单位时间的业务维度统计搜索排序结果与所述当前时刻的业务维度统计增量数据合并运算后进行排序,得到当前时刻的业务维度统计搜索排序结果。
这样,基于业务维度统计增量数据进行当前时刻的TOPN排序,相比于现有技术中的例如加法模式或减法模式的窗口统计中大量的数据读取、请求、计算以及常常多达几个G的内存消耗,本申请实施例在计算单位时间级业务维度统计TOPN结果时可以大幅度降低***内存消耗和网络开销,显著提高窗口统计效率。
本申请实施例中所述关键词可以包括实时更新的不可预知性质关键词搜索的应用场景,例如搜索服务中用户每一分钟搜索的关键词可以认为是由用户决定的,***不可预知。在其他的应用场中,也可以实时获取业务数据,然后对指定业务维度下对每条业务数据中指定的关键字段进行搜索、统计,获取窗口统计结果,例如每天统计并更新所有用户最近一个月内购物数据记录中的支出金额,或者所有买家最近一个月成交的商品数量等。在进行类似这样的业务数据的窗口统计时,可以预先指定关键字段,然后对每条更新的业务数据进行指定关键字段的窗口统计,同样可以利用本申请实施方案所述的基于单位时间的增量数据进行窗口统计,大幅度减少处理的数据量,降低***内存开销和网络开销,提高***服务器性能。
本申请实施例提供的数据的窗口统计装置,采用基于增量数据的方式实现数据的窗口统计。由于单位时间内增量数据相比于现有技术窗口统计需要处理的数据在数据量级别上要小很多,因此本申请中采用基于增量数据的方式完成统计数据的窗口统计,可以大幅度降低***的内存开销和网络开销,提升***的整体处理性能。在本申请实施方案中,采用在处理单位时间的业务维度统计时同时生成当前统计时间加上统计周期的周期时刻的负数统计值,存储在数据库中。这样,在达到所述周期时刻进行单位时间的窗口统计时,可以将早于所述周期时刻一个统计周期之前的过期的业务维度统计数据抵消掉,有效保障本申请中计算业务维度统计增量数据的准确性。采用本申请实施方案可以有效大幅度的降低***负载和网络开销,提高窗口统计的数据处理效率和服务器性能。
如前所述,本申请提供的数据的窗口统计方法或装置可以用于搜索***中的服务器执行的窗口统计,这样,搜索***基于业务维度统计增量数据进行搜索数据的窗口统计获取窗口时窗长度内业务维度统计计算结果表或业务维度TOPN单位时间级计算结果等时,可以大幅度降低***的内存开销和网络开销,降低***负载,提高***中包括处理服务器和数据库的整体性能,相应的节约网络资源和硬件实施成本。因此,基于上述所述数据的窗口统计方法或装置,本申请提供一种数据的窗口统计***,图10是本申请提供的一种数据的窗口统计***一种实施例的构架结构示意图。具体的可以包括如搜索服务***或业务数据的窗口统计处理***等。具体的如图10所示,所述数据的窗口统计***可以包括:
第一数据处理单元201,可以用于获取统计数据,并对所述统计数据做单位时间的业务维度统计,生成业务维度在统计时刻的单位时间级数据,以及生成所述业务维度在所述统计时刻加上窗口时窗长度时刻的周期窗口负数据;还可以用于基于所述单位时间级数据及所述周期窗口负数据计算当前时刻窗口时窗长度的业务维度统计增量数据;
数据库202,可以用于存储生成的单位时间级数据和相应的周期窗口负数据,以及存储第二数据处理单元203计算得到的窗口统计结果;
第二数据处理单元203,可以用于获取当前时刻业务维度的单位时间级数据,以及所述当前时刻的上一个单位时间业务维度的历史窗口统计结果;还可以用于从存储的历史单位时间级数据中查询出所述当前时刻的周期窗口负数据,根据所述周期窗口负数据和所述当前时刻业务维度的单位时间级数据计算得到当前时刻的业务维度增量数据;还可以用于基于所述历史窗口统计结果和所述当前时刻的业务维度增量数据确定所述当前时刻业务维度的窗口统计结果。
当然,如前所述,在一些具体的应用场景中,可以以基于所述业务维度统计增量数据计算得到业务维度统计窗口计算结果或业务维度TOPN搜索排序结果。图11是本申请提供的一种数据的窗口统计***一种实施例应用场景的构架结构示意图。具体本申请所述***具体的一种实施例中,所述第二数据处理单元203被设置成用于执行下述中至少一种:
从存储的历史业务维度窗口结果数据中查询出当前时刻在窗口统计时间段内的业务维度窗口结果数据,将所述业务维度窗口结果数据与所述业务维度增量数据合并运算后更新所述历史业务维度窗口结果数据;
获取上一个单位时间的业务维度统计搜索排序结果,将所述上一个单位时间的业务维度统计搜索排序结果与所述当前时刻的业务维度统计增量数据合并运算后进行排序,得到当前时刻的业务维度统计搜索排序结果。
从数据库202存储的业务维度统计搜索排序结果中获取上一个单位时间的业务维度统计搜索排序结果,将所述上一个单位时间的业务维度统计搜索排序结果与所述当前时刻统计窗口的业务维度统计增量数据合并后进行排序,得到当前时刻的业务维度统计搜索排序结果,将所述当前时刻的业务维度统计搜索排序结果保存至所述数据库202中。
本申请提供的数据的窗口统计方法、装置及***,采用基于业务维度统计增量数据的方式实现数据的窗口统计,可以大幅降低***的内存开销,提高***性能,降低网络开销,提高窗口统计***的数据处理效率。
尽管本申请内容中提到关键词的业务维度统计、以数据表及HBase数据库方式存储数据、窗口统计时涉及到的数据计算方法、加法或减法模式的窗口统计等之类的数据存储、信息交互方式的描述,但是,本申请并不局限于必须是行业标准实、信息交互或计算标准或实施例所描述的情况。某些窗口统计方法、数据存储、信息交互或实施例描述的实施基础上略加修改后的实施方案也可以实现上述实施例相同、等同或相近、或变形后可预料的实施效果。应用这些修改或变形后的计算方法、信息交互和信息判断反馈方式、数据存储方式等,仍然可以属于本申请的可选实施方案范围之内。
虽然本申请提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。
上述实施例阐明的单元、装置或模块,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本申请时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。
本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内部包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构、类等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,移动终端,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。本申请可用于众多通用或专用的计算机***环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器***、基于微处理器的***、置顶盒、可编程的电子设备、网络PC、小型计算机、大型计算机、包括以上任何***或设备的分布式计算环境等等。
虽然通过实施例描绘了本申请,本领域普通技术人员知道,本申请有许多变形和变化而不脱离本申请的精神,希望所附的权利要求包括这些变形和变化而不脱离本申请的精神。