数据分析方法和装置制造方法
【专利摘要】本发明公开了一种数据分析方法和装置,所述方法包括:接收应用程序推送的数据;根据预设的统计目标,对所述数据采用流式计算获得统计结果。所述装置包括:数据接收模块,用于接收应用程序推送的数据;统计模块,用于根据预设的统计目标,对所述数据采用流式计算获得统计结果。采用本发明技术方案,能够快速、及时地获得统计结果,满足实时性要求比较高的在线互联网应用。
【专利说明】数据分析方法和装置
【技术领域】
[0001] 本发明涉及计算机【技术领域】,特别是涉及一种数据分析方法和装置
【背景技术】
[0002]数据分析是指用适当的统计方法对大量数据进行分类、汇总,以求能够最大化地 开发数据资料的功能。数据分析广泛应用于计算机系统中,例如在游戏运营领 过 戏数据进行数据分析,能够掌握整个游戏玩家的状态信息,如登录、在线!和流失情况等 从而根据玩家的状态信息,能够对游戏的规划和管理提供参考意见。 Μ 3 、'
[0003]现有的数据分析方法是先将需要分析的大量数据全部存储到数据库,然后再根据 统计需求对已存储的数据采用统计方法获得统计结果。因此现有的数据分析士能 获得统计结果,不适用于提供在线服务的互联网应用。
【发明内容】
[0004]基于此,有必要针对上述技术问题,提供一种数据分析方法和装置,能够快速及 时地获得统计结果,满足实时性要求比较高的在线互联网应用。 '
[0005] -种数据分析方法,所述方法包括:
[0006] 接收应用程序推送的数据;
[0007]根据预设的统计目标,对所述数据采用流式计算获得统计结果。
[0008] -种数据分析装置,包括:
[0009]数据接收模块,用于接收应用程序推送的数据;
[0010]统计模块,用于根据预设的统计目标,对所述数据采用流式计算获得统计结果。 上述数据分析方法和装置,接收应用程序推送的数据,并根据预设的统计<目标°,对 =据米用流式计算获得统计结果,相比与现有技术先存储再统计的技术方案,由于采用流 ^计算来进行统计,能够快速、及时地获得统计结果,满足实时性要求较高的在线互联网应 用。
【专利附图】
【附图说明】 _2]目1为-个实施例中的数据分析方法的流程示意图; _3]目2为另-个实施例中的数据分析方法的流程示意图;
[0014]图3为一个实施例中的数据分析方法的应用场景图; ^015]目4为又-个实施例中的数据分析方法的流程示意图; 〇〇16]图5为-个实施例中的数据分析装置的结构棚; 0017] 图6为一个实施例中的数据分析装置的结构框图和应用场景图; 0018] 图7为另实施例中的数据分析装置的结构框图和应用场景图;
[0019]图8为-个实施例中的实时统计觀的结构框图。
【具体实施方式】
[0020]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对 本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并 不用于限定本发明。
[0021] 参见图1,在一个实施例中,提供了一种数据分析方法,本方法可以但不限于应用 于游戏数据分析,也可以应用于其它计算机智能分析领域。本方法包括:
[0022] 步骤102,接收应用程序推送的数据。
[0023]本实施例中,所要分析的数据由应用程序推送。应用程序可以是游戏运行相关程 序或其它软件程序。为便于本方法进行数据分析处理,可以预先对应用程序推送的数据定 义好数据格式。接收应用程序推送的数据后,可以将数据进行缓存或存储到数据库中。
[0024] 步骤104,根据预设的统计目标,对数据采用流式计算获得统计结果。
[0025] 本实施例中,提取已经缓存或存储在数据库中的数据,根据数据预先定义的数据 格式进行分析,按照预设的统计目标进行分类和汇总,采用流式计算方式以累加的形式得 到最终的统计结果。其中预设的统计目标,以游戏数据分析举例来说,可以包括日活跃用 户、活跃用户IP(IP,Internet Protocol,网络协议)地区分布、活跃用户游戏等级分布等统 计目标。采用流式计算方式可以是接收应用程序推送的数据并同时进行累加统计的方式, 也可以预先将需要分析的数据分成多个部分,每次接收其中的一个部分并根据统计目标进 行统计得到一个中间结果,最后将中间结果进行累加得到统计结果。本实施例得到的最终 的统计结果,可以后续提供给其它分析软件进行应用,也可以固化更新到数据库中,以供查 询或调用。
[0026]本实施例中,接收应用程序推送的数据,并根据预设的统计目标,对数据采用流式 计算获得统计结果,相比与现有技术先存储再统计的技术方案,由于采用流式计算来进行 统计,能够快速、及时地获得统计结果,满足实时性要求较高的在线互联网应用。
[0027] 参见图2,在另一个实施例中,一种数据分析方法,其流程包括:
[0028]步骤202,实时接收应用程序推送的数据,并把数据缓存在Redis先进先出队列 中。
[0029]实时接收应用程序推送的数据,其中的数据已预先定义了数据格式。例如在本实 施例中,以游戏数据分析为例,数据的格式为JS0N数据格式(JSON,Java Script Object Notation,Java脚本目标格式,一种轻量级的数据交换格式),其包含的字段如表1所示:
[0030] 表 1
[0031] lmode |整形 |游戏数据类型,如登录数据、注册数据、流水数据等 ~H 数据所有者 ltime 整形 数据产生时间、时间戳 luip 字符串 数据所有者的IP地址 Idata数组 详细游戏数据内容,根据游戏数据类型来定
[0032] 例如,以一条数据举例说明,该数据为:
[0033] {"lm〇de":l,"uid":l,"ltime" :1368784546,"luip,,:"192. 168. 100. 146,,,"ldata ":{"level" :1〇,"money":3000,"uplogin" :1368764546, "login" :1368784546}}。 [0034] 则"lraode":l字段表示该数据的游戏数据类型为1,对应于登录数据。"uid":l 字段表示游戏数据所有者的用户ID (ID,Identity,身份标识)为1。"ltime" :1368784546 字段表示该数据产生的时间戳为1368784546。"luip" : "192. 168. 100. 146"字段代表数 据所有者的IP地址为192. 168. 100. 146。ldata字段根据不同的游戏数据类型有不同的 定义,例如在登录数据类型中定义了登录等级、登录游戏币、上次登录时间戳以及本次登录 时间戳,因此本例中,"ldata": {"level":10, "money":3000, "uplogin": 1368764546, "log in" : 1368784546}字段,代表了登录等级为10级、登录游戏币为3000、上次登录时间戳为 136876454 6,以及本次登录时间戳为1368784546。
[0035] 本实施例中,通过接口函数接收JS0N格式的数据,该接口函数的参数为JS0N数据 格式中的各字段(如lmode字段、uid字段等),接收到各字段后,再将各字段组装为JS0N数 据格式。
[0036] 接收到应用程序推送的数据后,将数据缓存在Redis先进先出队列中。其中 Redis是一个高性能的key-value存储系统,它支持的value类型相对更多,包括字符串 (string)、列表(list)、集合(set)、有序集合(zset)和哈希(hashs)。这些数据类型都支持 pUSh/p〇P、add/rem〇Ve及取交集并集和差集及更丰富的操作,并且这些操作都是原子性的。 Redis的数据都是缓存在内存中,效率很高。
[0037] 数据存储到Redis先进先出队列中,可以通过接口函数将数据提出,以供后续的 统计分析。
[0038] 步骤204,从Redis先进先出队列中提取数据。
[0039]步骤2〇6,对提取的数据进行合法性验证,判断数据是否合法,若合法,执行步骤 208,否则丢弃该数据,返回步骤204,重新提取数据。
[0040]根据数据预先定义的数据格式对提取的数据进行合法性验证。例如,应用本方 法进行游戏数据分析时,数据采用表1的数据格式时,合法性验证可以包括对lmode、uid、 ltime、luip、ldata字段的数据类型进行验证,例如判断lm〇de字段是不是整形,当游戏数 据类型为登录数据时,判断ldata中的等级(level)是不是整形等。当提取的数据通过合 法性验证,执行步骤208,否则丢弃该数据,重新提取数据,并记录错误日志。
[0041]步骤208,根据预设的统计目标,对数据进行去重。
[0042]在本实施中,如果数据合法,根据预设的统计目标判断数据是否需要去重,若需要 去重,调用Redis接口进行去重。
[0043]以数据采用表1中的数据格式为例,例如统计目标包括游戏的日活跃用户量,而 该统计目标预先设置为需要进行去重,则根据数据的uid字段和ltime字段生成Redis的 key,调用SETNX (SETNX,Redis提供的应用程序接口,用于将key值设为value,在内存中 检索key,当key不存在时返回值为true)判断该数据是否存在过Redis缓存队列中,若没 有存在过则是有效的数据,需要进行相关统计目标的累加统计,否则对该数据不做统计。 [00 44]步骤210,调用Redis累加函数对预设的统计目标进行累加计数,得到统计结果。 [0045]本实施例中,根据数据的数据格式和预设的统计目标,对数据进行分类汇总,采用 Redis累加函数进行累加计数得到最终的统计结果。
[0046] 以数据采用表1的数据格式为例,预设的统计目标包括日活跃用户量和日活跃IP 地区分布。设数据为:
[0047] {"1πκ^θ":1,"ι?(?":1,"1?;?π?Θ,,:1368784546,"1ι?ρ":"192. 168. 100. 146","ldata ":{ "level" : 10,"money" :3000, "uplogin" :1368764546, "login" :1368784546}}。
[0048] 则统计时,根据uid字段、登录时段(对应于该统计日的时间戳范围)生成Redis的 缓存key,对提取的数据进行监控,调用Redis累加函数对日活跃用户量进行累加计数;相 应的,根据luip字段和登录时段(对应于该统计日的时间戳范围)生成Redis的缓存key, 对提取的数据进行监控,调用Redis累加函数对日活跃IP地址进行累加计数。
[0049] 本实施例得到的统计结果,可以缓存在Redis缓存中,以供后续提供给用户端查 询、或提供给应用程序应用或固化在数据库中。
[0050] 步骤212,提取统计结果,并更新到统计结果数据库中。
[0051] 在本实施中,定时调用接口函数,按照预设的统计目标依次提取出统计结果,并把 结果更新到统计结果数据库中。
[0052]参见图3,提供了一种数据分析方法的应用场景。由应用程序3〇2向队列系统304 推送数据。应用程序3〇2推送的数据已预先定义好数据了格式,例如jS0N数据格式。队列 系统304可以但不限于是采用包含HFO (FIFO, First Input and First Output,先进先 出)存储芯片的硬件系统。队列系统3〇4接收推送的数据并进行格式化,例如为 JS0N格式, 并添加到Redis队列服务器310的先进先出队列中,并按照先进先出的次序将数据提出给 统计系统306。统计运算系统3〇 6可以但不限于是采用具有统计计算功能的芯片来实现,统 计运算系统306对提取的数据进行合法性验证,再经过去重处理,按照预设的统计目标进 行累加得到统计结果,并把统计结果缓存在Redis缓存服务器 312中。统计运算系统3〇6 还提供了查询功能。存储系统3〇8提取统计结果存入统计结果数据库 314中,存储系统3〇8 也提供了查询功能。
[0053]参见图4,在又一个实施例中,提供了一种数据分析方法,其流程包括:
[0054]步骤402,定时接收应用程序推送的数据,并把数据更新到推送数据数据库中。 [0055]本实施例中,定时(例如可以设置为每隔一小时)接收应用程序推送的数据,把数 据存储到推送数据数据库中,该推送数据数据库可以是分布式数据库或关系型数据库'。 [00 56]步骤404,每次推送数据数据库更新后,根据预设的统计目标,调用推送数据数据 库统计函数对存储在推送数据数据库中的数据进行统计,得到临时统计结果并将每次得 到的临时统计结果进行累加得到统计结果。 < '
[0057]数据存储到推送数据数据库之后,根据预设的统计目标,调用推送数据数据库统 计函数丨如-COUNT函数(计数函数)、SUM函数(求和函数)等对当前存储在推送数据数据库中 的数据进行统计,得到临时统计结果。之后,清除推送数据数据库中的数据并再次接收应 矛王序推送的数据,进行统计,将每次得到的临时统计结果进行累加得到最線的统计结果 [00 58]步骤406,将最终的统计结果保存至统计结果数据库中 a < < 。
[0_在本实顧巾,敏推纖撤娜后,调馳___统计函数进行 射關,并機时射關进彳7勸_的最麵紐结果更新纖计
[0060] 参见图5,在一个实施例中,提供了一种数据分析装置,包括:
[0061] 数据接收模块502,用于接收应用程序推送的数据。
[0062]统计模块5〇4,用于根据预设的统计目标,对数据采用流式计算获得统计结果。 [0063]参见图6,在一个实施例中,一种数据分析装置,其中,数据接收模块502包括实时 接收模块6〇 2,统计模块5〇4包括实时统计模块604。
[0064] 实时接收模块6〇2,用于实时接收应用程序600推送的数据,并把数据缓存在 Redis先进先出队列608中。
[0065] 参见图8,在本实施例中,实时统计模块6〇4包括:数据提取单元6042,用于从 Redis先进先出队列608中提取数据。验证单元6〇44,用于对提取的数据进行合法性验 证。去重单元6046,用于根据预设的统计目标,对数据进行去重。累加单元6048,用于调 用Redis累加函数对预设的统计目标进行累加计数,得到统计结果,并把统计结果缓存在 Redis缓存610中。
[0066] 在本实施例中,该数据分析装置还包括统计结果提取模块506,统计结果提取模块 506包括第一提取模块606,用于提取实时统计模块604进行统计得到的统计结果,并更新 到第一统计结果数据库612中。
[0067]参见图7,在一个实施例中,一种数据分析装置,其中数据接收模块502包括实时 接收模块6〇2和定时接收模块7〇2,统计模块 5〇4包括实时统计模块604和定时统计模块 704。统计结果提取模块5〇6包括第一提取模块606和第二提取模块706。
[0068]实时接收模块6〇2,用于实时接收应用程序700推送的数据,并把数据缓存在 Redis先进先出队列608中。
[0069]参见图8,在本实施例中,实时统计模块604包括:数据提取单元6042,用于从 Redis先进先出队列608中提取数据。验证单元6044,用于对提取的数据进行合法性验 证。去重单元6046,用于根据预设的统计目标,对数据进行去重。累加单元 6〇48,用于调 用Redis累加函数对预设的统计目标进行累加计数,得到统计结果,并把统计结果缓存在 Redis缓存610中。
[0070]第一提取模块6〇6,用于提取实时统计模块6〇4进行统计得到的统计结果,并更新 到第一统计结果数据库612中。
[0071]本实施中,定时接收模块7〇2,用于定时接收应用程序700推送的数据,并把数据 更新到推送数据数据库708中。
[0072]定时统计模块704,用于每次推送数据数据库708更新后,根据预设的统计目标, 调用推送数据数据库统计函数对存储在推送数据数据库708中的数据进行统计,得到临时 统计结果,并将每次得到的临时统计结果进行累加得到统计结果。
[0073]第二提取模块7〇6,用于提取定时统计模块704进行统计得到的临时统计结果和 最终的统计结果,并更新到第二统计结果数据库712中。
[0074]以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并 不能因此而理^为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员 来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保 护范围。因此,本发明专利的保护范围应以所附权利要求为准。
【权利要求】
1. 一种数据分析方法,所述方法包括: 接收应用程序推送的数据; 根据预设的统计目标,对所述数据采用流式计算获得统计结果。
2. 根据权利要求1所述的方法,其特征在于,所述接收应用程序推送的数据包括: 实时接收应用程序推送的数据,并把所述数据缓存在Redis先进先出队列中; 所述根据预设的统计目标,对所述数据采用流式计算获得统计结果包括: 从所述Redis先进先出队列中提取数据,并对所述数据进行合法性验证,若未通过验 证,则重新提取数据,若通过验证,则调用Redis累加函数对预设的统计目标进行累加计 数,得到所述统计结果。
3. 根据权利要求2所述的方法,其特征在于,在所述调用Redis累加函数对预设的统计 目标进行累加计数前,还包括: 根据预设的统计目标,对所述数据进行去重。
4. 根据权利要求1至3任一项所述的方法,其特征在于,所述接收应用程序推送的数据 还包括: 定时接收应用程序推送的数据,并把所述数据更新到推送数据数据库中; 所述根据预设的统计目标,对所述数据采用流式计算获得统计结果还包括: 每次所述推送数据数据库更新后,根据预设的统计目标,调用推送数据数据库统计函 数对存储在推送数据数据库中的数据进行统计,得到临时统计结果,并将每次得到的临时 统计结果进行累加得到所述统计结果。
5. 根据权利要求1所述的方法,其特征在于,在所述根据预设的统计目标,对所述数据 采用流式计算获得统计结果的步骤之后,还包括: 提取所述统计结果,并更新到统计结果数据库中。
6. -种数据分析装置,其特征在于,包括: 数据接收模块,用于接收应用程序推送的数据; 统计模块,用于根据预设的统计目标,对所述数据采用流式计算获得统计结果。
7. 根据权利要求6所述的装置,其特征在于,所述数据接收模块包括实时接收模块,用 于实时接收应用程序推送的数据,并把所述数据缓存在Redis先进先出队列中; 所述统计模块包括实时统计模块,所述实时统计模块包括数据提取单元,用于从所述 Redis先进先出队列中提取数据;验证单元,用于对所述数据进行合法性验证;累加单元, 用于调用Redis累加函数对预设的统计目标进行累加计数,得到所述统计结果。
8. 根据权利要求8所述的装置,其特征在于,所述实时统计模块还包括去重单元,用于 根据预设的统计目标,对所述数据进行去重。
9. 根据权利要求6至8任一项所述的装置,其特征在于,所述数据接收模块进一步包括 定时接收模块,用于定时接收应用程序推送的数据,并把所述数据更新到推送数据数据库 中; 所述统计模块进一步包括定时统计模块,用于每次所述推送数据数据库更新后,根据 预设的统计目标,调用数据库统计函数对存储在推送数据数据库中的数据进行统计,得到 临时统计结果,并将每次得到的临时统计结果进行累加得到所述统计结果。
10. 根据权利要求6所述的装置,其特征在于,所述装置还包括统计结果提取模块,用 于提取所述统计结果,并更新到统计结果数据库中。
【文档编号】G06F17/30GK104252458SQ201310256819
【公开日】2014年12月31日 申请日期:2013年6月25日 优先权日:2013年6月25日
【发明者】张奎 申请人:博雅网络游戏开发(深圳)有限公司