一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据统计方法、装置、设备、存储介质及程序产品与流程

2022-07-10 05:00:08 来源:中国专利 TAG:


1.本技术实施例涉及数据处理技术领域,特别涉及一种数据统计方法、装置、设备、存储介质及程序产品。


背景技术:

2.在直播场景中,基于对象行为每时每刻都会产生大量的数据,相应的,也就产生了对这些数据的统计查询需求。
3.相关技术中,会将实时产生的流水数据存储在数据库中,当服务器接收到业务方的查询请求时,会按照查询请求拼接出数据库查询语言,然后根据拼接好的数据库查询语言请求数据库进行查询,最后将查询得到的统计结果反馈给业务方。
4.然而,上述方法在数据量比较大且需要频繁查询的时候对数据库的性能损耗大,且查询响应时间长,无法满足对海量数据的查询需求。


技术实现要素:

5.本技术实施例提供了一种数据统计方法、装置、设备、存储介质及程序产品。所述技术方案如下:
6.根据本技术实施例的一个方面,提供了一种数据统计方法,所述方法包括:
7.获取数据库的日志文件,所述日志文件用于对所述数据库的数据更新进行记录;
8.对所述日志文件进行解析,获取所述日志文件中的目标数据,所述目标数据为所述日志文件中存在更新的数据;
9.获取统计配置信息,所述统计配置信息是预先设定的数据统计方案;
10.基于所述统计配置信息将所述目标数据结合第一存储空间中已存储的历史统计数据,得到目标统计数据;
11.将所述目标统计数据更新存储至所述第一存储空间中,所述第一存储空间用于存储供查询的统计数据。
12.根据本技术实施例的一个方面,提供了一种数据统计装置,所述装置包括:
13.获取模块,用于获取数据库的日志文件,所述日志文件用于对所述数据库的数据更新进行记录;
14.解析模块,用于对所述日志文件进行解析,获取所述日志文件中的目标数据,所述目标数据为所述日志文件中存在更新的数据;
15.所述获取模块,还用于获取统计配置信息,所述统计配置信息是预先设定的数据统计方案;
16.处理模块,用于基于所述统计配置信息将所述目标数据结合第一存储空间中已存储的历史统计数据,得到目标统计数据;
17.所述处理模块,还用于将所述目标统计数据更新存储至所述第一存储空间中,所述第一存储空间用于存储供查询的统计数据。
18.根据本技术实施例的一个方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现上述实施例中任一所述的数据统计方法。
19.根据本技术实施例的一个方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条程序代码,所述程序代码由处理器加载并执行以实现上述实施例中任一所述的数据统计方法。
20.根据本技术实施例的一个方面,提供了一种计算机程序产品,所述计算机程序产品包括计算机指令,所述计算机指令存储在计算机可读存储介质中,处理器从所述计算机可读存储介质读取并执行所述计算机指令,以实现上述数据统计方法。
21.本技术实施例提供的技术方案至少包括以下有益效果:
22.通过解析数据库的日志文件直接获取目标数据,将目标数据按照统计配置信息进行统计,并将统计结果预先存储起来,可以实现只对有查询需求的数据进行统计,节省了计算机的存储资源,提高了查询的效率,并且通过预先存储统计结果的方式降低了查询延迟。
附图说明
23.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
24.图1是本技术一个实施例提供的方案实施环境的示意图;
25.图2是本技术一个实施例提供的数据统计方法的流程图;
26.图3是本技术另一个实施例提供的数据统计方法的流程图;
27.图4是本技术另一个实施例提供的数据统计方法的流程图;
28.图5是本技术一个实施例提供的非周期类统计数据结构的示意图;
29.图6是本技术一个实施例提供的周期类统计数据结构的示意图;
30.图7是本技术一个实施例提供的技术原理图;
31.图8是本技术一个实施例提供的数据统计装置的框图;
32.图9是本技术另一个实施例提供的数据统计装置的框图。
具体实施方式
33.为使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术实施方式作进一步地详细描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
34.本技术中术语“第一”“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”之间不具有逻辑或时序上的依赖关系,也不对数量和执行顺序进行限定。
35.传统的数据统计查询技术方案是按照业务方的需求拼接出数据库语言,根据拼接
好的数据库语言请求数据库进行查询,然后将查询得到的结果反馈给业务方,这种方案在数据量比较大且需要频繁查询的时候对数据库的性能损耗大,且查询响应时间长,无法满足对海量数据的查询需求。本技术实施例提供了一种数据统计方法,将流水数据写入数据库中,通过解析数据库的日志文件获取更新的流水数据,也即目标数据,将目标数据按照统计配置信息进行统计,并将统计结果写入存储中以完成数据的预统计。本技术实施例通过设置统计配置信息对需要进行统计的数据进行个性化配置从而实现了数据的按需统计,可以节省计算机的存储空间且提高了查询效率;同时本技术实施例将统计结果预先计算出来并写入存储中,使得查询延迟降低,可以应付更高频次的查询场景。
36.请参考图1,其示出了一个本技术实施例的实施环境示意图。示意性的,该实施环境中包括第一终端100、第二终端110、服务器120和通信网络130。可选地,实施环境中包括多个不同的第一终端100和第二终端110,图1仅以一个第一终端100和第二终端110为例进行说明。
37.在一些可选的实施例中,第一终端100中安装和运行有可实时产生流水数据的目标应用程序,示意性的,该目标应用程序包括直播应用程序、社交应用程序、游戏应用程序、购物应用程序等,本技术实施例对此不加以限定。
38.第一终端100在运行该目标应用程序时会实时上传流水数据到服务器120中,可选地,服务器120接收到这些流水数据后,首先会将这些流水数据写入到数据库中,在流水数据的写入过程中,数据库会产生相应的日志文件用以记录数据库的数据更新,服务器120会对该日志文件进行监听从而获取目标数据,例如:有新的流水数据写入数据库时,日志文件会记录此次数据库的更新动作,服务器120会监听该更新动作,同时会对该更新动作进行解析从而获取目标数据。获取到目标数据后,服务器120将根据预先配置的统计配置信息对目标数据进行统计处理,并将统计结果写入到存储空间中。
39.在一些可选的实施例中,第二终端110中运行有查询系统,可以对上述统计结果进行查询。第二终端110向服务器120发送统计查询请求,响应于该统计查询请求,服务器120查询存储空间,并将统计结果反馈给第二终端110。
40.在一些可选的实施例中,第一终端100和第二终端110是智能手机、平板电脑、笔记本电脑、台式计算机、智能家电、智能车载终端、智能音箱等,但并不局限于此。可选地,上述第一终端100和第二终端110可以是两台独立的设备,也可以是同一台设备,本技术对此不加以限定。
41.在一些可选的实施例中,服务器120可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算等基础云计算服务的云服务器,服务器120还可以实现为区块链系统中的节点,本实施例在此不做限定。
42.第一终端100、第二终端110和服务器120通过通信网络130连接,在一些可选的实施例中,通信网络130可以是有线网络,也可以是无线网络,在此不进行限定。
43.需要说明的是,本技术所涉及的信息(包括但不限于用户设备信息、用户个人信息等)、数据(包括但不限于用于分析的数据、存储的数据、展示的数据等)以及信号,均为经用户授权或者经过各方充分授权的,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。例如,本技术中涉及到的流水数据都是在充分授权的情况下获
取的。
44.本技术实施例提供的数据统计方法至少可以应用于如下应用场景:
45.在直播应用程序中,基于对象的行为(例如:充值、送礼等行为),每时每刻都会产生大量的数据,在对象授权后,能够获取这些数据,并存储至数据库中。本技术实施例提供的数据统计方法不需要部署复杂的数据引擎,通过对数据库的日志文件进行监听从而解析获取实时的流水数据,通过标准化的配置和数据处理可以将这些数据进行预统计,其中,技术人员根据实际需求去配置统计配置文件,节省了计算机的存储资源,同时,由于采用的是预统计的方案,直播的产品策略在查询时可以直接返回缓存的统计值,大幅降低查询延迟。
46.值得注意的是,上述应用场景仅为示意性的举例,本技术实施例对数据统计方法的其他应用场景不加以限定。
47.结合上述介绍和实施环境,图2是本技术实施例提供的一种数据统计方法的流程图,如图2所示,该方法包括:
48.步骤201,获取数据库的日志文件。
49.日志文件用于对数据库的数据更新进行记录。
50.可选地,数据库为关系型数据库管理系统(my structure quest language,mysql),示意性的,mysql对应的日志文件为二进制日志(binary log,binlog),在mysql的配置文件中可直接启用binlog日志,则mysql中的数据进行更新时(例如:数据增加、数据删除、数据更改等),会自动更新binlog日志。
51.可选地,在获取数据库的日志文件之前还应包括以下步骤:
52.获取流水数据;将流水数据写入数据库。上述流水数据是指对象在使用应用程序时产生的实时数据,例如:在直播应用程序中,对象可以在直播间对主播赠送虚拟礼物,每次赠送虚拟礼物的过程都对应着一条流水数据,对象可以在直播应用程序的设置界面对数据进行授权管理,同意授权即同意将实时产生的流水数据上传至服务器。
53.在一些可选的实施例中,数据库包括至少两个业务服务器对应的流水数据库。示意性的,至少两个业务服务器对应的流水数据库的使用场景实现包括以下场景中的至少一种:
54.场景一:将流水数据写入不同的流水数据库中,示意性的,每个流水数据库连接有相同/不同数量的业务终端,业务终端中都安装有相同/不同的应用程序,每个业务终端中产生的流水数据将写入与之连接的流水数据库中;或者,每个流水数据库连接有应用程序的不同模块,每个模块中产生的流水数据将写入与之连接的流水数据库中,例如:当应用程序实现为购物应用程序时,已实现资源交换的订单信息和加入购物车的商品信息可以分别写入不同的流水数据库中。
55.场景二:在多个流水数据库中确定一个主流水数据库,除了主流水数据库,其他流水数据库都是从属流水数据库,流水数据都写入主流水数据库中,需要查询流水数据时,读取从属流水数据库,从而实现读写分离。
56.步骤202,对日志文件进行解析,获取日志文件中的目标数据。
57.目标数据为日志文件中存在更新的数据。示意性的,一条流水数据写入到数据库中,数据库进行了更新,那么,这条流水数据即为目标数据。
58.在一些可选的实施例中,获取目标数据的过程还应包括以下步骤:
59.对日志文件进行监听;响应于日志文件存在内容更新,对日志文件进行解析,得到日志文件中的目标数据。
60.示意性的,监听的是日志文件实现为binlog日志时,可选地,binlog日志中记录的是mysql的执行语句。当一条流水数据写入mysql时,binlog日志中会添加此次写入的执行语句,监听到binlog日志的内容添加了一条执行语句,binlog解析器会对这条执行语句进行解析,从而获取这条执行语句中的目标数据。
61.可选地,获取到目标数据后,将目标数据写入消息系统中等待处理,示意性的,可以将目标数据写入到分布式消息系统(例如:apache kafka)的消息队列中进行缓存。
62.可选地,目标数据中包括有对象标识,对目标数据进行处理之前,还可以对目标数据进行分流处理。上述分流处理是指将具有相同对象标识的目标数据分流到同一个队列或者下游节点,可选地,基于哈希算法将目标数据按照对象标识进行分流,把具有相同对象标识的目标数据串行处理。
63.步骤203,获取统计配置信息。
64.统计配置信息是预先设定的数据统计方案。
65.可选地,上述统计配置信息可以是业务方预先在统计配置文件中配置好的信息,示意性的,业务方可以是开发目标应用程序的相关技术人员。
66.可选地,数据统计方案用于指示服务器按照规则针对目标数据对数据库中的数据进行统计,例如:
67.当目标应用程序实现为主播应用程序时,目标数据对应的对象行为是对象当前关注了某直播间,与其对应的数据统计方案是统计查询7天内对象关注的直播间的总数量,则在数据库中查询从当前时间点往前推7天,对象关注的直播间的总数量。
68.可选地,数据统计方案还用于指示服务器是否需要针对目标数据进行统计,示意性的,通过数据统计方案管理数据统计需求的方式包括以下方式中的至少一种:
69.1、在统计配置信息中添加统计需求开关,可选地,统计配置信息中包括数据具体的统计类别(例如:对象关注的直播间的数量、对象观看直播的时长等)、目标应用程序中的对象的账号类别(例如:主播账号、观众账号等)等,业务方可以根据这些类别去添加统计需求开关,例如:对“观众账号7天内关注的直播间的数量”进行统计需求配置;统计配置信息中还包括对象标识,业务方还可以在统计配置信息中对单一对象数据的统计需求进行管理,例如:禁止统计某一对象账号的所有数据,或者,禁止统计某一对象账号的在一个特定时间段内的所有数据。
70.可选地,需求开关可以设置为真实的开关按钮形式,需求开关置于“开启”状态指示的是需要对目标数据进行统计,需求开关置于“关闭”状态指示的是不需要对目标数据进行统计;需求开关还可以设置为简单的0或1,需求开关设置为“0”指示的是不需要对目标数据进行统计,需求开关设置为“1”指示的是需要对目标数据进行统计。
71.2、可选地,目标数据中包括对象标识和统计类别,按照对象标识和统计类别在统计配置文件中查询相应的统计配置信息,响应于统计配置文件中有相应的统计配置信息,则表示的是业务方有对该目标数据的统计需求;响应于统计配置文件中无法查询到相应的统计配置信息,则表示的是业务方没有对该目标数据的统计需求。
72.上述管理统计需求的方式仅为示意性的举例,本技术实施例对此不加以限定。
73.步骤204,基于统计配置信息将目标数据结合第一存储空间中已存储的历史统计数据,得到目标统计数据。
74.可选地,历史统计数据是指在历史时间段内存储在第一存储空间中的统计数据。
75.可选地,响应于统计需求信息中的数据统计方案是需要对目标数据进行统计,对目标数据的处理情况包括以下情况中的至少一种:
76.1、直接将目标数据与第一存储空间中已存储的历史统计数据结合得到目标统计数据。
77.2、根据目标数据的数据统计方案,从数据库中统计查询出结果,该结果即为目标统计数据;或者,根据目标数据的数据统计方案,直接将目标数据存储入第一存储空间作为目标统计数据。
78.可选地,响应于统计需求信息中的数据统计方案是不需要对目标数据进行统计,对目标数据进行丢弃处理,也即,不对该目标数据进行数据统计操作。
79.步骤205,将目标统计数据更新存储至第一存储空间中。
80.第一存储空间用于存储供查询的统计数据。
81.示意性的,第一存储空间可以实现为非关系型数据库(例如:redis缓存)。
82.可选地,根据统计配置信息从数据库中查询得到目标统计数据,将目标统计数据存储至第一存储空间中,或者,将目标数据与历史统计数据进行结合得到目标统计数据,将第一存储空间中的历史统计数据更新为目标统计数据。
83.综上所述,本技术实施例通过解析数据库的日志文件直接获取目标数据,将目标数据按照统计配置信息进行统计,并将统计结果预先存储起来,可以实现只对有查询需求的数据进行统计,节省了计算机的存储资源,提高了查询的效率,并且通过预先存储统计结果的方式降低了查询延迟。
84.图3是本技术另一个示例性实施例提供的数据统计方法的流程图,如图3所示,该方法包括:
85.步骤301,获取数据库的日志文件。
86.日志文件用于对数据库的数据更新进行记录。
87.数据库的日志文件的获取过程已经在步骤201中进行了说明,此处不加以赘述。
88.步骤302,对日志文件进行解析,获取日志文件中的目标数据。
89.目标数据为日志文件中存在更新的数据。
90.日志文件中目标数据的获取过程已经在步骤202中进行了说明,此处不加以赘述。
91.步骤303,将目标数据与第一存储空间的历史统计数据进行匹配。
92.在一些可选的实施例中,目标数据对应有第一对象标识和第一统计项信息,历史统计数据对应有第二对象标识和第二统计项信息。
93.可选地,目标应用程序中登录的对象对应有唯一的对象标识,示意性的,对象标识可以实现为在目标应用程序中的账户编号。
94.可选地,第一统计项信息与目标数据中包含的业务行为相关联,第二统计项信息与历史统计数据中包含的业务行为相关联,例如:对象关注直播间的行为对应的其中一个统计类型是对象关注直播间的数量。
95.在一些可选的实施例中,将第一对象标识与第二对象标识匹配;将第一统计项信
息与第二统计项信息匹配。
96.可选地,首先将第一对象标识和第二对象标识进行匹配,若匹配失败,则不需要将第一统计项信息与第二统计项信息匹配;若匹配成功,再将第一统计项信息与第二统计项信息匹配。
97.可选地,首先将第一统计项信息与第二统计项信息匹配,若匹配失败,则不需要将第一对象标识与第二对象标识匹配;若匹配成功,再将第一对象标识与第二对象标识匹配。
98.步骤304,响应于目标数据与历史统计数据匹配失败,获取统计配置信息。
99.在一些可选的实施例中,历史统计数据对应有状态信息,状态信息用于指示历史统计数据的有效性。
100.在一些可选的实施例中,获取统计配置信息的方法包括以下方法中的至少一种:
101.1、响应于第一对象标识与第二对象标识匹配失败;或者,第一统计项信息与第二统计项信息匹配失败,获取统计配置信息。
102.示意性的,方式1中匹配失败的情况包括以下情况:
103.(1)可选地,第一对象标识和第二对象标识是指对象账号编号,在第一存储空间没有与第一对象标识相同的第二对象标识,第一对象标识与第二对象标识匹配失败;
104.(2)可选地,第一统计项信息和第二统计项信息是指统计的内容,在第一存储空间,第一统计项信息和第二统计项信息对应的统计内容不一致,第一统计项信息与第二统计项信息匹配失败。
105.示意性的,如果第一统计项信息是指对象关注直播间的数量,第二统计项信息是指在一段时间内对象关注直播间的总数量,第一统计项信息和第二统计项信息是匹配的;如果第一统计项信息是指对象关注直播间的数量,第二统计项信息是指对象在一段时间内观看直播的总时长,第一统计项信息和第二统计项信息是不匹配的。
106.只要存在以上两种情况中的至少一种,则目标数据与历史统计数据匹配失败。
107.2、第一对象标识与第二对象标识匹配成功且第一统计项信息与第二统计项信息匹配成功,响应于历史统计数据对应的状态信息用于指示历史统计数据失效,获取统计配置信息。
108.示意性的,目标数据是对象在当前时间关注了某一直播间而产生的数据,历史统计数据是指对象过去7天内关注的直播间的总数量,但是该历史统计数据的状态信息被设置为无效,则目标数据与历史统计数据匹配失败。
109.步骤305,基于统计配置信息将目标数据结合第一存储空间中已存储的历史统计数据,得到目标统计数据。
110.基于统计配置信息得到目标统计数据的过程已经在步骤204中进行了说明,此处不加以赘述。
111.在一些可选的实施例中,响应于目标数据与历史统计数据匹配成功,将目标数据以指定结合方式与历史统计数据进行结合,得到目标统计数据。
112.值得注意的是,由于目标数据与历史统计数据匹配成功,则默认目标数据是需要被统计的,一般情况下,可以默认目标数据是有统计需求的,可选地,业务方可以随时改变对目标数据的统计需求,如果目标数据的统计需求从原有的需要统计变成不需要统计,那么,需要对目标数据进行丢弃处理且从第一存储空间中删除与之关联的历史统计数据;或
者,对目标数据进行丢弃处理但是不从第一存储空间中删除与之关联的历史统计数据。
113.可选地,目标数据与历史统计数据匹配成功是指第一对象标识与第二对象标识匹配成功、第一统计项信息与第二统计项信息匹配成功且历史统计数据对应的状态信息用于指示历史统计数据是正常的。
114.可选地,目标数据中包含统计数值,示意性的,目标对象当前时间关注了一个直播间,那么统计数值是1,目标对象当前时间取消关注了一个直播间,那么统计数值是-1。
115.可选地,其中指定结合方式包括以下方式中的至少一种:
116.一、可选地,历史统计数据中包含总统计数值和总记录数,示意性的,目标对象在7天内关注直播间的数量为1000(除去取消关注的数量),则总统计数值为1000,目标对象在7天内关注直播间这个动作总共进行了10次(包括取消关注的行为),则总记录数为10。
117.指定结合方式是指将目标数据的中的统计数值和历史统计数据中的总统计数值进行累加计算,且更新历史统计数据中的总记录数。
118.二、指定结合方式是指将目标数据与历史统计数据关联,但不改变目标数据中的统计数值或者不改变历史统计数据中的总统计数值,示意性的,将对象7天内关注直播间从而产生的数据进行连接共同组成目标统计数据。
119.步骤306,将目标统计数据更新存储至第一存储空间中。
120.第一存储空间用于存储供查询的统计数据。
121.目标统计数据的存储方法已经在步骤205中进行了说明,此处不加以赘述。
122.综上所述,本技术实施例通过解析数据库的日志文件直接获取目标数据,将目标数据按照统计配置信息进行统计,并将统计结果预先存储起来,可以实现只对有查询需求的数据进行统计,节省了计算机的存储资源,提高了查询的效率,并且通过预先存储统计结果的方式降低了查询延迟。
123.本技术实施例提供的方法通过将目标数据和历史统计数据进行匹配,匹配成功则可以直接将目标数据和历史统计数据进行结合得到目标统计数据,无需查询数据库,减少了对数据库的性能损耗;匹配失败则根据统计配置信息只对统计需求的目标数据进行统计,节省了计算机的存储空间和计算资源。
124.图4是本技术另一个示例性实施例提供的数据统计方法的流程图,如图4所示,该方法包括:
125.步骤401,获取数据库的日志文件。
126.日志文件用于对数据库的数据更新进行记录。
127.数据库的日志文件的获取过程已经在步骤201中进行了说明,此处不加以赘述。
128.步骤402,对日志文件进行解析,获取日志文件中的目标数据。
129.目标数据为日志文件中存在更新的数据。
130.日志文件中目标数据的获取过程已经在步骤202中进行了说明,此处不加以赘述。
131.步骤403,将目标数据写入数据统计写服务。
132.数据统计写服务用于对目标数据进行统计前的缓存。
133.可选地,在目标数据写入数据统计写服务后,服务器还需要接受本次写入的应答结果,该应答结果用于指示目标数据写入数据统计写服务是否成功。
134.可选地,将目标数据写入数据统计写服务的过程中,由于网络或者其他系统异常
的情况可能会导致目标数据丢失,则需要对目标数据进行回滚操作,下面是目标数据回滚操作的具体步骤:
135.响应于目标数据写入数据统计写服务失败,将目标数据写入回滚队列;从回滚队列中将待回滚数据依次回滚至数据统计写服务中;响应于目标数据回滚成功,从回滚队列中删除目标数据。
136.上述待回滚数据是指写入数据统计写服务失败的目标数据。
137.其中,目标数据写入数据统计写服务失败的情况包括以下情况中的至少一种:
138.1、未收到目标数据写入数据统计写服务的应答结果,则代表目标数据写入数据统计写服务失败;
139.2、收到目标数据写入数据统计写服务的应答结果,但该应答结果指示的是目标数据写入数据统计写服务不成功,则重复多次此次写入操作,重复多次之后依然收到指示目标数据写入数据统计写服务不成功的应答结果,则代表目标数据写入数据统计写服务失败。
140.可选地,目标数据回滚成功是指数据统计写服务收到目标数据,也即,目标数据已成功被写入数据统计写服务中的缓存。
141.步骤404,获取统计配置信息。
142.统计配置信息是预先设定的数据统计方案。
143.获取统计配置信息的过程已在步骤203中进行了说明,此处不加以赘述。
144.步骤405,基于统计配置信息将目标数据结合第一存储空间中已存储的历史统计数据,得到目标统计数据。
145.可选地,目标数据中包含有时间戳,该时间戳用于指示目标数据的生成时间。
146.可选地,历史统计数据中包含有状态信息,该状态信息用于指示历史统计数据的有效性。
147.基于未进行回滚的目标数据得到目标统计数据的过程在步骤204中已经进行了说明,此处不加以赘述。
148.可选地,历史统计数据在缓存中的存储结构包括以下两种实现方式:
149.1、非周期类历史统计数据结构
150.在一些可选的实施例中,历史统计数据中包括与至少一个历史统计子数据对应的至少一个历史统计数据节点,历史统计数据节点对应有节点等级。
151.可选地,历史统计子数据是指历史时间段内记录的统计数据,历史统计子数据中包含有时间戳,每个历史统计子数据对应的时间戳不同。
152.可选地,历史统计数据节点对应有节点等级,历史统计数据节点可用于存放历史统计子数据。
153.可选地,时间戳最接近当前时间戳的历史统计子数据存放在节点等级高的历史统计数据节点中。
154.示意性的,请参考图5,历史统计数据500中有三个级别的历史统计数据节点,其中,节点的等级规则是等级3》等级2》等级1,则最新的统计数据始终存放在等级3代表的历史统计数据节点中,不同等级的三个历史统计数据节点中分别存放有不同的历史统计子数据。
155.其中,每个历史统计子数据都包含有:num(总记录数)、value(总统计数)、ts(最后时间戳)、status(数据状态)。总记录数是指从首次统计到最后时间戳,总共统计的目标数据的数量;总统计数是指从首次统计到最后时间戳的总统计值,例如:目标对象从开始建立到当前一共关注了1000个直播间(不包括取消关注的直播间),则总统计数就是1000;最后时间戳是指历史统计子数据最新一次更新时的时间戳,具体来说,可以是最近一次目标数据统计累加进来时,该目标数据对应的时间戳;数据状态用于指示该历史统计子数据是有效数据还是无效数据。
156.在一些可选的实施例中,定期将节点等级高的历史统计数据节点中的历史统计子数据保存到节点等级低的历史统计数据节点中,此过程可包括步骤:获取处于第i个节点等级的第一历史统计子数据;获取处于第i 1个节点等级的第二历史统计子数据,第i个节点等级高于第i 1个节点等级;i为大于1的正整数;按照预设周期,将第i个节点等级的第一历史统计子数据更新为第i-1个节点等级,将第i 1个节点等级的第二历史统计子数据更新为第i个节点等级。
157.示意性的,请参考图5,每10分钟,将等级2历史统计数据节点中的历史统计子数据更新成等级3历史统计数据节点中的历史统计子数据;将等级1历史统计数据节点中的历史统计子数据更新成等级2历史统计数据节点中的历史统计子数据。
158.2、周期类历史统计数据结构
159.可选地,该历史统计数据结构包括一个头部和至少一个窗口节点。
160.示意性的,请参考图6,head(头部)中包含:step_type(步长类型)、time_zone(统计时区)、node_num(窗口节点数)、last_ts(最新时间戳)和top_idx(顶部节点序号)。其中,步长类型指示的是每个node(窗口节点)的统计周期,例如:步长类型为月,则一个窗口节点统计的就是一个月产生的流水数据;统计时区用于指示世界时区;窗口节点数是指该历史统计数据结构可以存放的历史统计数据的数量,用于决定该历史统计数据结构的空间大小;最新时间戳是指最新更新的历史统计数据对应的时间戳;顶部节点序号指示的是该历史统计数据结构代表的窗口节点,例如:顶部节点序号为3,则该历史统计数据结构代表的窗口节点为node3,通过改变顶部节点序号可以实现历史统计数据结构中窗口的滑动。
161.每个窗口节点中都包含:num(总记录数)、value(总统计数)、status(数据状态)。当步长类型实现为月时,总记录数是指一个月统计的目标数据的数量;总统计数是指一个月的总统计值;数据状态用于指示该窗口节点存放的是有效数据还是无效数据。
162.可选地,将目标数据结合第一存储空间中已存储的历史统计数据,得到目标统计数据之前,需要在第一存储空间中查询与目标数据相关联的历史统计数据。
163.可选地,响应于查询到与目标数据相关联的历史统计数据,当目标数据是经过回滚后的数据,则需要对该历史统计数据进行回滚处理。
164.可选地,回滚处理是指响应于历史统计数据中对应的时间戳大于当前目标数据的时间戳,将历史统计数据对应的状态信息设置为无效。
165.示意性的,(1)如图5所示,当历史统计数据结构实现为非周期类历史统计数据结构时,先将等级3历史统计数据节点中历史统计子数据的数据状态设置为无效;然后依次检查,等级2和等级1历史统计数据节点中历史统计子数据的时间戳,若其中的最后时间戳大于当前目标数据的时间戳,将等级2和等级1历史统计数据节点中历史统计子数据的数据状
态设置为无效。(2)如图6所示,当历史统计数据结构实现为周期类历史统计数据结构时,如果头部中存放的最新时间戳大于当前目标数据的时间戳,则根据顶部节点序号找到窗口节点,将该窗口节点中的数据状态设置为无效。
166.步骤406,将目标统计数据更新存储至第一存储空间中。
167.目标统计数据的存储方法已经在步骤205中进行了说明,此处不加以赘述。
168.第一存储空间用于存储供查询的统计数据。
169.在一些可选的实施例中,查询请求方会发送统计查询请求,请求查询统计数据,则查询统计数据的步骤包括以下情况中的至少一种:
170.1、接收统计数据查询请求;基于统计数据查询请求对第一存储空间进行数据查询;响应于在第一存储空间中查询到与统计数据查询请求对应的统计数据,对统计数据进行反馈。
171.2、接收统计数据查询请求;基于统计数据查询请求对第一存储空间进行数据查询;响应于在第一存储空间中查询不到与统计数据查询请求对应的统计数据,根据数据查询请求在数据库中统计查询出统计结果写入缓存,并对该统计结果进行反馈。
172.3、接收统计数据查询请求;基于统计数据查询请求对第一存储空间进行数据查询;响应于在第一存储空间中查询到与统计数据查询请求对应的统计数据,但统计数据中的状态信息指示的是该统计数据是无效的,根据数据查询请求在数据库中统计查询出统计结果写入缓存,并对该统计结果进行反馈。
173.可选地,还需要对无效的统计数据进行修复,示意性的,当统计数据结构实现为非周期类统计数据结构时,在进行统计数据修复时,根据数据查询请求在数据库中统计查询出统计结果,将该统计结果写入非周期类统计数据结构中等级最高的统计数据节点完成对统计数据的修复。
174.综上所述,本技术实施例通过解析数据库的日志文件直接获取目标数据,将目标数据按照统计配置信息进行统计,并将统计结果预先存储起来,可以实现只对有查询需求的数据进行统计,节省了计算机的存储资源,提高了查询的效率,并且通过预先存储统计结果的方式降低了查询延迟。
175.本技术实施例设计了多等级节点的数据结构,在目标数据推送产生异常的时候,通过时间戳的严格递增检查和回滚操作来避免重复统计的问题,节省了存储资源,提高了工作效率。
176.图7是本技术一个示例性实施例提供的数据统计方法的工作原理图,按照业务流程对图7中的工作原理进行说明,如图7所示:
177.步骤一、将业务终端产生的流水数据通过业务后台写入到流水数据库中。
178.图7中展示有三个流水数据库,其中,业务终端711与流水数据库712相连,也就是说,在业务终端711中产生的流水数据会写入流水数据库712中,业务终端713与流水数据库714相连,也就是说,在业务终端713中产生的流水数据会写入流水数据库714中,业务终端715与流水数据库716相连,也就是说,在业务终端715中产生的流水数据会写入流水数据库716中。
179.步骤二、binlog解析器717通过直接监听流水数据库712、流水数据库714和流水数据库716中的binlog日志并解析来实时获取目标数据。
180.步骤三、binlog解析器717将得到的目标数据写入到apache kafka消息队列中进行缓存。
181.步骤四、实时流水消费服务718通过订阅apache kafka将目标数据读取出来,按照哈希路由将具有相同对象标识的目标数据串行处理,并将目标数据分发给数据统计写服务719进行统计处理。
182.步骤五、数据统计写服务719接收到实时流水消费服务718推送的目标数据后,首先从统计数据缓存720中查询相应的历史统计数据,若历史统计数据存在且状态为正常,则把当前目标数据的值累加进历史统计数据得到目标统计数据,然后将目标统计数据回写入统计数据缓存720中;若未查到历史统计数据或查到的历史统计数据为无效则需要根据业务统计配置721中的统计需求信息分两种情况处理:
183.情况一:统计需求信息指示的是不需要对目标数据进行统计,直接丢弃当前目标数据;
184.情况二:统计需求信息指示的是需要对目标数据进行统计,根据业务统计配置721从流水数据库中统计查询出结果写入统计数据缓存720中。
185.值得注意的是,如果当前的历史统计数据状态为正常,但是目标数据的时间戳比历史统计数据中保存的时间戳要早,有可能是因为推送了重复的目标数据,需要将当前历史统计数据状态置为无效。
186.上述步骤一至步骤五是业务终端在运行目标应用程序时产生的流水数据的统计处理基本过程,也即是,目标数据的预统计过程。在进行目标数据预统计的过程中,数据统计读服务722负责处理业务方的统计查询请求。
187.数据统计读服务722在接收到业务统计查询请求后,会根据请求参数先尝试从统计数据缓存720中读取历史统计数据,若读取到历史统计数据且历史统计数据状态为正常则直接将结果返回给请求方;若未读取到历史统计数据,会请求数据统计写服务719完成首次统计,此时数据统计写服务719需要根据业务统计配置721从流水数据库中统计查询出结果写入统计数据缓存720中,然后数据统计读服务722会将首次统计的结果返回给请求方;若读取到历史统计数据为无效时会请求数据统计写服务719修复该历史统计数据,并将修复后的统计数据返回给请求方。
188.下述为本技术装置实施例,可以用于执行本技术方法实施例。对于本技术装置实施例中未披露的细节,请参照本技术方法实施例。
189.请参考图8,其示出了本技术一个示例性实施例提供的数据统计装置的框图。该装置具有实现上述数据统计方法的功能,所述功能可以由硬件实现,也可以由硬件执行相应的软件实现。该装置可以是计算机设备,也可以设置在计算机设备中。该装置800可以包括:
190.获取模块810,用于获取数据库的日志文件,所述日志文件用于对所述数据库的数据更新进行记录;
191.解析模块820,用于对所述日志文件进行解析,获取所述日志文件中的目标数据,所述目标数据为所述日志文件中存在更新的数据;
192.所述获取模块810,还用于获取统计配置信息,所述统计配置信息是预先设定的数据统计方案;
193.处理模块830,用于基于所述统计配置信息将所述目标数据结合第一存储空间中
已存储的历史统计数据,得到目标统计数据;
194.所述处理模块830,还用于将所述目标统计数据更新存储至所述第一存储空间中,所述第一存储空间用于预先存储供查询的统计数据。
195.请参考图9,在示例性实施例中,所述获取模块810,包括:
196.匹配子模块811,用于将所述目标数据与所述第一存储空间的所述历史统计数据进行匹配;
197.所述获取模块810,还用于响应于所述目标数据与所述历史统计数据匹配失败,获取所述统计配置信息。
198.在示例性实施例中,所述目标数据对应有第一对象标识和第一统计项信息,所述历史统计数据对应有第二对象标识和第二统计项信息;所述匹配子模块811,还用于将所述第一对象标识与所述第二对象标识匹配;将所述第一统计项信息与所述第二统计项信息匹配。
199.可选地,所述获取模块810,还用于响应于所述第一对象标识与所述第二对象标识匹配失败;或者,所述第一统计项信息与所述第二统计项信息匹配失败,获取所述统计配置信息。
200.在示例性实施例中,所述历史统计数据对应有状态信息,所述状态信息用于指示所述历史统计数据的有效性;所述获取模块810,还用于响应于所述历史统计数据对应的状态信息用于指示所述历史统计数据失效,获取所述统计配置信息。
201.在示例性实施例中,所述处理模块830,还用于响应于所述目标数据与所述历史统计数据匹配成功,将所述目标数据以指定结合方式与所述历史统计数据进行结合,得到所述目标统计数据。
202.在示例性实施例中,所述历史统计数据中包括与至少一个历史统计子数据对应的至少一个历史统计数据节点,所述历史统计数据节点对应有节点等级;所述获取模块810,还用于获取处于第i个节点等级的第一历史统计子数据;获取处于第i 1个节点等级的第二历史统计子数据,所述第i个节点等级高于所述第i 1个节点等级;i为大于1的正整数。
203.可选地,所述装置800,还包括:
204.更新模块840,用于按照预设周期,将第i个节点等级的所述第一历史统计子数据更新为所述第i-1个节点等级,将第i 1个节点等级的所述第二历史统计子数据更新为所述第i个节点等级。
205.在示例性实施例中,所述装置800,还包括:
206.写入模块850,用于将所述目标数据写入数据统计写服务,所述数据统计写服务用于对所述目标数据进行统计前的缓存。
207.在示例性实施例中,所述写入模块850,还用于响应于所述目标数据写入所述数据统计写服务失败,将所述目标数据写入回滚队列。
208.可选地,所述写入模块850,包括:
209.回滚子模块851,用于从所述回滚队列中将待回滚数据依次回滚至所述数据统计写服务中;
210.删除子模块852,用于响应于所述目标数据回滚成功,从所述回滚队列中删除所述目标数据。
211.在示例性实施例中,所述获取模块810,还包括:
212.监听子模块812,用于对所述日志文件进行监听;
213.处理子模块813,用于响应于所述日志文件存在内容更新,对所述日志文件进行解析,得到所述日志文件中的所述目标数据。
214.在示例性实施例中,所述数据库包括至少两个业务服务器对应的流水数据库。
215.在示例性实施例中,所述装置800还包括:
216.接收模块860,用于接收统计数据查询请求;
217.查询模块870,用于基于所述统计数据查询请求对所述第一存储空间进行数据查询;
218.反馈模块880,用于响应于在所述第一存储空间中查询到与所述统计数据查询请求对应的统计数据,对所述统计数据进行反馈。
219.综上所述,本技术实施例通过解析数据库的日志文件直接获取目标数据,将目标数据按照统计配置信息进行统计,并将统计结果预先存储起来,可以实现只对有查询需求的数据进行统计,节省了计算机的存储资源,提高了查询的效率,并且通过预先存储统计结果的方式降低了查询延迟。
220.需要说明的是,上述实施例提供的装置,在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内容结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据统计装置与数据统计方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
221.在示例性实施例中,还提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有计算机程序,所述计算机程序由所述处理器加载并执行以实现上述数据统计方法。
222.在示例性实施例中,还提供了一种计算机可读存储介质,所述存储介质中存储有计算机程序,所述计算机程序由处理器加载并执行以实现上述数据统计方法。可选地,上述计算机可读存储介质可以是rom(read-only memory,只读存储器)、ram(random access memory,随机存取存储器)、cd-rom(compact disc read-only memory,只读光盘)、磁带、软盘和光数据存储设备等。
223.在示例性实施例中,还提供一种计算机程序产品,所述计算机程序产品包括计算机指令,所述计算机指令存储在计算机可读存储介质中,处理器从所述计算机可读存储介质读取并执行所述计算机指令,以实现上述数据统计方法。
224.应当理解的是,在本文中提及的“多个”是指两个或两个以上。字符“/”一般表示前后关联对象是一种“或”的关系。另外,本文中描述的步骤编号,仅示例性示出了步骤间的一种可能的执行先后顺序,在一些其它实施例中,上述步骤也可以不按照编号顺序来执行,如两个不同编号的步骤同时执行,或者两个不同编号的步骤按照与图示相反的顺序执行,本技术实施例对此不作限定。
225.以上仅为本技术的示例性实施例,并不用以限制本技术,凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献