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

一种基于布谷鸟过滤器关联数据的方法、装置与流程

2022-06-11 16:12:05 来源:中国专利 TAG:


1.本技术涉及大数据技术领域,具体而言,本技术涉及基于布谷鸟过滤器关联数据的方法、装置、设备及存储介质。


背景技术:

2.传统的实时数据处理过程中,当需要将实时数据与一个外部数据进行关联时(例如,外部数据是存储在关系数据库上的一张数据表),有2种解决方案:内存关联方案和外部中间件关联方案。
3.然而,在实际应用中,内存关联方案,在面对较大的外部数据表时会对内存产生巨大需求,从而导致计算资源大量的暂用和浪费;外部中间件关联方案应用在实时营销场景中时,容易产生大量的无效的网络访问和数据查询。
4.因此,现有的方案不能高效利用内存,而且还容易产生大量的无效的网络访问和数据查询。


技术实现要素:

5.本技术的目的旨在至少能解决上述的技术缺陷之一,特别是现有的方案不能高效利用内存,而且还容易产生大量的无效的网络访问和数据查询的技术缺陷。
6.根据本技术的一个方面,提供了一种基于布谷鸟过滤器关联数据的方法,该方法应用于终端,终端配置有布谷鸟过滤器,该方法包括:
7.通过布谷鸟过滤器对获取的待关联数据的待关联标识进行处理,得到待关联指纹;
8.通过布谷鸟过滤器将待关联指纹与当前指纹集进行匹配,其中,当前指纹集与目标数据集相关联;
9.根据匹配的结果,确定待关联数据与目标数据集的关联关系。
10.根据本技术的另一个方面,提供了一种基于布谷鸟过滤器关联数据的装置,装置包括布谷鸟过滤器,确定模块,其中,
11.布谷鸟过滤器,用于对获取的待关联数据的待关联标识进行处理,得到待关联指纹;
12.布谷鸟过滤器,还用于将待关联指纹与当前指纹集进行匹配,其中,当前指纹集与目标数据集相关联;
13.确定模块,用于根据匹配的结果,确定待关联数据与目标数据集的关联关系。
14.根据本技术的另一个方面,提供了一种电子设备,该电子设备包括:
15.处理器;以及
16.存储器,配置用于存储机器可读指令,指令在由处理器执行时,使得处理器执行本技术前述一个方面的基于布谷鸟过滤器关联数据的方法对应的操作。
17.根据本技术的再一个方面,提供了一种计算机可读存储介质,计算机可读存储介
质用于存储计算机指令,当计算机指令在计算机上运行时,使得计算机可以执行本技术前述一个方面的基于布谷鸟过滤器关联数据的方法对应的操作。
18.本技术提供的技术方案带来的有益效果是:
19.本技术提供了一种基于布谷鸟过滤器关联数据的方法,该方法应用于终端,该终端配置有布谷鸟过滤器,通过布谷鸟过滤器对获取的待关联数据的待关联标识进行处理,得到待关联指纹;通过布谷鸟过滤器将待关联指纹与当前指纹集进行匹配,其中,当前指纹集与目标数据集相关联;根据匹配的结果,确定待关联数据与目标数据集的关联关系。该方法基于布谷鸟过滤器提供的快速查询的能力,以及所管理的指纹集所需内存资源较小的优势,一方面,通过缓存的指纹集与待关联数据进行匹配,其中,缓存的指纹集对于内存资源的需求量不高,避免了直接缓存目标数据集可能导致过高的内存资源需求量,进而导致内存资源浪费甚至影响终端的性能;另一方面,通过布谷鸟过滤器执行匹配操作,可以快速确定数据是否与目标数据集存在关联关系,进而提升数据与目标数据集的匹配速率,并且快速过滤掉无关联的数据。从实时数据访问外部数据库的角度讲,采用本技术实施例提供的方案可以阻止大量无效的网络访问和数据查询,也可以避免出现过高的内存资源需求量的情形,以及提升在外部数据库中查询实时数据的命中率。
附图说明
20.为了更清楚地说明本技术实施例中的技术方案,下面将对本技术实施例描述中所需要使用的附图作简单地介绍。
21.图1为本技术实施例提供的一种基于布谷鸟过滤器关联数据的方法的流程示意图;
22.图2为本技术实施例提供的一种基于布谷鸟过滤器关联数据的系统的结构示意图;
23.图3为本技术实施例提供的一种基于布谷鸟过滤器关联数据的装置的结构示意图。
具体实施方式
24.下面详细描述本技术的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本技术,而不能解释为对本技术的限制。
25.首先对本技术涉及的几个名词进行介绍和解释:
26.获取布谷鸟过滤器的指纹信息的过程:首先,元素为布谷鸟过滤器获得的基本信息单位,例如,一个字符串就可以作为元素。对元素执行hash操作,得到hash值,截取该hash值的固定几位数字作为该元素的指纹信息。通常,指纹信息所需的内存空间仅为1个字节。因此,根据大量元素生成对应的指纹信息之后,所需的内存空间不会很大,一般是可以得到满足的。
27.布谷鸟过滤器:一种高效的过滤器,其可以管理着由大量指纹信息组成的指纹集。在执行具体的过滤操作时,仅需对待匹配的元素先进行算法处理得到对应的待匹配的指纹信息,然后根据预设的数据结构和算法对该待匹配的指纹信息进行匹配操作,即可确定存
储的指纹信息中是否有该待匹配的指纹信息,进而确定存储的指纹信息对应的大量元素中是否有该待匹配的元素。另外,由于指纹信息仅为元素的部分信息,在实际匹配时,也存在着可能匹配成功,但实际上指纹信息分别对应的存储的元素和待匹配的元素之间并不相等的情形,这样的匹配结果也称作假阳性。经过实验发现,产生假阳性结果的数据占2%左右。
28.hash表:散列表,根据关键码值而直接进行访问的数据结构。可以把关键码值(例如,数据库中所存储数据的唯一标识key值)映射到表中一个位置来访问记录,以加快查找的速度。
29.内存关联方案:在实时处理程序启动时,预加载外部部分数据到实时处理程序的内存中,从而建立实时处理程序和外部数据的关联关系。当该外部数据的数据量较小时,关联效率是比较高,当该外部数据的数据量非常大时,就会耗费大量的内存资源,导致关联效率降低。尤其是采用分布式框架的实时处理进程时(每个进程都需要关联该外部数据),对内存资源的需求更大。因此,该方案易导致计算资源大量的暂用和浪费。
30.外部中间件关联方案:在终端和外部数据之间设置一个nosql(又称非关系型数据库)。通过该nosql来缓存外部数据,终端中多个实时处理进程通过访问该nosql达到访问外部数据的目的。nosql存储外部数据,达到了共用一份内存数据的效果,且减少了内存资源的占用。但是,在某些关联场景中,例如:实时营销场景下需要关联部分目标用户群相关信息,实时推送的消息可能涉及上千万用户的实时行为,而目标营销用户只有几万。由于需要关联的数据在nosql中,不在实时处理进程的内存中,因此需要将所有数据推送到nosql上进行关联来确认是否为目标用户,如此一来,便产生了大量的无效的网络访问和数据查询。
31.本技术提供的一种基于布谷鸟过滤器关联数据的方法、装置、设备和存储介质,旨在解决现有技术的如上技术问题。
32.需要说明的是,本技术实施例的方法应用于终端,该终端上可以运行各种实时处理进程,而且,实时处理进程对应的是终端上应用的实例。当该应用为购物类应用时,实时处理进程处理的实时数据可以是商品类的数据;当该应用为新闻类应用时,实时处理进程处理的实时数据可以是新闻类数据;当该应用为交通类应用时,实时处理进程处理的实时数据可以是车辆类数据。应用市场上各种应用只要存在查询数据的需求,都适用于本技术实施例提供的方法,因此,本技术实施例对于应用的类型和实时数据的类型不做任何限制。
33.下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。为使本技术的目的、技术方案和优点更加清楚,下面将结合附图,对本技术的实施例进行描述。
34.参见图1,本技术实施例提供了一种基于布谷鸟过滤器关联数据的方法的可能的流程示意图。其中,该方法应用于终端,终端配置有布谷鸟过滤器,该方法包括:
35.s110,通过布谷鸟过滤器对获取的待关联数据的待关联标识进行处理,得到待关联指纹;
36.其中,当终端中任一实时处理进程处于运行状态中时,接收到包括多个携带实时数据的访问请求的消息队列,该访问请求用于指示判断实时数据与目标数据集关联关系的。其中,该访问请求还携带了需处理该指示的实时处理进程的进程标识,根据该进程标识确定对应的实时处理进程之后,该实时处理进程从消息队列中依次拿取访问请求,并获取该访问请求中携带的多条实时数据,确定多条实时数据为多条待关联数据,将每条实时数
据的唯一标识确定为待关联标识。
37.进一步地,在确定了待关联数据和待关联标识之后,通过布谷鸟过滤器对该待关联标识进行算法处理,得到待关联指纹。本技术实施例中布谷鸟过滤器根据待关联标识得到待关联指纹的过程可以参考现有技术,为描述简便,在此不再赘述。
38.s120,通过布谷鸟过滤器将待关联指纹与当前指纹集进行匹配,其中,当前指纹集与目标数据集相关联;
39.其中,指纹集由该布谷鸟过滤器管理。
40.s130,根据匹配的结果,确定待关联数据与目标数据集的关联关系。
41.具体地,当匹配结果为匹配失败时,则判断该待关联数据对应的实时数据是无效数据,进而表明从多个实时数据中筛选出了无效数据。另外,在实时处理进程中就预先筛选出无效数据,就无需通过访问外部数据库去查询该实时数据,提高了数据关联操作的效率。该技术手段可以有效解决实时营销场景下可能产生的大量的无效的网络访问和数据查询问题。
42.本技术提供了一种基于布谷鸟过滤器关联数据的方法,基于布谷鸟过滤器提供的快速查询的能力,以及所管理的指纹集所需内存资源较小的优势,一方面,通过缓存的指纹集与待关联数据进行匹配,其中,缓存的指纹集对于内存资源的需求量不高,避免了直接缓存目标数据集可能导致过高的内存资源需求量,进而导致内存资源浪费甚至影响终端的性能;另一方面,通过布谷鸟过滤器执行匹配操作,可以快速确定数据是否与目标数据集存在关联关系,进而提升数据与目标数据集的匹配速率,并且快速过滤掉无关联的数据。从实时数据访问外部数据库的角度讲,采用本技术实施例提供的方案可以阻止大量无效的网络访问和数据查询,也可以避免出现过高的内存资源需求量的情形,以及提升在外部数据库中查询实时数据的命中率。
43.在一种可能的实现方式中,终端启动实时处理进程之后,还需要启动并初始化布谷鸟过滤器,只有进行了初始化操作,才能获取实时数据,并进行相应的匹配操作。其中,初始化布谷鸟过滤器的过程包括:
44.加载外部数据库中的状态变更队列,其中,状态变更队列中包括目标数据集中每条数据的标识;
45.通过布谷鸟过滤器根据状态变更队列构建当前指纹集。
46.其中,本技术实施例可以采用在终端和目标数据集之间设置外部数据库的技术手段。该外部数据库中还可以包括目标数据集对应的状态变更队列,该状态变更队列用于实时记录目标数据集中数据。
47.其中,该目标数据集可以是存储在目标数据库中的部分数据,该目标数据库可以是一种关系型数据库。另外,外部数据库可以是一种支持键值存储的非关系型数据库(即,nosql数据库)。
48.示例性地,该目标数据可以是oracle数据库、db2、mysql等,该外部数据库可以是redis。
49.另外,在实时处理进程启动时,该外部数据库和目标数据库就可以建立连接,在建立连接之后,外部数据库可以同步目标数据库中目标数据集中。同步过程具体可以包括,同步数据表和同步状态变更队列的过程。在同步数据表的过程中,对获取的目标数据集进行
hash操作,得到该目标数据集对应的数据表,因此该数据表实质上是一张hash表。该数据表和目标数据集存储的内容实质相同,只不过数据表的特征是针对每条数据的标识做了特殊处理,以便于实现针对数据表的快速查询。相比于普通的数据表,通过数据表查询数据会更快。
50.另外,目标数据集中每条数据可以包括一个关键字或者标识,用来标识数据的唯一性,该目标数据集中的每条数据还包括其他属性信息。因此,数据表、状态变更队列中至少应包括目标数据集中每条数据的标识。数据表、状态变更队列中,还可以包括目标数据集中每条数据的其他属性,本技术对于是否需要包括其他属性,并不做限制。
51.示例性地,目标数据集的结构可以为以下表1所示,其中,商品id即为目标数据的标识。
[0052][0053]
表1目标数据集获取的数据表可以如表2所示:
[0054][0055]
表2数据表
[0056]
在一种可能的实现方式中,还包括:
[0057]
向外部数据库发送订阅请求,以请求订阅状态变更队列。
[0058]
其中,实时处理进程可以在初次加载完状态变更队列时发送订阅请求,也可以在初始化布谷鸟过滤器时发送订阅请求,或者在其他时间发送订阅请求。
[0059]
当存储在目标数据库中的目标数据集发生变化,例如目标数据集中新增或者减少目标数据时,相应地,该目标数据集中有新的数据的标识产生或者消失。由于状态变更队列中存储着目标数据集中每条数据的标识,因此,在目标数据集更新之后,该目标数据库会向外部数据库发送更新消息,该更新消息用于通知目标数据库更新hash表和状态变更队列。
[0060]
进一步地,外部数据库接收到目标数据库发送的更新消息之后,获取新的目标数据集等信息,并执行针对数据表和状态变更队列的更新操作。执行完更新操作之后,数据表和状态变更队列中均包括了当前目标数据集中每条数据的标识。
[0061]
另外,若外部数据库向终端发送订阅消息时,该方法还包括:
[0062]
当接收到外部数据库发送的订阅消息时,重新加载更新后的状态变更队列,并通过布谷鸟过滤器根据更新后的状态变更队列更新当前指纹集,其中,订阅消息为外部数据库在确定目标数据集更新时,更新状态变更队列后发送的。
[0063]
由于布谷鸟过滤器存在假阳性的问题,因此,经过布谷鸟过滤器匹配成功的待关联数据,可能并不存在于目标数据集中。
[0064]
本技术实施例还提供了一种可能的实现方式,在匹配成功时,还需要进行验证操作,通过验证操作实现对于这类假阳性数据的筛选。具体地:
[0065]
当匹配成功时,向外部数据库发送携带待关联标识的验证请求,以指示外部数据库根据数据表对待关联标识进行验证;
[0066]
当接收到外部数据库反馈的验证结果为验证成功时,确定待关联数据与目标数据库中目标数据集存在关联关系。
[0067]
其中,该验证请求还可以携带该待关联数据,即除了待关联标识外,还包括待关联数据的其他属性数据。
[0068]
具体地,外部数据库接收到验证请求之后,获取待关联标识,然后根据数据表来执行针对待关联标识的验证操作。当确定数据表中有该待关联标识时,则可以表明数据集中存在该待关联数据;当确定数据表中没有该待关联标识时,则可以表明数据集中不存在该待关联数据。由于外部数据库是根据待关联标识的完整信息来执行验证操作的,可以确定的是,外部数据库执行验证操作的结果是可靠的。通过外部数据库的再次验证操作,可以有效解决布谷鸟过滤器匹配数据时存在的加阳性问题,而且外部数据库实质是通过一份hash表来对待关联标识执行的再次验证操作,众所周知,针对hash表的查询操作,效率很高。因此,通过外部数据库执行验证操作,还可以进一步地提升实时数据的过滤效率。
[0069]
参见图2,本技术实施例还提供了一种基于布谷鸟过滤器关联数据的系统的可能的结构示意图,该系统20包括3个独立的模块:终端210、外部数据库220、目标数据库230,外部数据库220分别与终端210和目标数据库230相连接。其中,终端210上可以包括实时处理进程,终端210配置的布谷鸟过滤器实际上由该实时处理进程进行实例构建和管理;目标数据库230中包括目标数据集,外部数据库220中包括根据目标数据集生成的数据表和状态变更队列。该系统的工作流程可以包括s2001-s2008:
[0070]
s2001:终端210启动实时处理进程。
[0071]
s2002,实时处理进程构建布谷鸟过滤器实例,并初始化布谷鸟过滤器。
[0072]
具体地,实时处理进程构建好布谷鸟过滤器实例之后,向外部数据库220发送获取状态变更队列的请求。
[0073]
s2003:外部数据库220反馈状态变更队列。
[0074]
在外部数据库220反馈状态变更队列之前,需要向目标数据库230发送获取目标数据集的请求,在接收到目标数据库230反馈的目标数据集之后,针对该目标数据集执行hash操作,得到数据表,或者是目标数据库针对目标数据集执行hash操作,得到数据表,并反馈该数据表。另外,目标数据库230还可以反馈状态变更队列,或者外部数据库220根据目标数据集创建状态变更队列。
[0075]
外部数据库220向终端210反馈该状态变更队列。
[0076]
s2004:布谷鸟过滤器根据状态变更队列构建指纹集。
[0077]
具体地,终端210接收到状态变更队列,便分配给实时处理进程去处理。实时处理进程将分配的状态变更队列分配给布谷鸟过滤器,布谷鸟过滤器根据状态变更队列构建指纹集。具体的构建过程可以参考现有技术,为描述简便,在此不再赘述。
[0078]
另外,终端210的实时处理进程还通过向外部数据库220发送订阅消息,以订阅状态变更队列,当状态变更队列发生更新(例如,增加数据或者减少数据)时,则向终端210的实时处理进程反馈该更新信息。终端210的实时处理进程会重新加载状态变更队列,并更新该指纹集。
[0079]
s2005:实时处理进程接收终端210分配的消息队列,并依次处理。
[0080]
具体地,终端210将包括多个携带实时数据的访问请求的消息队列分配给该实时处理进程,实时处理进程依次处理该访问请求,获取每一个访问请求中携带的多条实时数据,并将每条实时数据分配给布谷鸟过滤器去处理。
[0081]
s2006:布谷鸟过滤器执行匹配操作。
[0082]
具体地,布谷鸟过滤器接收到一条实时数据之后,对该实时数据的标识(例如,该标识可以是数据的关键字、唯一标识)进行处理,得到该条实时数据的指纹信息。布谷鸟过滤器根据指纹集和指纹信息执行匹配操作,得到匹配结果。
[0083]
当匹配结果为匹配失败时,则执行后续操作。本技术对于该后续操作不做任何限制。
[0084]
当匹配结果为匹配成功时,需要向外部数据库220发送该条实时数据以进行再次的验证。
[0085]
s2007:外部数据库220执行验证操作。
[0086]
具体地,外部数据库220接收到实时数据之后,获取该实时数据的标识,并根据的标识查询数据表。若确定数据表中有该数据的标识,则确定数据表中有该实时数据,若没有该数据标识,则确定实时数据是假阳性的数据。
[0087]
外部数据库220将查询结果反馈给终端210的实时处理进程。
[0088]
s2008:实时处理进程接收查询结果。
[0089]
具体地,实时处理进程接收到查询结果之后,可以执行后续操作。该后续操作本技术不做任何限制。
[0090]
另外,对于多条实时数据的查询,重复执行s2006-s2007,直至完成对所有的实时数据的查询。
[0091]
参见图3,本技术实施例提供了一种基于布谷鸟过滤器关联数据的装置的可能的结构示意图。其中,装置30可以包括:布谷鸟过滤器301,确定模块302,其中
[0092]
布谷鸟过滤器301,用于对获取的待关联数据的待关联标识进行处理,得到待关联指纹;
[0093]
布谷鸟过滤器301,还用于将待关联指纹与当前指纹集进行匹配,其中,当前指纹集与目标数据集相关联;
[0094]
确定模块302,用于根据匹配的结果,确定待关联数据与目标数据集的关联关系。
[0095]
在一种可能的实现方式中,该装置还包括初始化模块303,其中,初始化模块303具体用于:
[0096]
加载外部数据库中的状态变更队列,其中,状态变更队列中包括目标数据集中每
条数据的标识;
[0097]
通过布谷鸟过滤器根据状态变更队列构建当前指纹集。
[0098]
在一种可能的实现方式中,该装置还包括订阅模块304,其中,订阅模块304具体用于:
[0099]
向外部数据库发送订阅请求,以请求订阅状态变更队列。
[0100]
在一种可能的实现方式中,订阅模块303还用于:
[0101]
接收外部数据库发送的订阅消息;
[0102]
重新加载更新后的状态变更队列,并通过布谷鸟过滤器根据更新后的状态变更队列更新当前指纹集,其中,订阅消息为外部数据库在确定目标数据集更新时,更新状态变更队列后发送的。
[0103]
在一种可能的实现方式中,外部数据库还包括根据目标数据集生成的数据表,确定模块302在根据匹配的结果,确定待关联数据与目标数据集的关联关系中,具体用于:
[0104]
当匹配成功时,向外部数据库发送携带待关联标识的验证请求,以指示外部数据库根据数据表对待关联标识进行验证;
[0105]
当接收到外部数据库反馈的验证结果为验证成功时,确定待关联数据与目标数据库中目标数据集存在关联关系。
[0106]
本实施例提供的一种基于布谷鸟过滤器关联数据的装置可执行本技术上述实施例所示的一种基于布谷鸟过滤器关联数据的方法,其实现原理相类似,此处不再赘述。
[0107]
本技术实施例中提供了一种电子设备,该电子设备包括:处理器;以及
[0108]
存储器,配置用于存储机器可读指令,指令在由处理器执行时,使得处理器执行本技术实施例中任一一种基于布谷鸟过滤器关联数据的方法对应的操作。
[0109]
本技术实施例提供了一种计算机可读存储介质,计算机可读存储介质用于存储计算机指令,当计算机指令在计算机上运行时,使得计算机可以执行本技术实施例中任一一种基于布谷鸟过滤器关联数据的方法对应的操作。
[0110]
本技术领域技术人员可以理解,除非特意声明,本技术实施例中使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本技术的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
[0111]
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
[0112]
以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应
视为本发明的保护范围。
再多了解一些

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

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

相关文献