数据处理方法及装置、存储介质、电子设备与流程

文档序号:26541478发布日期:2021-09-07 22:00阅读:87来源:国知局
数据处理方法及装置、存储介质、电子设备与流程

1.本公开涉及计算机技术领域,尤其涉及一种数据处理方法与数据处理装置、计算机可读存储介质及电子设备。


背景技术:

2.对于企业的运营平台,其中一个重要功能是广告主和采销等可以圈选关注人群,并对关注人群进行分析或者广告投放等操作,以实现品牌业务增长或者其他效果。在技术实现方面,之前运营平台采用离线计算的方式圈选人群,极大地依赖hadoop和spark等离线计算框架。运营平台会将用户输入的圈人条件转化为能在离线计算框架上执行的sql(structured query language,结构化查询语言)语句,并进行提交,以使离线计算框架进行计算和输出结果。
3.但是,这种方案生成一个人群通常需要15

30分钟,在任务量激增的极端情况可能还会超过1个小时,无法支持海量数据的查询,时效性和用户体验都太差。并且,用户进行人群圈选只能知道圈选条件下的人群规模,90%的圈选人群不会进行广告触达,无法完成广告投放等目的,极大地浪费了计算资源。
4.鉴于此,本领域亟需开发一种新的数据处理方法及装置。
5.需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。


技术实现要素:

6.本公开的目的在于提供一种数据处理方法、数据处理装置、计算机可读存储介质及电子设备,进而至少在一定程度上克服由于相关技术的限制而导致的时效性差和计算资源浪费的技术问题。
7.本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
8.根据本发明实施例的第一个方面,提供一种数据处理方法,所述方法包括:获取账号信息以及与所述账号信息对应的分组规则,并按照所述分组规则对所述账号信息进行分组处理得到用户数据;
9.获取与所述用户数据对应的用户行为数据,并按照所述用户行为数据对所述用户数据进行位图表征处理得到行为位图;
10.获取确定目标用户的筛选条件,并按照所述筛选条件对所述行为位图进行位图计算确定所述目标用户和所述目标用户的用户数量。
11.在本发明的一种示例性实施例中,所述按照所述分组规则对所述账号信息进行分组处理得到用户数据,包括:
12.确定所述分组规则中规定的分组数;
13.按照所述分组数对所述账号信息进行分组处理得到用户数据。
14.在本发明的一种示例性实施例中,所述按照所述分组数对所述账号信息进行分组处理得到用户数据,包括:
15.按照所述分组数对所述账号信息进行账号计算得到账号计算结果;
16.对所述账号计算结果进行哈希计算得到分组标识以及与所述分组标识对应的用户数据。
17.在本发明的一种示例性实施例中,所述按照所述用户行为数据对所述用户数据进行位图表征处理得到行为位图,包括:
18.对所述账号信息进行索引配置处理得到具有索引的账号信息;
19.基于所述索引,按照所述用户行为数据对所述用户数据进行位图表征处理得到行为位图。
20.在本发明的一种示例性实施例中,所述按照所述筛选条件对所述行为位图进行位图计算确定所述目标用户和所述目标用户的用户数量,包括:
21.当所述筛选条件为多个时,确定所述行为位图为多个;
22.当所述用户数据为一组时,对多个所述行为位图进行位图计算确定所述目标用户和所述目标用户的用户数量。
23.在本发明的一种示例性实施例中,所述按照所述筛选条件对所述行为位图进行位图计算确定所述目标用户和所述目标用户的用户数量,包括:
24.当所述筛选条件为多个时,确定所述行为位图为多个;
25.当所述用户数据为多组时,按照分组标识对多个所述行为位图进行位图计算确定多个单一条件用户和所述多个单一条件用户的多个单一用户数量;
26.对所述多个单一条件用户进行连接处理得到目标用户,并对所述多个单一用户数量进行数量计算得到所述目标用户的用户数量。
27.在本发明的一种示例性实施例中,所述方法还包括:
28.当所述筛选条件为一个时,确定所述行为位图为一个;
29.对所述行为位图进行表征含义识别得到目标用户和所述目标用户的用户数量。
30.根据本发明实施例的第二个方面,提供一种数据处理装置,所述装置包括:分组处理模块,被配置为获取账号信息以及与所述账号信息对应的分组规则,并按照所述分组规则对所述账号信息进行分组处理得到用户数据;
31.位图表征模块,被配置为获取与所述用户数据对应的用户行为数据,并按照所述用户行为数据对所述用户数据进行位图表征处理得到行为位图;
32.用户确定模块,被配置为获取确定目标用户的筛选条件,并按照所述筛选条件对所述行为位图进行位图计算确定所述目标用户和所述目标用户的用户数量。
33.根据本发明实施例的第三个方面,提供一种电子设备,包括:处理器和存储器;其中,存储器上存储有计算机可读指令,所述计算机可读指令被所述处理器执行时实现上述任意示例性实施例的数据处理方法。
34.根据本发明实施例的第四个方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意示例性实施例中的数据处理方法。
35.由上述技术方案可知,本发明示例性实施例中的数据处理方法、数据处理装置、计
算机存储介质及电子设备至少具备以下优点和积极效果:
36.在本公开的示例性实施例提供的方法及装置中,一方面,对账号信息进行分组处理得到用户数据,在解决数据存储量的同时,降低了存储消耗,至少满足了未来数百亿量级的数据存储需求。另一方面,对用户数据进行位图表征处理得到行为位图,极大地降低了数据急剧增长带来的存储和计算压力,对数据的存储、处理、传输和读取性能都有大幅度提升,满足了高时效性应用场景的要求;进一步的,对行为位图进行位图计算得到目标用户和用户数量,不仅支持了多种查询操作,且查询语句简易,易于理解,还能够最大化的利用计算资源,避免了计算资源浪费的情况发生。
37.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
38.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
39.图1示意性示出本公开示例性实施例中一种数据处理方法的流程示意图;
40.图2示意性示出本公开示例性实施例中按照分组规则进行分组处理的方法的流程示意图;
41.图3示意性示出本公开示例性实施例中按照分组数进行分组处理的方法的流程示意图;
42.图4示意性示出本公开示例性实施例中对用户数据进行位图表征处理的方法的流程示意图;
43.图5示意性示出本公开示例性实施例中一种位图计算的方法的流程示意图;
44.图6示意性示出本公开示例性实施例中另一种位图计算的方法的流程示意图;
45.图7示意性示出本公开示例性实施例中确定目标用户和用户数量的方法的流程示意图;
46.图8示意性示出本公开示例性实施例中应用场景下数据处理方法的部分原理说明图;
47.图9示意性示出本公开示例性实施例中应用场景下查询数据的流程示意图;
48.图10示意性示出本公开示例性实施例中应用场景下确定目标用户和用户数量的方法的语句执行示意图;
49.图11示意性示出本公开示例性实施例中一种数据处理装置的结构示意图;
50.图12示意性示出本公开示例性实施例中一种用于实现数据处理方法的电子设备;
51.图13示意性示出本公开示例性实施例中一种用于实现数据处理方法的计算机可读存储介质。
具体实施方式
52.现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形
式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。
53.本说明书中使用用语“一个”、“一”、“该”和“所述”用以表示存在一个或多个要素/组成部分/等;用语“包括”和“具有”用以表示开放式的包括在内的意思并且是指除了列出的要素/组成部分/等之外还可存在另外的要素/组成部分/等;用语“第一”和“第二”等仅作为标记使用,不是对其对象的数量限制。
54.此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。
55.对于企业的运营平台,其中一个重要功能是广告主和采销等可以圈选关注人群,并对关注人群进行分析或者广告投放等操作,以实现品牌业务增长或者其他效果。在技术实现方面,之前运营平台采用离线计算的方式圈选人群,极大地依赖hadoop和spark等离线计算框架。运营平台会将用户输入的圈人条件转化为能在离线计算框架上执行的sql语句,并进行提交,以使离线计算框架进行计算和输出结果。
56.但是,这种方案生成一个人群通常需要15

30分钟,在任务量激增的极端情况可能还会超过1个小时,无法支持海量数据的查询,时效性和用户体验都太差。并且,用户进行人群圈选只能知道圈选条件下的人群规模,90%的圈选人群不会进行广告触达,无法完成广告投放等目的,极大地浪费了计算资源。
57.针对相关技术中存在的问题,本公开提出了一种数据处理方法。图1示出了数据处理方法的流程图,如图1所示,数据处理方法至少包括以下步骤:
58.步骤s110.获取账号信息以及与账号信息对应的分组规则,并按照分组规则对账号信息进行分组处理得到用户数据。
59.步骤s120.获取与用户数据对应的用户行为数据,并按照用户行为数据对用户数据进行位图表征处理得到行为位图。
60.步骤s130.获取确定目标用户的筛选条件,并按照筛选条件对行为位图进行位图计算确定目标用户和目标用户的用户数量。
61.在本公开的示例性实施例中,一方面,对账号信息进行分组处理得到用户数据,在解决数据存储量的同时,降低了存储消耗,至少满足了未来数百亿量级的数据存储需求。另一方面,对用户数据进行位图表征处理得到行为位图,极大地降低了数据急剧增长带来的存储和计算压力,对数据的存储、处理、传输和读取性能都有大幅度提升,满足了高时效性应用场景的要求;进一步的,对行为位图进行位图计算得到目标用户和用户数量,不仅支持了多种查询操作,且查询语句简易,易于理解,还能够最大化的利用计算资源,避免了计算资源浪费的情况发生。
62.下面对数据处理方法的各个步骤进行详细说明。
63.在步骤s110中,获取账号信息以及与账号信息对应的分组规则,并按照分组规则对账号信息进行分组处理得到用户数据。
64.在本公开的示例性实施例中,该账号信息可以是用户使用应用程序,在应用程序上使用的账号信息,也可以是其他唯一在应用程序上表征用户的信息,本示例性实施例对此不做特殊限定。
65.而该分组规则是用于对账号信息进行分组,以实现将数据量大的账号信息分区管理和处理的目的的规则。
66.在可选的实施例中,图2示出了按照分组规则进行分组处理的方法的流程示意图,如图2所示,该方法至少包括以下步骤:在步骤s210中,确定分组规则中规定的分组数。
67.该分组规则中可以包括分组数,亦即根据实际情况制定的要将账号信息分成的个数。一般的,该分组数可以为32,也可以是其他个数,本示例性实施例对此不做特殊限定。
68.在步骤s220中,按照分组数对账号信息进行分组处理得到用户数据。
69.在可选的实施例中,图3示出了按照分组数进行分组处理的方法的流程示意图,如图3所示,该方法至少包括以下步骤:在步骤s310中,按照分组数对账号信息进行账号计算得到账号计算结果。
70.在确定分组数之后,可以根据分组数对账号信息进行账号计算。
71.具体的,账号计算可以是根据分组数对账号信息进行取余计算以得到账号计算结果。
72.举例而言,账号计算的方式可以参照表1:
[0073][0074]
表1
[0075]
其中,pin1、pin2、pin3、
……
、pin10表示10个账号信息,part_id表示通过(pin)%3进行取余计算得到的结果,而账号计算结果可以是将账号计算结果与账号信息共同存储得到的结果,例如(1,pin1)、(2,pin2)或(3,pin3)等。
[0076]
在步骤s320中,对账号计算结果进行哈希计算得到分组标识以及与分组标识对应的用户数据。
[0077]
在得到账号计算结果之后,可以将part_id作为各个组的分组标识,例如分组标识可以为1、2或3等,本示例性实施例对此不做特殊限定。进一步的,还可以对账号计算结果中的账号信息进行哈希计算得到对应的用户数据。
[0078]
哈希计算可以是通过哈希算法实现的。哈希算法又称散列算法,是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数,该固定长度的消息摘要就是哈希值,亦即用户数据。
[0079]
需要说明的是,哈希值是一个短的随机字母和数字组成的字符串。哈希算法包括
但不限于:md4算法(message digest

4,信息摘要算法

4)、md5(message digest

5,信息摘要算法

5)算法、sha

1(secur e hash algorithm

1,安全散列算法

1)算法、sha

256(secure hash algorithm

256,安全散列算法

256)算法等等。
[0080]
以sha

256算法的工作原理为例,将任何一串数据输入到sha

256算法中,将得到一个256位的哈希值。相同的数据输入可以得到相同的结果。但是,只要输入数据稍有变化,比如输入数据中的一个1变为0,将得到一个与原结果千差万别的新结果,且根据哈希算法计算得到的输入数据的哈希值是无法预知的,保证了根据随机数确定事件获取结果的过程具有随机性。除此之外,哈希算法还具有一个特点就是很难找到逆向规律,即根据哈希值计算出对应的输入数据极其困难,在当前科技条件下被视为不可能。因此,通过哈希计算可以保障用户账号信息的安全性和保密性。
[0081]
在本示例性实施例中,通过账号计算和哈希计算可以得到账号信息的分组标识和对应的用户数据,保障了用户的账号信息的安全性,也可以实现对海量账号信息的分组管理,不仅扩大了账号信息的存储量,还提高了后续确定目标用户的效率。
[0082]
在步骤s120中,获取与用户数据对应的用户行为数据,并按照用户行为数据对用户数据进行位图表征处理得到行为位图。
[0083]
在本公开的一种示例性实施例中,用户行为数据可以是表征用户购买、浏览、加入购物车等行为的数据,也可以在其他应用场景下包括其他行为数据,本示例性实施例对此不做特殊限定。
[0084]
某品牌广告主想在“双11”大促之前进行广告投放,以拉动大促期间的销量。主要的,广告主想定位出以下几类人群,分别是最近两次大促期间购买过本品牌产品的用户(集合a);最近半个月浏览过本品牌产品的用户(集合b);最近半个月将本品牌产品加入购物车,但是没有购买的用户(集合c),然后将这几类人群合并,以进行广告投放。具体的,与用户数据对应的用户行为数据可以参照表2:
[0085][0086]
表2
[0087]
其中,集合a是根据用户的购买行为数据得到的,包括{pin1,pin2,pin3}三个人;集合b是根据用户的浏览行为数据得到的,包括{pin2,pin3,pin4,pin5}四个人;集合c实际上是加入购物车的用户行为数据(集合c1)和购买用户行为数据(集合c2)的差集,分别包括{pin4,pin5,pin6}三个人和{pin5,pin6,pin7}三个人。
[0088]
但是,获取到用户行为数据之后,按照表2的方式进行存储存在很多问题。
[0089]
第一,数据量大。每天新生成的底层明细数据量在数百亿量级,内部的细化标签每天千万量级,全量用户的用户数据也非常庞大。过大的数据量对数据的存储、处理、传输和读取的性能都是一个非常大的挑战。
[0090]
第二,数据类型复杂。针对用户行为数据,比如购买行为,其支持频次或价格等连续性标签在范围区间内的圈选,因此需要记录每个用户的购买频次和价格等信息,这部分数据需要对底层明细数据进行预处理,以及对数据量进行优化。
[0091]
第三,用户圈选情况复杂。目前允许用户对自己选择的任意标签进行任意顺序的交、并、差操作。但是,目前用户很多圈选组合都能达到20

30个,每个卡片都对应底层多个细化标签,这会导致最终一次的全选可能会获取到成千上万个细化标签进行任意组合的交、并、差操作,逻辑可能会非常复杂。
[0092]
第四,查询性能要求高。因为是在线业务,人群计算的接口需要迅速返回,过长时间的等待会带来更差的用户体验。
[0093]
第五,并发要求高。在线业务意味着并发查询量不会太低,支持多用户同时计算,需要保证应用服务以及后端存储或分析引擎的稳定性,以保证对外服务的稳定性,尤其是大促期间。
[0094]
为了改善以上问题,可以利用位图计算来解决。位图(bitmap)是一种设计十分巧妙的数据结构,由一系列比特位组成,并利用比特位的0和1表示对立的两种状态,比如一件事情是否发生或者某个对象是否存在等。在位图上进行的操作即为位图操作,比特位的与、或、非等操作,可以映射为位图操作上的交、并、差操作。并且,主流的nosql(no structured query language,非关系型)数据库和olap(on

line analytical processing,联机分析处理)查询引擎都支持位图。
[0095]
在可选的实施例中,图4示出了对用户数据进行位图表征处理的方法的流程示意图,如图4所示,该方法至少包括以下步骤:在步骤s410中,对账号信息进行索引配置处理得到具有索引的账号信息。
[0096]
具体的,对账号信息进行索引配置处理可以是向每个用户的账号信息分配一个索引(index),记录在索引映射表(index

mapping)中,并且记录的方式是(schema:pin,index)(结构:账号信息,索引)。除此之外,也可以有其他存储索引与账号信息的方式,本示例性实施例对此不做特殊限定。
[0097]
在分配索引时,该索引可以从0开始,可以看做索引为位图的下标。
[0098]
在步骤s420中,基于索引,按照用户行为数据对用户数据进行位图表征处理得到行为位图。
[0099]
在为账号信息分配索引之后,可以按照用户行为数据对用户数据进行位图表征处理。其中,在位图表征处理的过程中,可以以1表示一个用户存在,0表示一个用户不存在。
[0100]
具体的,可以参照表3:
[0101]
[0102]
表3
[0103]
其中,{1,1,1,0,0,0,0,0}表示最近两次大促有购买行为的用户是索引为0、索引为1和索引为2的用户,亦即pin1,pin2,pin3三个用户;{0,1,1,1,1,0,0,0}表示最近有浏览行为的用户是索引为1、索引为2、索引为3和索引为4的用户,亦即pin2,pin3,pin4,pin5四个用户;{0,0,0,0,1,1,1,0}表示最近有加购行为用户是索引为3、索引为4和索引为5的用户,亦即pin4,pin5,pin6三个用户;{0,0,0,0,0,1,1,1}表示最近有购买行为的用户是索引为4、索引为5和索引为6的三个用户,亦即pin5,pin6,pin7三个用户。因此,{1,1,1,0,0,0,0,0}、{0,1,1,1,1,0,0,0}、{0,0,0,0,1,1,1,0}和{0,0,0,0,0,1,1,1}分别为按照四种行为数据得到的行为位图。
[0104]
显然,位图可以解决数据量的问题。具体的,一个32位的行为位图可以存储2的32次方的比特位,也就是21亿左右的人群,而数据大小只有256mb。同样的大小如果存储成字符串,数据量大小在30gb左右,理论上可以相差100倍。在实际项目中,还可以采用一种压缩率更高的稀疏位图——roaringbitmap来进行存储。greenplum通过插件的方式可以对其进行支持,如果不使用行为位图,每天新增的用户行为数据的数据量超过10tb。在使用行为位图后,可以将每天的新增数据量控制在500

600gb,极大的减缓了数据急剧增长带来的存储和计算压力,对数据的存储、处理、传输和读取性能都有大幅度的提升。
[0105]
其中,roaringbitmap是在bitmap结构基础上进行了改进,它是将一个整数划分为高16位和低16位,高16位作为一个公共key,低16位作为value,那么就会有2的16次方个分区key。在roaringbitmap中,会将key存储到一个short[]数组中。如果short[n](n>=0and n<=65535)分区中存储的数量小于4096,roaringbitmap默认采用arraycontainer存储数据;如果单个分区数据量大于4096时,那么该分区的container就会转变成bitmapcontainer位图存储方式,即一个分区key对应了一个long[1024]的数组。这样long数组中每个元素可以存储64个数据(二进制表示),那一个分区key就可以存储1024*64=2^16个数据。值得注意的是,当每个分区中的数据量都小于4096的情况下(数据稀疏),就会出现所有数据都存储在一个short数组中,因此在这种情况下并没有利用到bitmap位图存储。
[0106]
除此之外,位图更加可以解决圈选情况复杂的问题。在之前的离线人群圈选中使用hivesql和spark dataframe,各个人群之间的交、并、差需要转为sql的join(连接)和union(合并)操作,另外sql不支持差集操作,也需要转成join操作。而行为位图作为一种集合,在语义上直接支持交、并、差操作,生成的查询语句结构相对简单,更加易于理解。
[0107]
不仅如此,行为位图还可以解决查询性能的问题。基于以上论述,行为位图在性能方面的优势显而易见。位图操作的性能更加远远优于普通集合之间的操作,在实际的性能测试中,两者之间的性能差距在10倍以上。
[0108]
在步骤s130中,获取确定目标用户的筛选条件,并按照筛选条件对行为位图进行位图计算确定目标用户和目标用户的用户数量。
[0109]
在本公开的一种示例性实施例中,为进一步完成对目标用户的全选和广告投放人群的确定,可以获取到品牌广告主的筛选条件。以上述示例继续进行说明,对应的筛选条件即为最近两次大促期间购买过本品牌产品的用户(集合a);最近半个月浏览过本品牌产品的用户(集合b);最近半个月将本品牌产品加入购物车,但是没有购买的用户(集合c),然后将这几类人群合并,以进行广告投放。
[0110]
在确定筛选条件之后,可以按照筛选条件对行为位图进行位图计算。
[0111]
在可选的实施例中,图5示出了一种位图计算的方法的流程示意图,如图5所示,该方法至少包括以下步骤:在步骤s510中,当筛选条件为多个时,确定行为位图为多个。
[0112]
当筛选条件为最近两次大促期间购买过本品牌产品的用户(集合a);最近半个月浏览过本品牌产品的用户(集合b);最近半个月将本品牌产品加入购物车,但是没有购买的用户(集合c),然后将这几类人群合并,以进行广告投放时,可以确定筛选条件为3个,因此对应的行为位图为{1,1,1,0,0,0,0,0}、{0,1,1,1,1,0,0,0}、{0,0,0,0,1,1,1,0}和{0,0,0,0,0,1,1,1}四个,也为多个。
[0113]
值得说明的是,筛选条件与行为位图并不是一一对应的关系,因此二者的个数并不存在相等的关系。
[0114]
在步骤s520中,当用户数据为多组时,按照分组标识对多个行为位图进行位图计算确定多个单一条件用户和多个单一条件用户的多个单一用户数量。
[0115]
进一步的,在按照分组数对账号信息进行分组处理之后,pin1

pin10这10个账号信息被分成了三组用户数据。其中,分组标识为1的(1,pin1)、(1,pin4)、(1,pin7)和(1,pin10)为第一组用户数据;分组标识为2的(2,pin2)、(2,pin5)和(2,pin8)为第二组用户数据;分组标识为3的(3,pin3)、(3,pin6)和(3,pin9)为第三组用户数据。此时,用户数据为多组。
[0116]
那么,与用户数据对应的,针对用户最近两次大促的购买行为而言,行为位图还可以是{1,0,0,0}、{1,0,0}和{1,0,0}三个;针对用户最近的浏览行为而言,行为位图还可以是{0,1,0,0}、{1,1,0}和{1,0,0}三个;针对用户的加购行为和最近购买行为而言,也是相同的方式,在此不再赘述。
[0117]
显然,当用户数据为多组时,行为位图也得分组进行位图计算。
[0118]
具体的,针对分组标识为1的行为位图进行与集合{a}u{b}u{{c1}

{c2}}相同的位图计算,得到分组标识为1时的单一条件用户和对应的单一用户数量;针对分组标识为2的行为位图进行与集合{a}u{b}u{{c1}

{c2}}相同的位图计算,得到分组标识为2时的单一条件用户和对应的单一用户数量;针对分组标识为3的行为位图进行与集合{a}u{b}u{{c1}

{c2}}相同的位图计算,得到分组标识为3时的单一条件用户和对应的单一用户数量。
[0119]
其中,在各个组的位图计算可以按照集合的交计算转换为与操作,集合的并计算转换为或操作,集合的差计算转换为非操作的方式进行计算,因此,集合{a}u{b}u{{c1}

{c2}}对应的位图计算即为a&b&(c1

c2)。
[0120]
在步骤s530中,对多个单一条件用户进行连接处理得到目标用户,并对多个单一用户数量进行数量计算得到目标用户的用户数量。
[0121]
在得到多组单一条件用户之后,可以将多组单一条件用户进行连接处理,以及join处理得到目标用户。并且,将多组单一用户的数量进行求和计算这一数量计算得到目标用户的用户数量。
[0122]
值得说明的是,将集合操作转换为对应的位图操作之后,目标用户和用户数量的计算结果与集合操作的计算结果保持一致。
[0123]
在本示例性实施例中,通过多组位图计算和连接处理等方式可以得到目标用户和圈选的用户数量,计算结果准确一致,并且数据处理性能在多方面得到了大幅度提升。
[0124]
除此之外,当出现其他情况下的目标用户和用户数量的确定需求时,也可以通过位图计算实现圈选目的和人群确定。
[0125]
在可选的实施例中,图6示出了另一种位图计算的方法的流程示意图,如图6所示,该方法至少包括以下步骤:在步骤s610中,当筛选条件为多个时,确定行为位图为多个。
[0126]
当筛选条件为最近两次大促期间购买过本品牌产品的用户(集合a);最近半个月浏览过本品牌产品的用户(集合b);最近半个月将本品牌产品加入购物车,但是没有购买的用户(集合c),然后将这几类人群合并,以进行广告投放时,可以确定筛选条件为3个,因此对应的行为位图为{1,1,1,0,0,0,0,0}、{0,1,1,1,1,0,0,0}、{0,0,0,0,1,1,1,0}和{0,0,0,0,0,1,1,1}四个,也为多个。
[0127]
值得说明的是,筛选条件与行为位图并不是一一对应的关系,因此二者的个数并不存在相等的关系。
[0128]
在步骤s620中,当用户数据为一组时,对多个行为位图进行位图计算确定目标用户和目标用户的用户数量。
[0129]
当按照分组数对账号信息进行分组处理之后,pin1

pin8这8个账号信息可以被分成一组,且分组标识一致。因此,与用户数据对应的,与用户数据对应的,针对用户最近两次大促的购买行为而言,行为位图只有{1,1,1,0,0,0,0,0}一个;针对用户最近的浏览行为而言,行为位图只有{0,1,1,1,1,0,0,0}一个;针对用户的加购行为而言,行为位图也只有{0,0,0,0,1,1,1,0}一个;针对用户的最近购买行为而言,行为位图也只有{0,0,0,0,0,1,1,1}一个。
[0130]
显然,在这一组的位图计算可以按照集合的交计算转换为与操作,集合的并计算转换为或操作,集合的差计算转换为非操作的方式进行计算,因此,集合{a}u{b}u{{c1}

{c2}}对应的位图计算即为a&b&(c1

c2)。
[0131]
在按照a&b&(c1

c2)的位图计算对四个行为位图进行位图计算之后,可以直接得到目标用户和对应的用户数量。
[0132]
在本示例性实施例中,针对用户量较小,但需要圈选用户的场景下,可以直接通过位图计算确定目标用户和用户数量,能够在用户量小的场景下快速圈选目标用户,也简化了查询语句的结构,易于理解和使用。
[0133]
在可选的实施例中,图7示出了确定目标用户和用户数量的方法的流程示意图,如图7所示,该方法至少包括以下步骤:在步骤s710中,当筛选条件为一个时,确定行为位图为一个。
[0134]
当筛选条件为最近两次大促期间购买过本品牌产品的用户,可以确定筛选条件为1个,因此对应的行为位图只有{1,1,1,0,0,0,0,0}一个。
[0135]
在步骤s720中,对行为位图进行表征含义识别得到目标用户和目标用户的用户数量。
[0136]
当按照分组数对账号信息进行分组处理之后,pin1

pin8这8个账号信息可以被分成一组,且分组标识一致。因此,与用户数据对应的,与用户数据对应的,针对用户最近两次大促的购买行为而言,行为位图只有{1,1,1,0,0,0,0,0}一个。
[0137]
因此,根据位图表征处理过程中的以1表示一个用户存在,0表示一个用户不存在的原则进行表征含义识别,确定此时的目标用户为用户pin1、pin2和pin3这三个,并且,对
用户数量进行统计可以得到目标用户的用户数量为3个。
[0138]
进一步的,在按照分组数对账号信息进行分组处理之后,pin1

pin10这10个账号信息被分成了三组用户数据。其中,分组标识为1的(1,pin1)、(1,pin4)、(1,pin7)和(1,pin10)为第一组用户数据;分组标识为2的(2,pin2)、(2,pin5)和(2,pin8)为第二组用户数据;分组标识为3的(3,pin3)、(3,pin6)和(3,pin9)为第三组用户数据。此时,用户数据为多组。
[0139]
那么,与用户数据对应的,针对用户最近两次大促的购买行为而言,行为位图还可以是{1,0,0,0}、{1,0,0}和{1,0,0}三个;针对用户最近的浏览行为而言,行为位图还可以是{0,1,0,0}、{1,1,0}和{1,0,0}三个;针对用户的加购行为和最近购买行为而言,也是相同的方式,在此不再赘述。
[0140]
在这种情况下,无需对行为位图进行位图计算,只需分别对多个行为位图进行表征含义识别得到多组目标用户和对应的多个用户数量,再将多组目标用户进行汇总得到最终的目标用户,对多个用户数量进行求和计算得到最终的用户数量即可。
[0141]
在本示例性实施例中,针对目标用户的筛选条件只有一个的情况,可以直接对行为位图进行表征含义识别处理即可得到对应的目标用户和用户数量,将用户圈选和目标人群确定的功能合二为一,时效性更好,资源利用率更大,避免了对资源浪费的情况发生。
[0142]
下面结合一应用场景对本公开实施例中的数据处理方法做出详细说明。
[0143]
图8示出了应用场景下数据处理方法的部分原理说明图,如图8所示,首先,获取账号信息。
[0144]
该账号信息可以是用户使用应用程序,在应用程序上使用的账号信息,可以是pin1、pin2、pin3、pin4、pin5、pin6
……
。除此之外,账号信息也可以是其他唯一在应用程序上表征用户的信息,本示例性实施例对此不做特殊限定。
[0145]
然后,按照分组原则对账号信息进行分组处理得到用户数据。
[0146]
该分组规则是用于对账号信息进行分组,以实现将数据量大的账号信息分区管理和处理的目的的规则。该分组规则中可以包括分组数,亦即根据实际情况制定的要将账号信息分成的个数。一般的,该分组数可以为3,也可以是其他个数,本示例性实施例对此不做特殊限定。
[0147]
在实际应用中,分组数可以为32,这样可以支持到将近700亿的用户,能够至少满足未来5

10年的业务增长,而数据存储量也可以至少存储两年的全部用户数据。
[0148]
在确定分组数之后,可以根据分组数对账号信息进行账号计算。
[0149]
具体的,账号计算可以是根据分组数对账号信息进行取余计算以得到账号计算结果。
[0150]
具体的,pin1、pin2、pin3、
……
表示n个账号信息,part_id表示通过(pin)%3进行取余计算得到的结果,而账号计算结果可以是将账号计算结果与账号信息共同存储得到的结果,例如(1,pin1)、(2,pin2)或(3,pin3)等。
[0151]
在得到账号计算结果之后,可以将part_id作为各个组的分组标识,亦即图中的分区标识,例如分组标识可以为1、2或3等,本示例性实施例对此不做特殊限定。进一步的,还可以对账号计算结果中的账号信息进行哈希计算得到对应的用户数据。哈希计算可以是通过哈希算法实现的。哈希算法又称散列算法,是一种将任意长度的消息压缩到某一固定长
度的消息摘要的函数,该固定长度的消息摘要就是哈希值,亦即用户数据。
[0152]
进一步的,对账号信息进行索引配置处理得到具有索引的账号信息。
[0153]
具体的,对账号信息进行索引配置处理可以是向每个用户的账号信息分配一个索引,对应于图中的用户索引。并且,该索引可以记录在索引映射表中,并且记录的方式是(schema:pin,index)。除此之外,也可以有其他存储索引与账号信息的方式,本示例性实施例对此不做特殊限定。
[0154]
在分配索引时,该索引可以从0开始,可以看做索引为位图的下标。除此之外,索引也可以从1开始,本示例性实施例对此不做特殊限定。
[0155]
继而,获取用户行为数据。
[0156]
其中,针对品牌1的某种用户行为数据对应的用户的账号信息可以是pin1、pin3、pin4、pin5、
……
。用户行为数据可以是表征用户购买、浏览、加入购物车等行为的数据,也可以在其他应用场景下包括其他行为数据,本示例性实施例对此不做特殊限定。
[0157]
进一步的,按照用户行为数据对进行位图表征处理得到行为位图。
[0158]
当采用数组存储用户行为数据时,可以以品牌1为标签名称,并按照分组标识对对应的账号信息按照索引进行存储。
[0159]
但是,这种存储方式存在很多问题。
[0160]
第一,数据量大。每天新生成的底层明细数据量在数百亿量级,内部的细化标签每天千万量级,全量用户的用户数据也非常庞大。过大的数据量对数据的存储、处理、传输和读取的性能都是一个非常大的挑战。
[0161]
第二,数据类型复杂。针对用户行为数据,比如购买行为,其支持频次或价格等连续性标签在范围区间内的圈选,因此需要记录每个用户的购买频次和价格等信息,这部分数据需要对底层明细数据进行预处理,以及对数据量进行优化。
[0162]
第三,用户圈选情况复杂。目前允许用户对自己选择的任意标签进行任意顺序的交、并、差操作。但是,目前用户很多圈选组合都能达到20

30个,每个卡片都对应底层多个细化标签,这会导致最终一次的全选可能会获取到成千上万个细化标签进行任意组合的交、并、差操作,逻辑可能会非常复杂。
[0163]
第四,查询性能要求高。因为是在线业务,人群计算的接口需要迅速返回,过长时间的等待会带来更差的用户体验。
[0164]
第五,并发要求高。在线业务意味着并发查询量不会太低,支持多用户同时计算,需要保证应用服务以及后端存储或分析引擎的稳定性,以保证对外服务的稳定性,尤其是大促期间。
[0165]
为了改善以上问题,可以利用位图计算来解决。位图是一种设计十分巧妙的数据结构,由一系列比特位组成,并利用比特位的0和1表示对立的两种状态,比如一件事情是否发生或者某个对象是否存在等。在位图上进行的操作即为位图操作,比特位的与、或、非等操作,可以映射为位图操作上的交、并、差操作。并且,主流的nosql数据库和olap查询引擎都支持位图。
[0166]
在为账号信息分配索引之后,可以按照用户行为数据对用户数据进行位图表征处理。其中,在位图表征处理的过程中,可以以1表示一个用户存在,0表示一个用户不存在。
[0167]
因此,按照行为位图存储时,可以是{1,0,
……
}、{0,0,1,1,0,
……
}、{0,0,
……
,
1,
……
}、
……
的形式。
[0168]
举例而言,{1,1,1,0,0,0,0,0}表示最近两次大促有购买行为的用户是索引为0、索引为1和索引为2的用户,亦即pin1,pin2,pin3三个用户;{0,1,1,1,1,0,0,0}表示最近有浏览行为的用户是索引为1、索引为2、索引为3和索引为4的用户,亦即pin2,pin3,pin4,pin5四个用户;{0,0,0,0,1,1,1,0}表示最近有加购行为用户是索引为3、索引为4和索引为5的用户,亦即pin4,pin5,pin6三个用户;{0,0,0,0,0,1,1,1}表示最近有购买行为的用户是索引为索引为4、索引为5和索引为6的三个用户,亦即pin5,pin6,pin7三个用户。因此,{1,1,1,0,0,0,0,0}、{0,1,1,1,1,0,0,0}、{0,0,0,0,1,1,1,0}和{0,0,0,0,0,1,1,1}分别为按照四种行为数据得到的行为位图。
[0169]
并且,非位图存储的用户数据可以在查询时,动态生成对应的行为位图,以和其他位图人群进行交、并、差的位图计算。
[0170]
显然,位图可以解决数据量的问题。具体的,一个32位的行为位图可以存储2的32次方的比特位,也就是21亿左右的人群,而数据大小只有256mb。同样的大小如果存储成字符串,数据量大小在30gb左右,理论上可以相差100倍。在实际项目中,还可以采用一种压缩率更高的稀疏位图——roaringbitmap来进行存储。greenplum通过插件的方式可以对其进行支持,如果不使用行为位图,每天新增的用户行为数据的数据量超过10tb。在使用行为位图后,可以将每天的新增数据量控制在500

600gb,极大的减缓了数据急剧增长带来的存储和计算压力,对数据的存储、处理、传输和读取性能都有大幅度的提升。
[0171]
其中,roaringbitmap是在bitmap结构基础上进行了改进,它是将一个整数划分为高16位和低16位,高16位作为一个公共key,低16位作为value,那么就会有2的16次方个分区key。在roaringbitmap中,会将key存储到一个short[]数组中。如果short[n](n>=0and n<=65535)分区中存储的数量小于4096,roaringbitmap默认采用arraycontainer存储数据;如果单个分区数据量大于4096时,那么该分区的container就会转变成bitmapcontainer位图存储方式,即一个分区key对应了一个long[1024]的数组。这样long数组中每个元素可以存储64个数据(二进制表示),那一个分区key就可以存储1024*64=2^16个数据。值得注意的是,当每个分区中的数据量都小于4096的情况下(数据稀疏),就会出现所有数据都存储在一个short数组中,因此在这种情况下并没有利用到bitmap位图存储。
[0172]
除此之外,位图更加可以解决圈选情况复杂的问题。在之前的离线人群圈选中使用hivesql和spark dataframe,各个人群之间的交、并、差需要转为sql的join和union操作,另外sql不支持差集操作,也需要转成join操作。而行为位图作为一种集合,在语义上直接支持交、并、差操作,生成的查询语句结构相对简单,更加易于理解。
[0173]
不仅如此,行为位图还可以解决查询性能的问题。基于以上论述,行为位图在性能方面的优势显而易见。位图操作的性能更加远远优于普通集合之间的操作,在实际的性能测试中,两者之间的性能差距在10倍以上。
[0174]
图9示出了应用场景下查询数据的流程示意图,如图9所示,品牌方发起对品牌1的购买用户和浏览用户的查询请求。并且,查询请求为2019年11月1日至2019年11月11日的大促时间内的。
[0175]
然后,查询服务根据查询请求对greenplum架构进行查询。
[0176]
其中,greenplum主要由master节点、segment节点、interconnect三大部分组成。
greenplum master是greenplum数据库系统的入口,接受客户端连接及提交的sql语句,将工作负载分发给其它数据库实例(segment实例),由它们存储和处理数据。greenplum interconnect负责不同postgresql实例之间的通信。greenplum segment是独立的postgresql数据库,每个segment存储一部分数据。大部分查询处理都由segment完成。
[0177]
master节点不存放任何用户数据,只是对客户端进行访问控制和存储表分布逻辑的元数据。segment节点负责数据的存储,可以对分布键进行优化以充分利用segment节点的io性能来扩展整集群的io性能
[0178]
存储方式可以根据数据热度或者访问模式的不同而使用不同的存储方式。一张表的不同数据可以使用不同的物理存储方式,分别可以是行存储、列存储、外部表。
[0179]
在查询之后,在标签1(tag1)中定位到{b

1,purchase,1,audience,11

01}、{b

1,purchase,10,audience,11

02}、{b

1,purchase,20,audience,11

03}、
……
、{b

1,purchase,32,audience,11

11}的几个人群。
[0180]
这几个人群的定位条件分别可以是上两次大促的购买行为tag=“b

1”and business_type=“purchase”and((date>=’2019

11

01’and date<=’2019

11

11’)or(date>=’2020

06

01’and date<=’2020

06

18’));最近浏览行为tag=“b

1”and business_type=“browse”and(date>=’2020

09

15’and date<=’2020

09

30’);最近加购行为tag=“b

1”and business_type=“cart”and(date>=’2020

09

15’and date<=’2020

09

30’);最近购买行为tag=“b

1”and business_type=“purchase”and(date>=’2020

09

15’and date<=’2020

09

30’)。除此之外,也可以是其他定位条件,本示例性实施例对此不做特殊限定。
[0181]
此时可以确定筛选条件为多个,因此对应的行为位图也是多个。
[0182]
并且,由于分组标识分别为1、10、20、
……
、32等,可以确定用户数据也为多组。
[0183]
进一步的,按照分组标识对多个行为位图进行位图计算确定多个单一条件用户和多个单一条件用户的多个单一用户数量。然后,对多个单一条件用户进行连接处理得到目标用户,并对多个单一用户数量进行数量计算得到目标用户的用户数量。
[0184]
图10示出了应用场景下确定目标用户和用户数量的方法的语句执行示意图,如图10所示,举例而言,在按照分组数对账号信息进行分组处理之后,pin1

pin10这10个账号信息被分成了三组用户数据。其中,分组标识为1的(1,pin1)、(1,pin4)、(1,pin7)和(1,pin10)为第一组用户数据;分组标识为2的(2,pin2)、(2,pin5)和(2,pin8)为第二组用户数据;分组标识为3的(3,pin3)、(3,pin6)和(3,pin9)为第三组用户数据。此时,用户数据为多组。
[0185]
那么,与用户数据对应的,针对用户最近两次大促的购买行为而言,行为位图还可以是{1,0,0,0}、{1,0,0}和{1,0,0}三个;针对用户最近的浏览行为而言,行为位图还可以是{0,1,0,0}、{1,1,0}和{1,0,0}三个;针对用户的加购行为和最近购买行为而言,也是相同的方式,在此不再赘述。
[0186]
显然,当用户数据为多组时,行为位图也得分组进行位图计算。
[0187]
具体的,针对分组标识为1的行为位图进行与集合{a}u{b}u{{c1}

{c2}}相同的位图计算,得到分组标识为1时的单一条件用户和对应的单一用户数量;针对分组标识为2的行为位图进行与集合{a}u{b}u{{c1}

{c2}}相同的位图计算,得到分组标识为2时的单一条
件用户和对应的单一用户数量;针对分组标识为3的行为位图进行与集合{a}u{b}u{{c1}

{c2}}相同的位图计算,得到分组标识为3时的单一条件用户和对应的单一用户数量。
[0188]
其中,单一用户数量的统计可以通过cardinality函数实现。除此之外,也可以通过其他函数实现,本示例性实施例对此不做特殊限定。
[0189]
其中,在各个组的位图计算可以按照集合的交计算转换为与操作,集合的并计算转换为或操作,集合的差计算转换为非操作的方式进行计算,因此,集合{a}u{b}u{{c1}

{c2}}对应的位图计算即为a&b&(c1

c2)。
[0190]
在得到多组单一条件用户之后,可以将多组单一条件用户进行连接处理,以及join处理得到目标用户。并且,将多组单一用户的数量进行求和计算这一数量计算得到目标用户的用户数量。
[0191]
其中,对多组单一条件的单一用户数量进行求和计算可以是通过sum函数实现的。除此之外,也可以通过其他方式实现,本示例性实施例对此不做特殊限定。
[0192]
值得说明的是,将集合操作转换为对应的位图操作之后,目标用户和用户数量的计算结果与集合操作的计算结果保持一致。
[0193]
除此之外,当筛选条件为最近两次大促期间购买过本品牌产品的用户(集合a);最近半个月浏览过本品牌产品的用户(集合b);最近半个月将本品牌产品加入购物车,但是没有购买的用户(集合c),然后将这几类人群合并,以进行广告投放时,可以确定筛选条件为3个,因此对应的行为位图为{1,1,1,0,0,0,0,0}、{0,1,1,1,1,0,0,0}、{0,0,0,0,1,1,1,0}和{0,0,0,0,0,1,1,1}四个,也为多个。
[0194]
进一步的,当按照分组数对账号信息进行分组处理之后,pin1

pin8这8个账号信息可以被分成一组,且分组标识一致。因此,与用户数据对应的,与用户数据对应的,针对用户最近两次大促的购买行为而言,行为位图只有{1,1,1,0,0,0,0,0}一个;针对用户最近的浏览行为而言,行为位图只有{0,1,1,1,1,0,0,0}一个;针对用户的加购行为而言,行为位图也只有{0,0,0,0,1,1,1,0}一个;针对用户的最近购买行为而言,行为位图也只有{0,0,0,0,0,1,1,1}一个。
[0195]
显然,在这一组的位图计算可以按照集合的交计算转换为与操作,集合的并计算转换为或操作,集合的差计算转换为非操作的方式进行计算,因此,集合{a}u{b}u{{c1}

{c2}}对应的位图计算即为a&b&(c1

c2)。
[0196]
在按照a&b&(c1

c2)的位图计算对四个行为位图进行位图计算之后,可以直接得到目标用户和对应的用户数量。
[0197]
在本公开的应用场景中,一方面,对账号信息进行分组处理得到用户数据,在解决数据存储量的同时,降低了存储消耗,至少满足了未来数百亿量级的数据存储需求。另一方面,对用户数据进行位图表征处理得到行为位图,极大地降低了数据急剧增长带来的存储和计算压力,对数据的存储、处理、传输和读取性能都有大幅度提升,满足了高时效性应用场景的要求;进一步的,对行为位图进行位图计算得到目标用户和用户数量,不仅支持了多种查询操作,且查询语句简易,易于理解,还能够最大化的利用计算资源,避免了计算资源浪费的情况发生。
[0198]
此外,在本公开的示例性实施例中,还提供一种数据处理装置。图11示出了数据处理装置的结构示意图,如图11所示,数据处理装置1100可以包括:分组处理模块1110、位图
表征模块1120和用户确定模块1130。其中:
[0199]
分组处理模块1110,被配置为获取账号信息以及与账号信息对应的分组规则,并按照分组规则对账号信息进行分组处理得到用户数据;位图表征模块1120,被配置为获取与用户数据对应的用户行为数据,并按照用户行为数据对用户数据进行位图表征处理得到行为位图;用户确定模块1130,被配置为获取确定目标用户的筛选条件,并按照筛选条件对行为位图进行位图计算确定目标用户和目标用户的用户数量。
[0200]
在本发明的一种示例性实施例中,所述按照所述分组规则对所述账号信息进行分组处理得到用户数据,包括:
[0201]
确定所述分组规则中规定的分组数;
[0202]
按照所述分组数对所述账号信息进行分组处理得到用户数据。
[0203]
在本发明的一种示例性实施例中,所述按照所述分组数对所述账号信息进行分组处理得到用户数据,包括:
[0204]
按照所述分组数对所述账号信息进行账号计算得到账号计算结果;
[0205]
对所述账号计算结果进行哈希计算得到分组标识以及与所述分组标识对应的用户数据。
[0206]
在本发明的一种示例性实施例中,所述按照所述用户行为数据对所述用户数据进行位图表征处理得到行为位图,包括:
[0207]
对所述账号信息进行索引配置处理得到具有索引的账号信息;
[0208]
基于所述索引,按照所述用户行为数据对所述用户数据进行位图表征处理得到行为位图。
[0209]
在本发明的一种示例性实施例中,所述按照所述筛选条件对所述行为位图进行位图计算确定所述目标用户和所述目标用户的用户数量,包括:
[0210]
当所述筛选条件为多个时,确定所述行为位图为多个;
[0211]
当所述用户数据为一组时,对多个所述行为位图进行位图计算确定所述目标用户和所述目标用户的用户数量。
[0212]
在本发明的一种示例性实施例中,所述按照所述筛选条件对所述行为位图进行位图计算确定所述目标用户和所述目标用户的用户数量,包括:
[0213]
当所述筛选条件为多个时,确定所述行为位图为多个;
[0214]
当所述用户数据为多组时,按照分组标识对多个所述行为位图进行位图计算确定多个单一条件用户和所述多个单一条件用户的多个单一用户数量;
[0215]
对所述多个单一条件用户进行连接处理得到目标用户,并对所述多个单一用户数量进行数量计算得到所述目标用户的用户数量。
[0216]
在本发明的一种示例性实施例中,所述方法还包括:
[0217]
当所述筛选条件为一个时,确定所述行为位图为一个;
[0218]
对所述行为位图进行表征含义识别得到目标用户和所述目标用户的用户数量。
[0219]
上述数据处理装置1100的具体细节已经在对应的数据处理方法中进行了详细的描述,因此此处不再赘述。
[0220]
应当注意,尽管在上文详细描述中提及数据处理装置1100的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块
或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
[0221]
此外,在本公开的示例性实施例中,还提供了一种能够实现上述方法的电子设备。
[0222]
下面参照图12来描述根据本发明的这种实施例的电子设备1200。图12显示的电子设备1200仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
[0223]
如图12所示,电子设备1200以通用计算设备的形式表现。电子设备1200的组件可以包括但不限于:上述至少一个处理单元1210、上述至少一个存储单元1220、连接不同系统组件(包括存储单元1220和处理单元1210)的总线1230、显示单元1240。
[0224]
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元1210执行,使得所述处理单元1210执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施例的步骤。
[0225]
存储单元1220可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(ram)1221和/或高速缓存存储单元1222,还可以进一步包括只读存储单元(rom)1223。
[0226]
存储单元1220还可以包括具有一组(至少一个)程序模块1225的程序/实用工具1224,这样的程序模块1225包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
[0227]
总线1230可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
[0228]
电子设备1200也可以与一个或多个外部设备1400(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备1200交互的设备通信,和/或与使得该电子设备1200能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口1250进行。并且,电子设备1200还可以通过网络适配器1260与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器1260通过总线1230与电子设备1200的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备1200使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
[0229]
通过以上的实施例的描述,本领域的技术人员易于理解,这里描述的示例实施例可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd

rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施例的方法。
[0230]
在本公开的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施例中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施例的步骤。
[0231]
参考图13所示,描述了根据本发明的实施例的用于实现上述方法的程序产品
1300,其可以采用便携式紧凑盘只读存储器(cd

rom)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0232]
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd

rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
[0233]
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0234]
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任意合适的组合。
[0235]
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、c++等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
[0236]
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其他实施例。本技术旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1