掌桥专利:专业的专利平台
掌桥专利
首页

数据处理方法、装置、服务器及存储介质

文献发布时间:2023-06-19 09:52:39


数据处理方法、装置、服务器及存储介质

技术领域

本申请涉及大数据技术领域,特别涉及一种数据处理方法、装置、服务器及存储介质。

背景技术

在一些场景中,为了向用户提供更好的服务,存在基于海量数据的过滤需求。例如,在向用户进行内容推荐的场景中,需要从候选内容中过滤掉已向该用户推荐的内容,再从剩余的候选内容中确定出向该用户推荐的内容。

相关技术中,会预先对应存储用户标识和已推荐内容的内容标识,从而能够根据已存储的用户标识与已推荐内容的内容标识的对应关系,确定出已推荐内容,进而对已推荐内容进行过滤。

由于内容标识通常为字符串的格式,在内容标识的存储数量很多的情况下,直接存储内容标识会占用巨大的存储空间,导致存储空间的利用率较低。

发明内容

本申请实施例提供了一种数据处理方法、装置、服务器及存储介质,能够提高存储空间的利用率。所述技术方案如下:

根据本申请实施例的一方面,提供了一种数据处理方法,所述方法包括:

基于数据仓库中的任一用户标识对应的多个第一历史行为数据中的多个第一内容标识,生成第一位数组,其中,所述第一历史行为数据用于记录被执行交互行为的内容,每个所述第一内容标识分别对应所述第一位数组中的多个位;

存储所述任一用户标识以及所述第一位数组的对应关系;

响应于过滤请求,基于所存储的用户标识与位数组的对应关系,确定所述过滤请求携带的用户标识对应的目标位数组;

基于所述目标位数组,确定对所述过滤请求携带的内容标识的过滤结果。

在一种可选的实现方式中,所述基于数据仓库中的任一用户标识对应的多个第一历史行为数据中的多个第一内容标识,生成第一位数组,包括:

响应于查询压缩语句,调用查询压缩模块,在数据仓库工具hive对应的内存中,执行所述基于数据仓库中的任一用户标识对应的多个第一历史行为数据中的多个第一内容标识,生成第一位数组的步骤;

其中,所述查询压缩语句用于指示获取用于表示所述任一用户标识对应的多个第一内容标识的第一位数组,所述查询压缩模块是以所述hive为基础扩展的功能模块。

在另一种可选的实现方式中,所述第一历史行为数据用于记录在第一时间段内被执行交互行为的内容;

所述存储所述任一用户标识以及所述第一位数组的对应关系,包括:

基于所述任一用户标识和所述第一时间段,生成第一关键字;

存储所述第一关键字以及所述第一位数组的对应关系。

在另一种可选的实现方式中,所述存储所述任一用户标识以及所述第一位数组的对应关系之后,所述方法还包括:

响应于到达位数组更新时间,基于所述数据仓库中的所述任一用户标识对应的多个第二历史行为数据中的多个第二内容标识,生成第二位数组,所述第二历史行为数据用于记录在所述位数组更新时间所属的第二时间段内被执行交互行为的内容;

将所存储的所述第二时间段对应的位数组更新为所述第二位数组。

在另一种可选的实现方式中,所述第一历史行为数据用于记录在第一时间段内被执行目标类型的交互行为的内容;

所述存储所述任一用户标识以及所述第一位数组的对应关系,包括:

基于所述任一用户标识、所述第一时间段以及所述第一历史行为数据中的所述目标类型的交互行为,生成第二关键字;

存储所述第二关键字以及所述第一位数组的对应关系。

在另一种可选的实现方式中,所述存储所述任一用户标识以及所述第一位数组的对应关系之前,所述方法还包括:

对所述第一位数组进行编码,生成字符串;

所述存储所述任一用户标识以及所述第一位数组的对应关系,包括:

存储所述任一用户标识以及所述字符串的对应关系。

在另一种可选的实现方式中,所述基于所述目标位数组,确定对所述过滤请求携带的内容标识的过滤结果之前,所述方法还包括:

接收所述任一用户标识对应的至少一个实时行为数据,所述实时行为数据用于记录被执行交互行为的内容;

存储所述任一用户标识以及所述任一用户标识对应的至少一个实时行为数据中的至少一个内容标识的对应关系;

所述基于所述目标位数组,确定对所述过滤请求携带的内容标识的过滤结果,包括:

基于所述目标位数组以及所述过滤请求携带的用户标识对应的至少一个第三内容标识,确定对所述过滤请求携带的内容标识的过滤结果,所述至少一个第三内容标识来源于所述过滤请求携带的用户标识对应的至少一个实时行为数据。

在另一种可选的实现方式中,所述基于数据仓库中的任一用户标识对应的多个第一历史行为数据中的多个第一内容标识,生成第一位数组,包括:

基于所述第一位数组对应的哈希处理方式,对每个所述第一内容标识进行处理,得到每个所述第一内容标识对应的所述第一位数组的多个位;

将每个所述第一内容标识对应的所述第一位数组的多个位上的值置为1。

在另一种可选的实现方式中,所述基于所述目标位数组,确定对所述过滤请求携带的内容标识的过滤结果,包括:

基于所述目标位数组对应的哈希处理方式,对所述过滤请求携带的内容标识进行处理,得到所述过滤请求携带的内容标识对应的所述目标位数组的多个位;

响应于所述过滤请求携带的内容标识对应的所述目标位数组的多个位上的值包括0,则所述目标位数组所表示的多个内容标识中不包括所述过滤请求携带的内容标识,确定所述过滤结果为不过滤所述过滤请求携带的内容标识;

响应于所述过滤请求携带的内容标识对应的所述目标位数组的多个位上的值均为1,则所述目标位数组所表示的多个内容标识中包括所述过滤请求携带的内容标识,确定所述过滤结果为对所述过滤请求携带的内容标识进行过滤。

根据本申请实施例的另一方面,提供了一种数据处理装置,所述装置包括:

位数组生成模块,用于基于数据仓库中的任一用户标识对应的多个第一历史行为数据中的多个第一内容标识,生成第一位数组,其中,所述第一历史行为数据用于记录被执行交互行为的内容,每个所述第一内容标识分别对应所述第一位数组中的多个位;

第一对应关系存储模块,用于存储所述任一用户标识以及所述第一位数组的对应关系;

位数组确定模块,用于响应于过滤请求,基于所存储的用户标识与位数组的对应关系,确定所述过滤请求携带的用户标识对应的目标位数组;

过滤结果确定模块,用于基于所述目标位数组,确定对所述过滤请求携带的内容标识的过滤结果。

在一种可选的实现方式中,所述位数组生成模块,用于:

响应于查询压缩语句,调用查询压缩模块,在数据仓库工具hive对应的内存中,基于数据仓库中的任一用户标识对应的多个第一历史行为数据中的多个第一内容标识,生成第一位数组;

其中,所述查询压缩语句用于指示获取用于表示所述任一用户标识对应的多个第一内容标识的第一位数组,所述查询压缩模块是以所述hive为基础扩展的功能模块。

在另一种可选的实现方式中,所述第一历史行为数据用于记录在第一时间段内被执行交互行为的内容;

所述第一对应关系存储模块,用于:

基于所述任一用户标识和所述第一时间段,生成第一关键字;

存储所述第一关键字以及所述第一位数组的对应关系。

在另一种可选的实现方式中,所述位数组生成模块,还用于响应于到达位数组更新时间,基于所述数据仓库中的所述任一用户标识对应的多个第二历史行为数据中的多个第二内容标识,生成第二位数组,所述第二历史行为数据用于记录在所述位数组更新时间所属的第二时间段内被执行交互行为的内容;

所述第一对应关系存储模块,还用于将所存储的所述第二时间段对应的位数组更新为所述第二位数组。

在另一种可选的实现方式中,所述第一历史行为数据用于记录在第一时间段内被执行目标类型的交互行为的内容;

所述第一对应关系存储模块,用于:

基于所述任一用户标识、所述第一时间段以及所述第一历史行为数据中的所述目标类型的交互行为,生成第二关键字;

存储所述第二关键字以及所述第一位数组的对应关系。

在另一种可选的实现方式中,所述装置还包括:

位数组编码模块,用于对所述第一位数组进行编码,生成字符串;

所述第一对应关系存储模块,还用于存储所述任一用户标识以及所述字符串的对应关系。

在另一种可选的实现方式中,所述装置还包括:

实时行为数据接收模块,用于接收所述任一用户标识对应的至少一个实时行为数据,所述实时行为数据用于记录被执行交互行为的内容;

第二对应关系存储模块,用于存储所述任一用户标识以及所述任一用户标识对应的至少一个实时行为数据中的至少一个内容标识的对应关系;

所述过滤结果确定模块,用于基于所述目标位数组以及所述过滤请求携带的用户标识对应的至少一个第三内容标识,确定对所述过滤请求携带的内容标识的过滤结果,所述至少一个第三内容标识来源于所述过滤请求携带的用户标识对应的至少一个实时行为数据。

在另一种可选的实现方式中,所述位数组生成模块,用于:

基于所述第一位数组对应的哈希处理方式,对每个所述第一内容标识进行处理,得到每个所述第一内容标识对应的所述第一位数组的多个位;

将每个所述第一内容标识对应的所述第一位数组的多个位上的值置为1。

在另一种可选的实现方式中,所述过滤结果确定模块,用于:

基于所述目标位数组对应的哈希处理方式,对所述过滤请求携带的内容标识进行处理,得到所述过滤请求携带的内容标识对应的所述目标位数组的多个位;

响应于所述过滤请求携带的内容标识对应的所述目标位数组的多个位上的值包括0,则所述目标位数组所表示的多个内容标识中不包括所述过滤请求携带的内容标识,确定所述过滤结果为不过滤所述过滤请求携带的内容标识;

响应于所述过滤请求携带的内容标识对应的所述目标位数组的多个位上的值均为1,则所述目标位数组所表示的多个内容标识中包括所述过滤请求携带的内容标识,确定所述过滤结果为对所述过滤请求携带的内容标识进行过滤。

根据本申请实施例的另一方面,提供了一种服务器,所述服务器包括处理器和存储器,所述存储器中存储有至少一条程序代码,所述至少一条程序代码由所述处理器加载并执行,以实现上述任一种可选的实现方式中所述的数据处理方法。

根据本申请实施例的另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条程序代码,所述至少一条程序代码由处理器加载并执行,以实现上述任一种可选的实现方式中所述的数据处理方法。

根据本申请实施例的另一方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机程序代码,该计算机程序代码存储在计算机可读存储介质中,服务器的处理器从计算机可读存储介质读取该计算机程序代码,处理器执行该计算机程序代码,使得该服务器执行上述任一种可选的实现方式中所述的数据处理方法。

本申请实施例提供的技术方案,将任一用户标识对应的每个历史行为数据中的内容标识分别对应到位数组的多个位上,由位数组来表示该用户标识对应的已被执行交互行为的多个内容标识,从而在接收到携带有任一用户标识的过滤请求时,能够基于该用户标识对应的位数组,来确定对该过滤请求携带的内容标识的过滤结果。在内容标识数量很多的大数据场景下,由二进制的位数组来对大量的内容标识进行表示,通过存储位数组来支持过滤服务,极大地减少了为支持过滤服务而占用的存储空间,提高了存储空间的利用率。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请实施例提供的一种实施环境的示意图;

图2是本申请实施例提供的一种数据处理方法的流程图;

图3是本申请实施例提供的一种数据处理方法的流程图;

图4是本申请实施例提供的一种数据处理方法的示意图;

图5是本申请实施例提供的一种数据处理装置的框图;

图6是本申请实施例提供的一种服务器的框图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。

本申请的说明书和权利要求书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们的任意变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。

图1是本申请实施例提供的一种实施环境的示意图。参见图1,该实施环境包括终端110、第一服务器120和第二服务器130。

可选地,终端110为智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱或者智能手表等,但并不局限于此。终端110上设有客户端,该客户端具有内容推荐功能。例如,该客户端为音频播放类客户端,具有音频推荐功能;再如,该客户端为视频类客户端,具有视频推荐功能。

第一服务器120用于提供内容过滤服务。第二服务器130用于提供内容推荐服务。其中,终端110与第一服务器120通过无线或者有线网络连接;终端110与第二服务器130通过无线或者有线网络连接;第一服务器120与第二服务器130通过无线或者有线网络连接。终端110接收第二服务器130发送的用于推荐给该终端110对应的用户的内容,将接收到的内容显示在推荐界面中;检测对所显示的内容执行的交互行为,将对所显示的内容执行的交互行为上报至第一服务器120。第一服务器120存储对所显示的内容执行的交互行为。第二服务器130在下一次确定向该终端110对应的用户推荐的内容时,请求第一服务器120确定待推荐的候选内容中是否存在已被执行交互行为的内容;根据第一服务器120的反馈,从待推荐的候选内容中过滤掉已被执行交互行为的内容;从剩余的候选内容中确定向该终端110对应的用户推荐的内容,将所确定的内容发送至该终端110,以使该终端110将接收到的内容显示在推荐界面中,减少内容的重复推荐。

图2是本申请实施例提供的一种数据处理方法的流程图。参见图2,该实施例包括:

201、第一服务器基于数据仓库中的任一用户标识对应的多个第一历史行为数据中的多个第一内容标识,生成第一位数组,其中,第一历史行为数据用于记录被执行交互行为的内容,每个第一内容标识分别对应第一位数组中的多个位。

其中,数据仓库是大规模的数据存储集合,用于存储历史数据。数据仓库是BI(Business Intelligence,商业智能)项目进行数据挖掘、分析和处理的数据基础。数据仓库支持大规模数据的分布式存储。在本申请实施例中,数据仓库用于存储用户的历史行为数据,通过对数据仓库中的历史行为数据的统计和分析以减少重复内容的推荐。

历史行为数据用于记录被执行交互行为的内容。可选地,历史行为数据包括用户标识、内容标识、交互行为以及执行时间,用于表示用户标识所标识的用户在执行时间对内容标识所标识的内容执行了交互行为。其中,用户标识用于对用户进行唯一标识。用户标识也被称为用户ID(Identity Document,身份标识号)、用户账号等。可选地,用户标识是为用户分配的UID(User Identification,用户身份证明)。内容标识用于对内容进行唯一标识。内容标识也被称为内容ID。可选地,内容标识所标识的内容的类型为音频类型或者短视频类型等,本申请对此不加以限定。可选地,交互行为指曝光行为、播放行为、收藏行为或者下载行为等,其中,曝光行为指用户触发终端显示内容的行为。

位数组也被称为bit(比特)数组,由二进制的0和1组成。一个位数组用于表示一个用户标识对应的多个内容标识。每个内容标识分别对应位数组中的不同的多个位。例如,位数组为1001011101,其中,第1位、第4位和第8位表示一个内容标识;第6位、第7位和第10位表示另一个内容标识。

202、第一服务器存储该任一用户标识以及第一位数组的对应关系。

第一服务器对应存储用户标识以及基于该用户标识对应的多个内容标识生成的位数组。可选地,第一服务器以key-value(键值对)的形式来存储该任一用户标识以及第一位数组的对应关系,其中,key(关键字)为该任一用户标识,value(值)为第一位数组。

203、第一服务器响应于过滤请求,基于所存储的用户标识与位数组的对应关系,确定过滤请求携带的用户标识对应的目标位数组。

用于提供推荐服务的第二服务器在确定向用户推荐的内容之前,向第一服务器发送过滤请求,以请求第一服务器确定待推荐的内容中是否存在已被执行交互行为的内容。该过滤请求携带有用户标识和内容标识,其中,过滤请求携带的用户标识用于标识推荐对象,过滤请求携带的内容标识用于标识待推荐的候选内容。第一服务器基于过滤请求携带的用户标识,对所存储的用户标识与位数组的对应关系进行查询,得到过滤请求携带的内容标识对应的目标位数组。

204、第一服务器基于目标位数组,确定对过滤请求携带的内容标识的过滤结果。

第一服务器将过滤请求携带的内容标识对应到目标位数组的多个位上,根据该多个位上的0或1的取值,来确定该过滤请求携带的内容标识是否在该目标位数组所表示的多个内容标识之中。若该过滤请求携带的内容标识在该目标位数组所表示的多个内容标识之中,则表示该过滤请求携带的内容标识已被执行过交互行为,确定从待推荐的内容中过滤掉该过滤请求携带的内容标识所标识的内容。若该过滤请求携带的内容标识不在该目标位数组所表示的多个内容标识之中,则表示该过滤请求携带的内容标识未被执行过交互行为,确定不对该过滤请求携带的内容标识所标识的内容进行过滤。

本申请实施例提供的技术方案,将任一用户标识对应的每个历史行为数据中的内容标识分别对应到位数组的多个位上,由位数组来表示该用户标识对应的已被执行交互行为的多个内容标识,从而在接收到携带有任一用户标识的过滤请求时,能够基于该用户标识对应的位数组,来确定对该过滤请求携带的内容标识的过滤结果。在内容标识数量很多的大数据场景下,由二进制的位数组来对大量的内容标识进行表示,通过存储位数组来支持过滤服务,极大地减少了为支持过滤服务而占用的存储空间,提高了存储空间的利用率。

图3是本申请实施例提供的一种数据处理方法的流程图。参见图3,该实施例包括:

301、第一服务器基于数据仓库中的任一用户标识对应的多个第一历史行为数据中的多个第一内容标识,生成第一位数组。

需要说明的是,在一种可选的实现方式中,上述多个第一历史行为数据是数据仓库中存储的该任一用户标识对应的全部的历史行为数据,第一服务器基于该多个第一历史行为数据中的多个第一内容标识,生成该任一用户标识对应的第一位数组。

在另一种可选的实现方式中,第一服务器以目标时长的时间段为颗粒度,生成对应的位数组。上述多个第一历史行为数据用于记录目标时长的时间段内被执行交互行为的内容,该多个第一历史行为数据中的执行时间均在目标时长的时间段内。其中,目标时长可灵活配置,例如,目标时长为1周或者1个月等,在本申请实施例中,以目标时长为1个月,第一服务器以月为颗粒度,生成对应的位数组为例进行说明。例如,在1月份,第一服务器基于任一用户标识对应的执行时间在1月份的多个第一历史行为数据中的多个第一内容标识,生成该任一用户标识对应的1月份的第一位数组;在2月份,第一服务器基于任一用户标识对应的执行时间在2月份的多个第一历史行为数据中的多个第一内容标识,生成该任一用户标识对应的2月份的第一位数组,以此类推。

在另一种可选的实现方式中,第一服务器还以交互行为的不同类型作为区别,基于被执行同一类型的交互行为的多个内容标识,生成对应的位数组。上述多个第一历史行为数据用于记录被执行目标类型的交互行为的内容。可选地,目标类型的交互行为是曝光行为、播放行为、收藏行为和下载行为中的一种。例如,第一服务器基于该任一用户标识对应的被执行曝光行为的多个内容标识,生成一个位数组;基于该任一用户标识对应的被执行播放行为的多个内容标识,生成另一个位数组,以此类推。

在另一种可选的实现方式中,第一服务器还以内容的不同类型作为区别,基于所记录的内容的类型相同的多个第一历史行为数据,生成对应的位数组。可选地,内容的类型包括音频类型、视频类型、图像类型和文本类型等。例如,第一服务器基于该任一用户标识对应的用于记录音频类型的内容的多个历史行为数据中的多个内容标识,生成一个位数组;或者,第一服务器基于该任一用户标识对应的用于记录视频类型的内容的多个历史行为数据中的多个内容标识,生成另一个位数组。

需要说明的一点是,可选地,第一服务器除了以用户标识作为区别,生成用户标识对应的位数组之外,还能进一步结合时间段的划分、交互行为的类型以及内容的类型中的一种或多种,来生成用户标识对应的更细致分类的位数组,本申请实施例对此不加以限定。

其中,第一服务器根据bloom filter(布隆过滤器)的原理,对多个第一内容标识进行处理,生成第一位数组。上述步骤301包括:第一服务器基于第一位数组对应的哈希处理方式,对每个第一内容标识进行处理,得到每个第一内容标识对应的第一位数组的多个位;将每个第一内容标识对应的第一位数组的多个位上的值置为1。

bloom filter是一个占用空间很小、效率很高的随机数据结构,由一个位数组和多个哈希函数构成。第一位数组对应的哈希处理方式也即是根据bloom filter的原理生成第一位数组所基于的多个哈希函数。第一服务器分别基于每个哈希函数,对第一内容标识进行哈希处理,得到第一内容标识对应的第一位数组中的一个位,从而基于多个哈希函数,得到第一内容标识对应的第一位数组中的多个位。

其中,多个哈希函数的数量与第一内容标识对应的第一位数组中的多个位的数量一致。也就是说,第一服务器基于K个哈希函数,对第一内容标识进行哈希处理,得到第一内容标识对应的第一位数组中的K个位。其中,K为正整数,K小于第一位数组所包括的元素的数量,例如,第一位数组共包括10个元素,也即是第一位数组由10个位组成,则K为小于10的正整数。第一位数组所包括的元素的数量以及K的具体数值能够依据内容标识的存储数量进行灵活配置,内容标识的存储数量越多,则第一位数组所包括的元素的数量越大,K的取值也越大,以减少多个内容标识对应到同一个位上的情况,提高基于多个位上0或1的取值,判断某一内容标识是否在位数组所表示的多个内容标识中的准确性。

需要说明的是,在一种可选的实现方式中,第一服务器基于hive(一种数据仓库工具)对数据仓库中存储的数据进行查询、分析和处理。hive支持UDF(User DefinedFunction,用户自定义函数)的定制,以为数据操作提供可扩展性。基于数据仓库中的任一用户标识对应的多个第一历史行为数据中的多个第一内容标识,生成第一位数组的功能能够封装在UDF中,形成查询压缩模块。该查询压缩模块是以hive为基础扩展的功能模块,具有查询用户标识对应的多个内容标识,生成用于表示该多个内容标识的位数组,输出该位数组的功能。相应的,第一服务器响应于查询压缩语句,调用查询压缩模块,在hive对应的内存中,执行基于数据仓库中的任一用户标识对应的多个第一历史行为数据中的多个第一内容标识,生成第一位数组的步骤。

其中,查询压缩语句用于指示获取用于表示任一用户标识对应的多个第一内容标识的第一位数组。第一服务器响应于该查询压缩语句,调用查询压缩模块,即可得到用于表示多个第一内容标识的第一位数组。该查询压缩模块基于hive的支持,在hive对应的内存中执行基于数据仓库中的任一用户标识对应的多个第一历史行为数据中的多个第一内容标识,生成第一位数组的步骤,输出该第一位数组。

上述技术方案,在数据仓库工具hive的基础上,扩展出用于生成位数组的查询压缩模块。通过调用该查询压缩模块,即可直接得到对多个内容标识进行压缩而生成的位数组,提高了位数组的获取效率。并且,查询压缩模块基于hive的支持,在hive对应的内存中执行生成位数组的步骤,无需将内容标识导出为数据文件,将数据文件存储在另一数据库中,再对该数据文件进行处理,生成位数组,省去了位数组生成过程中数据文件的导出、存储等中间环节,更加高效便捷的生成了位数组,提高了位数组的生成效率。同时也省去了中间环节对存储空间的占用,提高了存储空间的利用率。

在另一种可选的实现方式中,第一服务器从数据仓库中查询出任一用户标识对应的多个第一历史行为数据;将该多个第一历史行为数据中的第一内容标识导出为数据文件;将该数据文件中的多个第一内容标识存储在中间数据库中;基于中间数据库中的多个第一内容标识,生成第一位数组。

需要说明的另一点是,可选地,第一服务器生成第一位数组之后,还对该第一位数组进行编码,生成字符串。可选地,第一服务器基于Base64(基于64个可打印字符来表示二进制数据)编码的规则,对位数组进行编码,生成字符串,以便于位数组的传输和存储。其中,可选地,上述对第一位数组进行编码,生成字符串的功能也能够封装在查询压缩模块中,由查询压缩模块来执行对第一位数组进行编码,生成字符串的步骤。

302、第一服务器存储该任一用户标识以及第一位数组的对应关系。

可选地,第一服务器将该任一用户标识以及第一位数组的对应关系存储在mysql(一种关系型数据库管理系统)数据库中,以实现数据的持久化存储;或者,第一服务器还将该任一用户标识以及第一位数组的对应关系缓存在redis(remote dictionary server,远程字典服务)数据库中,以实现数据的高效读取。

上述技术方案,由一个二进制的位数组来表示用户标识对应的多个内容标识,对应存储用户标识和位数组,在用户标识对应的多个内容标识的数量很多的情况下,相较于存储多个字符串格式的内容标识,能够极大地减少所占用的存储空间,提高存储空间的利用率。

在一种可选的实现方式中,第一位数组用于表示该任一用户标识对应的被执行交互行为的全部的内容标识,相应的,第一服务器按照该任一用户标识和第一位数组对应的形式,存储该任一用户标识以及该第一位数组的对应关系。例如,第一服务器以key-value的形式存储该任一用户标识以及第一位数组的对应关系,其中,key为该任一用户标识,例如13753。

在另一种可选的实现方式中,第一服务器以目标时长的时间段为颗粒度,生成对应的第一位数组。生成第一位数组所基于的第一历史行为数据用于记录在第一时间段内被执行交互行为的内容。该第一时间段为目标时长的时间段,例如,目标时长为1个月,该第一时间段为1月份、2月份或者3月份等月份。相应的,第一服务器基于该任一用户标识和第一时间段,生成第一关键字;存储第一关键字以及第一位数组的对应关系。可选地,第一关键字为用户标识_时间段的形式。例如,第一时间段为8月份,该任一用户标识为13753,第一服务器生成第一关键字为13753_8,将第一关键字作为key,第一位数组作为value,以key-value的形式对应存储第一关键字和第一位数组,以表示该任一用户标识所标识的用户在第一时间段内对第一位数组所表示的多个内容标识所标识的内容执行了交互行为。

上述技术方案中,用户标识对应的每个位数组分别用于表示一个目标时长的时间段内被执行交互行为的内容。按照一定时长的时间段划分出多个不同的位数组进行对应存储,能够根据过滤需求,灵活地获取相应的位数组来确定某一内容是否被执行过交互行为。例如,过滤需求为过滤掉最近3个月内的已推荐内容,若目标时长为一个月,当前月份为3月,则基于1月份对应的位数组、2月份对应的位数组以及3月份对应的位数组进行过滤即可,提高了所存储的位数组的可用性。

在另一种可选的实现方式中,生成第一位数组所基于的第一历史行为数据用于记录在第一时间段内被执行目标类型的交互行为的内容。相应的,第一服务器基于该任一用户标识、第一时间段以及第一历史行为数据中的目标类型的交互行为,生成第二关键字;存储第二关键字以及第一位数组的对应关系。可选地,第二关键字为交互行为_用户标识_时间段的形式。例如,曝光行为由1来表示,播放行为由2来表示,收藏行为由3来表示,下载行为由4来表示,若第二关键字为3_13753_8,则该第二关键字对应的位数组用于表示13753这一用户标识所标识的用户在8月份对该位数组所表示的多个内容标识所标识的内容执行了收藏行为。

上述技术方案,按照不同类型的交互行为划分出多个不同的位数组进行对应存储,从而能够根据过滤需求,更加灵活地基于任一类型的交互行为对应的位数组来对被执行过该任一类型的交互行为的内容进行独立过滤,进一步提高了所存储的位数组的可用性。

在另一种可选的实现方式中,生成第一位数组所基于的多个第一历史行为数据用于记录在第一时间段内被执行目标类型的交互行为的内容,上述多个第一历史行为数据中的内容标识均用于标识同一类型的内容。相应的,第一服务器基于该任一用户标识、第一时间段、第一历史行为数据中的目标类型的交互行为以及第一历史行为数据中的内容标识所标识的内容的类型,生成第三关键字;存储第三关键字以及第一位数组的对应关系。可选地,第三关键字为内容的类型_交互行为_用户标识_时间段的形式。例如,音频类型由1来表示,视频类型由2来表示,图像类型由3来表示,文本类型由4来表示,若第三关键字为1_3_13753_8,则该第三关键字对应的位数组用于表示13753这一用户标识所标识的用户在8月份对该位数组所表示的多个内容标识所标识的音频内容执行了收藏行为。

需要说明的是,第一服务器结合时间段的划分、交互行为的类型以及内容的类型中的一种或任意多种,生成了用户标识对应的更细致分类的位数组,相应的,第一服务器基于时间段的划分、交互行为的类型以及内容的类型中的一种或任意多种,生成对应的关键字,存储该关键字与位数组的对应关系,本申请实施例不再一一列举。

需要说明的另一点是,若第一服务器在生成第一位数组之后,还对第一位数组进行编码,生成了字符串,则第一服务器存储该任一用户标识以及该字符串的对应关系。

需要说明的另一点是,第一服务器存储该任一用户标识以及第一位数组的对应关系之后,还周期性的对所存储的位数组进行更新。在本申请实施例中,以第一服务器按照目标时长的时间段生成对应的位数组,对目标时长的时间段对应的位数组进行更新为例进行说明。可选地,位数组的更新周期可灵活配置,例如,更新周期为1小时、1天或者1周等,在本申请实施例中,以位数组的更新周期为1天,第一服务器每隔一天对位数组进行一次更新为例进行说明。相应的,第一服务器更新位数组的步骤包括:第一服务器响应于到达位数组更新时间,基于数据仓库中的任一用户标识对应的多个第二历史行为数据中的多个第二内容标识,生成第二位数组,其中,第二历史行为数据用于记录在位数组更新时间所属的第二时间段内被执行交互行为的内容;第一服务器将所存储的第二时间段对应的位数组更新为第二位数组。

例如,位数组的更新周期为1天,第一服务器每天24点对位数组进行更新。若到达位数组更新时间2020年11月5日24点,则第一服务器基于任一用户标识对应的多个第二历史行为数据中的多个第二内容标识,生成第二位数组。其中,第二历史行为数据用于记录11月份被执行交互行为的内容,也即是11月1日至11月5日被执行交互行为的内容。第一服务器将所存储的用于表示11月1日至11月4日被执行交互行为的多个内容的位数组更新为第二位数组。

上述技术方案,通过按照目标时长的时间段生成对应的位数组,在到达位数组更新时间时,仅基于位数组更新时间所在的目标时长的时间段内的历史行为数据,重新生成该目标时长的时间段对应的一个位数组,进行更新即可,无需对用户标识对应的全量的历史行为数据进行处理,重新生成位数组,在数据量很大的情况下,能够极大地减少生成位数组所基于的数据量,从而极大地提高位数组的更新效率,并且,能够极大地减少更新位数组所消耗的计算资源,降低位数组的更新成本。

303、第一服务器接收任一用户标识对应的至少一个实时行为数据,该实时行为数据用于记录被执行交互行为的内容。

其中,实时行为数据是指在距离当前时间最近的位数组更新时间之后产生的行为数据。例如,当前时间为11月6日18点,与当前时间最近的位数组更新时间为11月5日24点,则实时行为数据包括在11月6日0点至11月6日18点之间产生的行为数据。可选地,一个实时行为数据包括用户标识、内容标识、交互行为以及执行时间,用于表示用户标识所标识的用户在执行时间对内容标识所标识的内容执行了交互行为。

可选地,第一服务器通过Kafka(一种高吞吐量的分布式发布订阅消息系统)来订阅实时行为数据。例如,终端在音频推荐界面中显示音频内容,检测对所显示的音频内容的交互行为,生成行为数据,发送至Kafka。Kafka将接收到的行为数据发送至订阅该行为数据的第一服务器。第一服务器接收Kafka发送的行为数据。

304、第一服务器存储该任一用户标识以及上述至少一个实时行为数据中的至少一个内容标识的对应关系。

由于实时行为数据的数据量较小,可选地,第一服务器以key-value的形式存储该任一用户标识以及每个实时行为数据中的内容标识的对应关系。或者,第一服务器也可以基于至少一个内容标识,生成位数组,对应存储该任一用户标识以及该位数组的对应关系,本申请实施例对此不加以限定。可选地,第一服务器将该任一用户标识以及每个实时行为数据中的内容标识的对应关系存储在redis数据库中。

305、第一服务器响应于过滤请求,基于所存储的用户标识与位数组的对应关系,确定该过滤请求携带的用户标识对应的目标位数组。

第一服务器提供过滤服务,其他服务器通过向第一服务器发送过滤请求,以请求第一服务器判断某一用户标识所标识的用户是否对某一内容标识所标识的内容执行过交互行为。其中,过滤请求携带有用户标识以及该用户标识对应的待判别的内容标识。可选地,一个过滤请求携带有一个用户标识对应的一个内容标识;或者,一个过滤请求携带有一个用户标识对应的多个内容标识,本申请实施例对此不加以限定。在本申请实施例中,以一个过滤请求携带有一个内容标识为例进行说明,若一个过滤请求携带有多个内容标识,则对其中每个内容标识的处理过程与对过滤请求携带的一个内容标识的处理过程同理。

在一种可选的实现方式中,该过滤请求携带的用户标识对应的位数组缓存在redis数据库中,第一服务器从redis数据库中获取该过滤请求携带的用户标识对应的位数组。在另一种可选的实现方式中,该过滤请求携带的用户标识对应的位数组存储在mysql数据库中,第一服务器从mysql数据库中获取该过滤请求携带的用户标识对应的位数组。在另一种可选的实现方式中,若redis数据库中未缓存该过滤请求携带的用户标识对应的位数组,则从mysql数据库中获取该过滤请求携带的用户标识对应的位数组,缓存在redis数据库中;若在缓存有效期内再次接收到携带有该用户标识的过滤请求,则直接从redis数据中获取该用户标识对应的位数组即可,从而既能够保证位数组在mysql数据库中的持久化存储,又能够通过缓存快速获取到相应的位数组进行处理,进一步提高处理效率。

306、第一服务器基于所存储的用户标识与至少一个实时行为数据中的至少一个内容标识的对应关系,确定该过滤请求携带的用户标识对应的至少一个第三内容标识。

其中,上述至少一个第三内容标识来源于该过滤请求携带的用户标识对应的至少一个实时行为数据。可选地,用户标识以及每个实时行为数据中的内容标识的对应关系存储在redis数据库中,第一服务器从redis数据库中获取该过滤请求携带的用户标识对应的至少一个第三内容标识。

307、第一服务器基于目标位数组以及该过滤请求携带的用户标识对应的至少一个第三内容标识,确定对该过滤请求携带的内容标识的过滤结果。

第一服务器确定该过滤请求携带的内容标识是否在目标位数组所表示的多个内容标识之中,以及,确定该过滤请求携带的内容标识是否在至少一个第三内容标识之中;若确定该过滤请求携带的内容标识在目标位数组所表示的多个内容标识之中或者在至少一个第三内容标识之中,则确定过滤结果为对该过滤请求携带的内容标识进行过滤;若确定该过滤请求携带的内容标识不在目标位数组所表示的多个内容标识之中,并且,不在至少一个第三内容标识之中,则确定过滤结果为不过滤该过滤请求携带的内容标识。

其中,第一服务器基于目标位数组,确定该过滤请求携带的内容标识是否在该目标位数组所表示的多个内容标识之中的步骤包括:第一服务器基于目标位数组对应的哈希处理方式,对过滤请求携带的内容标识进行处理,得到过滤请求携带的内容标识对应的目标位数组的多个位;响应于过滤请求携带的内容标识对应的目标位数组的多个位上的值包括0,则确定目标位数组所表示的多个内容标识中不包括该过滤请求携带的内容标识;响应于过滤请求携带的内容标识对应的目标位数组的多个位上的值均为1,则目标位数组所表示的多个内容标识中包括该过滤请求携带的内容标识。

上述目标位数组对应的哈希处理方式也即是根据bloom filter的原理生成该目标位数组时所基于的多个哈希函数。例如,第一服务器基于K个哈希函数,生成该目标位数组,则第一服务器基于该K个哈希函数,对过滤请求携带的内容标识进行处理,得到该过滤请求携带的内容标识对应的目标位数组中的多个位。

上述技术方案,同时基于位数组所表示的历史被执行交互行为的内容以及实时被执行交互行为的内容两部分,能够更加实时准确地确定过滤结果,提高过滤结果的准确性和即时性。

需要说明的一点是,可选地,第一服务器不参考实时行为数据,仅基于目标位数组确定对过滤请求携带的内容标识的过滤结果。也即是,第一服务器执行步骤302之后,不执行步骤303和304,直接执行步骤305,执行步骤305之后,不执行步骤306,直接执行以下基于目标位数组,确定对过滤请求携带的内容标识的过滤结果的步骤:第一服务器基于目标位数组对应的哈希处理方式,对过滤请求携带的内容标识进行处理,得到过滤请求携带的内容标识对应的目标位数组的多个位;响应于过滤请求携带的内容标识对应的目标位数组的多个位上的值包括0,则目标位数组所表示的多个内容标识中不包括过滤请求携带的内容标识,确定过滤结果为不过滤过滤请求携带的内容标识;响应于过滤请求携带的内容标识对应的目标位数组的多个位上的值均为1,则目标位数组所表示的多个内容标识中包括过滤请求携带的内容标识,确定过滤结果为过滤该过滤请求携带的内容标识。

本申请实施例提供的技术方案,在内容标识数量很多的大数据场景下,由二进制的位数组来对大量的内容标识进行表示,通过存储位数组来支持过滤服务,极大地减少了为支持过滤服务而占用的存储空间,提高了存储空间的利用率。并且,在数据存储时,将内容标识分别对应到位数组的多个位上,相应的,在接收到过滤请求时,通过将过滤请求携带的内容标识对应到位数组的多个位上,基于多个位上的0或1的取值,即可确定过滤请求携带的内容标识是否在位数组所表示的多个内容标识之中,相较于通过字符串的一一比对来确定出对某一内容标识的过滤结果,极大地提高了过滤结果的确定效率。

第一服务器确定对该过滤请求携带的内容标识的过滤结果后,将该过滤结果返回给发送该过滤请求的第二服务器。可选地,第二服务器用于提供推荐服务,若过滤结果为对该过滤请求携带的内容标识进行过滤,则第二服务器从待推荐的候选内容中过滤掉该过滤结果所指示的内容标识;若过滤结果为不过滤该过滤请求携带的内容标识,则第二服务器不从待推荐的候选内容中过滤该过滤结果所指示的内容标识;进而第二服务器基于剩余的候选内容进行推荐,以减少内容的重复推荐。

为了使第一服务器提供过滤服务的过程更加清晰,下面结合图4进行说明。参见图4,第一服务器包括过滤服务、缓存服务、Kafka、mysql以及数据仓库。可选地,缓存服务基于redis数据库实现。其中,数据仓库中存储的历史行为数据每天定时更新;通过上述步骤301至步骤302基于数据仓库中的历史行为数据,生成相应的位数组,定时同步存储到mysql中;通过上述步骤303至步骤304从Kafka订阅实时行为数据,将实时行为数据中的内容标识存储到缓存服务;过滤服务通过上述步骤305响应于过滤请求,从缓存服务获取对应的位数组;若缓存服务中不存在对应的位数组,则从mysql中获取对应的位数组,并缓存到缓存服务中;并且,过滤服务从缓存服务中获取来源于实时行为数据的内容标识;通过上述步骤306基于所获取的位数组以及来源于实时行为数据的内容标识,确定该过滤请求对应的过滤结果。其中,可选地,过滤服务、缓存服务、Kafka、mysql以及数据仓库分别部署在不同的多个服务器上,第一服务器为由上述多个服务器组成的服务器集群。可选地,过滤服务基于LRU(Least recently used,最近最少使用)机制,在本地缓存位数组,以在本地缓存不足时,优先清除最近最少使用的位数组。

上述所有可选技术方案,可以采用任意结合形成本申请的可选实施例,在此不再一一赘述。

图5是本申请实施例提供的一种数据处理装置的框图。参见图5,该装置包括:

位数组生成模块501,用于基于数据仓库中的任一用户标识对应的多个第一历史行为数据中的多个第一内容标识,生成第一位数组,其中,该第一历史行为数据用于记录被执行交互行为的内容,每个第一内容标识分别对应该第一位数组中的多个位;

第一对应关系存储模块502,用于存储该任一用户标识以及该第一位数组的对应关系;

位数组确定模块503,用于响应于过滤请求,基于所存储的用户标识与位数组的对应关系,确定该过滤请求携带的用户标识对应的目标位数组;

过滤结果确定模块504,用于基于该目标位数组,确定对该过滤请求携带的内容标识的过滤结果。

本申请实施例提供的技术方案,将任一用户标识对应的每个历史行为数据中的内容标识分别对应到位数组的多个位上,由位数组来表示该用户标识对应的已被执行交互行为的多个内容标识,从而在接收到携带有任一用户标识的过滤请求时,能够基于该用户标识对应的位数组,来确定对该过滤请求携带的内容标识的过滤结果。在内容标识数量很多的大数据场景下,由二进制的位数组来对大量的内容标识进行表示,通过存储位数组来支持过滤服务,极大地减少了为支持过滤服务而占用的存储空间,提高了存储空间的利用率。

在一种可选的实现方式中,该位数组生成模块501,用于:

响应于查询压缩语句,调用查询压缩模块,在数据仓库工具hive对应的内存中,基于数据仓库中的任一用户标识对应的多个第一历史行为数据中的多个第一内容标识,生成第一位数组;

其中,该查询压缩语句用于指示获取用于表示该任一用户标识对应的多个第一内容标识的第一位数组,该查询压缩模块是以hive为基础扩展的功能模块。

在另一种可选的实现方式中,第一历史行为数据用于记录在第一时间段内被执行交互行为的内容;

该第一对应关系存储模块502,用于:

基于该任一用户标识和该第一时间段,生成第一关键字;

存储该第一关键字以及该第一位数组的对应关系。

在另一种可选的实现方式中,该位数组生成模块501,还用于响应于到达位数组更新时间,基于该数据仓库中的该任一用户标识对应的多个第二历史行为数据中的多个第二内容标识,生成第二位数组,该第二历史行为数据用于记录在该位数组更新时间所属的第二时间段内被执行交互行为的内容;

该第一对应关系存储模块502,还用于将所存储的该第二时间段对应的位数组更新为第二位数组。

在另一种可选的实现方式中,第一历史行为数据用于记录在第一时间段内被执行目标类型的交互行为的内容;

该第一对应关系存储模块502,用于:

基于该任一用户标识、该第一时间段以及该第一历史行为数据中的该目标类型的交互行为,生成第二关键字;

存储该第二关键字以及该第一位数组的对应关系。

在另一种可选的实现方式中,该装置还包括:

位数组编码模块,用于对该第一位数组进行编码,生成字符串;

该第一对应关系存储模块502,还用于存储该任一用户标识以及该字符串的对应关系。

在另一种可选的实现方式中,该装置还包括:

实时行为数据接收模块,用于接收该任一用户标识对应的至少一个实时行为数据,实时行为数据用于记录被执行交互行为的内容;

第二对应关系存储模块,用于存储该任一用户标识以及该任一用户标识对应的至少一个实时行为数据中的至少一个内容标识的对应关系;

该过滤结果确定模块504,用于基于该目标位数组以及该过滤请求携带的用户标识对应的至少一个第三内容标识,确定对该过滤请求携带的内容标识的过滤结果,上述至少一个第三内容标识来源于该过滤请求携带的用户标识对应的至少一个实时行为数据。

在另一种可选的实现方式中,该位数组生成模块501,用于:

基于该第一位数组对应的哈希处理方式,对每个第一内容标识进行处理,得到每个第一内容标识对应的该第一位数组的多个位;

将每个第一内容标识对应的该第一位数组的多个位上的值置为1。

在另一种可选的实现方式中,该过滤结果确定模块504,用于:

基于该目标位数组对应的哈希处理方式,对该过滤请求携带的内容标识进行处理,得到该过滤请求携带的内容标识对应的该目标位数组的多个位;

响应于该过滤请求携带的内容标识对应的该目标位数组的多个位上的值包括0,则该目标位数组所表示的多个内容标识中不包括该过滤请求携带的内容标识,确定该过滤结果为不过滤该过滤请求携带的内容标识;

响应于该过滤请求携带的内容标识对应的该目标位数组的多个位上的值均为1,则该目标位数组所表示的多个内容标识中包括该过滤请求携带的内容标识,确定该过滤结果为对该过滤请求携带的内容标识进行过滤。

需要说明的是:上述实施例提供的数据处理装置在进行数据处理时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将服务器的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据处理装置与数据处理方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

图6是本申请实施例提供的一种服务器的框图,该服务器600可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(Central Processing Units,CPU)601和一个或一个以上的存储器602,其中,存储器602中存储有至少一条程序代码,至少一条程序代码由处理器601加载并执行以实现上述各个方法实施例提供的数据处理方法。当然,该服务器还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该服务器还可以包括其他用于实现设备功能的部件,在此不做赘述。

在示例性实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有至少一条程序代码,上述至少一条程序代码可由服务器中的处理器执行以完成上述实施例中的数据处理方法。例如,计算机可读存储介质可以是ROM(Read-Only Memory,只读存储器)、RAM(Random Access Memory,随机存取存储器)、CD-ROM(Compact Disc Read-Only Memory,只读光盘)、磁带、软盘和光数据存储设备等。

本申请还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机程序代码,该计算机程序代码存储在计算机可读存储介质中,服务器的处理器从计算机可读存储介质读取该计算机程序代码,处理器执行该计算机程序代码,使得该服务器执行上述各个方法实施例中的数据处理方法。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

相关技术
  • 一种数据处理方法、第一服务器、第二服务器与存储介质
  • 数据处理方法、装置、服务器及存储介质
技术分类

06120112331087