含义:
为每条日志数据都打上这条日志所属的用户的唯一标识
目的:
为后续的数据分析提供方便
策略:
第一种策略:使用设备id作为用户的唯一标识
这种策略的弊端:
①一个账号可能登陆了多个设备,会被标记为多个用户
②一个设备登录了多个账号,会被标记为一个用户
第二种策略:使用账号作为用户的唯一标识
这种策略的弊端:
①有些数据中根本没有账号
②有些用户还没有注册账号,这部分数据会丢失
所以使用第三种策略,动态绑定设备账号
①维护一张设备账号绑定权重表,用来为数据中没有账号的数据获取其对应的账号
该表中存储device_id,account,weight(权重),last_login几个字段,日志数据中没有账号但是以前注册过的设备,可以根据权重从该表中获取到其对应的账号.
②维护一张空设备临时guid映射表,为以前没有注册过账号的设备打上一个临时的guid
临时guid生成的规则:根据公司的用户量,取一个远远大于用户量的数字(比如20亿)开始递增生成临时的guid
核心思想:
如果数据中有账号,使用账号对应的user_id作为guid,如果没有账号,从设备账号绑定权重表以及空设备临时guid映射表中获取
guid的生成流程:
1)如果日志数据中已经带有账号的话,直接使用账号去业务库中的用户账号注册表中查询该条日志数据所对应的guid
2)如果日志数据中没有账号的话,去设备账号绑定权重表中查询,如果能查询到,将权重最大的账号作为该条数据的账号,再去业务库中的用户账号注册表中查询该条数据所对应的guid
3)如果日志数据中没有账号,而且从设备账号绑定权重表中查不到该设备的账号,说明这个设备没有注册过账号,所以去空设备临时获取该空设备对应的临时guid