倒排索引查询的资源分配方法、装置及存储介质、服务器与流程

文档序号:16782404发布日期:2019-02-01 19:14阅读:154来源:国知局
倒排索引查询的资源分配方法、装置及存储介质、服务器与流程

本发明涉及分布式软件处理技术领域,具体涉及一种倒排索引查询的资源分配方法、装置及存储介质、服务器。



背景技术:

随着网络技术的不断提高对信息的分析、提取和处理的速度成倍提升,在查询海量用户倒排信息时,即在海量数据中通过用户标签查询符合条件的目标用户,需要在用户量巨大的数据中找出目标用户。另外,在业务方查询的语句过长,及时能够通过分布式部署的集群机器里面进行语句查询,也会在段时间内占据大量的系统资源,导致其他业务不能够利用系统资源,导致整个集群的业务量不高。



技术实现要素:

为克服以上技术问题,特别是通过用户标签查询目标数据是占用大量系统资源,导致其他业务不能够利用系统资源的问题,特提出以下技术方案:

本发明实施例提供的一种倒排索引查询的资源分配方法,包括:

获取待分配用户数据,基于用户维度和哈希函数对所述待分配用户数据分桶标记,获得包括用户数据且具有标记后的桶;

获取待查询语句,通过预设拆分规则将所述待查询语句拆分为数量小于或者等于所述桶数量的子查询语句;

将所述子查询语句和所述桶进行关联,通过子查询语句对关联的桶进行查询。

进一步地,在所述获取待查询语句的步骤中,具体包括:

基于业务方身份信息和所述待查询语句,获取包括多个业务方的所述待查询语句。

进一步地,在所述通过子查询语句对关联的桶进行查询的步骤中,具体包括:

将多个业务方的所述待查询语句的子查询语句,并发在同一个所述桶中进行查询。

进一步地,在所述获取待查询语句的步骤中,具体包括:

基于业务方身份信息和所述待查询语句,获取同一个业务方的所述待查询语句。

进一步地,在所述通过子查询语句对关联的桶进行查询的步骤中,具体包括:

获取同一业务方的所述待查询语句的数量;

在同一业务方的所述待查询语句的数量大于1时,将同一业务方的所述待查询语句的全部子查询语句排队在同一个所述桶中进行查询。

进一步地,在所述通过子查询语句对关联的桶进行查询的步骤之后,还包括:

将同一业务方的同一所述待查询语句的查询结果合并,获得同一业务方对用户数据的查询结果。

进一步地,在所述获得同一业务方对用户数据的查询结果的步骤之后,包括:

将所述查询结果发送给流式处理引擎进行数据处理。

进一步地,所述预设拆分规则包括串行化拆分规则。

本发明实施例提供的一种倒排索引查询的资源分配装置,包括:

标记模块,用于获取待分配用户数据,基于用户维度和哈希函数对所述待分配用户数据分桶标记获得包括用户数据且具有标记后的桶;

拆分模块,用于获取待查询语句,通过预设拆分规则将所述待查询语句拆分为数量小于或者等于所述桶数量的子查询语句;

查询模块,用于将所述子查询语句和所述桶进行关联,通过子查询语句对关联的桶进行查询。

本发明实施例中还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现任一技术方案所述的倒排索引查询的资源分配方法。

本发明实施例中还提供了一种服务器包括:

一个或多个处理器;

存储器;

一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个应用程序配置用于执行根据任一技术方案所述的倒排索引查询的资源分配方法。

本发明与现有技术相比,具有以下有益效果:

1、本申请实施例提供的一种倒排索引查询的资源分配方法,包括:获取待分配用户数据,基于用户维度和哈希函数对所述待分配用户数据分桶标记,获得包括用户数据且具有标记后的桶;获取待查询语句,通过预设拆分规则将所述待查询语句拆分为数量小于或者等于所述桶数量的子查询语句;将所述子查询语句和所述桶进行关联,通过子查询语句对关联的桶进行查询。将海量的用户数据基于用户维度和哈希函数进行分桶,同时将待查询语句拆分为多个附加上桶的标记的子查询语句后,进而在查询时,可以将对应的语句仅在对应的桶中进行查询,降低查询分析过程占用的系统资源,由于查询范围减少,一个查询语句仅在一个同种查询,使得查询过程仅在一个固定的范围内查询,缩短了查询的时间。为了避免子查询语句超出预设桶数量的范围,使得在固定范围内的查找出业务方需要的数据,该子查询语句的数量应小于或者等于用户数据分的桶的数量。

2、本发明实施例提供的一种倒排索引查询的资源分配方法,进一步地,在所述获取待查询语句的步骤中,具体包括:基于业务方身份信息和所述待查询语句,获取包括多个业务方的所述待查询语句。进一步地,在所述通过子查询语句对关联的桶进行查询的步骤中,具体包括:将多个业务方的所述待查询语句的子查询语句,并发在同一个所述桶中进行查询。进一步地,在所述获取待查询语句的步骤中,具体包括:基于业务方身份信息和所述待查询语句,获取同一个业务方的所述待查询语句。进一步地,在所述将多个业务方的所述待查询语句的子查询语句,并发在同一个所述桶中进行查询的步骤中,具体包括:获取同一业务方的所述待查询语句的数量;在同一业务方的所述待查询语句的数量大于1时,将同一业务方的所述待查询语句的全部子查询语句排队在同一个所述桶中进行查询。同一个业务方不同的查询语句排队执行查询,避免同一个业务方的待查询语句占用过多的资源,使得其他业务方不能使用数据库中的用户数据。由于每个桶中资源有限,同一个桶中的用户数据可供多个业务方进行数据查询,合理分配了多业务方接入查询的资源,提高了整个系统的查询效率。

本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:

图1为本发明倒排索引查询的资源分配方法的典型实施例中一种实施方式的流程示意图;

图2为本发明倒排索引查询的资源分配方法的典型实施例中又一种实施方式的流程示意图;

图3为本发明倒排索引查询的资源分配装置的典型实施例的结构示意图;

图4为本发明服务器的一实施例结构示意图。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。

本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作。

本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。

本领域技术人员应当理解,本发明所称的“应用”、“应用程序”、“应用软件”以及类似表述的概念,是业内技术人员所公知的相同概念,是指由一系列计算机指令及相关数据资源有机构造的适于电子运行的计算机软件。除非特别指定,这种命名本身不受编程语言种类、级别,也不受其赖以运行的操作系统或平台所限制。理所当然地,此类概念也不受任何形式的终端所限制。

本申请实施例提供的一种倒排索引查询的资源分配方法,如图1所示,包括:s100、s200、s300。

s100:获取待分配用户数据,基于用户维度和哈希函数对所述待分配用户数据分桶标记,获得包括用户数据且具有标记后的桶;

s200:获取待查询语句,通过预设拆分规则将所述待查询语句拆分为数量小于或者等于所述桶数量的子查询语句;

s300:将所述子查询语句和所述桶进行关联,通过子查询语句对关联的桶进行查询。

在本申请提供的实施例中,主要基于业务方的需求在数据库中查找对应的目标用户,而随着计算机的发展,在生活工作中越来越多的人们使用计算机,业务方为了能够更好地优化自己的产品,因此需要不断的收集用户数据,并对用户数据进行分析,以确定产品的优势和劣势,或者基于用户的数据开发新产品。但是用户数据量过于大,在查询分析过程中,会占据大量的查询分析系统资源。因此,为了降低查询分析过程占用的系统资源,本申请提供了一种倒排索引查询的资源分配方法。在本申请提供的实施例中,首先获取针对某一类产品的用户数据,该数据是将大量的数据聚集在一起,需要对其进行分配,以获得便于查询的数据,且该数据是被存储在数据库中的,其可以包括至少一个本地数据库和/或云端数据库。该数据则为前述的待分配用户数据,在获取到待分配用户数据后,基于用户维度和哈希函数对所述待分配用户数据分桶标记获得包括用户数据且具有标记后的桶。其中用户维度包括用户id、用户年龄、爱好等等,其基于不同行业以及业务方的需求确定。在本申请中,用户维度优选为用户id,在实施方式中,用户id包括userid。在其他的实施方式中,用户维度还包括:用户年龄、性别、职业、爱好,还可以针对产品的类型增加用户维度,例如对于保险行业,用户维度还可以包括用户参保的类型、用户的参保的时间、用户参保的次数等。具体地,根据用户年龄、性别、职业、爱好等标签生成倒排索引,该倒排索引将用户年龄、性别、职业、爱好作为倒排索引的主要关键词,倒排索引的键值是相对应关键词的用户id列表,并且让关键词的用户id列表中的id按照业务人员预设的信息进行降序排列,例如按照年龄进行降序排列。

为了能够快速地实现查询,在本申请的实施方式中,依据用户的id地址和哈希函数对用户进行分桶。例如,将数据库中的用户数据通过hash分为200桶,每个桶都具有一个标签,优选地,在本申请提供的实施例中该标签为数学数字,当然也可以是其他形式,如英语字母、罗马数字等。在进行分桶过程中,通过hash将用户分到对应桶号的桶中,即桶号=hash(userid)%200。或者对该用户标上桶号的数字,进而便于后续查询时,可以通过对语句增加桶号的查询条件,从而只针对同一范围桶中的用户数据进行查询,在降低查询量的情况下提高了查询的速度,节约查询时占用的资源。一般的在倒排索引的哈希分桶中,常采用knn算法,knn算法是基于分布式倒排索引的,而在本申请中,建立基于用户维度的哈希分布式倒排索引:该技术方案中,是在建立基于用户维度的哈希索引时,分出若干个hash桶,将hash桶作为key,hash桶内的用户数据作为value,使用mapreduce进行分布式求解。在本申请中,将基于用户维度的哈希索引解析为key-value结构以适应分布式索引,使得该索引可以使用knn算法实现查询;在倒排序索引的基础上,可以加快查询速度。在本申请中,作为优选,通过哈希函数f(q)将空间所有用户数据映射到m个哈希表ti中,其中m=|f|,即每个哈希函数f∈f对应一个哈希表,每个哈希表都存放着数据库中所有的用户数据。给定一个查询语句,分别计算每个q在哈希函数中的结果值:{f1(q),f2(q)…fm(q),fi∈f,i=1,2…m}.将所有fi(q)落入到哈希表ti桶中的用户数据作为候选集,用以后续基于该查询结果确定用户需要的用户数据,即得到knn结果集。在前述的基础上,获取业务方输入的待查询语句,待查询语句为用户输入的关键句或者词,对应的将该关键词分为多个子查询语句,如前述的q。获取待查询语句,通过预设拆分规则将所述待查询语句拆分为数量小于或者等于所述桶数量的子查询语句,其中q即为子查询语句,将子查询语句通过前述的哈希函数,得到子查询语句在一个桶中的用户数据,由于待查询语句被分为多个子查询语句,一个子查询语句的结果只是一个候选结果(即候选集),需要将所有子查询语句的结果合并在一起,才能得到待查询语句查询后的全部结果。进一步地,待查询语句通过预设拆分规则将其拆分为多个子查询语句。又由于为了避免子查询语句超出预设桶数量的范围,使得在固定范围内的查找出业务方需要的数据,该子查询语句的数量应小于或者等于用户数据分的桶的数量。同样的为了缩短查询的时间以及查询过程中占用的资源,将所述待查询语句附加上不同的桶号标识则得到不同的子查询语句,将附加上桶标号的子查询语句和所述桶进行关联获得至少一个查询语句,以便基于所述待查询语句进行查询。即在待查询语句中附加一个桶的标识,进而在查询的过程中只会在固定范围内进行查询,缩短查询的时间以及查询占用的资源,使得查询过程仅在一个固定的范围内查询。需要说明的是,所述预设拆分规则包括串行化拆分规则,具体为,在前述的基础上,待分配用户数据入数据库的时候按用户维度进行hash分桶标记,总的桶数为t,将业务方输入的查询语句拆分成若干个子查询语句,最大分成t个子查询,每个子查询语句附加若干个桶号的条件,进而一个大的查询语句使用的资源被串行化分成若干个子查询语句使用的资源,以便于在各个桶中进行查询。

具体的,在前述的基础上,在其中一种实施方式中,子查询语句的数量小于或者等于桶的数量;子查询语句是根据桶号来分的,在原有的查询条件后面追加桶号的条件。例如,待查询语句为“金融行业的20-30年龄段参保人员的情况”,基于倒排索引确定该待查询语句的子查询语句关键词或者用户标签包括:“20-30”、“参保”两个字段,在查询前在两个字段的基础上加上桶号的标识,则得到子查询语句,在该语句加入对应的桶号,如为1、2、3、4、5、6、7、8、9、10;则得到一个子查询语句,如若在该语句后面再加上11、12、13、14、15、16、17、18、19、20,则得到另一个子查询语句;经过这样的处理,在桶数为200时,则可以得到20个子查询语句,一个大的查询语句使用的资源被串行化分成若干个子查询语句使用的资源,在加上桶号标识的子查询语句与该桶号对应的桶关联,即确定一个子查询语句仅在其对应的桶中进行数据查询。由于每个桶中集中的用户数据具有一定的共同特征,因此,将每一个子查询语句附件上若干个桶号的条件,便于在海量数据中查找出精准的数据结果。

子查询语句是根据桶号来分的,在原有的查询条件后面追加桶号的条件,具体通过如的倒排查询语句逻辑进行拆分。

结合前述过程,可知200个桶分成20个子查询语句。

进一步地,在其中一种实施方式中,在所述获取待查询语句的步骤中,具体包括:

基于业务方身份信息和所述待查询语句,获取包括多个业务方的所述待查询语句。

进一步地,在其中一种实施方式中,在所述通过子查询语句对关联的桶进行查询的步骤中,具体包括:

将多个业务方的所述待查询语句的子查询语句,并发在同一个所述桶中进行查询。

进一步地,在其中一种实施方式中,在所述获取待查询语句的步骤中,具体包括:

基于所述业务方身份信息和所述待查询语句,获取同一个业务方的所述待查询语句。

进一步地,在其中一种实施方式中,如图2所示,在所述通过子查询语句对关联的桶进行查询的步骤中,具体包括:

s520:获取同一业务方的所述查询语句的数量;

s530:在同一业务方的所述待查询语句的数量大于1时,将同一业务方的所述待查询语句的全部子查询语句排队在同一个所述桶中进行查询。

为了使得本申请能够更好地应用于查询中,在前述基础上,由于数据库资源巨大,在有多个查询语句时,有可能多个业务方同时使用该资源进行查询,因此,为了在查询过程中更好地进行资源分配,基于业务方的身份信息和查询语句判断是否包括多个业务方的所述查询语句,业务方的身份信息包括业务方的id。在业务方的id不同时,可以判断具有多个业务方,以方便多个业务方的查询语句可以在同一个桶中执行查询功能,提高查询效率。在通过业务方的id确定有多个业务方式时,同时收集同一个业务方的待查询语句。由于数据量比较大,其为分布存储在各相关联的数据库(同一个分布式存储)中,为了快速地查找到精确的数据,将每一个子查询语句在各桶中进行排队查询(即每个子查询语句在分布式集群机器里面被排队执行),分布式集群机器为数据库或者前述哈希函数的分桶,以获取到在同一个待查询语句下精确的数据查询结果。即将所有的待查询语句在一个桶中或者整个分布式存储的数据库中排队查询数据,可将多个业务方的地址不同,而桶中的用户数据是存储在其中的,每个业务方接入查询数据时,可能调用的不是同一个桶中的用户数据,即使调用同一个桶中的数据进行用户数据查询,同一组数据时不会发生冲突,在进行查询时,各业务方可以分别调用数据库中的用户数据,进而实现在同一个桶中多个业务方同时进行查询的动作。而同一个业务方的id地址相同,且在同一业务方的所述待查询语句的数量大于1,在第一个待查询语句进行查询时,相当于已经调用了同一个桶中的用户数据进行查询,如两个或者多个待查询语句同时进行查询,其结果为两个或者多个待查询语句的合集或者任一查询语句的结果,而该结果容易导致查询结果和查询条件不对应,出现混乱的情况,为了避免混乱,当基于同一个业务方多个待查询语句的需求,调用数据库中的数据进行查询时,由于调用的数据相同,在查询时只能根据查询语句排队进行查询,结合前文示例相同业务方待查询语句被拆成20个子查询语句在数据中排队查询。

进一步地,在所述通过子查询语句对关联的桶进行查询的步骤之后,还包括:

将同一业务方的所述待查询语句的查询结果合并,获得同一业务方对用户数据的查询结果。进一步地,在所述获得同一业务方对用户数据的查询结果的步骤之后,包括:将所述查询结果发送给流式处理引擎。

如前文所述,为了能够更好地统计分析数据,将同一业务方同一所述待查询语句的子查询语句的查询结果合并在一起,进而得到同一个业务方输入的待查询语句在所有用户数据中查询后的结果,使得查询结果更为完整。优选地,用户数据是每个用户一个文档,按桶来分后不会出现重复,每个子查询语句增加附加上桶标记后的查询用户数据结果会合并处理,获得完整的查询结果,目前的业务是查询出来的用户数据都是提供给流式处理引擎处理,以便于很好地对大规模流动的用户数据在不断变化的运动过程中实时地进行分析,捕捉到可能有用的信息,并把结果发送到下一计算节点,进而更好地优化业务方的产品。

本发明实施例中还提拱了一种倒排索引查询的资源分配装置,在其中一种实施方式中,如图3所示,包括:

标记模块100,用于获取待分配用户数据,基于用户维度和哈希函数对所述待分配用户数据分桶标记,获得包括用户数据且具有标记后的桶;

拆分模块200,用于获取待查询语句,通过预设拆分规则将所述待查询语句拆分为数量小于或者等于所述桶数量的子查询语句;

查询模块300,用于将所述子查询语句和所述桶进行关联,通过子查询语句对关联的桶进行查询。

进一步地,如图3所示,本发明实施例中提供的一种倒排索引查询的资源分配装置,第一获取单元210,用于基于业务方身份信息和所述待查询语句,获取包括多个业务方的所述待查询语句;第一查询单元310,用于将多个业务方的所述待查询语句的子查询语句,并发在同一个所述桶中进行查询。第二获取单元220,用于基于所述业务方身份信息和所述待查询语句,获取同一个业务方的所述待查询语句;查询语句数量获取单元320,用于获取同一业务方的所述待查询语句的数量;数据查询单元330,用于在同一业务方的所述待查询语句的数量大于1时,将同一业务方的所述待查询语句的全部子查询语句排队在同一个所述桶中进行查询。查询结果获得模块400,用于将同一业务方的同一所述待查询语句的查询结果合并,获得同一业务方对用户数据的查询结果。发送模块500,用于将所述查询结果发送给流式处理引擎进行数据处理。优选地,所述预设拆分规则包括串行化拆分规则。

本发明实施例提供的一种倒排索引查询的资源分配装置可以实现上述倒排索引查询的资源分配方法的实施例,具体功能实现请参见方法实施例中的说明,在此不再赘述。

本发明实施例提供的一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现任一项技术方案所述的倒排索引查询的资源分配方法。其中,所述计算机可读存储介质包括但不限于任何类型的盘(包括软盘、硬盘、光盘、cd-rom、和磁光盘)、rom(read-onlymemory,只读存储器)、ram(randomaccessmemory,随即存储器)、eprom(erasableprogrammableread-onlymemory,可擦写可编程只读存储器)、eeprom(electricallyerasableprogrammableread-onlymemory,电可擦可编程只读存储器)、闪存、磁性卡片或光线卡片。也就是,存储设备包括由设备(例如,计算机、手机)以能够读的形式存储或传输信息的任何介质,可以是只读存储器,磁盘或光盘等。

本发明实施例提供的一种计算机可读存储介质,可实现上述倒排索引查询的资源分配方法的实施例,在本申请中将海量的用户数据进行分桶,同时将待查询语句拆分为多个查询语句并附加上桶的标记,对应的语句仅在对应的桶中查询,降低查询分析过程占用的系统资源,查询范围减少,一个查询语句仅在一个同种查询,使得查询过程仅在一个固定的范围内查询,缩短了查询的时间;本申请实施例提供的一种倒排索引查询的资源分配方法,包括:获取待分配用户数据,基于用户维度和哈希函数对所述待分配用户数据分桶标记,获得包括用户数据且具有标记后的桶;获取待查询语句,通过预设拆分规则将所述待查询语句拆分为数量小于或者等于所述桶数量的子查询语句;将所述子查询语句和所述桶进行关联,通过子查询语句对关联的桶进行查询。将海量的用户数据基于用户维度和哈希函数进行分桶,同时将待查询语句拆分为多个附加上桶标记(桶号)的子查询语句,在附件上桶号的子查询语句与相同标号的桶进行关联后,进而在查询时,可以将对应的语句仅在对应的桶中进行查询,降低查询分析过程占用的系统资源,由于查询范围减少,一个查询语句仅在一个同种查询,使得查询过程仅在一个固定的范围内查询,缩短了查询的时间。为了避免子查询语句超出预设桶数量的范围,使得在固定范围内的查找出业务方需要的数据,该子查询语句的数量应小于或者等于用户数据分的桶的数量。需要说明的是,所述预设拆分规则包括串行化拆分规则,具体为,在前述的基础上,待分配用户数据入数据库的时候按用户维度进行hash分桶标记,总的桶数为t,将业务方输入的查询语句拆分成若干个子查询语句,最大分成t个子查询,每个子查询语句附加若干个桶号的条件,进而一个大的查询语句使用的资源被串行化分成若干个子查询语句使用的资源。

本发明实施例提供的计算机可读存储介质可以实现上述倒排索引查询的资源分配方法的实施例,具体功能实现请参见方法实施例中的说明,在此不再赘述。

此外,在又一种实施例中,本发明还提供一种服务器,如图4所示,所述服务器处理器503、存储器505、输入单元507以及显示单元509等器件。本领域技术人员可以理解,图4示出的结构器件并不构成对所有服务器的限定,可以包括比图示更多或更少的部件,或者组合某些部件。存储器505可用于存储应用程序501以及各功能模块,处理器503运行存储在存储器505的应用程序501,从而执行设备的各种功能应用以及数据处理。存储器505可以是内存储器或外存储器,或者包括内存储器和外存储器两者。内存储器可以包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦写可编程rom(eeprom)、快闪存储器、或者随机存储器。外存储器可以包括硬盘、软盘、zip盘、u盘、磁带等。本发明所公开的存储器包括但不限于这些类型的存储器。本发明所公开的存储器505只作为例子而非作为限定。

输入单元507用于接收信号的输入,以及业务开发人员输入查询语句和/或分桶的数量。输入单元507可包括触控面板以及其它输入设备。触控面板可收集客户在其上或附近的触摸操作(比如客户使用手指、触笔等任何适合的物体或附件在触控面板上或在触控面板附近的操作),并根据预先设定的程序驱动相应的连接装置;其它输入设备可以包括但不限于物理键盘、功能键(比如播放控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。显示单元509可用于显示客户输入的信息或提供给客户的信息以及计算机设备的各种菜单。显示单元509可采用液晶显示器、有机发光二极管等形式。处理器503是计算机设备的控制中心,利用各种接口和线路连接整个电脑的各个部分,通过运行或执行存储在存储器503内的软件程序和/或模块,以及调用存储在存储器内的数据,执行各种功能和处理数据。图4中所示的一个或多个处理器503能够执行、实现图3中所示的标记模块100的功能、拆分模块200的功能、查询模块300的功能、第一获取单元210的功能、第一查询单元310的功能、第二获取单元220的功能、查询语句数量获取模块320的功能、数据查询模块330的功能、查询结果获得模块400的功能、发送模块500的功能。

在一种实施方式中,所述服务器包括一个或多个处理器503,以及一个或多个存储器505,一个或多个应用程序501,其中所述一个或多个应用程序501被存储在存储器505中并被配置为由所述一个或多个处理器503执行,所述一个或多个应用程序301配置用于执行以上实施例所述的倒排索引查询的资源分配方法。

本发明实施例提供的一种服务器,可实现上述倒排索引查询的资源分配方法的实施例,在本申请中将海量的用户数据进行分桶,同时将待查询语句拆分为多个查询语句并附加上桶的标记,对应的语句仅在对应的桶中查询,降低查询分析过程占用的系统资源,查询范围减少,一个查询语句仅在一个同种查询,使得查询过程仅在一个固定的范围内查询,缩短了查询的时间;本申请实施例提供的一种倒排索引查询的资源分配方法,包括:

获取待分配用户数据,基于用户维度和哈希函数对所述待分配用户数据分桶标记,获得包括用户数据且具有标记后的桶;获取待查询语句,通过预设拆分规则将所述待查询语句拆分为数量小于或者等于所述桶数量的子查询语句;将所述子查询语句和所述桶进行关联,通过子查询语句对关联的桶进行查询。将海量的用户数据基于用户维度和哈希函数进行分桶,同时将待查询语句拆分为多个附加上桶标记(桶号)的子查询语句,在附件上桶号的子查询语句与相同标号的桶进行关联后,进而在查询时,可以将对应的语句仅在对应的桶中进行查询,降低查询分析过程占用的系统资源,由于查询范围减少,一个查询语句仅在一个同种查询,使得查询过程仅在一个固定的范围内查询,缩短了查询的时间。为了避免子查询语句超出预设桶数量的范围,使得在固定范围内的查找出业务方需要的数据,该子查询语句的数量应小于或者等于用户数据分的桶的数量。需要说明的是,所述预设拆分规则包括串行化拆分规则,具体为,在前述的基础上,待分配用户数据入数据库的时候按用户维度进行hash分桶标记,总的桶数为t,将业务方输入的查询语句拆分成若干个子查询语句,最大分成t个子查询,每个子查询语句附加若干个桶号的条件,进而一个大的查询语句使用的资源被串行化分成若干个子查询语句使用的资源。

本发明实施例提供的服务器可以实现上述提供的倒排索引查询的资源分配方法的实施例,具体功能实现请参见方法实施例中的说明,在此不再赘述。

以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1