CN106487833B - 网络监测中独立用户数的统计方法及装置 - Google Patents

网络监测中独立用户数的统计方法及装置 Download PDF

Info

Publication number
CN106487833B
CN106487833B CN201510532532.4A CN201510532532A CN106487833B CN 106487833 B CN106487833 B CN 106487833B CN 201510532532 A CN201510532532 A CN 201510532532A CN 106487833 B CN106487833 B CN 106487833B
Authority
CN
China
Prior art keywords
target
byte
cryptographic hash
array
value
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.)
Active
Application number
CN201510532532.4A
Other languages
English (en)
Other versions
CN106487833A (zh
Inventor
陈国兴
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing guoshuangqianli Technology Co.,Ltd.
Original Assignee
Beijing Gridsum Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Gridsum Technology Co Ltd filed Critical Beijing Gridsum Technology Co Ltd
Priority to CN201510532532.4A priority Critical patent/CN106487833B/zh
Publication of CN106487833A publication Critical patent/CN106487833A/zh
Application granted granted Critical
Publication of CN106487833B publication Critical patent/CN106487833B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • H04L67/025Protocols based on web technology, e.g. hypertext transfer protocol [HTTP] for remote control or remote monitoring of applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1061Peer-to-peer [P2P] networks using node-based peer discovery mechanisms
    • H04L67/1065Discovery involving distributed pre-established resource-based relationships among peers, e.g. based on distributed hash tables [DHT] 

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

本申请公开了一种网络监测中独立用户数的统计方法及装置。该方法包括:获取多个用户的用户标识所对应的哈希值,得到多个哈希值;根据多个哈希值分别确定多个目标字节和多个目标数值,其中,根据每个哈希值分别确定一个目标字节和一个目标数值;根据多个目标字节和多个目标数值对预设字节数组进行更新,得到目标数组;以及根据目标数组统计多个用户中的独立用户数。通过本申请,解决了网络监测中进行独立用户数统计时空间开销较大的技术问题。

Description

网络监测中独立用户数的统计方法及装置
技术领域
本申请涉及数据处理领域,具体而言,涉及一种网络监测中独立用户数的统计方法及装置。
背景技术
在网络监测(例如,广告监测)过程中,经常需要统计各种条件下的独立用户数,例如,统计每天看过广告的人数等。目前统计独立用户数的方法有两种:
方法一,为每一个要计算的独立数维护一个集合,将用户标识依次添加到集合中(如果集合中已存在则不添加),最后计算集合中用户标识的数量,即为独立用户数。此方法中每一个独立数的计算需要的空间开销为:用户标识大小*用户数量。由此可以计算出当用户标识为GUID形式(十六个字节),用户数量为1亿时的空间开销约为1.5G。如果需要同时计算多个独立数,那空间开销会更大。一台128G内存的服务器,理论上也只能同时计算约80个这样的独立数。
方法二,首先根据可能的最大用户数生成一个足够长的bit数组,如预估用户有1亿,则生成一个长度大于1亿的bit数组,然后对每一个用户标识做哈希计算,将用户标识映射到bit数组的某一个位上,最后计算bit数组中值为1的字节的数量。此方法统计的独立用户数可能小于真实值,在用户数量为1亿时,空间开销最小为12兆,且空间开销受可能的总用户影响,与实际的用户数无关。因此,此方法很难应用于广告监测的独立用户数计算,因为广告监测中独立用户数最大值可能为几十亿,此时空间开销为几百兆。
针对相关技术中在网络监测中进行独立用户数统计时空间开销较大的问题,目前尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种网络监测中独立用户数的统计方法及装置,以至少解决网络监测中进行独立用户数统计时空间开销较大的技术问题。
根据本申请实施例的一个方面,提供了一种网络监测中独立用户数的统计方法,包括:获取多个用户的用户标识所对应的哈希值,得到多个哈希值;根据多个哈希值分别确定多个目标字节和多个目标数值,其中,根据每个哈希值分别确定一个目标字节和一个目标数值;根据多个目标字节和多个目标数值对预设字节数组进行更新,得到目标数组;以及根据目标数组统计多个用户中的独立用户数。
进一步地,获取多个用户的用户标识所对应的哈希值包括:利用均匀分布的哈希算法获取多个用户的用户标识所对应的哈希值。
进一步地,根据多个目标字节和多个目标数值对预设字节数组进行更新包括:按照预先设定的次序,依次根据多个哈希值中每个哈希值所对应的目标字节和该哈希值所对应的目标数值对预设字节数组进行更新,其中,按照预先设定的次序,依次根据多个哈希值中每个哈希值所对应的目标字节和该哈希值所对应的目标数值对预设字节数组进行更新包括:根据当前哈希值所对应的目标字节和当前哈希值所对应的目标数值对当前字节数组进行更新,其中,当前字节数组为根据次序中前一个哈希值所对应的目标字节和前一个哈希值所对应的目标数值对上一次更新得到的字节数组进行更新得到的字节数组。
进一步地,根据当前哈希值所对应的目标字节和当前哈希值所对应的目标数值对当前字节数组进行更新包括:判断当前哈希值所对应的目标数值是否大于当前字节数组的目标字节中的原有数值,其中,原有数值为上一次更新得到的字节数组的目标字节中的数值;如果判断结果为是,则将目标数值赋值给当前字节数组的目标字节;以及如果判断结果为否,则保持当前字节数组的目标字节中的数值不变。
进一步地,多个哈希值包括第一哈希值,根据多个哈希值分别确定多个目标字节和多个目标数值包括:将第一哈希值按照位进行拆分,得到第一拆分部分和第二拆分部分;根据第一拆分部分确定第一哈希值所对应的目标字节;以及根据第二拆分部分确定第一哈希值所对应的目标数值。
进一步地,第一拆分部分包括第一哈希值按照位进行拆分后得到的排列在前的预设个数的位,根据第一拆分部分确定第一哈希值所对应的目标字节包括:获取第一数值,其中,第一数值为第一拆分部分所表示的数值;以及确定预设字节数组中索引等于第一数值的字节为第一哈希值所对应的目标字节。
进一步地,根据第二拆分部分确定第一哈希值所对应的目标数值包括:依次读取第二拆分部分中的每个位所表示的值,直到读取到所表示的值为第二数值的位;确定所表示的值为第二数值的位在第二拆分部分中的位置;以及根据位置确定第一哈希值所对应的目标数值。
进一步地,预设字节数组的长度为4KB,预设个数为12个,第二数值为1。
进一步地,根据目标数组统计多个用户中的独立用户数包括:确定目标数组中所表示的值为0的字节的个数;以及根据目标数组中所表示的值为0的字节的个数和预设字节数组的长度确定独立用户数。
进一步地,通过以下公式确定独立用户数:Q=M*Log(M/V),其中,Q为独立用户数,M为预设字节数组的长度,V为目标数组中所表示的值为0的字节的个数。
根据本申请实施例的另一方面,还提供了一种网络监测中独立用户数的统计装置,包括:获取单元,用于获取多个用户的用户标识所对应的哈希值,得到多个哈希值;确定单元,用于根据多个哈希值分别确定多个目标字节和多个目标数值,其中,根据每个哈希值分别确定一个目标字节和一个目标数值;更新单元,用于根据多个目标字节和多个目标数值对预设字节数组进行更新,得到目标数组;以及统计单元,用于根据目标数组统计多个用户中的独立用户数。
通过本申请,采用包括以下步骤的方法:获取多个用户的用户标识所对应的哈希值,得到多个哈希值;根据多个哈希值分别确定多个目标字节和多个目标数值,其中,根据每个哈希值分别确定一个目标字节和一个目标数值;根据多个目标字节和多个目标数值对预设字节数组进行更新,得到目标数组;以及根据目标数组统计多个用户中的独立用户数,解决了网络监测中进行独立用户数统计时空间开销较大的技术问题,进而根据多个哈希值分别确定多个目标字节和多个目标数值,根据多个目标字节和多个目标数值对预设字节数组进行更新,并根据目标数组统计多个用户中的独立用户数,达到了减小独立用户数统计时的空间开销的效果。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请第一实施例的网络监测中独立用户数的统计方法的流程图;
图2是根据本申请第二实施例的网络监测中独立用户数的统计方法的流程图;以及
图3是根据本申请实施例的网络监测中独立用户数的统计装置的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本申请实施例,提供了一种网络监测中独立用户数的统计方法的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1是根据本申请第一实施例的网络监测中独立用户数的统计方法的流程图,如图1所示,该方法包括如下步骤:
步骤S102,获取多个用户的用户标识所对应的哈希值,得到多个哈希值。
用户标识是用于标识用户身份的信息,用户身份包括用户进行访问时采用的邮箱地址,账号(包括身份证号、名字、学号等)、IP地址等信息。用户标识是用于唯一标识用户身份的,不同的用户具有不同的用户标识。利用哈希算法可以获取多个用户的用户标识分别对应的哈希值。
例如,在广告监测中,上述多个用户可以是预设时间段内检测到的看过某广告的用户,多个用户中可能存在某个用户在该预设时间段内多次查看了该广告,也即多个用户中有重复出现的用户,也即多个用户的总数量大于多个用户中独立用户的数量;或者,在网站监测中,上述多个用户可以是每天登陆过某网站的人数,同样地,多个用户中可能存在某个用户在一天中多次访问了该网站,因此,多个用户的数量也可能大于该多个用户中独立用户的数量。
在该实施例中,哈希值可以以任意进制形式表示,如哈希值为十进制形式16,该值也可以表示为二进制形式10000,或者表示为十六进制形式10。
步骤S104,根据多个哈希值分别确定多个目标字节和多个目标数值,其中,根据每个哈希值分别确定一个目标字节和一个目标数值。
预设字节数组为预先设定的一个字节数组(该字节数组的长度可以小于预估用户的数量)。通过将用户标识对应的哈希值按照预设规则映射到预设字节数组,不断更新预设字节数组的值,可以得到多个用户中包括的独立用户的个数。在本申请实施例中,可以通过哈希值来确定更新预设字节数组中的哪个字节(目标字节),以及将该字节中的原有数值更新为哪个值(目标数值)。
需要说明的是,在预设字节数组中,包含多个元素,每个元素对应一个字节。可选地,为了便于对预设字节数组中不同的字节进行标记,可以预先为预设字节数组中的每个元素(也即每个字节)设置索引值,该索引值可为数组元素在数组中的物理位置,例如,第一个元素的位置为0,第二个元素的位置为1,依此类推。
步骤S106,根据多个目标字节和多个目标数值对预设字节数组进行更新,得到目标数组。
通常情况下,预设字节数组可初始化为0(即每个字节中的值均为0),将多个哈希值按照预设次序依次映射到预设字节数组中,直到最后一个哈希值映射到预设字节数组,整个更新的过程结束,得到目标数组。映射的过程即:根据哈希值确定目标字节和目标数值,将预设字节数组的目标字节中的原有数值更新为目标数值。
由于在本申请实施例中,是利用哈希值确定的目标字节,因此不同的哈希值可能映射于预设字节数组中的同一个字节,因此,使得预设字节数组的字节长度可以小于预估用户的数量(也即打破了相关技术中为了准确统计独立用户数,需要预设字节数组大于预估用户数量的瓶颈),也即本申请实施例中的预设字节数组的长度可以远远小于相关技术中相同情况下预设字节数组的长度,进而在独立用户数的统计过程中,可以很大程度的减小空间的占用,也即达到了减小空间开销的技术效果。
步骤S108,根据目标数组统计多个用户中的独立用户数。
在按照预设规则将多个哈希值依次映射到预设字节数组中,直到最后一个用户的用户标识对应的哈希值完成映射,得到目标数组。由于整个过程中,每个用户标识的哈希值均参与了映射,也即最终更新得到的目标数组包含了所有用户的用户标识信息,因此,通过对最终更新得到的目标数组进行分析,可以得到多个用户中独立用户的个数(独立用户数)。
根据该实施例的网络监测中独立用户数的统计方法,由于包括:获取多个用户的用户标识所对应的哈希值,得到多个哈希值;根据多个哈希值分别确定多个目标字节和多个目标数值,其中,根据每个哈希值分别确定一个目标字节和一个目标数值;根据多个目标字节和多个目标数值对预设字节数组进行更新,得到目标数组;以及根据目标数组统计多个用户中的独立用户数,解决了网络监测中进行独立用户数统计时空间开销较大的技术问题,进而据多个哈希值分别确定多个目标字节和多个目标数值,根据多个目标字节和多个目标数值对预设字节数组进行更新,并根据目标数组统计多个用户中的独立用户数,达到了减小独立用户数统计时的空间开销的效果。
优选地,获取多个用户的用户标识所对应的哈希值包括:利用均匀分布的哈希算法获取多个用户的用户标识所对应的哈希值。
均匀分布的哈希算法(Murmur3),对于任何一组元素,计算出的哈希值基本服从均匀分布。在该实施例中,在对多个用户的用户标识按照均匀分布的哈希算法进行计算后,获取的哈希值基本服从均匀分布,也即每个哈希值出现的概率(计算得到每个哈希值的概率)是相同的。这样保证预设字节数组中每个字节被更新的机会是相同的,进而在后续的计算中可减小计算误差。
为了提高数组更新的执行效率,优选地,根据多个目标字节和多个目标数值对预设字节数组进行更新包括:按照预先设定的次序,依次根据多个哈希值中每个哈希值所对应的目标字节和该哈希值所对应的目标数值对预设字节数组进行更新,其中,按照预先设定的次序,依次根据多个哈希值中每个哈希值所对应的目标字节和该哈希值所对应的目标数值对预设字节数组进行更新包括:根据当前哈希值所对应的目标字节和当前哈希值所对应的目标数值对当前字节数组进行更新,其中,当前字节数组为根据次序中前一个哈希值所对应的目标字节和前一个哈希值所对应的目标数值对上一次更新得到的字节数组进行更新得到的字节数组。
在该优选实施例中,在对多个哈希值中的第一个哈希值进行映射之前,可以将预设字节数组初始化为0(记为第1数组),按照预设规则将第一个哈希值映射至初始化为0的预设字节数组中,以对该字节数组进行更新(得到第2数组),其中,预设规则即为将第一个哈希值对应的目标数值(根据第一个哈希值确定)映射到第1数组的目标字节(根据第一个哈希值确定)中。然后,按照预设规则将第二个哈希值映射至第2数组中,此时的预设规则为将第二个哈希值对应的目标数值(根据第二个哈希值确定)映射到第2数组的目标字节(根据第二个哈希值确定)中,得到第3数组。依次类推,直到多个哈希值全部映射完毕,得到最终的目标数组。
优选地,根据当前哈希值所对应的目标字节和当前哈希值所对应的目标数值对当前字节数组进行更新包括:判断当前哈希值所对应的目标数值是否大于当前字节数组的目标字节中的原有数值,其中,原有数值为上一次更新得到的字节数组的目标字节中的数值;如果判断结果为是,则将目标数值赋值给当前字节数组的目标字节;以及如果判断结果为否,则保持当前字节数组的目标字节中的数值不变。
在该实施例中,在得到目标数值后,需要将目标数值和目标字节中的原有数值(也即上一次更新得到的字节数组的目标字节中的数值)进行比较,如果目标数值超过了原有数值,则将目标字节中的原有值替换为目标数值;反之,则不进行替换。
例如,多个哈希值包括第一哈希值和第二哈希值,首先将第一哈希值映射至预设字节数组中,其中,假设第一哈希值对应的目标字节为预设字节数组中的第一字节,目标数值为按照预设规则对第一哈希值处理得到的第一目标数值,则将第一目标数值与预设字节数组中第一字节处的原有数值(第一原有数值)进行比较,假设第一原有数值小于第一目标数值,则将第一原有数值替换为第一目标数值(此时,原来的预设字节数组得到更新,记为第一更新数组)。然后,再以相同的规则确定第二哈希值对应的目标字节(第二字节)以及目标数值(第二目标数值),并判断第二目标数值与第二原有数值(第一更新数组中第二字节处的数值)的大小关系,如果第二目标数值大于第二原有数值,则将第一更新数组中第二字节处数值替换为第二目标数值。需要说明的是,上述的第一原有数值(或第二原有数值)是相对于当前更新来说,上一次更新得到的字节数组中的目标字节中的数值。
需要说明的是,在该实施例中,第一字节和第二字节可能相同,第一目标数值和第二目标数值也可能相同。另外,由于需要在比较的基础上进行数组更新,因此,可能对于某次更新过程来说,字节数组本身并未发生变化(如,第一目标数值小于第一原有数值,则不对预设字节数组中第一字节处的第一原有数值进行替换)。
优选地,多个哈希值包括第一哈希值,根据多个哈希值分别确定多个目标字节和多个目标数值包括:将第一哈希值按照位进行拆分,得到第一拆分部分和第二拆分部分;根据第一拆分部分确定第一哈希值所对应的目标字节;以及根据第二拆分部分确定第一哈希值所对应的目标数值。
在该实施例中,按照位对第一哈希值进行拆分,例如,第一哈希值为1001101,则按照位对其进行拆分,得到:1,0,0,1,1,0,1。第一拆分部分和第二拆分部分由拆分后得到的各个位重新组合得到。其中,由于第一拆分部分用于确定第一目标字节,因此,为了使得第一拆分部分的取值涵盖预设字节数组中每个字节的位置,第一拆分部分的最大取值应该等于预设字节数组的长度。例如,如果预设字节数组为4KB(4096B),则取哈希值前12位作为第一拆分部分即可(因为前12位表示的数值的取值范围为0-4095,能够满足映射至预设字节数组中每个字节的位置)。基于该实施例,可以将多个哈希值的信息有效地映射到了预设字节数组中。需要说明的是,本申请实施例中的多个哈希值中的每个哈希值均可以按照上述方式进行拆分,并根据拆分结果获取每个哈希值分别对应的目标字节和目标数值。
优选地,第一拆分部分包括第一哈希值按照位进行拆分后得到的排列在前的预设个数的位,根据第一拆分部分确定第一哈希值所对应的目标字节包括:获取第一数值,其中,第一数值为第一拆分部分所表示的数值;以及确定预设字节数组中索引等于第一数值的字节为第一哈希值所对应的目标字节。例如,第一哈希值为二进制形式的哈希值,如,第一哈希值为100110100010111000……010,第一哈希值的前12个字节所表示的数值为100110100010,也即2466,将预设字节数组中索引值为2466的字节作为第一目标字节。
优选地,根据第二拆分部分确定第一哈希值所对应的目标数值包括:依次读取第二拆分部分中的每个位所表示的值,直到读取到所表示的值为第二数值的位;确定所表示的值为第二数值的位在第二拆分部分中的位置;以及根据位置确定第一哈希值所对应的目标数值。
在该实施例中,依次读取第二拆分部分中的每个位所表示的值包括:情况1,按照正序依次读取第二拆分部分中的每个位所表示的值;情况2,按照逆序依次读取第二拆分部分中的每个位所表示的值。例如,第二拆分部分为111000……010,则正序为1-1-1-0-0-0-……-0-1-0,逆序为0-1-0-……-0-0-0-1-1-1。第二数值可以为1或者0。需要说明的是,在该实施例中,针对所有的哈希值应采取一致的确定规则,例如,均采用正序的方式,并且第二数值取1;或者均采用倒序的方式,并且第二数值取0。
优选地,预设字节数组的长度为4KB,预设个数为12个,第二数值为1。
在该实施例中,前12位表示的数值的取值范围为0-4095,能够映射至4KB预设字节数组中每个字节的位置。例如,第一哈希值为100110100010111000.......,第一拆分部分为100110100010,第二拆分部分为111000……,第一目标字节的索引值等于100110100010所表示的值;按照正序的方式依次读取第二拆分部分(111000……)的每个位的值,以确定首次出现的值为1的位的位置。首次出现值为1的位为第二拆分部分的第一个位,据此可以确定第一目标数值为1。
优选地,根据目标数组统计多个用户中的独立用户数包括:确定目标数组中所表示的值为0的字节的个数;以及根据目标数组中所表示的值为0的字节的个数和预设字节数组的长度确定独立用户数。
在上述实施例中,优选地,通过以下公式确定独立用户数:Q=M*Log(M/V),其中,Q为独立用户数,M为预设字节数组的长度,V为目标数组中所表示的值为0的字节的个数。
例如,某个广告某天有10次的曝光,每次曝光的用户标识依次为:
1、AEC772B0-7F76-4611-8873-7AA20D2B18C7
2、AEF0A6FF-352E-42C0-9A63-EB9B7E846B57
3、D7294638-1FCD-4210-8AF5-E9D729D28425
4、AEC772B0-7F76-4611-8873-7AA20D2B18C7
5、AEC772B0-7F76-4611-8873-7AA20D2B18C7
6、AEC772B0-7F76-4611-8873-7AA20D2B18C7
7、AEF0A6FF-352E-42C0-9A63-EB9B7E846B57
8、AEF0A6FF-352E-42C0-9A63-EB9B7E846B57
9、D7294638-1FCD-4210-8AF5-E9D729D28425
10、AEC772B0-7F76-4611-8873-7AA20D2B18C7
下面计算这10次曝光的独立用户数:
首先,初始化预设字节数组,如表1所示:
表1
索引值 0 1 .... 2466 .... 4094 4095
0 0 0 0 0 0 0
其次,依次获取用户标识,并计算用户标识对应的哈希值。
例如,获取第一个用户标识AEC772B0-7F76-4611-8873-7AA20D2B18C7,利用服从均匀分布的哈希算法murmur3,计算该用户标识对应的的哈希值,计算得到的哈希值为A25982D36635BCA8F441EC40E0AABA82(以十六进制表示)。
然后,获取哈希值的前12bit(第一数值),以及哈希值从第13位开始,1首次出现的位置(目标位置)。
例如,第一个用户标识对应的哈希值的前12bit为“100110100010”,也即2466。获取哈希值从第13位开始(也即1010……),第一个1(二进制)出现的位置,得到该位置为1。
再次,利用各个哈希值依次更新预设字节数组的值。
例如,对于第一个用户标识对应的哈希值,将1和索引值为2466的字节中的值(也即0)进行比较,可见1大于0,因此,将2466的字节中的值替换为1。经过第一个用户标识对应的哈希值更新预设字节数组得到的新的字节数组如表2所示。
表2
索引值 0 1 .... 2466 .... 4094 4095
0 0 0 1 0 0 0
同样地,利用第二个用户标识对表2所示的字节数组进行更新(第二个用户标识AEF0A6FF-352E-42C0-9A63-EB9B7E846B57对应的哈希值为1A0EDACCF9A867D0D1F0324A295238C6)。更新过程与对表1的更新过程相同(指示基于第二个用户标识对应的哈希值进行),这里不予赘述。后续,依次根据第三个用户标识(D7294638-1FCD-4210-8AF5-E9D729D28425对应的哈希值为F9793D5DE833D37C4C3816288AC9E1FC)直至最后一个用户标识对预设字节数组进行更新,最终得到目标数组。
最后,根据目标数组确定上述10个用户中的独立用户数。
具体地,利用公式M*Log(M/v)计算独立用户数,其中M为4096,v为目标数组中所表示的值为零的字节的个数。
图2是根据本申请第二实施例的网络监测中独立用户数的统计方法的流程图,图2可以作为图1所示实施例的一种优选实施方式。如图2所示,该方法包括如下步骤:
步骤S202,初始化一个4KB的字节数组,记为B,每个字节称为一个桶。
初始化一个4KB的字节数组(1KB=1024B)。此数组记为:B,称每一个字节为一个桶,每个桶的编号为对应字节的索引。这里,需要说明的是,数组元素的索引即数组元素在数组中的物理位置,第一个元素的位置记为零,第二个元素的位置为1,依次类推。在字节数组中,每个元素即对应一个字节,字节数组中每个元素的索引即每个字节的索引。
需要说明的是,图1所示实施例中的预设字节数组可以通过该实施例中的4KB的字节数组实现。
步骤S204,判断是否存在待计算用户标识。
图1所示实施例中的多个用户的用户标识同该实施例中的待计算用户标识。
步骤S206,如果判断出存在待计算用户标识,则计算待计算用户标识对应的哈希值。
如果判断出存在待计算用户标识,则利用哈希值服从均匀分布的哈希算法(如Murmur3)计算该用户标识对应的哈希值,并将计算出的哈希值记为H。
步骤S208,获取桶号及桶的值。
计算H的前12bit表示的值,记为:m,此值即为桶号;计算H(二进制形式)的第一个1(从H的第13个bit开始)出现的位置,记为:r。
步骤S210,更新桶的值。
将r和B[m]做比较,如果r>B[m],则置B[m]为r,否则不做任何处理。
步骤S212,如果判断出不存在待计算的用户标识,则根据最终更新得到的字节数组计算独立用户数。
在将所有的待计算用户标识均遍历之后(也即所有的待计算用户标识均映射至预设字节数组),则根据最终更新得到的字节数组计算独立用户数。独立用户数可以按照以下公式进行计算:
Q=M*Log(M/v)
其中,Q为独立用户数,M为4096,v为最终更新得到的字节数组中所表示的值为零的桶的个数。其中,最终更新得到的字节数组即图1所示实施例中的目标数组。
另外,在该实施例中,可以将用户标识分成多份分别计算,然后合并,该方法与一次计算所有用户标识得到的结果完全是一致的,所以可以将用户标识分配给多台计算机分别进行计算(每台计算机计算一部分),然后将每个计算结果合并成最后的结果数组,最后用公式计算独立数。
例如,某个广告有10次曝光,对于这10次曝光,可以用一台计算机计算前5次曝光,另一台计算机计算后5次曝光,然后对两个计算结果(两个4KB的数组)进行合并,得到一个最终的结果数组,最后用公式计算独立用户数即可。同理可以分配到任意多个计算机上计算。可见,根据该实施例的网络监测中独立用户数的统计方法可以支持分布式计算。
根据该实施例的网络监测中独立用户数的统计方法,根据均匀分布的哈希算法计算每一个用户标识对应的哈希值,进而根据用户标识的哈希值不断更新桶的值,最后根据桶的最终值计算出独立用户数,该实施例中计算独立用户数时的空间开销为固定值4K,相较常用方法空间开销至少降低3000倍,另外,根据该实施例的网络监测中独立用户数的统计方法支持分布式计算。
下面根据本申请的实施例,提供了一种网络监测中独立用户数的统计装置。
需要说明的是,根据本申请实施例的网络监测中独立用户数的统计装置可以用来执行根据本申请实施例的网络监测中独立用户数的统计方法,根据本申请实施例的网络监测中独立用户数的统计方法也可以通过根据本申请实施例的网络监测中独立用户数的统计装置来执行。
图3是根据本申请实施例的网络监测中独立用户数的统计装置的示意图。如图3所示,该装置包括:获取单元20、确定单元40、更新单元60和统计单元80。
获取单元20,用于获取多个用户的用户标识所对应的哈希值,得到多个哈希值。
确定单元40,用于根据多个哈希值分别确定多个目标字节和多个目标数值,其中,根据每个哈希值分别确定一个目标字节和一个目标数值。
更新单元60,用于根据多个目标字节和多个目标数值对预设字节数组进行更新,得到目标数组。
统计单元80,用于根据目标数组统计多个用户中的独立用户数。
根据该实施例的网络监测中独立用户数的统计装置,通过获取单元20获取多个用户的用户标识所对应的哈希值,得到多个哈希值;确定单元40根据多个哈希值分别确定多个目标字节和多个目标数值,其中,根据每个哈希值分别确定一个目标字节和一个目标数值;更新单元60根据多个目标字节和多个目标数值对预设字节数组进行更新,得到目标数组;以及统计单元80根据目标数组统计多个用户中的独立用户数,解决了网络监测中进行独立用户数统计时空间开销较大的技术问题,进而确定单元40根据多个哈希值分别确定多个目标字节和多个目标数值,更新单元60根据多个目标字节和多个目标数值对预设字节数组进行更新,统计单元80根据目标数组统计多个用户中的独立用户数,达到了减小独立用户数统计时的空间开销的效果。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

Claims (10)

1.一种网络监测中独立用户数的统计方法,其特征在于,包括:
获取多个用户的用户标识所对应的哈希值,得到多个哈希值;
根据所述多个哈希值分别确定多个目标字节和多个目标数值,其中,根据每个哈希值分别确定一个目标字节和一个目标数值;
根据所述多个目标字节和所述多个目标数值对预设字节数组进行更新,得到目标数组;以及
根据所述目标数组统计所述多个用户中的独立用户数;
其中,根据所述多个目标字节和所述多个目标数值对所述预设字节数组进行更新包括:
按照预先设定的次序,依次根据所述多个哈希值中每个哈希值所对应的目标字节和该哈希值所对应的目标数值对所述预设字节数组进行更新,
其中,按照所述预先设定的次序,依次根据所述多个哈希值中每个哈希值所对应的目标字节和该哈希值所对应的目标数值对所述预设字节数组进行更新包括:
根据当前哈希值所对应的目标字节和所述当前哈希值所对应的目标数值对当前字节数组进行更新,其中,所述当前字节数组为根据所述次序中前一个哈希值所对应的目标字节和所述前一个哈希值所对应的目标数值对上一次更新得到的字节数组进行更新得到的字节数组。
2.根据权利要求1所述的方法,其特征在于,获取多个用户的用户标识所对应的哈希值包括:利用均匀分布的哈希算法获取所述多个用户的用户标识所对应的哈希值。
3.根据权利要求1所述的方法,其特征在于,根据当前哈希值所对应的目标字节和所述当前哈希值所对应的目标数值对当前字节数组进行更新包括:
判断所述当前哈希值所对应的目标数值是否大于所述当前字节数组的目标字节中的原有数值,其中,所述原有数值为所述上一次更新得到的字节数组的目标字节中的数值;
如果判断结果为是,则将所述目标数值赋值给所述当前字节数组的目标字节;以及
如果判断结果为否,则保持所述当前字节数组的目标字节中的数值不变。
4.根据权利要求2所述的方法,其特征在于,所述多个哈希值包括第一哈希值,根据所述多个哈希值分别确定多个目标字节和多个目标数值包括:
将所述第一哈希值按照位进行拆分,得到第一拆分部分和第二拆分部分;
根据所述第一拆分部分确定所述第一哈希值所对应的目标字节;以及
根据所述第二拆分部分确定所述第一哈希值所对应的目标数值。
5.根据权利要求4所述的方法,其特征在于,所述第一拆分部分包括所述第一哈希值按照位进行拆分后得到的排列在前的预设个数的位,根据所述第一拆分部分确定所述第一哈希值所对应的目标字节包括:
获取第一数值,其中,所述第一数值为所述第一拆分部分所表示的数值;以及
确定所述预设字节数组中索引等于所述第一数值的字节为所述第一哈希值所对应的目标字节。
6.根据权利要求5所述的方法,其特征在于,根据所述第二拆分部分确定所述第一哈希值所对应的目标数值包括:
依次读取所述第二拆分部分中的每个位所表示的值,直到读取到所表示的值为第二数值的位;
确定所表示的值为所述第二数值的位在所述第二拆分部分中的位置;以及
根据所述位置确定所述第一哈希值所对应的目标数值。
7.根据权利要求6所述的方法,其特征在于,所述预设字节数组的长度为4KB,所述预设个数为12个,所述第二数值为1。
8.根据权利要求7所述的方法,其特征在于,根据所述目标数组统计所述多个用户中的独立用户数包括:
确定所述目标数组中所表示的值为0的字节的个数;以及
根据所述目标数组中所表示的值为0的字节的个数和所述预设字节数组的长度确定所述独立用户数。
9.根据权利要求8所述的方法,其特征在于,通过以下公式确定所述独立用户数:Q=M*Log(M/V),其中,Q为所述独立用户数,M为所述预设字节数组的长度,V为所述目标数组中所表示的值为0的字节的个数。
10.一种网络监测中独立用户数的统计装置,其特征在于,包括:
获取单元,用于获取多个用户的用户标识所对应的哈希值,得到多个哈希值;
确定单元,用于根据所述多个哈希值分别确定多个目标字节和多个目标数值,其中,根据每个哈希值分别确定一个目标字节和一个目标数值;
更新单元,用于根据所述多个目标字节和所述多个目标数值对预设字节数组进行更新,得到目标数组;以及
统计单元,用于根据所述目标数组统计所述多个用户中的独立用户数;
其中,所述更新单元还用于按照预先设定的次序,依次根据所述多个哈希值中每个哈希值所对应的目标字节和该哈希值所对应的目标数值对所述预设字节数组进行更新,其中,按照所述预先设定的次序,依次根据所述多个哈希值中每个哈希值所对应的目标字节和该哈希值所对应的目标数值对所述预设字节数组进行更新包括:根据当前哈希值所对应的目标字节和所述当前哈希值所对应的目标数值对当前字节数组进行更新,其中,所述当前字节数组为根据所述次序中前一个哈希值所对应的目标字节和所述前一个哈希值所对应的目标数值对上一次更新得到的字节数组进行更新得到的字节数组。
CN201510532532.4A 2015-08-26 2015-08-26 网络监测中独立用户数的统计方法及装置 Active CN106487833B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510532532.4A CN106487833B (zh) 2015-08-26 2015-08-26 网络监测中独立用户数的统计方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510532532.4A CN106487833B (zh) 2015-08-26 2015-08-26 网络监测中独立用户数的统计方法及装置

Publications (2)

Publication Number Publication Date
CN106487833A CN106487833A (zh) 2017-03-08
CN106487833B true CN106487833B (zh) 2019-07-19

Family

ID=58234509

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510532532.4A Active CN106487833B (zh) 2015-08-26 2015-08-26 网络监测中独立用户数的统计方法及装置

Country Status (1)

Country Link
CN (1) CN106487833B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108733664B (zh) * 2017-04-13 2022-05-03 腾讯科技(深圳)有限公司 一种文件归类方法及装置
CN108197050B (zh) * 2018-01-02 2020-11-20 联想(北京)有限公司 一种设备识别方法、装置及系统
CN110348878A (zh) * 2019-06-13 2019-10-18 北京华峰创业科技有限公司 一种对用户进行分组的方法和装置
CN112434085B (zh) * 2020-12-04 2023-04-07 四三九九网络股份有限公司 基于Roaring Bitmap的用户数据统计方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005101736A1 (fr) * 2004-04-15 2005-10-27 Huawei Technologies Co., Ltd. Procede de comptage du nombre d'utilisateurs d'un service mbms
CN102984396A (zh) * 2012-12-25 2013-03-20 广州从兴电子开发有限公司 活跃用户数统计方法及装置
CN103746851A (zh) * 2014-01-17 2014-04-23 中国联合网络通信集团有限公司 一种实现独立用户数统计的方法及装置
CN104298680A (zh) * 2013-07-18 2015-01-21 腾讯科技(深圳)有限公司 数据统计方法及数据统计装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005101736A1 (fr) * 2004-04-15 2005-10-27 Huawei Technologies Co., Ltd. Procede de comptage du nombre d'utilisateurs d'un service mbms
CN102984396A (zh) * 2012-12-25 2013-03-20 广州从兴电子开发有限公司 活跃用户数统计方法及装置
CN104298680A (zh) * 2013-07-18 2015-01-21 腾讯科技(深圳)有限公司 数据统计方法及数据统计装置
CN103746851A (zh) * 2014-01-17 2014-04-23 中国联合网络通信集团有限公司 一种实现独立用户数统计的方法及装置

Also Published As

Publication number Publication date
CN106487833A (zh) 2017-03-08

Similar Documents

Publication Publication Date Title
CN106487833B (zh) 网络监测中独立用户数的统计方法及装置
CN105335855A (zh) 一种交易风险识别方法及装置
CN108510303A (zh) 广告投放方法及装置
CN106096024A (zh) 地址相似度的评估方法和评估装置
CN106202280A (zh) 一种信息处理方法及服务器
US8898808B1 (en) System and method for assessing effectiveness of online advertising
CN104298541A (zh) 云存储系统的数据分布算法及其装置
CN113946590B (zh) 积分数据更新方法、装置、设备及存储介质
CN111242165B (zh) 商户聚类方法、装置、计算机设备和存储介质
CN110969172A (zh) 一种文本的分类方法以及相关设备
CN109272402A (zh) 评分卡的建模方法、装置、计算机设备及存储介质
CN105912679A (zh) 一种数据查询的方法和装置
CN109213774A (zh) 数据的存储方法及装置、存储介质、终端
CN109710403B (zh) 应用进程映射方法、电子装置及计算机可读存储介质
US20150227581A1 (en) Systems and methods for analyzing registrar and hosting provider relationships
CN106657128B (zh) 基于通配符掩码规则的数据包过滤方法及装置
CN112019627A (zh) 负载均衡方法、装置、计算机设备及计算机可读存储介质
CN105634999B (zh) 一种介质访问控制地址的老化方法及装置
CN116910061A (zh) 一种数据库的分库分表方法、装置、设备及可读存储介质
CN108537654B (zh) 客户关系网络图的渲染方法、装置、终端设备及介质
CN102682112A (zh) 存储方法和装置
CN110209656A (zh) 数据处理方法及装置
CN106991337A (zh) 一种出生日期数据的脱敏方法及装置
CN108062350A (zh) 一种数据处理方法、节点设备及计算机可读介质
CN110324845B (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
CB02 Change of applicant information

Address after: 100083 No. 401, 4th Floor, Haitai Building, 229 North Fourth Ring Road, Haidian District, Beijing

Applicant after: Beijing Guoshuang Technology Co.,Ltd.

Address before: 100086 Cuigong Hotel, 76 Zhichun Road, Shuangyushu District, Haidian District, Beijing

Applicant before: Beijing Guoshuang Technology Co.,Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20211018

Address after: 100083 No. 229, Middle North Fourth Ring Road, Haidian District, Beijing (South podium of Haitai building)

Patentee after: Beijing Qianli Richeng Technology Co.,Ltd.

Address before: 100083 No.401, South, 4th floor, Haitai building, 229 beisihuanzhong Road, Haidian District, Beijing

Patentee before: BEIJING GRIDSUM TECHNOLOGY Co.,Ltd.

TR01 Transfer of patent right
CP03 Change of name, title or address

Address after: No. 05-501, 5th floor, No. 229, Middle North Fourth Ring Road (South podium building of Haitai building), Haidian District, Beijing 100083

Patentee after: Beijing guoshuangqianli Technology Co.,Ltd.

Address before: 100083 No. 229, Middle North Fourth Ring Road, Haidian District, Beijing (South podium of Haitai building)

Patentee before: Beijing Qianli Richeng Technology Co.,Ltd.

CP03 Change of name, title or address