一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用户画像标签数据的处理方法与流程

2022-08-21 20:23:20 来源:中国专利 TAG:
1.本发明提出了一种数据处理方法,特别是指用户画像标签数据的处理方法。
背景技术
::2.用户画像目标是在更细致的维度上,通过属性标签对用户或商户的偏好、需求、倾向进行数字化勾勒的技术。用户画像可以进一步发掘用户需求,分析用户偏好,从而提供给用户更具有针对性的信息推送和提高用户的使用体验。用于描述用户画像的属性标签,是依据用户的注册数据、操作行为数据、交易数据等作为数据来源,并通过可自学习自进化的算法进行开放的归属和归入,通过数据在分类归属中的分布规律作为标签属性。3.用户画像的基础为构建标签库,利用现有关系型数据库构建的用户标签库主要基于宽表结构和数组结构等数据类型;但是现有的关系型数据库对于用户画像的标签存储具有明显的优势和劣势:4.(1)宽表结构数据类型实现的优点是大多数数据库都支持,但宽表列宽受限于数据块的页大小。以postgresql数据库8kb数据库块为例,该数据库包含:主键、用户id、创建时间、修改时间等必要字段外,仅能存储约不超过2000个标签tag字段;当条件组合查询时效率会出现大幅度下降;5.(2)数组结构数据类型实现标签可支持更高的tag标签位,但不支持not语法索引查询,且占用存储空间较高。技术实现要素:6.针对现有的针对用户画像的标签进行数据处理的数据库存在着效率低的问题,本发明实施例的目的是提出一种用户画像标签数据的处理方法,能够更为快捷的对用户画像标签数据局进行处理。7.为了达到上述目的,本发明实施例提出了一种用户画像标签数据处理方法,包括:8.生成用于存储用户画像标签的数据库,其中所述用于存储用户画像标签的数据库至少包括:用于存储原始数据的原始数据实时表、用于存储用户数据的用户字典表、用于存储用户以及对应的用户画像标签的用户标签表;9.其中所述原始数据实时表用于供应用服务写入新产生的用户id和用户画像标签id;且所述原始数据实时表还用于将原始数据增量聚合到用户标签表;其中所述原始数据实时表至少包括:10.字段主键id、组织机构id、用户id、标签tag_id;其中字段主键id采用自增int8类型,其中标签tag_id采用int类型;且所述原始数据实时表还包括两个布尔型标志位:标识是否删除,是否合并用户字典表;11.其中所述用户字典表至少包括以下字段:12.用户的唯一标识user_id字段,其中所述user_id字段为int类型,每一user_id字段占8字节空间;13.用户组织机构唯一标识org_id字段,用于表示用户所属单位;其中所述org_id字段为int类型,每一org_id字段占8字节空间;当可用于数据表超过100gb后按组织机构分表,行号row_id为int类型,占8字节空间;14.其中所述用户标签表以标签tag_id为维度,用于标识出每一用户对应的用户画像标签;其中该用户标签表用于为系统提供圈人推送等服务;15.其中该用户标签表包括以下字段:自增整数主键id,标签唯一标识,组织机构唯一标识、用户唯一标识聚合列user_ids;其中可变字串数据类型的用户唯一标识聚合列user_ids采用varbit类型,存储用户字典表中按照rowid顺位的比特字串。16.在一种可能的实现方式中,所述方法还包括:将原始数据实时表中的用户原始数据,合并到用户标签表中;具体包括:17.获取用户实时数据表中的未更新的原始数据,根据未更新的原始数据更新用户字典表中的用户的唯一标识user_id字段,然后再将数据增量聚合到用户标签表。18.在一种可能的实现方式中,其中所述将原始数据实时表中的用户原始数据合并到用户标签表中的步骤,采用一个事务中完成;即单独标签为一个进程并发执行。19.在一种可能的实现方式中,其中所述将原始数据实时表中的用户原始数据合并到用户标签表中的步骤,包括:20.获取用户实时的原始数据;21.获取该原始数据中的用户画像标签,判断该用户画像标签是否存在用户标签表中;如果不存在则在该用户标签表中增加一列新的用户画像标签。22.在一种可能的实现方式中,所述方法还包括:23.当查询方式为:选择了一个tag,需要列出所有具有该tag的用户;则输入为tagid,输出为用户id;此时需要对用户字典表和用户标签表联合进行查询:24.首先使用set_bit_array自订函数,对用户标签表对所需tag进行对齐,即获取最大的标签tag的用户rowid字串长度;如果用户没有此标签时,则将该用户rowid字串中的末尾补0;然后对所选tag取出的用户id在字典表中的行号取并集,得到符合所选tag组的全部为1的rowid的数组,然后关联用户字典表取得用户id。25.在一种可能的实现方式中,所述方法还包括:当查询方式为:列出一个用户的所有tag,则通过get_bit函数,取得所述所有tag中该用户对应字串中的该用户rowid位为1的标签。26.在一种可能的实现方式中,所述用于存储用户画像标签的数据库为以用户画像标签为基本维度生成的基于postgresql的数据库,所述数据库为通过变长位串来存储用户id,且所述数据库中存储有每一个用户id对应的标签tag;其中所述数据库中存储有每一用户id对应的用户画像标签tag。27.在一种可能的实现方式中,所述方法还包括:创建用于辅助读写存储用户id的可变长位串的函数,其中所述函数包括:28.函数get_bit(varbit,int,int)returnsvarbit;用于从指定位置开始获取n个bit位,返回varbit;29.函数set_bit_array(varbit,int,int,int[])returnsvarbit;用于将指定位置的bit设置为0|1,超出原始长度的部分填充0|1;[0030]函数bit_count(varbit,int,int,int)returnsint;用于从第n位开始,统计n个bit位中有多少个0或1,如果n超出长度,则只计算已经存在的;[0031]函数bit_count(varbit,int)returnsint;用于统计出整个比特串bitstring中1|0的个数;[0032]函数bit_fill(int,int)returnsvarbit;用于在比特串bitstring中填充指定长度的0或1;[0033]函数bit_rand(int,int,float)returnsvarbit;用于在比特串bitstring中填充指定长度的随机bit,并指定1或0的随机比例;[0034]函数bit_posite(varbit,int,boolean)returnsint[];用于返回1|0的位置信息,下标从0开始计数,true时正向返回,false时反向返回;[0035]函数bit_posite(varbit,int,int,boolean)returnsint[];用于返回1|0的位置信息,下标从0开始计数,true时正向返回,false时反向返回,返回n个为止;[0036]函数get_bit_2(varbit,int,int)returnsint;用于返回指定位置的bit,下标从0开始,如果超出bit位置,返回指定的0或1。[0037]上述技术方案具有以下有益效果:本发明实施例提出了一种基于postgresql数据库的用户画像标签数据处理方法,可以在查询用户量较多时该操作可通过postgresql数据库的并发机制加快操作速度。附图说明[0038]图1为本发明实施例的方法流程示意图。具体实施方式[0039]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。[0040]用户画像和服务推荐本质上是以数据资源为对象进行分析并从中发现匹配关联关系的信息处理技术,目前在互联网用户精准识别,客户体验优化和需求深入挖掘等方面已经广泛应用。但是如本发明在
背景技术
:中介绍的,现有的基于宽表结构和数组结构等数据类型具有比较明显的缺陷,导致现有的这些关系型数据库应用在用户画像的标签处理领域时效率非常低。[0041]有鉴于此,本发明的实施例提供了一种基于postgresql数据库的用户画像标签数据处理方法,能够更为高效的处理用户画像标签。其中,本发明实施例提出了一种基于开源postgresql关系型数据库的用户画像标签数据的处理方法,能够通过更有针对性的数据库对用户画像标签进行高效处理。其中,对用户画像数据高效处理的基础是构建标签库,因此本发明实施例提供的一种基于postgresql开源关系型数据库的用户画像标签数据的处理方法,能够通过采用变长位串数据结构高效读写和低磁盘占用的用户画像标签库对用户画像标签数据进行高效处理。在本公开实施例中提出的用于存储用户画像标签数据的数据库是基于postgresql开源关系型数据库;其不同于传统的数据库的数据结构,是以用户画像标签tag作为维度,并建立用户画像标签tag与用户id的业务查询关系,从而应用进一步降低磁盘存储空间占有量;按照用户画像标签tag维度进行用户查询等精准圈人推送业务场景中,能够有更快的查询表现。在接收到应用通过埋点或者批量数据分析后获得的用户id对应tag标签的原始数据后,对tag-userid的对应关系表进行更新维护时会产生大量的操作;而本公开实施例中采用了增量合并和读取时分别读取tag维度表和实时数据后进行合并两种方法。[0042]其中,增量更新标签tag是指:各种应用会提取新增的用户画像标签tag以及tag与用户id的对应关系,成为数据库新增的原始数据;数据库需要在更新前对原始数据进行增量聚合,形成tag维度的更新表,并根据tag库数据进行新增或更新。其中,用户画像的数据源包括自然数据、行为数据、内容数据;自然数据为用户自身固有的属性,可以包括:用户性别、用户年龄。自然数据可以在用户注册等环节中向用户收集;行为数据用于描述用户所执行的行为,可以包括:用户访问次数、用户访问频度、用户访问停留时间、用户操作活跃时间、用户信息输入、用户用点击链接、用户交互操作;其中,用户交互操作可以包括:加关注、取消关注、打分、保存为书签、加入购物车、取出购物车、形成订单、取消订单、付款、退款;内容数据表示用户行为的对象,包括:用户加入购物车、用户形成订单的商品。应用会从上述的数据源中提取新增的用户画像标签tag以及tag标签与用户id的对应关系,成为数据库新增的原始数据;数据库需要在更新前对原始数据进行增量聚合以形成tag维度的更新表,并对数据库中的数据进行新增或更新。[0043]其中,合并查询是指应用需要根据用户画像标签tag进行精准圈人操作的时候,需要先对标签tag进行查询,再对实时未合并的原始数据进行查询,并将两结果进行合并(merge)操作,返回合并的结果实现圈人等操作的精准反馈。其中,圈人是指:根据需要的标签,从数据库中获取具有该标签的用户。[0044]在本方法中由于是将标签tag作为主体维度,因此对于数据库的操作主要为新增、更新操作,不会出现删除操作。因此当用户实时发生变化时(例如用户新增、用户注销、用户挂起等操作),需要周期性的维护用户字典表操作,清理僵尸用户id和注销用户id。这是由于用户id为变长位串,为了避免无限制增长。其中,本发明实施例所采用的postgresql数据库支持变长位串为1gb,以用户id位长存储int8估算,单tag可存储40亿用户id。[0045]在本发明实施例中,可以通过以下方式获取待画像用户的全景数据的多维描述,以根据数据库中的所有用户的全景数据或根据应用需求,构建数据库。其中,全景数据包括以下的至少两种数据:自然数据、操作数据、内容数据。将所有用户的全景数据进行聚类,以得到所有用户的标签,从而构建标签库。将所有用户的全景数据与标签库中已有的标签进行匹配,并将所有用户的全景数据中没有匹配到标签的数据进行聚类得到不同的标签,以构建标签库。对根据应用需求构建的标签库中的标签根据应用的反馈进行更新。根据预定的目标从匹配到的标签中查找与目标相关的标签,对目标相关的标签进行交叉、嵌套、关联、重新生成处理,以对待画像用户进行目标维度的描述。[0046]如图1所示的,本发明实施例的基于postgresql数据库的用户画像标签数据处理方法,其包括:[0047]步骤1、生成用于存储用户画像标签的数据库,其中所述数据库为以用户画像标签为基本维度生成的基于postgresql的数据库,所述数据库为通过变长位串来存储用户id,且所述数据库中存储有每一个用户id对应的标签tag;其中所述数据库中存储有每一用户id对应的用户画像标签tag;[0048]步骤2、创建用于辅助读写存储用户id的可变长位串的函数,其中所述函数包括:[0049]函数get_bit(varbit,int,int)returnsvarbit;用于从指定位置开始获取n个bit位,返回varbit;[0050]函数set_bit_array(varbit,int,int,int[])returnsvarbit;用于将指定位置的bit设置为0|1,超出原始长度的部分填充0|1;[0051]函数bit_count(varbit,int,int,int)returnsint;用于从第n位开始,统计n个bit位中有多少个0或1,如果n超出长度,则只计算已经存在的;[0052]函数bit_count(varbit,int)returnsint;用于统计出整个比特串bitstring中1|0的个数;[0053]函数bit_fill(int,int)returnsvarbit;用于在比特串bitstring中填充指定长度的0或1;[0054]函数bit_rand(int,int,float)returnsvarbit;用于在比特串bitstring中填充指定长度的随机bit,并指定1或0的随机比例;[0055]函数bit_posite(varbit,int,boolean)returnsint[];用于返回1|0的位置信息,下标从0开始计数,true时正向返回,false时反向返回;[0056]函数bit_posite(varbit,int,int,boolean)returnsint[];用于返回1|0的位置信息,下标从0开始计数,true时正向返回,false时反向返回,返回n个为止;[0057]函数get_bit_2(varbit,int,int)returnsint;用于返回指定位置的bit,下标从0开始,如果超出bit位置,返回指定的0或1,[0058]步骤3、建立用户画像标签库所需的用户字典表;其中所述用户字典表中至少包括以下字段:[0059]用户的唯一标识user_id字段,其中所述user_id字段为int类型,每一user_id字段占8字节空间;[0060]用户组织机构唯一标识org_id字段,用于表示用户所属单位;其中所述org_id字段为int类型,每一org_id字段占8字节空间;当可用于数据表超过100gb后按组织机构分表,行号row_id为int类型,占8字节空间;[0061]步骤4、建立原始数据实时表;[0062]其中该原始数据实时表可以如图1的002框所示的;该原始数据实时表用于供应用服务写入新产生的用户id和用户画像标签id;且所述原始数据实时表还用于将原始数据增量聚合到用户标签表;其中所述原始数据实时表包括:[0063]字段主键id、组织机构id、用户id、标签tag_id;其中字段主键id采用自增int8类型,其中标签tag_id采用int类型;且所述原始数据实时表还包括两个布尔型标志位:标识是否删除,是否合并用户字典表;[0064]步骤5、建立用户标签表;[0065]其中该用户标签表如图1中的框004所示的,该用户标签表以标签tag_id为维度,用于标识出每一用户对应的用户画像标签;其中该用户标签表用于为系统提供圈人推送等服务;[0066]其中该用户标签表包括以下字段:自增整数主键id,标签唯一标识,组织机构唯一标识、用户唯一标识聚合列user_ids;其中可变字串数据类型的用户唯一标识聚合列user_ids采用varbit类型,存储用户字典表中按照rowid顺位的比特字串;例如rowid为1的用户拥有该项tag即为1,不拥有则为0;也就是说,该用户标签表的行是对应于用户字典表中的用户的唯一标识user_id字段,且该用户标签表的列为聚合后的用户画像标签tag;如果该用户具有某一tag,在将用户在该列标识为1,否则标识为0;[0067]步骤6、将原始数据实时表中的用户原始数据,合并到用户标签表中;即,定时通过002框中的原始数据实时表中的原始数据,对003框中的用户字典表进行更新,将数据增量聚合到004框中的用户标签表;具体包括:[0068]获取用户实时数据表中的未更新的原始数据,根据未更新的原始数据更新用户字典表中的用户的唯一标识user_id字段,然后再将数据增量聚合到用户标签表;[0069]其中,步骤6的过程应放在一个事务中完成,可单独标签为一个进程并发执行加快合并效率。在一个函数中处理用户字典表的更新和合并的动作,务必使用repeatableread隔离级别,保证处理用户字典表的数据与合并的数据一致。更新用户标签表的过程包括获取实时数据,删除实时数据,聚合实时数据,合并到tags,合并更新过程的核心逻辑是判断是否存在tag,存在则采用set_bit_array自订函数更新指定rowid位的状态,如不存在tag则为新增tag,插入整条tag聚合记录。[0070]步骤7、如果应用场景下的查询方式为:圈选了某些tag,需要列出所有具有该tag的用户;则输入为tagid,输出为用户id;此时需要对用户字典表和用户标签表联合进行查询:[0071]首先使用set_bit_array自订函数,对用户标签表对所需tag进行对齐,即获取最大的标签tag的用户rowid字串长度;如果用户没有此标签时,则将该用户rowid字串中的末尾补0;然后对所选tag取出的用户id在字典表中的行号取并集,得到符合所选tag组的全部为1的rowid的数组,然后关联用户字典表取得用户id。[0072]如果应用场景下的查询方式为:给定某用户,查询该用户具有哪些tag;则通过get_bit函数取得所有tag中该用户对应字串中的该用户rowid位为1的tag。[0073]在上述实施例中提出的方法,可以在查询用户量较多时该操作可通过postgresql数据库的并发机制加快操作速度。[0074]以上所述是本发明的优选实施方式,应当指出,对于本
技术领域
:的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献