CN104317820A - 报表的统计方法和装置 - Google Patents
报表的统计方法和装置 Download PDFInfo
- Publication number
- CN104317820A CN104317820A CN201410510715.1A CN201410510715A CN104317820A CN 104317820 A CN104317820 A CN 104317820A CN 201410510715 A CN201410510715 A CN 201410510715A CN 104317820 A CN104317820 A CN 104317820A
- Authority
- CN
- China
- Prior art keywords
- mirror list
- field
- storehouse
- field information
- report
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种报表的统计方法和装置。其中,该报表的统计方法包括:获取目标报表,目标报表为待统计的报表;根据目标报表确定目标报表的字段信息;获取已经完成写入操作的第一镜像表,第一镜像表包括一个或者多个,每个第一镜像表用于存储一个第一预设时间段内目标报表的字段信息对应的日志信息;以及根据第一镜像表对目标报表执行报表统计处理,得到报表统计结果。通过本发明,解决了相关技术中在报表统计时,报表***产生报表的效率低的问题。
Description
技术领域
本发明涉及互联网领域,具体而言,涉及一种报表的统计方法和装置。
背景技术
报表可以用于对事件进行初步统计,能够形象、直观地展现事件的相关信息。例如,在日常工作中,通过日报表、周报表、月报表可以将工作内容汇报给相关部门。
目前,产生报表的***主要有两种:1)纯实时性报表***,使用该种报表***,用户可以随时进行报表统计。纯实时性报表***设计简单,用于小数据统计时效率高;而用于大数据统计时,由于用户的请求需要等待很长时间才能得到响应结果,因此效率差。然而,随着网络的发展,海量日志信息成为必然趋势。2)按照预定跳时间进行统计的报表***,使用该种报表***,用户可以每隔预定跳时间进行报表统计。比如,每隔5分钟启动一次统计线程,对最近5分钟内的日志进行统计,并保存中间统计结果,这样,当客户需要生成报表时,可以根据这些中间统计结果来生成。该种报表***由于复用了中间统计结果,无需每次请求都进行报表统计,因此2)报表***要优于1)报表***,其产生报表的效率也远远超过1)报表***产生报表的效率,但是这种报表***也存在问题:
(1)日志数据一般都保存在含有大量数据的数据表中,如果每隔预定跳时间进行报表统计,从数据表中查找到该预定跳时间内的数据需要大量的时间,效率低。
(2)统计线程对数据表进行每隔预定跳时间的报表统计时,入库线程也不断往该数据表中写入数据,这样,统计线程会跟入库线程争用该数据表,不仅降低了数据的入库效率,而且还降低了报表的统计效率。
(3)原始的数据表中保存有大量的数据信息,而对报表而言,很多信息是不需要的,因此,直接使用原始的数据表进行报表统计,大量的噪声数据会导致统计效率降低。
针对相关技术中在报表统计时,报表***产生报表的效率低的问题,目前尚未提出有效的解决方案。
发明内容
本发明的主要目的在于提供一种报表的统计方法和装置,以解决在报表统计时,报表***产生报表的效率低的问题。
为了实现上述目的,根据本发明的一个方面,提供了一种报表的统计方法。该方法包括:获取目标报表,所述目标报表为待统计的报表;根据所述目标报表确定所述目标报表的字段信息;获取已经完成写入操作的第一镜像表,所述第一镜像表包括一个或者多个,每个所述第一镜像表用于存储一个第一预设时间段内所述目标报表的所述字段信息对应的日志信息;以及根据所述第一镜像表对所述目标报表执行报表统计处理,得到报表统计结果。
进一步地,根据所述目标报表确定所述目标报表的字段信息之后,所述统计方法还包括:根据所述字段信息创建第二镜像表,所述第二镜像表用于存储第二预设时间段内所述目标报表的所述字段信息对应的日志信息,所述第二预设时间段以当前时刻为起点,且与所述第一预设时间段不重叠;在所述第二预设时间段内,获取所述字段信息对应的日志信息;以及将所述字段信息对应的日志信息写入所述第二镜像表中。
进一步地,所述目标报表存储在报表库中,所述字段信息对应的字段存储在字段库中,在根据所述字段信息创建第二镜像表之前,所述统计方法还包括:更新所述报表库和所述目标报表;以及更新所述字段库和所述字段信息,其中,根据更新后的字段信息创建所述第二镜像表。
进一步地,所述第一预设时间段包括多个,在更新所述报表库和所述目标报表之后,所述统计方法还包括:将更新后的报表库存储至属性文件中,在更新所述字段库和所述字段信息之后,所述统计方法还包括:将更新后的字段库存储至所述属性文件中。
进一步地,根据所述第一镜像表对所述目标报表执行报表统计处理,得到报表统计结果包括:根据所述第一镜像表确定与所述第一镜像表相对应的报表,所述与所述第一镜像表相对应的报表为所述目标报表;以及对所述与所述第一镜像表相对应的报表执行报表统计处理,得到报表统计结果。
为了实现上述目的,根据本发明的另一方面,提供了一种报表的统计装置。该装置包括:第一获取单元,用于获取目标报表,所述目标报表为待统计的报表;确定单元,用于根据所述目标报表确定所述目标报表的字段信息;第二获取单元,用于获取已经完成写入操作的第一镜像表,所述第一镜像表包括一个或者多个,每个所述第一镜像表用于存储一个第一预设时间段内所述目标报表的所述字段信息对应的日志信息;以及执行单元,用于根据所述第一镜像表对所述目标报表执行报表统计处理,得到报表统计结果。
进一步地,所述的报表的统计装置还包括:创建单元,用于根据所述目标报表确定所述目标报表的字段信息之后,根据所述字段信息创建第二镜像表,所述第二镜像表用于存储第二预设时间段内所述目标报表的所述字段信息对应的日志信息,所述第二预设时间段以当前时刻为起点,且与所述第一预设时间段不重叠;第三获取单元,用于在所述第二预设时间段内,获取所述字段信息对应的日志信息;以及写入单元,用于将所述字段信息对应的日志信息写入所述第二镜像表中。
进一步地,所述目标报表存储在报表库中,所述字段信息对应的字段存储在字段库中,所述统计装置还包括:第一更新单元,用于在根据所述字段信息创建第二镜像表之前,更新所述报表库和所述目标报表;以及第二更新单元,用于更新所述字段库和所述字段信息,其中,所述创建单元还用于根据更新后的字段信息创建所述第二镜像表。
进一步地,所述第一预设时间段包括多个,所述统计装置还包括:第一存储单元,用于在更新所述报表库和所述目标报表之后,将更新后的报表库存储至属性文件中;以及第二存储单元,用于在更新所述字段库和所述字段信息之后,将更新后的字段库存储至所述属性文件中。
进一步地,所述执行单元包括:确定模块,用于根据所述第一镜像表确定与所述第一镜像表相对应的报表,所述与所述第一镜像表相对应的报表为所述目标报表;以及执行模块,用于对所述与所述第一镜像表相对应的报表执行报表统计处理,得到报表统计结果。
通过本发明,采用获取目标报表,目标报表为待统计的报表;根据目标报表确定目标报表的字段信息;获取已经完成写入操作的第一镜像表,第一镜像表包括一个或者多个,每个第一镜像表用于存储一个第一预设时间段内目标报表的字段信息对应的日志信息;以及根据第一镜像表对目标报表执行报表统计处理,得到报表统计结果,解决了在报表统计时,报表***产生报表的效率低的问题,进而达到了提高报表的产生效率的效果。
附图说明
构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的报表的统计方法的流程图;
图2是根据本发明实施例的基于镜像表的报表***的拓扑图;以及
图3是根据本发明实施例的报表的统计装置的示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
为了使本领域的技术人员更好的理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,在本领域普通技术人员没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明的保护范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含。
根据本发明的实施例,提供了一种报表的统计装置,该报表的统计装置用于先将报表按照预设时间间隔(即,预设时间段)通过入库线程入库至镜像表中,再对每个已经完成写入操作的镜像表对应的报表执行报表统计处理,以避免入库线程争用缓存线程所使用的报表数据表。
图1是根据本发明实施例的报表的统计方法的流程图。如图1所示,该方法包括如下的步骤S102至步骤S108:
步骤S102,获取目标报表,目标报表为待统计的报表。
具体地,在报表统计线程中,可以通过查找存储报表的报表库来获取目标报表。优选地,在查找报表库中的目标报表时,可以检测查找到的准目标报表是否为正在启用的报表。如果检测出查找到的准目标报表为正在启用的报表,则获取该准目标报表,并将其作为目标报表;如果检测出查找到的准目标报表为未启用的报表,则不获取该准目标报表。这样,可以滤除冗余的目标报表,提高目标报表的统计效率。
需要说明的是,目标报表可以用于存储日志等的相关信息。具体地,目标报表可以通过字段记录日志等的相关信息。其中,每个目标报表可以具有一个或者多个字段,不同的字段可以对应不同的日志等的相关信息。进一步地,字段可以存储在字段库中,字段库中的所有字段均为不重复的字段。这样,可以节约字段库资源,防止字段重复存储导致字段库资源匮乏。
步骤S104,根据目标报表确定目标报表的字段信息。
具体地,首先,可以通过解析目标报表,得到解析结果,并从解析结果中获取该目标报表的所有的字段,然后,针对每个字段查找字段库,得到每个字段所对应的字段信息。
步骤S106,获取已经完成写入操作的第一镜像表。
需要说明的是,第一镜像表可以包括一个或者多个,每个第一镜像表都可以用于存储一个第一预设时间段内目标报表的字段信息对应的日志信息。任意两个第一镜像表所对应的第一预设时间段各不相同。也即,在入库线程中,每隔一个第一预设时间段,可以创建一个第一镜像表,并且每个第一镜像表可以用于存储与之相对应的第一预设时间段内的日志等的相关信息。
例如,假设第一预设时间段的时长为5分钟,在入库线程中,可以每隔5分钟创建一个第一镜像表,并将与该5分钟对应的报表入库至这个第一镜像表中。
步骤S108,根据第一镜像表对目标报表执行报表统计处理,得到报表统计结果。
具体地,可以根据第一镜像表对应的报表库中的所有的目标报表执行报表统计处理,得到报表统计结果(即,中间统计结果)。优选地,在得到报表统计结果之后,可以将其存储至报表数据表中,这样,数据表中的报表统计结果可以在下次报表统计时被复用,达到提高报表统计效率的效果。
通过本发明,采用获取目标报表,目标报表为待统计的报表;根据目标报表确定目标报表的字段信息;获取已经完成写入操作的第一镜像表,第一镜像表包括一个或者多个,每个第一镜像表用于存储一个第一预设时间段内目标报表的字段信息对应的日志信息;以及根据第一镜像表对目标报表执行报表统计处理,得到报表统计结果,解决了在报表统计时,报表***产生报表的效率低的问题,进而达到了提高报表的产生效率的效果。
优选地,在本发明实施例中,根据目标报表确定目标报表的字段信息之后,该统计方法还可以包括:
S2,根据字段信息创建第二镜像表,第二镜像表用于存储第二预设时间段内目标报表的字段信息对应的日志信息,第二预设时间段以当前时刻为起点,且与第一预设时间段不重叠。
需要说明的是,第一镜像表与第二镜像表为同一类型的镜像表,第一预设时间段与第二预设时间段可以为时间长度相等的时间段,但是两个时间段的起点时刻不同,且两个时间段内的时间不重合。第一镜像表用于存储在第一时间段内入库的日志报表,第二镜像表用于存储在第二时间段内入库的日志报表。
S4,在第二预设时间段内,获取字段信息对应的日志信息。
S6,将字段信息对应的日志信息写入第二镜像表中。
其中,第二预设时间段为入库线程时间段。在入库线程之前,报表***可以执行缓存线程。在缓存线程中,可以每隔一个预设时间段(如,第一预设时间段,或者第二预设时间段)获取一次当前时间启用的所有报表及这些报表所对应的所有字段,并根据这些字段从网络设备中读取日志信息。例如,可以每5分钟获取一次当前时刻正在启用的所有报表及其对应的所有字段。之后,根据获取的报表及其对应的字段将日志缓存至缓存文件中,进一步地,可以将该缓存文件存储至缓存文件夹中。至此,报表***由缓存线程进入入库线程,并将前述的缓存文件和缓存文件夹提交至入库线程已将缓存文件中的日志信息入库,也即,将缓存文件中的日志信息写入第二镜像表中。
通过本发明实施例,由于第二镜像表为正在进行写入操作的镜像表,而第一镜像表为已经完成写入操作的镜像表,也即,采用对报表***中的日志信息实行分表存储的方式,按照第二预设时间段、第一预设时间段等进行存储,每个镜像表用于存储一个时间长度(如,心跳时间长度)的日志信息。这样,避免了日志数据争用同一个数据表(如,第一镜像表或第二镜像表),并且无需对数据表进行锁表处理。由于镜像表中的日志信息是该镜像表对应的预设时间段内的所有日志信息,因此,统计线程每次对该镜像表进行报表统计时,无需查找整个大的数据表就可以直接进行报表统计了,提高了报表统计的效率。
优选地,在本发明实施例中,目标报表存储在报表库中,字段信息对应的字段存储在字段库中,在根据字段信息创建第二镜像表之前,该统计方法还可以包括:
S8,更新报表库和目标报表,得到更新后的报表库和更新后的目标报表。
S10,更新字段库和字段信息,得到更新后的字段库和更新后的字段信息。
其中,根据更新后的字段信息创建第二镜像表。
由于用户不仅可以选择启用或者禁用指定的报表,并且还可修改(如,添加、删除)报表,以及添加或者删除报表中的字段信息,因此,采用更新报表库和目标报表以及字段库和字段信息,可以简化报表***中镜像表的结构,并且只对用户启用的报表才获取创建这些报表的镜像表所需要的字段,并使用这些字段动态地创建镜像表,摒除了海量冗余信息,提高了检索效率。实验表明,用户启用的报表所占用的字段数量最高仅占原始数据所占用的字段数量的二分之一。
优选地,在本发明实施例中,第一预设时间段包括多个,该统计方法还可以包括:
S12,在更新报表库和目标报表之后,将更新后的报表库存储至属性文件中。
S14,在更新字段库和字段信息之后,将更新后的字段库存储至属性文件中。
在报表***启动时,可以对报表库和字段库进行初始化,如,先读取当前用户启用的报表,存入报表库中,在根据每个启用的报表,获取每个报表所对应的全部字段,并将这些字段存入字段库中。
通过本发明实施例,将更新后的报表库和字段库存储至属性文件中,可以防止断电后且报表***再次启用时无法恢复该报表***的缓存线程、入库线程和报表统计线程。
优选地,在本发明实施例中,根据第一镜像表对目标报表执行报表统计处理,得到报表统计结果可以包括:
S16,根据第一镜像表确定与第一镜像表相对应的报表,与第一镜像表相对应的报表为目标报表。
S18,对与第一镜像表相对应的报表执行报表统计处理,得到报表统计结果。
具体地,可以根据第一镜像表确定与第一镜像表相对应的所有的报表,并且与第一镜像表相对应的所有的报表均为目标报表,这样,可以对前述的所有的报表中的每一报表基于第一镜像表执行报表统计处理,得到每个报表统计结果。
需要说明的是,在本发明实施例中,上述的报表统计处理需要在报表统计线程中执行。报表统计线程为定时线程,可以按照预设时间(如,心跳时间)进行启动。启动之后,可以读取当前所有的镜像表,并按照表名进行对所有的镜像表进行升序排列,并读取当前正在执行写入操作的镜像表(即,第二镜像表),因为所有的镜像表是按照升序进行创建和入库的,所以所有的镜像表的名字小于当前正在进行写入操作的镜像表的表名的,都是已经完成写入操作的镜像表(即,第一镜像表),可以进行报表统计了。
优选地,在报表统计线程中,可以按照镜像表表名从小到大的顺序统计报表。具体地,可以获取镜像表对应的报表库,根据报表库中每个报表各对镜像表统计一次,在该镜像表对应的所有报表都统计完成之后,可以删除该镜像表,然后对下一个镜像表进行报表统计,其报表统计过程与对前一个镜像表的统计过程相同,再次不再赘述。
需要说明的是,图1所示的实施例描述的是报表***中报表统计线程,另外,该报表***还可以包括缓存线程和入库线程。并且在报表统计之前,需要依次经过日志信息的缓存线程、入库线程和报表统计线程,以下参照图2对各个线程进行详细阐述:
如图2所示,报表所使用的日志数据来自网络设备(如,日志服务器202),在接收到日志服务器202的日志信息之后,解析服务器204用于对该日志信息进行解析,得到解析后的日志信息,其中,解析后的日志信息与报表以及报表的字段一一对应。
具体地,在缓存线程(cache线程)中,可以每隔一个心跳时间(即,预设时间段,如,N分钟)去报表库206读取当前所启用的目标报表,并去字段库208中读取当前的目标报表所需要的全部字段,然后根据这些字段,将日志信息对应的字段的源数据写入到缓存文件210(cache文件)中。进一步,可以将cache文件写入cache文件夹212中,并将该cache文件夹中的cache文件提交给入库线程入库。
需要说明的是,报表库206为动态报表库,字段库208为动态的字段库,所谓动态是指用户214可以所示启用/禁用/修改/添加/删除报表库中的报表和字段库中的字段。优选地,在读取当前所启用的目标报表及其所需要的全部字段之后,可以保存当前所启用的所有的目标报表与目标报表对应的全部字段,将其写入对应的属性文件(properties文件)中,这样,在报表***重启时,可以快速回复当前的报表统计任务。具体地,在本功能启动时,首先会计算当前心跳时间间隔,然后读取该心跳时间间隔对应的报表库和字段库,将报表库和字段库存入properties文件。在报表***启动时,由动态的报表库和动态的字段库程序来维护报表库和字段库,用户可以启用、禁用、添加、修改报表,这样会导致报表库变化,进而影响字段库。入库线程每隔心跳时间去读取一次报表库和字段库来对应当前新建的心跳时间的镜像表,该心跳时间的镜像表只用于存储当前心跳时间间隔的报表信息,该镜像表的结构由当前用户启用的报表所对应的字段来动态创建。因为入库线程每隔一个心跳时间会获取一次报表库和字段库,所以用户的更新体现出来会最迟晚一个心跳时间。
在入库线程中,可以读取properties文件,获得当前心跳时间所启用的报表及其对应的字段,使用这些字段创建该心跳时间对应的镜像表216,并按照这些字段将缓存文件210写入镜像表216中,然后将镜像表216提交给报表统计线程。例如,在接收到日志信息后,根据读取的字段,将日志对象对应的字段的源数据写入到cache文件中,并提交给入库线程。报表统计线程可以每隔一个心跳时间启动一次。优选地,可以根据日志信息的时间来判断该心跳时间间隔是否结束,结束则去读取下一个心跳时间间隔对应的报表库和字段库。入库线程根据当前心跳时间间隔对应的字段库,动态创建该心跳时间间隔的镜像表,当该心跳时间间隔过去,将该镜像表标记为完成。
在报表统计线程中,可以获取所有的已经入库完毕的与每个心跳时间对应的镜像表,并对每个这样的镜像表中的所有报表进行报表统计。具体地,可以根据前述的所有报表中的每一个报表对已经入库完毕的镜像表进行报表统计,并将统计结果保存到每个报表对应的数据库表中。优选地,可以按照时间升序排列的方式对所有的镜像表进行排序,对最早的、已经标记为完成的镜像表按照每个报表进行统计,将统计结果写入到报表对应的数据库表中。
需要说明的是,在创建cache文件时,可以先将cache文件的名字命名为cache文件名-镜像表名,其中,镜像表名为edcache_时间毫秒,时间毫秒为递增数据,所以镜像表名也为递增数据,这样,方便灾难恢复工作;再读取报表的日志信息,判断该日志信息是否属于当前心跳时间间隔。如果属于,则根据获取的字段库,动态获取当前日志信息对应的字段数据(因为如果字段库发生改变,字段数据也会改变,所以每个心跳时间间隔都去读取报表库和字段库),写入到cache文件(cache文件大小为1秒钟数据),完成后将cache文件提交给入库线程缓存队列。而在读取缓存队列中的cache文件和对应的镜像表时,如果跟当前镜像表一样,则入库当前镜像表。如果不一样,那么获取该文件对应镜像表的字段库,建立新镜像表,并将表名记录下来。
所谓灾难恢复,是指在启动时,获得上次没有入库完毕的cache文件,写入缓存队列中,根据cache文件的名字,获取对应的镜像表名。在获取到镜像表名后,再读取镜像表名对应的报表库和字段库,并根据字段库,动态的创建镜像表(因为每个心跳时间间隔都会去重新取一次报表库和字段库,所以镜像表的结构也可能不同),并将镜像表名记录下来,从而为后续的报表统计线程判断哪些镜像表为已经完成的镜像表保存依据。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机***中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
根据本发明的实施例,提供了一种报表的统计装置,该报表的统计装置用于先将报表按照预设时间间隔(即,预设时间段)通过入库线程入库至镜像表中,再对每个已经完成写入操作的镜像表对应的报表执行报表统计处理,以避免入库线程争用缓存线程所使用的报表数据表。该报表的统计方法可以运行在计算机处理设备上。需要说明的是,本发明实施例所提供的报表的统计方法可以通过本发明实施例的报表的统计装置来执行,本发明实施例的报表的统计装置也可以用于执行本发明实施例的报表的统计方法。
图3是根据本发明实施例的报表的统计装置的示意图。如图3所示,该装置包括:第一获取单元302、确定单元304、第二获取单元306和执行单元308。
第一获取单元302用于获取目标报表,所述目标报表为待统计的报表。
具体地,在报表统计线程中,可以通过查找存储报表的报表库来获取目标报表。优选地,在查找报表库中的目标报表时,可以检测查找到的准目标报表是否为正在启用的报表。如果检测出查找到的准目标报表为正在启用的报表,则获取该准目标报表,并将其作为目标报表;如果检测出查找到的准目标报表为未启用的报表,则不获取该准目标报表。这样,可以滤除冗余的目标报表,提高目标报表的统计效率。
需要说明的是,目标报表可以用于存储日志等的相关信息。具体地,目标报表可以通过字段记录日志等的相关信息。其中,每个目标报表可以具有一个或者多个字段,不同的字段可以对应不同的日志等的相关信息。进一步地,字段可以存储在字段库中,字段库中的所有字段均为不重复的字段。这样,可以节约字段库资源,防止字段重复存储导致字段库资源匮乏。
确定单元304用于根据所述目标报表确定所述目标报表的字段信息。
具体地,首先,可以通过解析目标报表,得到解析结果,并从解析结果中获取该目标报表的所有的字段,然后,针对每个字段查找字段库,得到每个字段所对应的字段信息。
第二获取单元306用于获取已经完成写入操作的第一镜像表,所述第一镜像表包括一个或者多个,每个所述第一镜像表用于存储一个第一预设时间段内所述目标报表的所述字段信息对应的日志信息。
需要说明的是,第一镜像表可以包括一个或者多个,每个第一镜像表都可以用于存储一个第一预设时间段内目标报表的字段信息对应的日志信息。任意两个第一镜像表所对应的第一预设时间段各不相同。也即,在入库线程中,每隔一个第一预设时间段,可以创建一个第一镜像表,并且每个第一镜像表可以用于存储与之相对应的第一预设时间段内的日志等的相关信息。
例如,假设第一预设时间段的时长为5分钟,在入库线程中,可以每隔5分钟创建一个第一镜像表,并将与该5分钟对应的报表入库至这个第一镜像表中。
执行单元308用于根据所述第一镜像表对所述目标报表执行报表统计处理,得到报表统计结果。
具体地,可以根据第一镜像表对应的报表库中的所有的目标报表执行报表统计处理,得到报表统计结果(即,中间统计结果)。优选地,在得到报表统计结果之后,可以将其存储至报表数据表中,这样,数据表中的报表统计结果可以在下次报表统计时被复用,达到提高报表统计效率的效果。
通过本发明,采用获取目标报表,目标报表为待统计的报表;根据目标报表确定目标报表的字段信息;获取已经完成写入操作的第一镜像表,第一镜像表包括一个或者多个,每个第一镜像表用于存储一个第一预设时间段内目标报表的字段信息对应的日志信息;以及根据第一镜像表对目标报表执行报表统计处理,得到报表统计结果,解决了在报表统计时,报表***产生报表的效率低的问题,进而达到了提高报表的产生效率的效果。
优选地,在本发明实施例中,该报表的统计装置还可以包括:创建单元、第三获取单元和写入单元。
创建单元用于根据目标报表确定目标报表的字段信息之后,根据字段信息创建第二镜像表,第二镜像表用于存储第二预设时间段内目标报表的字段信息对应的日志信息,第二预设时间段以当前时刻为起点,且与第一预设时间段不重叠。需要说明的是,第一镜像表与第二镜像表为同一类型的镜像表,第一预设时间段与第二预设时间段可以为时间长度相等的时间段,但是两个时间段的起点时刻不同,且两个时间段内的时间不重合。第一镜像表用于存储在第一时间段内入库的日志报表,第二镜像表用于存储在第二时间段内入库的日志报表。
第三获取单元用于在第二预设时间段内,获取字段信息对应的日志信息。写入单元用于将字段信息对应的日志信息写入第二镜像表中。
其中,第二预设时间段为入库线程时间段。在入库线程之前,报表***可以执行缓存线程。在缓存线程中,可以每隔一个预设时间段(如,第一预设时间段,或者第二预设时间段)获取一次当前时间启用的所有报表及这些报表所对应的所有字段,并根据这些字段从网络设备中读取日志信息。例如,可以每5分钟获取一次当前时刻正在启用的所有报表及其对应的所有字段。之后,根据获取的报表及其对应的字段将日志缓存至缓存文件中,进一步地,可以将该缓存文件存储至缓存文件夹中。至此,报表***由缓存线程进入入库线程,并将前述的缓存文件和缓存文件夹提交至入库线程已将缓存文件中的日志信息入库,也即,将缓存文件中的日志信息写入第二镜像表中。
通过本发明实施例,由于第二镜像表为正在进行写入操作的镜像表,而第一镜像表为已经完成写入操作的镜像表,也即,采用对报表***中的日志信息实行分表存储的方式,按照第二预设时间段、第一预设时间段等进行存储,每个镜像表用于存储一个时间长度(如,心跳时间长度)的日志信息。这样,避免了日志数据争用同一个数据表(如,第一镜像表或第二镜像表),并且无需对数据表进行锁表处理。由于镜像表中的日志信息是该镜像表对应的预设时间段内的所有日志信息,因此,统计线程每次对该镜像表进行报表统计时,无需查找整个大的数据表就可以直接进行报表统计了,提高了报表统计的效率。
优选地,在本发明实施例中,目标报表存储在报表库中,字段信息对应的字段存储在字段库中,该统计装置还包括:第一更新单元和第二更新单元。第一更新单元用于在根据字段信息创建第二镜像表之前,更新报表库和目标报表。第二更新单元,用于更新字段库和字段信息,其中,创建单元还用于根据更新后的字段信息创建第二镜像表。
由于用户不仅可以选择启用或者禁用指定的报表,并且还可修改(如,添加、删除)报表,以及添加或者删除报表中的字段信息,因此,采用更新报表库和目标报表以及字段库和字段信息,可以简化报表***中镜像表的结构,并且只对用户启用的报表才获取创建这些报表的镜像表所需要的字段,并使用这些字段动态地创建镜像表,摒除了海量冗余信息,提高了检索效率。实验表明,用户启用的报表所占用的字段数量最高仅占原始数据所占用的字段数量的二分之一。
优选地,在本发明实施例中,第一预设时间段包括多个,该统计装置还可以包括:第一存储单元和第二存储单元。第一存储单元用于在更新报表库和目标报表之后,将更新后的报表库存储至属性文件中。第二存储单元用于在更新字段库和字段信息之后,将更新后的字段库存储至属性文件中。
在报表***启动时,可以对报表库和字段库进行初始化,如,先读取当前用户启用的报表,存入报表库中,在根据每个启用的报表,获取每个报表所对应的全部字段,并将这些字段存入字段库中。
通过本发明实施例,将更新后的报表库和字段库存储至属性文件中,可以防止断电后且报表***再次启用时无法恢复该报表***的缓存线程、入库线程和报表统计线程。
优选地,在本发明实施例中,前述的执行单元可以包括:确定模块和执行模块。确定模块用于根据第一镜像表确定与第一镜像表相对应的报表,与第一镜像表相对应的报表为目标报表。执行模块用于对与第一镜像表相对应的报表执行报表统计处理,得到报表统计结果。
具体地,可以根据第一镜像表确定与第一镜像表相对应的所有的报表,并且与第一镜像表相对应的所有的报表均为目标报表,这样,可以对前述的所有的报表中的每一报表基于第一镜像表执行报表统计处理,得到每个报表统计结果。
需要说明的是,在本发明实施例中,上述的报表统计处理需要在报表统计线程中执行。报表统计线程为定时线程,可以按照预设时间(如,心跳时间)进行启动。启动之后,可以读取当前所有的镜像表,并按照表名进行对所有的镜像表进行升序排列,并读取当前正在执行写入操作的镜像表(即,第二镜像表),因为所有的镜像表是按照升序进行创建和入库的,所以所有的镜像表的名字小于当前正在进行写入操作的镜像表的表名的,都是已经完成写入操作的镜像表(即,第一镜像表),可以进行报表统计了。
优选地,在报表统计线程中,可以按照镜像表表名从小到大的顺序统计报表。具体地,可以获取镜像表对应的报表库,根据报表库中每个报表各对镜像表统计一次,在该镜像表对应的所有报表都统计完成之后,可以删除该镜像表,然后对下一个镜像表进行报表统计,其报表统计过程与对前一个镜像表的统计过程相同,再次不再赘述。
另外,由于可以将报表***模块化,因此可以将报表***从日志审计中分离出来作为一个独立的***,这样,可以实现报表***快捷地向分布式***上迁移。随着网络的发展,日后海量日志会成为常态,而单机报表统计会越来越成为瓶颈,因此高效率的分布式报表统计是未来发展的主流。
需要说明的是,上述的报表的统计方法和装置所涉及的应用程序可以应用在表1所示的运行环境中:
表1
项目 | 指标 |
CPU | >2Ghz |
内存 | >2G |
操作*** | Windows,Linux |
硬盘 | >40G |
数据库 | Mysql |
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种报表的统计方法,其特征在于,包括:
获取目标报表,所述目标报表为待统计的报表;
根据所述目标报表确定所述目标报表的字段信息;
获取已经完成写入操作的第一镜像表,所述第一镜像表包括一个或者多个,每个所述第一镜像表用于存储一个第一预设时间段内所述目标报表的所述字段信息对应的日志信息;以及
根据所述第一镜像表对所述目标报表执行报表统计处理,得到报表统计结果。
2.根据权利要求1所述的报表的统计方法,其特征在于,根据所述目标报表确定所述目标报表的字段信息之后,所述统计方法还包括:
根据所述字段信息创建第二镜像表,所述第二镜像表用于存储第二预设时间段内所述目标报表的所述字段信息对应的日志信息,所述第二预设时间段以当前时刻为起点,且与所述第一预设时间段不重叠;
在所述第二预设时间段内,获取所述字段信息对应的日志信息;以及
将所述字段信息对应的日志信息写入所述第二镜像表中。
3.根据权利要求2所述的报表的统计方法,其特征在于,所述目标报表存储在报表库中,所述字段信息对应的字段存储在字段库中,在根据所述字段信息创建第二镜像表之前,所述统计方法还包括:
更新所述报表库和所述目标报表;以及
更新所述字段库和所述字段信息,
其中,根据更新后的字段信息创建所述第二镜像表。
4.根据权利要求3所述的报表的统计方法,其特征在于,所述第一预设时间段包括多个,
在更新所述报表库和所述目标报表之后,所述统计方法还包括:将更新后的报表库存储至属性文件中,
在更新所述字段库和所述字段信息之后,所述统计方法还包括:将更新后的字段库存储至所述属性文件中。
5.根据权利要求1所述的报表的统计方法,其特征在于,根据所述第一镜像表对所述目标报表执行报表统计处理,得到报表统计结果包括:
根据所述第一镜像表确定与所述第一镜像表相对应的报表,所述与所述第一镜像表相对应的报表为所述目标报表;以及
对所述与所述第一镜像表相对应的报表执行报表统计处理,得到报表统计结果。
6.一种报表的统计装置,其特征在于,包括:
第一获取单元,用于获取目标报表,所述目标报表为待统计的报表;
确定单元,用于根据所述目标报表确定所述目标报表的字段信息;
第二获取单元,用于获取已经完成写入操作的第一镜像表,所述第一镜像表包括一个或者多个,每个所述第一镜像表用于存储一个第一预设时间段内所述目标报表的所述字段信息对应的日志信息;以及
执行单元,用于根据所述第一镜像表对所述目标报表执行报表统计处理,得到报表统计结果。
7.根据权利要求6所述的报表的统计装置,其特征在于,还包括:
创建单元,用于根据所述目标报表确定所述目标报表的字段信息之后,根据所述字段信息创建第二镜像表,所述第二镜像表用于存储第二预设时间段内所述目标报表的所述字段信息对应的日志信息,所述第二预设时间段以当前时刻为起点,且与所述第一预设时间段不重叠;
第三获取单元,用于在所述第二预设时间段内,获取所述字段信息对应的日志信息;以及
写入单元,用于将所述字段信息对应的日志信息写入所述第二镜像表中。
8.根据权利要求7所述的报表的统计装置,其特征在于,所述目标报表存储在报表库中,所述字段信息对应的字段存储在字段库中,所述统计装置还包括:
第一更新单元,用于在根据所述字段信息创建第二镜像表之前,更新所述报表库和所述目标报表;以及
第二更新单元,用于更新所述字段库和所述字段信息,
其中,所述创建单元还用于根据更新后的字段信息创建所述第二镜像表。
9.根据权利要求8所述的报表的统计装置,其特征在于,所述第一预设时间段包括多个,所述统计装置还包括:
第一存储单元,用于在更新所述报表库和所述目标报表之后,将更新后的报表库存储至属性文件中;以及
第二存储单元,用于在更新所述字段库和所述字段信息之后,将更新后的字段库存储至所述属性文件中。
10.根据权利要求6所述的报表的统计装置,其特征在于,所述执行单元包括:
确定模块,用于根据所述第一镜像表确定与所述第一镜像表相对应的报表,所述与所述第一镜像表相对应的报表为所述目标报表;以及
执行模块,用于对所述与所述第一镜像表相对应的报表执行报表统计处理,得到报表统计结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410510715.1A CN104317820B (zh) | 2014-09-28 | 2014-09-28 | 报表的统计方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410510715.1A CN104317820B (zh) | 2014-09-28 | 2014-09-28 | 报表的统计方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104317820A true CN104317820A (zh) | 2015-01-28 |
CN104317820B CN104317820B (zh) | 2021-03-16 |
Family
ID=52373052
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410510715.1A Active CN104317820B (zh) | 2014-09-28 | 2014-09-28 | 报表的统计方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104317820B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106294427A (zh) * | 2015-05-26 | 2017-01-04 | 北大方正集团有限公司 | 稿件统计方法和稿件统计*** |
CN107786383A (zh) * | 2016-08-30 | 2018-03-09 | 北京国双科技有限公司 | 心跳数据包的发送方法及装置 |
CN110175156A (zh) * | 2019-04-10 | 2019-08-27 | 阿里巴巴集团控股有限公司 | 报表的生成方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101122899A (zh) * | 2007-09-18 | 2008-02-13 | 杭州华三通信技术有限公司 | 报表的生成方法和设备 |
CN102156736A (zh) * | 2011-04-12 | 2011-08-17 | 上海电通信息服务有限公司 | Sap***与sql数据库之间数据传输的方法 |
CN102929899A (zh) * | 2011-12-31 | 2013-02-13 | 网神信息技术(北京)股份有限公司 | 一种基于中间表的分布式报表*** |
CN103034905A (zh) * | 2011-09-30 | 2013-04-10 | 哈尔滨奇安科技发展有限公司 | 报表智能分析方法 |
CN103927338A (zh) * | 2014-03-26 | 2014-07-16 | 网神信息技术(北京)股份有限公司 | 日志信息入库处理方法和装置 |
-
2014
- 2014-09-28 CN CN201410510715.1A patent/CN104317820B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101122899A (zh) * | 2007-09-18 | 2008-02-13 | 杭州华三通信技术有限公司 | 报表的生成方法和设备 |
CN102156736A (zh) * | 2011-04-12 | 2011-08-17 | 上海电通信息服务有限公司 | Sap***与sql数据库之间数据传输的方法 |
CN103034905A (zh) * | 2011-09-30 | 2013-04-10 | 哈尔滨奇安科技发展有限公司 | 报表智能分析方法 |
CN102929899A (zh) * | 2011-12-31 | 2013-02-13 | 网神信息技术(北京)股份有限公司 | 一种基于中间表的分布式报表*** |
CN103927338A (zh) * | 2014-03-26 | 2014-07-16 | 网神信息技术(北京)股份有限公司 | 日志信息入库处理方法和装置 |
Non-Patent Citations (1)
Title |
---|
郭振英 等: ""电子资源日志统计***分析与设计"", 《现代图书情报技术》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106294427A (zh) * | 2015-05-26 | 2017-01-04 | 北大方正集团有限公司 | 稿件统计方法和稿件统计*** |
CN107786383A (zh) * | 2016-08-30 | 2018-03-09 | 北京国双科技有限公司 | 心跳数据包的发送方法及装置 |
CN110175156A (zh) * | 2019-04-10 | 2019-08-27 | 阿里巴巴集团控股有限公司 | 报表的生成方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104317820B (zh) | 2021-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107844388B (zh) | 从备份***流式恢复数据库 | |
CN108694195B (zh) | 一种分布式数据仓库的管理方法及*** | |
US10956422B2 (en) | Integrating event processing with map-reduce | |
US9367598B2 (en) | Merging an out of synchronization indicator and a change recording indicator in response to a failure in consistency group formation | |
EP2590087A1 (en) | Database log parallelization | |
CN110019255A (zh) | 数据查询方法、装置、服务器及存储介质 | |
EP2590078B1 (en) | Shadow paging based log segment directory | |
US11914569B2 (en) | Light weight redundancy tool for performing transactions | |
US20180225330A1 (en) | Query modification in a database management system | |
CN108809704B (zh) | 基于动态时间窗的数据去重统计方法及装置 | |
US11561965B2 (en) | Data retrieval via incremental updates to graph data structures | |
US11099960B2 (en) | Dynamically adjusting statistics collection time in a database management system | |
CN106874343B (zh) | 一种时序数据库的数据删除方法及*** | |
CN104317820A (zh) | 报表的统计方法和装置 | |
US20190384754A1 (en) | In-place updates with concurrent reads in a decomposed state | |
CN112579556A (zh) | 日切数据卸载方法、装置、设备及介质 | |
CN113220530B (zh) | 数据质量监控方法及平台 | |
CN106569731B (zh) | 极限存储方法、装置及设备 | |
CN114625743A (zh) | 一种人事主数据的数据更新方法、装置及电子设备 | |
CN113760875A (zh) | 一种数据处理方法、装置、电子设备和存储介质 | |
US10552418B2 (en) | Optimization of first set of ordered items and delayed non-duplicated work queue | |
CN114661732A (zh) | 一种数据变更的存储方法、装置、电子设备及介质 | |
CN114490555A (zh) | 一种慢日志处理方法、装置、电子设备及存储介质 | |
CN116610739A (zh) | 一种数据处理方法、装置及*** | |
CN117215890A (zh) | 网页多维活跃度确定方法、装置、计算机设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 2nd Floor, Building 1, Yard 26, Xizhimenwai South Road, Xicheng District, Beijing, 100032 Patentee after: Qianxin Wangshen information technology (Beijing) Co.,Ltd. Address before: 100085 1st floor, Section II, No.7 Kaifa Road, Shangdi Information Industry base, Haidian District, Beijing Patentee before: LEGENDSEC INFORMATION TECHNOLOGY (BEIJING) Inc. |