一种游戏玩家数据的存储、分析方法及装置【技术领域】
本发明涉及游戏中游戏角色群体的海量玩家数据的存储、分析方法及装置。
【背景技术】
游戏中,例如网络游戏,手游等,涉及大量的游戏角色,各游戏角色均对应一部
分玩家数据,例如参与副本的次数,登录时长,活跃程度,消费情况等等。相应地,
游戏中会产生海量的玩家数据。现有的玩家游戏数据采用传统的关系型数据库进行存
储。一般而言,游戏数据需要保存每天的玩家数据,因此采用关系型数据库存储时,
一般以天作为表的主键,然后把游戏角色的id和角色的各种行为作为其他的列保存在
表中,如表1所示。
表1
日期
角色id
行为1
行为2
…
行为n
行为n+1
20150725
id1
V1
V2
…
Vn
Vn+1
20150725
id2
P1
P2
…
Pn
Pn+1
表中,V1~Vn+1分别表示角色id1参与n+1中不同的行为的度量值,P1~Pn+1分
别表示角色id2参与n+1中不同的行为的度量值。在上述表格存储的情形下,在进行
角色分析时,查询语句通过对游戏行为的列进行筛选,获得符合条件的角色的id,再
以获得的符合条件的角色id作为筛选条件,查询它们的其他行为数据。
上述过程中,存在分析效率非常差的问题。原因是,一般的游戏都有几百上千万,
甚至几千万的游戏角色,要从如此多的海量记录中查找出符合条件的角色id,查找困
难,效率较低。更进一步,在筛选出符合条件的角色id之后,这部分角色群体数量可
能也不小,要以这些角色id为条件进一步去查找它们的其他行为数据,效率也十分低
下。因此,传统的存储及分析方法的效率是非常差的。
【发明内容】
本发明所要解决的技术问题是:弥补上述现有技术的不足,提出一种游戏玩家数
据的存储、分析方法及装置,可获得高效的筛选分析效率。
本发明的技术问题通过以下的技术方案予以解决:
一种游戏玩家数据的分析方法,包括以下步骤:1),以第一表和第二表的形式存
储游戏角色群体的玩家数据,其中,第一表中,行名为日期,列名包括列簇名和子列
名;其中,列簇名为玩家的一类游戏行为,子列名为一类游戏行为下的具体行为;第
一表的单元格中存储参与具体行为的角色以及度量值;第二表中,行名为日期和角色
的组合,列名包括所述列簇名和所述子列名;第二表的单元格中存储了相应角色在相
应日期参与具体行为的度量值;2),根据分析条件提取筛选条件,从第一表中筛选出
符合条件的角色群体;3),根据分析条件,从第二表中获取所述角色群体的行为的度
量值信息。
一种游戏玩家数据的存储方法,以第一表和第二表的形式存储游戏角色群体的玩
家数据,其中,第一表中,行名为日期,列名包括列簇名和子列名;其中,列簇名为
玩家的一类游戏行为,子列名为一类游戏行为下的具体行为;第一表的单元格中存储
一天中参与具体行为的角色以及度量值;第二表中,行名为日期和角色的组合,列名
包括所述列簇名和所述子列名;第二表的单元格中存储了相应角色相应日期参与具体
行为的度量值。
一种游戏玩家数据的分析装置,包括存储模块、筛选模块和分析模块;所述存储
模块用于以第一表和第二表的形式存储游戏角色群体的玩家数据,其中,第一表中,
行名为日期,列名包括列簇名和子列名;其中,列簇名为玩家的一类游戏行为,子列
名为一类游戏行为下的具体行为;第一表的单元格中存储一天中参与具体行为的角色
以及度量值;第二表中,行名为日期和角色的组合,列名包括所述列簇名和所述子列
名;第二表的单元格中存储了相应角色相应日期参与具体行为的度量值;所述筛选模
块用于根据分析条件提取筛选条件,并从第一表中筛选出符合条件的角色群体;所述
分析模块用于根据分析条件,从第二表中获取所述角色群体的行为的度量值信息。
本发明与现有技术对比的有益效果是:
本发明的游戏玩家数据的存储、分析方法及装置,采用不同的表结构设计,将海
量数据同时存储为第一表和第二表的形式。这样,通过第一表,列簇和子列名的设计,
把行为的类别作为列簇,把具体行为名称作为子列名,在单元格内同时保存一天之中
某个特定行为的所有角色及该行为的度量值,从而有利于快速筛选出满足条件的角色。
通过第二表,以角色id和日期作为行键,基于行键进行过滤筛选,可快速定位到角色
群体所在的行单元,便于快速获取游戏角色的其他行为特征,进行高效的群体分析。
通过上述两方面的作用,快速筛选,快速定位分析,从而提高海量玩家数据进行分析
时的分析效率。
【具体实施方式】
本发明的构思是:按列存储游戏中海量的玩家数据,存储时采用双表结构,可以
在角色群体筛选和角色群体分析两个阶段都达到较高的筛选效率。第一表(群体筛选
表)的表结构设计,有利于快速筛选出符合条件的角色群体;第二表(群体分析表)
的表结构设计,有利于快速定位到角色的指定具体行为的度量值。相比于以往,从而
分析效率更高。
本具体实施方式的游戏玩家数据分析方法是一种对游戏中的游戏角色群体的海量
玩家数据进行分析的方法,首先将海量玩家数据按照第一表和第二表的形式存储,存
储成两种表格形式,分别用于角色群体筛选和角色群体行为分析。下文中分别称之为
群体筛选表(第一表)和群体分析表(第二表)。本具体实施方式选用HBase数据表作
为存储系统。HBase数据表的每一列由列簇名和子列名构成,即“列簇名:列名”。其
中一个列簇下面可以对应多个子列名,一个子列名只能归属于一个列簇。同一个列簇
的数据保存在同一个文件中。当列簇有多个,涉及的数据量比较大时,会划分为多个
文件,分别保存在多个文件中,而多个文件可分布在不同的服务器上。
在群体筛选表(第一表)中,以日期作为行健,即每天的数据会对应到表中的行
中,可按单独一行的形式存储多个角色的玩家数据,也可按多行的形式分别存储多个
角色的玩家数据。游戏中的每一类游戏行为对应到一个列簇。每一类游戏行为可能的
具体行为(属性值)作为一个子列名,而参与了该具体行为的角色id及其行为属性的
度量值则都保存在该列下的单元格中,没有参与该具体行为的角色就不保存在该列下
的单元格中。例如,如下表2所示:
表2
上表中,对于参与副本这个游戏行为,设置一个名为FB的列簇与之对应。一天中,
玩家参与的副本可能有多个,则子列名包括多个参与具体不同副本的行为,如参与第
一副本的行为FB1,参与第二副本的行为FB2,…,参与第N副本的行为FBN,则列
簇FB下有FB1,FB2,…,FBN等N个子列名。度量值则为角色参与具体副本行为的
次数。如果角色id1在2015年7月25日有参与第一副本的行为(FB1),参与次数为2
次,则存储时,在2015年7月25日对应的行中,在列簇FB的FB1列下的单元格中
存储为一条记录,例如id1:2,表示具有参与第一副本行为的是角色id1,且参与了两
次。类似地,列簇名为物品消费行为item时,相应地,子列名包括多个购买具体不同
物品的行为,度量值为角色购买具体物品的个数。
上表仅列举了两类游戏行为——参与副本行为和物品消费行为,在此仅为示例性,
不限制于此,还可包括其他类别的游戏行为。表2中这两种行为分别对应列簇FB和列
簇Item,列簇FB包含的列有FB1,FB2等,列簇Item包含的列有Item1,Item2等。
列簇FB中的列下的单元格保存了角色id及角色参与相应副本的次数,同一天中一个
单元格内的记录数有多条,每一条对应一个角色id。如20150725行,FB1列下的单元
格包含了两条记录,分别为角色id1和角色id2参与第一副本行为的次数。列簇Item
中的列下的单元格保存了角色id及角色购买的相应物品的个数。
设计上述结构的表用于后续群体筛选,能够快速定位到符合条件的行为所在的列,
从而通过直接读取单元格的数据就能够获得符合条件的角色id。该结构的表,定位到
具体行为所在的列之后,对单元格中表现了该具体行为的角色的度量值进行判断,是
否满足过滤条件。例如,需要筛选出参与第一副本行为FB1的次数大于10次的角色群
体时,定位到FB1这一列之后,对单元格中的[角色id:度量值]进行筛选,选出度量
值>10的这部分角色id即是要筛选出来的群体。而以表1为例的传统存储方案,则存
在多种弊端:一方面,因为表1的传统方案中数据是按行存储的,即便只是针对某一
个具体行为进行筛选,也需要读取出角色id的所有行为,才能筛选到具体行为,其无
法快速定位到具体行为所在的列。另一方面,需要对所有的角色id进行判断是否符合
度量值条件。这是因为不能确定某个id是否有表现某个具体行为。而本具体实施方式
中定位到列之后,就可以判定,因为只有单元格内存储的那些角色才具有该具体行为
的表现,其他不在单元格内的角色id就没有该具体行为表现,也不需要额外的判断。
相比于传统存储方案筛选的过程,本具体实施方式的群体筛选表基于列名以及单元格
存储内容进行高效筛选,过滤效率较高。
群体筛选表采用HBase数据表具有的一个效果是,在构建表时不会构建所有可能
会出现的列,但由于HBase数据表提供的可扩展性,可以在列出现时新建一个新的列,
因此无需担心列名不存在的情况。
优选地,利用HBase数据表按列存储的特性,不同类的行为的玩家数据可保存在
不同的文件中。HBase数据表利用分布式文件系统的优势,还可进一步使得不同类的
列数据对应的不同文件分散到不同的服务器进行存储。利用这种存储特点,当群体筛
选的条件有多个且针对不同类的游戏行为时,可进一步优选地,把针对各类别行为的
筛选任务进行独立,例如,将FB行为与Item行为的筛选任务独立开来,根据文件的
存放位置把筛选任务分发到集群的各个不同的服务器,充分利用集群的计算能力。每
个筛选任务得到一批符合条件的角色id,最后在客户端对所有服务器返回的角色id进
行合并,得到满足最终条件的角色id。利用分布式集群的优势,把计算任务分散到集
群的各个服务器,可进一步提高筛选过滤效率。
群体分析表(第二表)的表结构设计中,以日期和角色id作为行健。对于列簇和
子列名,与群体筛选表类似,把具体行为保存在列名中,同时把具体行为所在的一类
行为类别作为列簇,单元格中仅保存各具体行为下的角色的度量值。例如,如下表3
所示:
表3
表3中,行健分别由日期和角色id构成,表中也列举了参与副本和物品消费两种
游戏行为,列簇以及列簇中的各列与前述第一表(群体筛选表,表2)中的含义相同。
列簇FB中的列下的单元格只保存了角色在相应日期参与相应副本的次数,且一天的记
录数只有一条,列簇Item中的列下的单元格只保存了角色在相应日期购买相应物品的
数量,同样一天的记录数只有一条。
设计上述结构的表用于后续群体分析。在进行群体分析时,在指定了需要分析的
行为列表及其具体行为属性的情况下,可以快速地获得角色id在该具体行为属性下的
度量值。
构建上述两个表后,分析时即根据各种分析场景,先在第一表中筛选出符合条件
的角色,然后在第二表中获取相应角色群体的行为的度量值信息,从而提取到分析信
息。如下根据不同的分析场景分别进行说明。
分析场景一:需分析2015年7月25日参与副本FB1的次数大于2且参与副本FB2
的次数大于2的这群玩家,在2015年7月26日到2015年7月27日期间购买物品Item1
的个数总和。
A1.群体筛选阶段:
以20150725为条件过滤行健,筛选出日期为2015年7月25日的记录,然后以列
簇名FB和列名FB1为过滤条件定位到参与第一副本行为FB1对应的列,取出参与第
一副本的角色id及参与的次数,然后过滤出参与次数大于2的角色id集合set1。
接着以列簇名FB和列名FB2为过滤条件定位到参与第二副本行为FB2对应的列,
取出参与第二副本的角色id及参与的次数,然后过滤出参与次数大于2的角色id集合
set2。
通过集合set1和集合set2求交集,得到符合条件的角色群体set,到此群体筛选阶
段结束。
A2.群体分析阶段:
首先过滤出行健的日期部分为20150726至20150727,且角色id部分位于群体筛
选阶段结束后得到的集合set之中的行。然后通过列簇名Item和列名Item1定位到物品
Item1对应的列,取出单元格的内容,即为各个角色id购买物品Item1的个数。对所有
的内容求和,即为最终所要分析的目标结果。
分析场景二:需分析2015年7月25日参与第一副本和第二副本的次数之和大于2
的这群玩家的其它行为特征。该分析场景中,相对于分析场景一,群体筛选的条件更
为复杂,需要根据各个行为组合之后的结果进行过滤。
B1:角色群体筛选阶段:
以20150725为条件过滤行健,筛选出日期为2015年7月25日的记录,然后以列
簇名FB和列名FB1为过滤条件定位到参与第一副本行为对应的列,取出参与第一副
本的角色id及参与的次数,保存为一个映射map1。
接着以列簇名FB和列名FB2为过滤条件定位到参与第二副本行为对应的列,取
出参与第二副本的角色id及参与的次数,保存为另外一个映射map2。
将映射map1和映射map2结合,得到角色参与两个副本的次数之后,然后筛选出
次数之和大于2的角色id的集合set。到此群体筛选阶段结束。
B2:群体分析阶段与分析场景一中的群体分析阶段类似,在此不重复描述。
分析场景三:需分析2015年7月25日参与第一副本的次数大于2,且购买物品Item1
的次数大于0的这群玩家的其他行为特征。该分析场景为角色筛选条件包含了不同类
别的行为的情况。
C1:角色群体筛选阶段:
构建两个筛选任务,分别以列簇名FB和列名FB1为过滤条件定位到参与第一副
本行为FB1对应的列,以及以列簇名Item和列名Item1为过滤条件定位到物品Item1
所在的列。两个筛选任务同时发送到HBase数据表对应的服务器,同时进行查询筛选,
各自把过滤到的角色id集合返回到客户端,然后进行汇总合并,取交集,得到最终满
足条件的角色id集合。
C2:群体分析阶段与分析场景一中的群体分析阶段类似,在此不重复描述。
综上,本具体实施方式中的分析方法,按照两种表格形式进行存储,分别用于群
体筛选和群体分析,可针对不同分析场景完成分析任务。分析时,可快速筛选出符合
条件的角色群体,同时可快速定位到角色的指定具体行为的度量值,有效提高分析过
程的效率。
本具体实施方式中还提供一种游戏玩家数据的分析装置,包括存储模块、筛选模
块和分析模块。
其中,存储模块用于以第一表和第二表的形式存储游戏角色群体的玩家数据,其
中,第一表中,行名为日期,列名包括列簇名和子列名;其中,列簇名为玩家的一类
游戏行为,子列名为一类游戏行为下的具体行为;第一表的单元格中存储一天中参与
具体行为的角色以及度量值;第二表中,行名为日期和角色的组合,列名包括列簇名
和子列名;第二表的单元格中存储了相应角色参与具体行为的度量值。
筛选模块用于根据分析条件提取筛选条件,并从第一表中筛选出符合条件的角色
群体。
分析模块用于根据分析条件,从第二表中获取角色群体的行为的度量值信息。
本具体实施方式的分析装置,将海量玩家数据按照两种表格形式进行存储,分别
用于群体筛选和群体分析,分析时,可快速筛选出符合条件的角色群体,同时可快速
定位到角色的指定具体行为的度量值,有效提高分析过程的效率。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定
本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,
在不脱离本发明构思的前提下做出若干替代或明显变型,而且性能或用途相同,都应
当视为属于本发明的保护范围。