一种报表统计方法、装置及系统与流程

文档序号:16263435发布日期:2018-12-14 21:45阅读:167来源:国知局
一种报表统计方法、装置及系统与流程

本发明涉及业务支撑技术领域,特别涉及一种报表统计方法、装置及系统。

背景技术

目前,业务支撑领域的报表系统主要是由业务运营支撑系统(business&operationsupportsystem,boss)提供,报表系统的总架构以c/s(客户端/服务器)架构为主,在客户端(终端)需要进行报表统计时,向服务器发送报表统计请求,服务器根据报表统计请求进行报表统计后,将统计结果发送给终端。需要进行报表统计的数据存储在服务器中,并且统计过程也在服务器中完成。

随着boss系统的发展,业务增长速度越来越快,对服务器带来了新的挑战,一方面需要存储的数据量不断增长,带来了数据存储方面的压力,另一方面请求报表统计的客户要求的统计速度也越来越快。

为了满足业务增长的需求,可以根据服务器类型的不同,对服务器进行垂直扩展和/或横向扩展,垂直扩展例如可以增加原有服务器的存储容量或计算能力,横向扩展例如可以是新增服务器。但是不论哪种扩展,需要的成本都是非常高的。另外因为需要统计的数据集中存放,在统计时需要遍历所有数据,因此单次统计速度几乎未得到提升,所以即使进行了扩展,也仅可以提高并发统计的速度,对于单次统计速度来说,效果不大。

另外,服务器的存储资源和计算资源供所有终端共用,存储数据量大,计算速度慢的情况,可能会将服务器的资源耗尽,影响服务器其他正常工作的需求。



技术实现要素:

本发明实施例公开了一种报表统计方法、装置及系统,用以解决现有的报表系统扩展成本高,统计速度慢,性能差的问题。

为达到上述目的,本发明实施例公开了一种报表统计方法,所述方法包括:

服务器接收终端发送的携带第一字段组的报表统计请求,其中所述第一字段组包括至少一个第一字段;

将所述第一字段组中的每个第一字段与预存的每个资源节点对应的第二字段组中的每个第二字段进行匹配,确定是否存在进行报表统计的目标资源节点;

如果是,将所述目标资源节点的标识信息和根据所述第一字段组生成的结构化查询语言sql语句发送给所述终端,使所述终端根据所述目标资源节点的标识信息,将所述sql语句发送给所述目标资源节点,使所述目标资源节点向所述终端发送报表统计结果。

进一步地,在将所述第一字段组中的每个第一字段与预存的每个资源节点对应的第二字段组中的每个第二字段进行匹配之前,所述方法还包括:

针对所述第一字段组中的每个第一字段,识别该第一字段所属的第一类别,判断是否保存有所述第一类别对应的分片信息;如果否,则进行后续步骤;

如果是,判断所述分片信息中是否存在与该第一字段匹配成功的第三字段;如果存在匹配成功的第三字段,针对所述第三字段对应的每个资源节点,进行后续步骤。

进一步地,如果不存在匹配成功的第三字段,或不存在进行报表统计的目标资源节点,所述方法还包括:

根据所述sql语句和自身预存的第一报表数据,进行报表统计,并将报表统计结果发送给所述终端。

进一步地,如果所述每个第一字段与预存的至少两个资源节点对应的第二字段组中的每个第二字段匹配成功,所述确定进行报表统计的目标资源节点包括:

根据所述至少两个资源节点的当前的属性信息,确定进行报表统计的目标资源节点。

进一步地,所述属性信息包括以下至少一种:

ip地址、网速、cpu利用率和内存容量。

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

针对每个资源节点,根据该资源节点的心跳频率,确定该资源节点是否为有效资源节点;如果否,将保存的该资源节点的标识信息及其对应的第二字段组中的每个第二字段删除。

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

接收每个终端发送的自身的属性信息;

针对每个终端,根据该终端的所述属性信息判断是否将该终端作为资源节点;如果是,将相应的第二报表数据发送给该终端,并根据发送的第二报表数据对应的每个第二字段,保存该终端的标识信息与每个第二字段构成的第二字段组的对应关系。

本发明实施例公开了一种报表统计系统,所述系统包括:第一终端、服务器和目标资源节点;

所述第一终端,用于向服务器发送携带第一字段组的报表统计请求,其中,所述第一字段组包括至少一个第一字段;

所述服务器,用于接收第一终端发送的携带第一字段组的报表统计请求;将所述第一字段组中的每个第一字段与预存的每个资源节点对应的第二字段组中的每个第二字段进行匹配,确定是否存在进行报表统计的目标资源节点;如果是,将所述目标资源节点的标识信息和根据所述第一字段组生成的结构化查询语言sql语句发送给所述第一终端;

所述第一终端,还用于根据所述目标资源节点的标识信息,将所述sql语句发送给所述目标资源节点;

所述目标资源节点,用于根据所述第一终端发送的所述sql语句和自身预存的报表数据,进行报表统计,并将报表统计结果发送给所述第一终端;

所述第一终端,还用于接收所述目标资源节点发送的报表统计结果。

进一步地,所述系统还包括:第二终端

所述第二终端,用于向服务器发送自身的属性信息;

所述服务器,还用于接收第二终端发送的自身的属性信息,根据该第二终端的所述属性信息判断是否将该第二终端作为资源节点;如果是,将相应的报表数据发送给该第二终端,并根据报表数据对应的每个第二字段,保存该第二终端的标识信息与每个第二字段构成的第二字段组的对应关系;

所述第二终端,还用于接收服务器发送的报表数据并保存。

本发明实施例公开了一种报表统计装置,所述装置包括:

接收模块,用于服务器接收终端发送的携带第一字段组的报表统计请求,其中所述第一字段组包括至少一个第一字段;

匹配确定模块,用于将所述第一字段组中的每个第一字段与预存的每个资源节点对应的第二字段组中的每个第二字段进行匹配,确定是否存在进行报表统计的目标资源节点;

发送模块,用于在匹配确定模块的匹配结果为是时,将所述目标资源节点的标识信息和根据所述第一字段组生成的结构化查询语言sql语句发送给所述终端,使所述终端根据所述目标资源节点的标识信息,将所述sql语句发送给所述目标资源节点,使所述目标资源节点向所述终端发送报表统计结果。

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

第一判断模块,用于针对所述第一字段组中的每个第一字段,识别该第一字段所属的第一类别,判断是否保存有所述第一类别对应的分片信息;当所述第一判断模块的判断结果为否时,触发匹配确定模块;

第二判断模块,用于当所述第一判断模块的判断结果为是时,判断所述分片信息中是否存在与该第一字段匹配成功的第三字段;如果第二判断模块的判断结果为是,针对所述第三字段对应的每个资源节点,触发匹配确定模块。

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

统计模块,用于在第二判断模块的判断结果为否时,或匹配确定模块的匹配结果为否时,根据所述sql语句和自身预存的第一报表数据,进行报表统计;

所述发送模块,还用于将报表统计结果发送给所述终端。

进一步地,所述匹配确定模块,具体用于如果所述每个第一字段与预存的至少两个资源节点对应的第二字段组中的每个第二字段匹配成功,根据所述至少两个资源节点的当前的属性信息,确定进行报表统计的目标资源节点。

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

节点管理模块,用于针对每个资源节点,根据该资源节点的心跳频率,确定该资源节点是否为有效资源节点;如果否,将保存的该资源节点的标识信息及其对应的第二字段组中的每个第二字段删除。

进一步地,

所述接收模块,还用于接收每个终端发送的自身的属性信息;

所述装置还包括:

分发保存模块,用于针对每个终端,根据该终端的所述属性信息判断是否将该终端作为资源节点;如果是,将相应的第二报表数据发送给该终端,并根据发送的第二报表数据对应的每个第二字段,保存该终端的标识信息与每个第二字段构成的第二字段组的对应关系。

本发明实施例公开了一种报表统计方法、装置及系统,所述方法包括:服务器接收终端发送的携带第一字段组的报表统计请求,其中所述第一字段组包括至少一个第一字段;将所述第一字段组中的每个第一字段与预存的每个资源节点对应的第二字段组中的每个第二字段进行匹配,确定是否存在进行报表统计的目标资源节点;如果是,将所述目标资源节点的标识信息和根据所述第一字段组生成的结构化查询语言sql语句发送给所述终端,使所述终端根据所述目标资源节点的标识信息,将所述sql语句发送给所述目标资源节点,使所述目标资源节点向所述终端发送报表统计结果。由于在本发明实施例中,服务器将报表统计请求中的每个第一字段与预存的每个资源节点对应的每个第二字段进行匹配,确定目标资源节点,通过目标资源节点向所述终端提供报表统计结果。而服务器只生成sql语句和确定目标资源节点,不进行报表统计节约了服务器的扩展成本,并且因为服务器将每个终端的报表统计请求分配给了对应的目标资源节点,而无需集中由服务器统一完成,因此提高了每次报表统计的速度。

附图说明

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

图1为本发明实施例1提供的一种报表统计过程示意图;

图2为本发明实施例3提供的一种报表统计过程示意图;

图3为本发明实施例提供的一种报表统计过程示意图;

图4为本发明实施例提供的一种确定资源节点的报表数据的示意图;

图5为本发明实施例7提供的一种报表统计系统结构图;

图6为本发明实施例提供的一种系统流程图;

图7为本发明实施例提供的一种报表统计装置结构图。

具体实施方式

为了节约服务器扩展成本,提高统计速度和性能,本发明实施例提供了一种报表统计方法、装置及系统。

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

实施例1:

图1为本发明实施例1提供的一种报表统计过程示意图,该过程包括以下步骤:

s101:接收终端发送的携带第一字段组的报表统计请求,其中所述第一字段组包括至少一个第一字段。

本发明实施例提供的报表统计方法应用于服务器。

服务器接收终端发送的报表统计请求,该报表统计请求中携带第一字段组,其中所述第一字段组包括至少一个第一字段。所述第一字段可以是统计时间,或统计时间段,例如,2017年1月3日,或2017年1月-2017年2月,可以是统计项目,例如,出生人口,也可以是统计地区,例如,天津、上海等。

s102:将所述第一字段组中的每个第一字段与预存的每个资源节点对应的第二字段组中的每个第二字段进行匹配,确定是否存在进行报表统计的目标资源节点,如果是,则进行s103,如果否,则输出提示信息。

服务器中预先保存有每个资源节点对应的第二字段组中的每个第二字段,具体地,可以是保存的每个资源节点的标识信息与每个第二字段构成的第二字段组的对应关系,可以将保存的每个资源节点的标识信息与每个第二字段构成的第二字段组的对应关系保存在资源节点索引表中。每个资源节点对应的第二字段组为该资源节点中保存的每张报表数据对应的所有字段的组合。

当服务器接收到终端发送的携带第一字段组的报表统计请求时,可以将所述第一字段组中的每个第一字段与预存的每个资源节点对应的第二字段组中的每个第二字段进行匹配,确定是否存在进行报表统计的目标资源节点。如果服务器确定不存在进行报表统计的目标资源节点,可以输出提示信息。

当某个资源节点对应的第二字段组包含第一字段组中的所有第一字段时,则认为所述第一字段组中的每个第一字段与预存的每个资源节点对应的第二字段组匹配成功,则将该资源节点确定为目标资源节点。

资源节点对应的第二字段组与该资源节点保存的报表数据有关。如果不存在匹配的,则说明没有资源节点中保存第一字段组对应的报表数据。如果存在匹配的,则说明对应的目标资源节点中保存有第一字段组对应的报表数据,可以进行报表统计。

s103:将所述目标资源节点的标识信息和根据所述第一字段组生成的sql语句发送给所述终端,使所述终端根据所述目标资源节点的标识信息,将所述sql语句发送给所述目标资源节点,使所述目标资源节点向所述终端发送报表统计结果。

如果服务器确定存在进行报表统计的目标资源节点,则将所述目标资源节点的标识信息发送给所述终端。并且服务器可以根据接收到的报表统计请求中的第一字段组生成sql语句,并将所述sql语句发送给所述终端。其中,服务器根据第一字段组生成sql语句的过程属于现有技术,在本发明实施例中对该过程不进行赘述。

服务器将所述目标资源节点的标识信息和根据所述第一字段组生成的sql语句发送给所述终端,使所述终端根据所述目标资源节点的标识信息,将所述sql语句发送给所述目标资源节点,所述目标资源节点根据所述sql语句进行报表统计,并向所述终端发送报表统计结果。

上述在确定目标资源节点时,如果仅有一个资源节点对应的第二字段组中包含所述第一字段组中的所有第一字段,则直接将该一个资源节点确定为目标资源节点。

针对每个资源节点,该资源节点中可能存储有多张报表数据,则该资源节点对应多个第二字段组,在进行匹配时,第一字段组可能只与一个第二字段组匹配成功,也可能与多个第二字段组匹配成功。如果与多个第二字段组匹配成功,则说明该资源节点可以根据多张报表进行报表数据的统计。

由于在本发明实施例中,服务器将报表统计请求中的每个第一字段与预存的每个资源节点对应的每个第二字段进行匹配,确定目标资源节点,通过目标资源节点向所述终端提供报表统计结果。而为服务器只生成sql语句和确定目标资源节点,不进行报表统计,节约了服务器的扩展成本,并且服务器将每个终端的报表统计请求分配给了对应的目标资源节点,而无需集中由服务器统一完成,因此提高了每次报表统计的速度。

实施例2:

为了提高确定是否存在进行报表统计的目标资源节点的速度,从而进一步提高报表统计的速度,在上述实施例的基础上,在本发明实施例中,在将所述第一字段组中的每个第一字段与预存的每个资源节点对应的第二字段组中的每个第二字段进行匹配之前,所述方法还包括:

针对所述第一字段组中的每个第一字段,识别该第一字段所属的第一类别,判断是否保存有所述第一类别对应的分片信息;如果否,则进行后续步骤;

如果是,判断所述分片信息中是否存在与该第一字段匹配成功的第三字段;如果存在匹配成功的第三字段,针对所述第三字段对应的每个资源节点,进行后续步骤。

因为服务器中保存的报表数据中一般都包含时间、项目、地区等字段,因此为了方便查询和统计,可以根据上述字段所属的类别,对报表数据进行分片。例如当字段的类别为地区时,可以将所有包含地区这一类别的字段所对应的报表数据进行分片,在该分片中所有的报表数据都包含地区的信息,并且,根据包含的地区的不同,针对每个分片保存对应的字段。

具体的,在本发明实施例中服务器可以记录针对哪些类别的字段保存有分片信息,并且在该分片信息中记录有对应的分片都包含哪些第三字段。另外,针对每个第三字段,服务器还保存有该第三字段对应的每个资源节点及每个资源节点对应的第二字段组中的每个第二字段。可以将每个分片对应的第三字段保存在分片索引表中。

如果服务器根据类别为“地区”进行了分片,则分片信息对应的第三字段可以是“天津”、“北京”等地区,服务器将保存的天津、北京等地区的报表数据进行分片处理,将每个地区作为第三字段。当第三字段为天津时,服务器中保存有包含字段“天津”的报表数据,以及对包含字段“天津”的报表数据进行统计的资源节点的标识信息,和每张报表数据对应的第二字段组,即保存有天津对应的每个资源节点及每个资源节点对应的第二字段组;当第三字段为北京时,服务器中保存有包含字段“北京”的报表数据,以及对包含字段“北京”的报表数据进行统计的资源节点的标识信息,和每张报表数据对应的第二字段组,即保存有北京对应的每个资源节点及每个资源节点对应的第二字段组。

当服务器接收到终端发送的携带第一字段组的报表统计请求后,可以确定第一字段组中的每个第一字段所属的类别,根据每个第一字段所属的类别以及保存的每个分片信息对应的类别,进行分片信息筛选,然后在筛选后的分片信息中确定目标资源节点。具体的,可以是针对所述第一字段组中的每个第一字段,识别该第一字段所属的第一类别,判断是否保存有所述第一类别对应的分片信息;如果保存有所述第一类别对应的分片信息,判断所述分片信息中是否存在与该第一字段匹配成功的第三字段;如果存在与该第一字段匹配成功的第三字段,针对所述第三字段对应的每个资源节点,将所述第一字段组中的每个第一字段与预存的所述第三字段对应的每个资源节点对应的第二字段组中的每个第二字段进行匹配,确定是否存在进行报表统计的目标资源节点。

当服务器确定存在与该第一字段匹配成功的第三字段时,该第三字段对应的分片可以称为目标分片。

服务器在确定分片信息对应的第三字段时,可以预先设定分片信息对应的类别,将该分片信息中的第二字段组中符合该类别的字段确定为该分片信息对应的第三字段。

如果服务器判断未保存任何一个第一字段对应的所述第一类别对应的分片信息,则说明未针对任何一个第一字段对应的第一类别进行分片,则可以直接将所述第一字段组中的每个第一字段与预存的每个资源节点对应的第二字段组中的每个第二字段进行匹配,确定是否存在进行报表统计的目标资源节点。

如果保存有所述第一类别对应的分片信息,但分片信息中未存在与所述第一类别对应的第一字段匹配成功的第三字段,则说明根据第一类别进行了分片,但是该第一类别对应的分片信息中不存在与该第一字段匹配成功的第三字段,也就不存在目标资源节点。

实施例3:

服务器在确定不存在目标资源节点时,为了为用户提供相应的统计结果,所述服务器还可以自身保存的报表数据进行报表统计,并将统计结果返回给终端。在上述各实施例的基础上,在本发明实施例中,如果不存在匹配成功的第三字段,或不存在进行报表统计的目标资源节点,所述方法还包括:

根据所述第一字段组生成的sql语句和自身预存的第一报表数据,进行报表统计,并将报表统计结果发送给所述终端。

在本发明实施例中,服务器如果确定不存在与该第一字段匹配成功的第三字段,或不存在进行报表统计的目标资源节点,则说明服务器没有将第一字段对应的报表数据存储到资源节点中,则服务器根据所述第一字段组生成的sql语句和自身预存的第一报表数据,进行报表统计,并将报表统计结果发送给所述终端。

服务器在确定不存在进行报表统计的目标资源节点时,可以是通过直接将第一字段组中的每个第一字段与预存的每个资源节点对应的第二字段组中的每个第二字段进行匹配确定的;

也可以是先判断未保存有所述第一类别对应的分片信息后,再通过将第一字段组中的每个第一字段与预存的每个资源节点对应的第二字段组中的每个第二字段进行匹配确定的;

还可以是先判断保存有所述第一类别对应的分片信息,并且所述分片信息中存在与该第一字段匹配成功的第三字段后,针对所述第三字段对应的每个资源节点,通过将第一字段组中的每个第一字段与预存的该第三字段对应的每个资源节点对应的第二字段组中的每个第二字段进行匹配确定的。

图2为本发明实施例3提供的一种报表统计过程示意图,该过程包括以下步骤:

s201:接收终端发送的携带第一字段组的报表统计请求,其中所述第一字段组包括至少一个第一字段。

s202:针对所述第一字段组中的每个第一字段,识别该第一字段所属的第一类别,判断是否保存有所述第一类别对应的分片信息,如果是,则执行s203,如果否,则执行s204。

s203:判断所述分片信息中是否存在与所述第一字段匹配成功的第三字段,如果是,则针对所述第三字段对应的每个资源节点,执行s204,如果否,则执行s206。

s204:将所述第一字段组中的每个第一字段与预存的每个资源节点对应的第二字段组中的每个第二字段进行匹配,确定是否存在进行报表统计的目标资源节点,如果是,则执行s205,如果否,则执行s206。

s205:将所述目标资源节点的标识信息和根据所述第一字段组生成的sql语句发送给所述终端,使所述终端根据所述目标资源节点的标识信息,将所述sql语句发送给所述目标资源节点,使所述目标资源节点向所述终端发送报表统计结果。

s206:根据所述第一字段组生成的sql语句和自身预存的第一报表数据,进行报表统计,并将报表统计结果发送给所述终端。

实施例4:

如果有至少两个资源节点对应的第二字段组中包含所述第一字段组中的所有第一字段,可以将所述至少两个资源节点中的任意一个资源节点确定为目标资源节点。为了使确定的目标资源节点的性能更优,提高统计性能。在上述各实施例的基础上,在本发明实施例中,如果所述每个第一字段与预存的至少两个资源节点对应的第二字段组中的每个第二字段匹配成功,所述确定进行报表统计的目标资源节点包括:

根据所述至少两个资源节点的当前的属性信息,确定进行报表统计的目标资源节点。

所述属性信息包括以下至少一种:ip地址、网速、cpu利用率和内存容量。

当所述属性信息为所述ip地址时,服务器可以根据所述终端的ip地址和所述至少两个资源节点的ip地址,确定与该终端距离最近的资源节点为目标资源节点;或,

当所述属性信息为网速时,服务器检测所述至少两个资源节点的网络速度,将网络速度最高的资源节点确定为目标资源节点;或,

当所述属性信息为cpu利用率和内存容量时,服务器检测所述至少两个资源节点的cpu利用率和内存容量,根据预设的加权算法在所述至少两个资源节点中确定目标资源节点;或

服务器根据所述终端的ip地址、所述至少两个资源节点的ip地址、所述至少两个资源节点的网速和所述至少两个资源节点的cpu利用率和内存容量,以及预设的加权算法,在所述至少两个资源节点中确定目标资源节点。

如图3所示的报表统计过程示意图,服务器接收终端发送携带第一字段组的报表统计请求,根据所述报表统计请求中的第一字段组生成sql语句,并根据分片索引表确定是否存在目标分片。如果不存在目标分片,则根据自身的报表数据和生成的sql语句进行报表统计,将报表统计结果发送给所述终端。

如果存在目标分片,则根据资源节点索引表确定是否存在目标资源节点。如果不存在目标资源节点,则根据自身的报表数据和生成的sql语句进行报表统计,将报表统计结果发送给所述终端。如果存在的可进行报表统计的资源节点为一个,则直接将该资源节点作为目标资源节点,并将该目标资源节点的标识信息和生成的sql语句发送给所述终端。如果存在的可进行报表统计的资源节点为至少两个,则根据资源节点的属性信息,选择一个资源节点作为目标资源节点,并将该目标资源节点的标识信息和生成的sql语句发送给所述终端。

实施例5:

当接收到报表统计请求后,服务器确定该报表统计请求对应的目标资源节点,在此之前,服务器需要将相应的终端确定为资源节点,并确定每个资源节点存储的报表数据,根据每个资源节点存储的数据提取字段信息进行保存,才能进行上述确定统计请求对应的目标资源节点的过程。在上述各实施例的基础上,在本发明实施例中,所述方法还包括:

接收每个终端发送的自身的属性信息;

针对每个终端,根据该终端的所述属性信息判断是否将该终端作为资源节点;如果是,将相应的第二报表数据发送给该终端,并根据第二报表数据对应的每个第二字段,保存该终端的标识信息与每个第二字段构成的第二字段组的对应关系。

在本发明实施例中,服务器在确定资源节点时,可以采用动态方式确定资源节点,即根据每个终端的属性信息确定是否将该终端确定为资源节点,具体的可以是,服务器接收每个终端发送的自身的属性信息;针对每个终端,根据该终端的所述属性信息判断是否将该终端作为资源节点。所述属性信息包括以下至少一种:ip地址、网速、cpu利用率和内存容量。

终端向服务器发送自身的属性信息可以是在发送报表统计请求时发送,也可以是按预设的周期发送。

当服务器确定该终端为资源节点时,可以将相应的第二报表数据发送给该终端,并根据第二报表数据对应的每个第二字段,保存该终端的标识信息与每个第二字段构成的第二字段组的对应关系。

服务器在确定资源节点对应的第二报表数据时,可以根据该资源节点的剩余存储容量以及报表数据占用的存储容量进行确定,每个报表数据占用的储存容量可能是不同的,可以先将每个报表数据占用的存储容量的大小进行排序,再进行报表数据分发,具体的确定过程在此不进行限定。

服务器在确定资源节点时,也可以采用静态方式确定资源节点,即根据用户的配置,保存每个资源接节点的标识信息。一般在报表统计业务中,统计具有周期性,在一个周期中,报表数据几乎是固定的,报表数据所占用的存储容量也就是固定的,因此可以针对报表数据占用的存储容量,从各地市选取固定数量的资源节点,根据每个资源节点存储的第二报表数据,保存该资源节点的标识信息与每个第二字段构成的第二字段组的对应关系。

服务器在确定资源节点时,也可以采用静态和动态相结合的方式进行确定,根据需求的总的资源节点的数量,确定第一数量和第二数量,其中第一数量和第二数量的和为总的数量,该第一数量和第二数量可以相同,也可以不同。用户根据所有的报表数据占用的储存容量,从各地市选取第一数量的资源节点将其配置到服务器中作为资源节点,但第一数量的资源节点并不能存储服务器中所有的报表数据,服务器可以再根据终端发送的自身的属性信息,确定第二数量的资源节点,以确保能够将所有的报表数据储存到对应的资源节点中。

在确定资源节点对应的报表数据时,服务器可以直接根据资源节点的剩余存储容量和每个报表数据占用的存储容量的大小进行确定。如果服务器对报表数据进行分片,根据每个分片中的报表数据占用的储存容量以及每个资源节点的剩余存储容量,确定由哪些资源节点存储该分片中的报表数据,然后将该分片中的报表数据分发给该对应的资源节点。

例如,如果每个资源节点的剩余存储容量都是a,将所有的报表数据进行分片时,分成了d个分片,每个分片中的报表数量b也是相同的,并且每张报表占用的存储容量c相同,则:资源节点的数量x=单张报表占用存储容量c*分片数d*每个分片报表数量b/资源节点的剩余存储容量a。

当存储某个分片中的报表数据的某个资源节点出现问题时,为了保证报表统计的正常运行,可以针对该分片中的报表数据保存多份,也就是将同一份报表数据分给至少两个的资源节点进行保存,当一个资源节点出现问题时,另外的资源节点可以进行报表统计。

将每个报表在分片中的保存的份数称为冗余度y,则需要的总的资源节点的数量s=x*y。

在对报表数据进行分片处理之前,可以根据报表统计口径,对报表数据进行整理生成中间数据,例如,根据时间或地区对报表数据进行调整。生成中间数据再进行分片处理,保证目标资源节点在进行报表数据统计时,尽可能在单个报表数据中统计,降低目标资源节点统计的复杂度。

如图4所示的确定资源节点的报表数据的示意图,将所有的报表数据,根据报表统计口径生成中间数据,根据区域性对中间数据进行分片处理,生成1-n个分片。针对分片1,将该分片1中的报表数据分发给1-m个资源节点。其中报表统计口径为报表数据中的某个字段。同样的,针对其他的分片,也同样存在上述过程,每个分片中的报表数据分发给对应的资源节点,其中每个分片对应的资源节点可以不相同,也可以部分或全部相同。

实施例6:

服务器确定了资源节点后,还可以对该资源节点进行管理,在上述各实施例的基础上,在本发明实施例中,所述方法还包括:

针对每个资源节点,根据该资源节点的心跳频率,确定该资源节点是否为有效资源节点;如果否,将保存的该资源节点的标识信息及其对应的第二字段组中的每个第二字段删除。

在本发明实施例中,资源节点会向服务器发送心跳检测包,针对每个资源节点,服务器中保存有接收该资源节点发送的心跳检测包的频率即该资源节点的心跳频率,如果服务器检测到接收的心跳检测包的频率与保存的频率不符合,则确定该资源节点不是有效资源节点,则说明该资源节点失效,不能进行报表统计,服务器将保存的该失效的资源节点的标识信息及该失效的资源节点对应的第二字段组中的每个第二字段删除。

同时还可以向所述失效的资源节点发送报表数据清除指令,使该失效的资源节点清除自身保存的报表数据,以便其他工作的需求。

实施例7:

图5为本发明实施例7提供的一种报表统计系统结构图,所述系统包括:第一终端51、服务器52和目标资源节点53;

所述第一终端51,用于向服务器52发送携带第一字段组的报表统计请求,其中,所述第一字段组包括至少一个第一字段;

所述服务器52,用于接收第一终端51发送的携带第一字段组的报表统计请求;将所述第一字段组中的每个第一字段与预存的每个资源节点对应的第二字段组中的每个第二字段进行匹配,确定是否存在进行报表统计的目标资源节点53;如果是,将所述目标资源节点53的标识信息和根据所述第一字段组生成的结构化查询语言sql语句发送给所述第一终端51;

所述第一终端51,还用于根据所述目标资源节点53的标识信息,将所述sql语句发送给所述目标资源节点53;

所述目标资源节点53,用于根据所述第一终端51发送的所述sql语句和自身预存的报表数据,进行报表统计,并将报表统计结果发送给所述第一终端51;

所述第一终端51,还用于接收所述目标资源节点53发送的报表统计结果。

本发明实施例提供的报表统计系统包括第一终端、服务器和目标资源节点。

当第一终端识别自身存在报表统计请求时,向服务器发送携带第一字段组的报表统计请求,其中所述第一字段组包括至少一个第一字段。其中所述第一字段组包括至少一个第一字段。所述第一字段可以是统计时间,或统计时间段,例如,2017年1月3日,或2017年1月-2017年2月,可以是统计项目,例如,出生人口,也可以是统计地区,例如,天津,上海等。

服务器中预先保存有每个资源节点对应的第二字段组中的每个第二字段,具体地,可以是保存的每个资源节点的标识信息与每个第二字段构成的第二字段组的对应关系,可以将保存的每个资源节点的标识信息与每个第二字段构成的第二字段组的对应关系保存在资源节点索引表中。每个资源节点对应的第二字段组为该资源节点中保存的每张报表数据对应的所有字段的组合。

当服务器接收到第一终端发送的携带第一字段组的报表统计请求时,可以将所述第一字段组中的每个第一字段与预存的每个资源节点对应的第二字段组中的每个第二字段进行匹配,确定是否存在进行报表统计的目标资源节点。如果服务器确定不存在进行报表统计的目标资源节点,可以输出提示信息。

当某个资源节点对应的第二字段组包含第一字段组中的所有第一字段时,则认为所述第一字段组中的每个第一字段与预存的每个资源节点对应的第二字段组匹配成功,则将该资源节点确定为目标资源节点。

资源节点对应的第二字段组与该资源节点保存的报表数据有关。如果不存在匹配的,则说明没有资源节点中保存第一字段组对应的报表数据。如果存在匹配的,则说明对应的目标资源节点中保存有第一字段组对应的报表数据,可以进行报表统计。

如果服务器确定存在进行报表统计的目标资源节点,则将所述目标资源节点的标识信息发送给所述第一终端。并且服务器可以根据接收到的报表统计请求中的第一字段组生成sql语句,并将所述sql语句发送给所述第一终端。其中,服务器根据第一字段组生成sql语句的过程属于现有技术,在本发明实施例中对该过程不进行赘述。

服务器将所述目标资源节点的标识信息和根据所述第一字段组生成的sql语句发送给所述第一终端,所述第一终端根据所述目标资源节点的标识信息,将所述sql语句发送给所述目标资源节点,所述目标资源节点根据所述第一终端发送的所述sql语句和自身预存的报表数据,进行报表统计,并将报表统计结果发送给所述第一终端,所述第一终端接收所述目标资源节点发送的报表统计结果进行显示。

上述服务器在确定目标资源节点时,如果仅有一个资源节点对应的第二字段组中包含所述第一字段组中的所有第一字段,则直接将该一个资源节点确定为目标资源节点。如果有至少两个资源节点对应的第二字段组中包含所述第一字段组中的所有第一字段,则可以将所述至少两个资源节点中的任意一个资源节点确定为目标资源节点。

针对每个资源节点,该资源节点中可能存储有多张报表数据,则该资源节点对应多个第二字段组,在进行匹配时,第一字段组可能只与一个第二字段组匹配成功,也可能与多个第二字段组匹配成功。如果与多个第二字段组匹配成功,则说明该资源节点可以根据多张报表进行报表数据的统计。

由于在本发明实施例中,服务器将报表统计请求中的每个第一字段与预存的每个资源节点对应的每个第二字段进行匹配,确定目标资源节点,通过目标资源节点向所述终端发送报表统计结果。而服务器只生成sql语句和确定目标资源节点,不进行报表统计,节约了服务器的扩展成本,并且服务器将每个终端的报表统计请求分配给了对应的目标资源节点,而无需集中由服务器统一完成,因此提高了每次报表统计的速度。

实施例8:

服务器接收到报表统计请求后,确定该报表统计请求对应的目标资源节点,在此之前,服务器需要将相应的终端确定为资源节点,并确定每个资源节点存储的报表数据,根据每个资源节点存储的数据提取字段信息进行保存,才能进行上述确定统计请求对应的目标资源节点的过程。在上述实施例7的基础上,在本发明实施例中,所述系统还包括:第二终端,所述第二终端,用于向服务器发送自身的属性信息;

所述服务器,还用于接收第二终端发送的自身的属性信息,根据该第二终端的所述属性信息判断是否将该第二终端作为资源节点;如果是,将相应的报表数据发送给该第二终端,并根据报表数据对应的每个第二字段,保存该第二终端的标识信息与每个第二字段构成的第二字段组的对应关系;

所述第二终端,还用于接收服务器发送的报表数据并保存。

在本发明实施例中,服务器在确定资源节点时,可以采用动态方式确定资源节点,即根据每个第二终端的属性信息确定是否将该第二终端确定为资源节点,具体的可以是,第二终端向服务器发送自身的属性信息,服务器接收每个第二终端发送的自身的属性信息;针对每个第二终端,根据该第二终端的所述属性信息判断是否将该第二终端作为资源节点。所述属性信息包括以下至少一种:ip地址、网速、cpu利用率和内存容量。

第二终端向服务器发送自身的属性信息可以是在发送报表统计请求时发送,也可以是按预设的周期发送。

当服务器确定该第二终端为资源节点时,可以将相应的第二报表数据发送给该第二终端,并根据第二报表数据对应的每个第二字段,保存该第二终端的标识信息与每个第二字段构成的第二字段组的对应关系。

服务器在确定资源节点对应的第二报表数据时,可以根据该资源节点的剩余存储容量以及报表数据占用的存储容量进行确定,每个报表数据占用的储存容量可能是不同的,可以先将每个报表数据占用的存储容量的大小进行排序,再进行报表数据分发,具体的确定过程在此不进行限定。

服务器在确定资源节点时,也可以采用静态确定的方式确定资源节点,即根据用户的配置,保存每个资源接节点的标识信息。一般在报表统计业务中,统计具有周期性,在一个周期中,报表数据几乎是固定的,报表数据所占用的存储容量也就是固定的,因此可以针对报表数据占用的存储容量,从各地市选取固定数量的资源节点,根据每个资源节点存储的第二报表数据,保存该资源节点的标识信息与每个第二字段构成的第二字段组的对应关系。

服务器在确定资源节点时,也可以采用静态和动态相结合的方式进行确定,根据需求的总的资源节点的数量,确定第一数量和第二数量,其中第一数量和第二数量的和为总的数量,该第一数量和第二数量可以相同,也可以不同。用户根据所有的报表数据占用的储存容量,从各地市选取第一数量的资源节点将其配置到服务器中作为资源节点,但第一数量的资源节点并不能存储服务器中所有的报表数据,服务器可以再根据第二终端发送的自身的属性信息,确定第二数量的资源节点,以确保能够将所有的报表数据储存到对应的资源节点中。

上述提到的第一终端和第二终端可以相同,也可以不同。

实施例9:

服务器确定了资源节点后,还可以对该资源节点进行管理,在上述实施例7和8的基础上,在本发明实施例中,如果所述终端为资源节点,所述终端,还用于向服务器发送心跳检测包;

所述服务器,还用于接收所述终端发送的心跳检测包,根据接收到心跳检测包的频率以及预设的目标频率,确定该终端是否为有效资源节点;如果否,将保存的该终端的标识信息及其对应的第二字段组中的每个第二字段删除。

在本发明实施例中,资源节点会向服务器发送心跳检测包,针对每个资源节点,服务器中保存有接收该资源节点发送的心跳检测包的频率,如果服务器检测到接收的心跳包的频率与保存的频率不符合,则确定该资源节点不是有效资源节点,则说明该资源节点失效,不能进行报表统计,服务器将保存的该失效的资源节点的标识信息及该失效的资源节点对应的第二字段组中的每个第二字段删除。

服务器还可以向所述失效的资源节点发送报表数据清除指令该失效的资源节点在接收到清楚指令后,清除自身保存的报表数据,以便其他工作的需求。

发送报表统计请求的终端可以是资源节点,也可以不是资源节点,当该终端为资源节点时,该终端可能是目标资源节点,也可能不是目标资源节点。

图6为本发明实施例提供的系统流程图,服务器确定资源节点,并对资源节点进行管理,服务器向资源节点发送报表数据。当终端向服务器发送报表统计请求时,服务器返回目标资源节点的标识信息和sql语句,终端根据资源节点的标识信息将sql语句发送给目标资源节点,目标资源节点根据自身保存的报表数据和接收到的sql语句,进行报表统计,并将报表统计结果发送给该终端。

根据上述各实施例的描述,可以总结出,服务器具有的功能为:资源接节点的管理,包括:心跳检测,性能评估;数据的分发,包括:分片处理,分发处理;目标资源节点的确定以及sql语句的生成等。

若终端为普通终端,其功能为:发送报表统计请求,定位目标资源节点,发送属性信息等。

若终端为资源节点,在普通终端的基础上,该终端还具有报表统计,和发送心跳检测包的功能。

图7为本发明实施例提供的一种报表统计装置结构图,所述装置包括:

接收模块71,用于服务器接收终端发送的携带第一字段组的报表统计请求,其中所述第一字段组包括至少一个第一字段;

匹配确定模块72,用于将所述第一字段组中的每个第一字段与预存的每个资源节点对应的第二字段组中的每个第二字段进行匹配,确定是否存在进行报表统计的目标资源节点;

发送模块73,用于在匹配确定模块的匹配结果为是时,将所述目标资源节点的标识信息和根据所述第一字段组生成的结构化查询语言sql语句发送给所述终端,使所述终端根据所述目标资源节点的标识信息,将所述sql语句发送给所述目标资源节点,使所述目标资源节点向所述终端发送报表统计结果。

所述装置还包括:

第一判断模块74,用于针对所述第一字段组中的每个第一字段,识别该第一字段所属的第一类别,判断是否保存有所述第一类别对应的分片信息;当所述第一判断模块74的判断结果为否时,触发匹配确定模块72;

第二判断模块75,用于当所述第一判断模块74的判断结果为是时,判断所述分片信息中是否存在与该第一字段匹配成功的第三字段;如果第二判断模块75的判断结果为是,针对所述第三字段对应的每个资源节点,触发匹配确定模块72。

所述装置还包括:

统计模块76,用于在第二判断模块75的判断结果为否时,或匹配确定模块72的匹配结果为否时,根据所述sql语句和自身预存的第一报表数据,进行报表统计;

所述发送模块73,还用于将报表统计结果发送给所述终端。

所述匹配确定模块72,具体用于如果所述每个第一字段与预存的至少两个资源节点对应的第二字段组中的每个第二字段匹配成功,根据所述至少两个资源节点的当前的属性信息,确定进行报表统计的目标资源节点。

所述装置还包括:

节点管理模块77,用于针对每个资源节点,根据该资源节点的心跳频率,确定该资源节点是否为有效资源节点;如果否,将保存的该资源节点的标识信息及其对应的第二字段组中的每个第二字段删除。

所述接收模块71,还用于接收每个终端发送的自身的属性信息;

所述装置还包括:

分发保存模块78,用于针对每个终端,根据该终端的所述属性信息判断是否将该终端作为资源节点;如果是,将相应的第二报表数据发送给该终端,并根据发送的第二报表数据对应的每个第二字段,保存该终端的标识信息与每个第二字段构成的第二字段组的对应关系。

本发明实施例公开了一种报表统计方法、装置及系统,所述方法包括:服务器接收终端发送的携带第一字段组的报表统计请求,其中所述第一字段组包括至少一个第一字段;将所述第一字段组中的每个第一字段与预存的每个资源节点对应的第二字段组中的每个第二字段进行匹配,确定是否存在进行报表统计的目标资源节点;如果是,将所述目标资源节点的标识信息和根据所述第一字段组生成的结构化查询语言sql语句发送给所述终端,使所述终端根据所述目标资源节点的标识信息,将所述sql语句发送给所述目标资源节点,使所述目标资源节点向所述终端发送报表统计结果。由于在本发明实施例中,服务器将报表统计请求中的每个第一字段与预存的每个资源节点对应的每个第二字段进行匹配,确定目标资源节点,通过目标资源节点向所述终端提供报表统计结果。而服务器只生成sql语句和确定目标资源节点,不进行报表统计节约了服务器的扩展成本,并且因为服务器将每个终端的报表统计请求分配给了对应的目标资源节点,而无需集中由服务器统一完成,因此提高了每次报表统计的速度。

对于系统/装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者一个操作与另一个实体或者另一个操作区分开来,而不一定要求或者暗示这些实体或者操作之间存在任何这种实际的关系或者顺序。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全应用实施例、或结合应用和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

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