获取排名的方法及系统的制作方法

文档序号:6499576阅读:306来源:国知局
获取排名的方法及系统的制作方法
【专利摘要】本发明提出一种获取排名的方法及系统,其方法包括:获取实时数据;统计所述实时数据的总用户数量;获取所述实时数据在至少一个数据值区间中的用户数量的分布规律;将所述总用户数量及所述分布规律作为中间数据进行储存;接收用户排名查询请求以及所查询用户的实际数据值;根据查询用户的实际数据值、所述中间数据以及概率分布的数学规则,计算查询用户的排名。本发明具有运算量低、节约存储空间、实时性以及无法证伪的优点。
【专利说明】获取排名的方法及系统
【技术领域】
[0001]本发明涉及计算机【技术领域】,特别涉及一种获取排名的方法及系统。
【背景技术】
[0002]随着网络技术的发展,互联网已经成为人们工作学习中一个重要的部分。在互联网应用中,经常需要对用户数据进行排名。传统的方法是全量提取需要排名的用户属性值(例如会员成长值、游戏的玩家经验值等),消耗大量机器资源进行排序计算,最后将排序后每个用户的名次保存起来,需要的时候拉取并展示这个名次。
[0003]但是现有的这种排名方式存在一些缺点:
[0004](I)现有的排名方法需要对所有的用户数据进行排序计算,运算量大,对海量的用户数据进行排名时,会消耗大量的计算机资源,成本高昂。
[0005](2)现有方法经过计算后的排名结果中,包含了所有用户的数据,存要储用户数据的排名结果,会消耗大量的存储空间。
[0006](3)现有方法是对全量用户数据进行计算,运算量大,运算时间长,很难在短时间内对用户数据进行实时采集,因此是基于离线数据进行的分析计算,排名数据无法做到实时更新。

【发明内容】

[0007]本发明的目的是提供一种获取排名的方法及系统,以解决现有的排名方式运算量大、耗费存储空间、无法实时更新的问题。
[0008]本发明提出一种获取排名的方法,包括:
[0009]获取实时数据;
[0010]统计所述实时数据的总用户数量;
[0011]获取所述实时数据在至少一个数据值区间中的用户数量的分布规律;
[0012]将所述总用户数量及所述分布规律作为中间数据进行储存;
[0013]接收用户排名查询请求以及所查询用户的实际数据值;
[0014]根据查询用户的实际数据值、所述中间数据以及概率分布的数学规则,计算查询用户的排名。
[0015]本发明还提出一种获取排名的系统,包括:
[0016]数据获取模块,用于获取实时数据;
[0017]统计模块,用于统计所述实时数据的总用户数量;
[0018]分布规律获取模块,用于获取所述实时数据在至少一个数据值区间中的用户数量的分布规律;
[0019]存储模块,用于存储中间数据,所述中间数据包括所述总用户数量及所述分布规律;
[0020]交互模块,用于与用户终端进行通信;[0021]计算模块,用于根据查询用户的实际数据值、所述中间数据以及概率分布的数学规则,计算查询用户的排名。
[0022]相对于现有技术,本发明的有益效果是:
[0023](I)减少了计算量,不用对全量数据值进行排名运算,根据用户的实际数据值和中间数据,并结合概率分布的数学规则就可以计算出用户排名,而且可以根据对排名的不同精确度要求,设计不同的区间分段方式。
[0024](2)减少了存储量,不需要存储用户的排名,仅仅需要存储中间数据,用户的排名就可以根据当时的数据值动态的计算出来。
[0025](3)排名的实时性,用户的数据值提升后,获取的用户排名便会随之变高。
[0026](4)用户无法证伪(即证明他的排名不是真正的排名),因为本发明的计算方式是符合排名的有序性的(即数据值高的人排名一定比数据值低的人高,数据值提升后排名会随之变高),用户其实关注的并不是自己的真实名次,关注的核心是和别人名次的比较,以及自己数据值提升后带来的名次提升,因而通过本发明方案获取的用户排名具有很高的真实性。
[0027]当然,实施本发明的任一产品并不一定需要同时达到以上所述的所有优点。
[0028]上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。
【专利附图】

【附图说明】
[0029]图1为本发明实施例的一种获取排名的方法的流程图;
[0030]图2为本发明实施例的一种获取排名的系统的结构图;
[0031]图3为本发明实施例的一种分布规律获取模块结构图;
[0032]图4为本发明实施例的另一种分布规律获取模块结构图。
【具体实施方式】
[0033]为更进一步阐述本发明达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的获取排名的方法及系统其【具体实施方式】、方法、步骤及功效,详细说明如后。
[0034]有关本发明的前述及其他技术内容、特点及功效,在以下配合参考图式的较佳实施例详细说明中将可清楚的呈现。通过【具体实施方式】的说明,当可对本发明为达成预定目的所采取的技术手段及功效得以更加深入且具体的了解,然而所附图式仅是提供参考与说明之用,并非用来对本发明加以限制。
[0035]请参见图1,其为本发明实施例的一种获取排名的方法的流程图,其包括以下步骤:
[0036]SI I,获取实时数据。
[0037]所述实时数据是排名计算的数据基础,本发明所述的用户数据指的是用户的各种属性值数据,如时间、游戏的玩家经验值等,这些数据可以按照数值的大小进行排名,实时数据可以在预设时间段进行定时采集,间隔时间越短,获取排名的实时性越高,准确性也越高。实时数据也可以采用抽样的方式采集,例如用户数据的分布如果是无规律的,可以不用全局扫描,而按照一定比例抽样采集用户数据,这样可以进一步地节省计算机资源。当然,采用抽样方式采集实时数据的话,最后需要将用户排名按照抽样比例还原成全量用户数据中的排名。
[0038]S12,统计所述实时数据的总用户数量。
[0039]获取到作为排名计算基础的实时数据后,通过对获取到的实时数据进行全局扫描,可以统计出这些数据包含的总用户数量,一般一个数据值对应一个用户,例如进行用户在线时间的排名时,所获取到的实时数据即为时间数据,在扫描这些实时数据的过程中,发现一个时间数据即作一次计数,从而可以统计出该总用户数量。
[0040]S13,获取所述实时数据在至少一个数据值区间中的用户数量的分布规律。
[0041]用户某种数据值的分布,数学上可以看成是一种概率分布。如果当前所有用户属性值的下限是NI,上限是N2,用户数是M,可以看成是M个值对象在(NI,N2)区间上的一种分布。常见的分布有均匀分布(即NI到N2上每一个点分布的对象数相等)和正态分布(越靠近NI到N2中点的点,分布的对象数越多)。这里所述的分布规律是指将一个数据值区间中的用户分布假设成均匀分布,从而根据落在该区间中的用户数量获取到的用户值对象的分布情况。可以用来表现用户分布规律的数据括数据值区间的数据最大值和数据最小值、数据值区间中的用户数量、实时数据中最小数据值或最大数据值到数据值区间的各个节点之间用户数量等,可以根据排名计算需要获取表现分布规律的多种数据。
[0042]S14,将所述总用户数量及所述分布规律作为中间数据进行储存。
[0043]S15,接收用户排名查询请求以及所查询用户的实际数据值。
[0044]S16,根据查询用户的实际数据值、所述中间数据以及概率分布的数学规则,计算查询用户的排名。
[0045]下面以两种较佳的排名计算方式进行说明:
[0046]第一种方式,也是最简单实现方式,即找出实时数据中的最低数据值和最高数据值,这种情况下的分布规律即是指在最低数据值和最高数据值的区间中用户值对象的分布情况,而在最低数据值和最高数据值的区间中的用户数量即实时数据的总用户数量,所以这种情况下中间数据仅包括了最低数据值、最高数据值和总用户数量。
[0047]当接收到用户排名查询请求时,根据用户的实际数据值、中间数据以及概率分布的数学规则就可以直接计算出较为近似的排名,假设用户均匀分布的情况下,按照概率分布,那么最高数据值到实际数据值之间的用户数量比上总用户数量之间的比值,与最高数据值与实际数据值的差值比上最高数据值与最低数据值的差值相同,这样就能计算出最高数据值到实际数据值之间的用户数量,即计算出排在查询用户之前的用户数量,计算公式如下:
[0048]P= (m(n2_n) / (n2_nl))+1
[0049]其中,P为查询用户的排名,m为实时数据的总用户数量,nl为实时数据的最低数据值,n2为实时数据的最高数据值,η为查询用户的实际数据值。
[0050]第一种方式的计算结果可能和实际情况有一些偏差,因为实际上用户的分布不会是刚好是均匀的,因此本申请还揭示了第二种方式,可以通过增加分布区间数的方式来提高计算的精确度,这种情况下的分布规律是指在多个属性值区间中用户值对象的分布情况。
[0051]首先找出实时数据中的最低数据值和最高数据值;接着在最低数据值和最高数据值之间依次拆分成多个属性值区间,拆分的属性值区间越多,则最终计算出的排名精确性越高;获取各个属性值区间的相对最低数据值和相对最高数据值,一个属性值区间的相对最低数据值和相对最高数据值是指这个属性值区间中最低的数据值和最高的数据值;获取落在所述最低数据值到各个属性值区间的相对最高数据值之间的用户数量(即获取落在最低数据值到各个属性值区间各个节点之间的用户数量)。所以这种情况下中间数据包括了实时数据的最低数据值和最高数据值、实时数据的总用户数量、属性值区间的数量,各个属性值区间的相对最低数据值和相对最高数据值、以及落在各个属性值区间的用户数量。
[0052]当接收到用户排名查询请求时,根据用户的实际数据值、中间数据以及概率分布的数学规则就可以直接计算出较为近似的排名,计算公式如下:
[0053]P= (m-1y+(ky-n) (iy-1x)/(ky-kx))+l
[0054]其中,P为查询用户的排名,m为实时数据的总用户数量,IX为落在所述最低数据值到查询用户所在属性值区间的相对最低数据值之间的用户数量,iy为落在所述最低数据值到查询用户所在属性值区间的相对最高数据值之间的用户数量,kx为查询用户所在属性值区间的相对最低数据值,ky为查询用户所在属性值区间的相对最高数据值,η为查询用户的实际数据值。
[0055]例如将实时数据的最低数据值到最高数据值区间(nl,n2)拆分成10个相等的区间(nl,kl,k2...k9,n2);然后对实时数据进行一遍扫描,计算出落在nl到每个节点上的用户数i,即il表示属性值 在nl到kl之间的用户数…i3表示属性值在nl到k3之间的用户数…i9表示属性值在nl到k9之间的用户数;假设η在k4和k5之间,且每一个属性值区间内的用户分布是均匀的,就可以计算出属性为η的用户排名P如下:P= (m-15+(k5-n)(i5-14)/(k5-k4))+l。
[0056]上面将(nl,n2)区间拆分成了 10段,实际运用中可以根据情况拆分成任意段,段数越多越接近真实排名情况,但是相应的计算量和消耗的存储空间也越大。此外,每个区间段不需要是等长的,可以根据事先的分析来确定段的长度,稀疏的数据分布区,区间段可以长一些,密集的数据分布区,区间段短一些,这样数据会更精确。
[0057]当然,如果实时数据是抽样采集的,用户排名P还要除以抽样比例,并获取用户的最终排名。
[0058]下面用一具体应用来举例说明本发明。
[0059]某游戏需要对全量用户的总游戏时间进行排名,应用户请求告知其游戏时间的当前名词。假设该游戏共设有64个数据库,实现方案如下:
[0060]1.从64台分布式数据库中随机抽取一台作为抽样的样本。
[0061]2.提取最短的和最高的游戏时长,并设计了一种分段方法(如分为100段)。
[0062]3.从样本数据库中计算出落在每一段里的用户数量,并根据概率推算出全量用户情况下落在每一段里的用户数量(抽样数据库每一段里的用户数量与全量数据库每一段里的用户数量的比值为1/64)。
[0063]4.将预处理的结果保存到一份配置文件中,供查询服务读取。
[0064]5.需要展示用户排名的时候,对查询服务发起请求,带上用户当前的游戏时长。这样查询服务就可以根据已经提取的预处理结果和当前用户的游戏时长,近似的估算出用户在全量用户中的名次并给予返回了。
[0065]采用本发明来获取用户排名具有以下优点:
[0066](I)减少了计算量,不用对全量数据值进行排名运算,根据用户的实际数据值和中间数据,并结合概率分布的数学规则就可以计算出用户排名,而且可以根据对排名的不同精确度要求,设计不同的区间分段方式。
[0067](2)减少了存储量,不需要存储用户的排名,仅仅需要存储中间数据,用户的排名就可以根据当时的数据值动态的计算出来。
[0068](3)排名的实时性,用户的数据值提升后,获取的用户排名便会随之变高。
[0069](4)用户无法证伪(即证明他的排名不是真正的排名),因为本发明的计算方式是符合排名的有序性的(即数据值高的人排名一定比数据值低的人高,数据值提升后排名会随之变高),用户其实关注的并不是自己的真实名次,关注的核心是和别人名次的比较,以及自己数据值提升后带来的名次提升,因而通过本发明方案获取的用户排名具有很高的真实性。
[0070]本发明还提出一种获取排名的系统,如图2所示,其包括数据获取模块21、统计模块22、分布规律获取模块23、存储模块24、交互模块25及计算模块26。统计模块22和分布规律获取模块23都连接到数据获取模块21,存储模块24分别与统计模块22和分布规律获取模块23相连,计算模块26连接到存储模块24,交互模块25连接到计算模块26。
[0071]在进行排名计算之前,要先获取中间数据。首先由数据获取模块21获取实时数据,可以通过全量采集用户数据获得实时数据,也可以通过抽样采集用户数据获得实时数据。获得实时数据后,通过统计模块22统计实时数据的总用户数量,以及通过分布规律获取模块23获取所述实时数据在至少一个数据值区间中的用户数量的分布规律,并将总用户数量和分布规律作为中间数据存入存储模块24中。分布规律是指将一个数据值区间中的用户分布假设成均匀分布,从而根据落在该区间中的用户数量获取到的用户值对象的分布情况。可以用来表现用户分布规律的数据括数据值区间的数据最大值和数据最小值、数据值区间中的用户数量、实时数据中最小数据值或最大数据值到数据值区间的各个节点之间用户数量等,可以根据排名计算需要获取表现分布规律的多种数据。
[0072]交互模块25用于与用户终端进行通信,当交互模块25接收到用户的排名查询请求时,计算模块26从数据库中获取该用户的实际数据值,并从存储模块24中获取中间数据,然后根据查询用户的实际数据值、所述中间数据以及概率分布的数学规则,计算查询用户的排名。最后通过交互模块25将用户排名反馈给相应的用户终端。
[0073]根据分布规律获取模块23获取的分布规律的不同,计算模块26可以依照多种不同的公式来计算用户排名,下面以两种较佳的计算方式进行说明。
[0074]请参见图3,其为本发明实施例的一种分布规律获取模块结构图,此分布规律获取模块23包括数据值获取单元231,数据值获取单元231用于获取实时数据中的最低数据值和最高数据值。本实施例分布规律获取模块23所获取的分布规律是指在最低数据值和最高数据值的区间中用户值对象的分布情况,而在最低数据值和最高数据值的区间中的用户数量即实时数据的总用户数量,所以这种情况下中间数据仅包括了最低数据值、最高数据值和总用户数量。[0075]当接收到用户排名查询请求时,计算模块26便可以根据用户的实际数据值、中间数据以及概率分布的数学规则计算出较为近似的排名,假设用户均匀分布的情况下,按照概率分布,那么最高数据值到实际数据值之间的用户数量比上总用户数量之间的比值,与最高数据值与实际数据值的差值比上最高数据值与最低数据值的差值相同,这样就能计算出最高数据值到实际数据值之间的用户数量,即计算出排在查询用户之前的用户数量,计算模块26采用的计算公式如下:
[0076]P= (m(n2_n) / (n2_nl))+1
[0077]其中,P为查询用户的排名,m为实时数据的总用户数量,nl为实时数据的最低数据值,n2为实时数据的最高数据值,η为查询用户的实际数据值。
[0078]请参见图4,本发明实施例的一种分布规律获取模块结构图,此分布规律获取模块23包括数据值获取单元231、区间拆分单元232、相对数据值获取单元233、区间用户统计单元234。数据值获取单元231用于获取实时数据中的最低数据值和最高数据值;区间拆分单元232用于在所述最低数据值和最高数据值之间依次拆分成多个属性值区间;相对数据值获取单元233用于获取各个属性值区间的相对最低数据值和相对最高数据值;区间用户统计单元234用于获取落在所述最低数据值到各个属性值区间的相对最高数据值之间的用户数量。这种情况下中间数据包括了实时数据的最低数据值和最高数据值、实时数据的总用户数量、属性值区间的数量,各个属性值区间的相对最低数据值和相对最高数据值、以及落在各个属性值区间的用户数量。
[0079]当接收到用户排名查询请求时,计算模块26可以根据用户的实际数据值、中间数据以及概率分布的数学规则就可以直接计算出较为近似的排名,计算公式如下:
[0080]P= (m-1y+(ky-n) (iy-1x)/(ky-kx))+l
[0081]其中,P为查询用户的排名,m为实时数据的总用户数量,IX为落在所述最低数据值到查询用户所在属性值区间的相对最低数据值之间的用户数量,iy为落在所述最低数据值到查询用户所在属性值区间的相对最高数据值之间的用户数量,kx为查询用户所在属性值区间的相对最低数据值,ky为查询用户所在属性值区间的相对最高数据值,η为查询用户的实际数据值。
[0082]当然,如果实时数据是抽样采集的,用户排名P还要除以抽样比例,并获取用户的最终排名。
[0083]通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明实施例可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是⑶-R0M,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或网络设备等)执行本发明实施例各个实施场景所述的方法。
[0084]以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容作出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
【权利要求】
1.一种获取排名的方法,其特征在于,包括: 获取实时数据; 统计所述实时数据的总用户数量; 获取所述实时数据在至少一个数据值区间中的用户数量的分布规律; 将所述总用户数量及所述分布规律作为中间数据进行储存; 接收用户排名查询请求以及所查询用户的实际数据值; 根据查询用户的实际数据值、所述中间数据以及概率分布的数学规则,计算查询用户的排名。
2.如权利要求1所述的获取排名的方法,其特征在于,所述实时数据为抽样获取的数据。
3.如权利要求1所述的获取排名方法,其特征在于,所述获取所述实时数据在至少一个数据值区间中的用户数量的分布规律的步骤包括:获取所述实时数据中的最低数据值和最高数据值。
4.如权利要求3所述的获取排名的方法,其特征在于,计算查询用户的排名时依照公式:
P = (m(n2_n)/ (n2_nl))+l 其中,P为查询用户的排名,m为实时数据的总用户数量,nl为实时数据的最低数据值,n2为实时数据的最高数据值,η为查询用户的实际数据值。
5.如权利要求1所述的获取排名的方法,其特征在于,所述获取所述实时数据在至少一个数据值区间中的用户数量的分布规律的步骤包括: 获取所述实时数据中的最低数据值和最高数据值; 在所述最低数据值和最高数据值之间依次拆分成多个属性值区间; 获取各个属性值区间的相对最低数据值和相对最高数据值; 获取落在所述最低数据值到各个属性值区间的相对最高数据值之间的用户数量。
6.如权利要求5所述的获取排名的方法,其特征在于,计算查询用户的排名时依照公式:
P = (m-1y+ (ky-n) (iy-1x)/ (ky-kx))+l 其中,P为查询用户的排名,m为实时数据的总用户数量,IX为落在所述最低数据值到查询用户所在属性值区间的相对最低数据值之间的用户数量,iy为落在所述最低数据值到查询用户所在属性值区间的相对最高数据值之间的用户数量,kx为查询用户所在属性值区间的相对最低数据值,ky为查询用户所在属性值区间的相对最高数据值,η为查询用户的实际数据值。
7.一种获取排名的系统,其特征在于,包括: 数据获取模块,用于获取实时数据; 统计模块,用于统计所述实时数据的总用户数量; 分布规律获取模块,用于获取所述实时数据在至少一个数据值区间中的用户数量的分布规律; 存储模块,用于存储中 间数据,所述中间数据包括所述总用户数量及所述分布规律; 交互模块,用于与用户终端进行通信;计算模块,用于根据查询用户的实际数据值、所述中间数据以及概率分布的数学规则,计算查询用户的排名。
8.如权利要求7所述的获取排名的系统,其特征在于,所述实时数据为抽样获取的数据。
9.如权利要求7所述的获取排名的系统,其特征在于,所述分布规律获取模块进一步包括: 数据值获取单元,用于获取实时数据中的最低数据值和最高数据值。
10.如权利要求9所述的获取排名的系统,其特征在于,所述计算模块计算查询用户的排名时依照公式:
P= (m(n2_n) / (n2_nl))+1 其中,P为查询用户的排名,m为实时数据的总用户数量,nl为实时数据的最低数据值,n2为实时数据的最高数据值, η为查询用户的实际数据值。
11.如权利要求7所述的获取排名的系统,其特征在于,所述分布规律获取模块进一步包括: 数据值获取单元,用于获取实时数据中的最低数据值和最高数据值; 区间拆分单元,用于在所述最低数据值和最高数据值之间依次拆分成多个属性值区间; 相对数据值获取单元,用于获取各个属性值区间的相对最低数据值和相对最高数据值; 区间用户统计单元,用于获取落在所述最低数据值到各个属性值区间的相对最高数据值之间的用户数量。
12.如权利要求11所述的获取排名的系统,其特征在于,所述计算模块计算查询用户的排名时依照公式:
P = (m-1y+ (ky-n) (iy-1x)/ (ky-kx))+l 其中,P为查询用户的排名,m为实时数据的总用户数量,IX为落在所述最低数据值到查询用户所在属性值区间的相对最低数据值之间的用户数量,iy为落在所述最低数据值到查询用户所在属性值区间的相对最高数据值之间的用户数量,kx为查询用户所在属性值区间的相对最低数据值,ky为查询用户所在属性值区间的相对最高数据值,η为查询用户的实际数据值。
【文档编号】G06F17/30GK103970768SQ201310034180
【公开日】2014年8月6日 申请日期:2013年1月29日 优先权日:2013年1月29日
【发明者】张亚圣 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1