一种数据查找方法和装置与流程

文档序号:11620570阅读:131来源:国知局
一种数据查找方法和装置与流程
本申请涉及网络技术,特别涉及一种数据查找方法和装置。
背景技术
:在互联网业务的处理中,有时需要依据一些参考数据作为业务处理的依据,并且该参考数据可以是根据至少两种因素信息运算得到。例如,当接收到业务请求时,可以根据该业务请求的业务信息确定上述的因素信息,并根据该因素信息运算得到参考数据借以作为业务处理依据。如果每次接收到业务请求时都执行一次参考数据的运算,将使得业务处理效率较低,因此,相关技术中可以预先计算好所有可能的参考数据,并将参考数据进行存储,后续可以根据具体的因素信息查找得到对应的参考数据即可。hashmap是一种可以用于存储因素信息及其对应的参考数据的结构,但是具体实施中发现根据这种结构查找数据时,仍然需要多次查找才能得到结果,查找效率也不高。技术实现要素:有鉴于此,本申请提供一种数据查找方法和装置,以实现在根据至少两种因素查找对应数据时,提高数据查找的效率。具体地,本申请是通过如下技术方案实现的:第一方面,提供一种数据查找方法,包括:根据至少两种因素信息,分别获取各个因素信息对应的位置索引,所述位置索引唯一标识对应的所述因素信息;根据所述位置索引,确定对应的数据存储位置,所述数据存储位置用于 存储根据所述至少两种因素信息运算得到的参考数据;由所述数据存储位置获取所述参考数据。第二方面,提供一种数据查找方法,包括:索引获取模块,用于根据至少两种因素信息,分别获取各个因素信息对应的位置索引,所述位置索引唯一标识对应的所述因素信息;位置计算模块,用于根据所述位置索引,确定对应的数据存储位置,所述数据存储位置用于存储根据所述至少两种因素信息运算得到的参考数据;查找处理模块,用于由所述数据存储位置获取所述参考数据。本申请提供的数据查找方法和装置,通过在查找数据时,只需要根据因素信息的位置索引计算一次数据存储位置即可,就可以根据数据存储位置与参考数据的对应关系,直接找到参考数据。这种方法实施较为快速,提高了数据查找的效率。附图说明图1是本申请一示例性实施例示出的数据查找的应用场景图;图2是本申请一示例性实施例示出的一种数据查找方法的流程图;图3是本申请一示例性实施例示出的位置索引分配示意图;图4是本申请一示例性实施例示出的另一种数据查找方法的流程图;图5是本申请一示例性实施例示出的一种数据查找装置的结构示意图;图6是本申请一示例性实施例示出的另一种数据查找装置的结构示意图。具体实施方式这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。本申请实施例提供了一种数据查找方法,请参见图1,说明该数据查找的应用场景(但实际实施中并不局限于该场景)。例如,某个应用需要客户端11和服务端12配合实现,当用户在客户端11点击了一个应用页面时,可以触发服务端12向客户端11反馈另一个页面信息,比如,用户在购物页面下单后将跳转到支付页面,该支付页面中可以包括供用户选择的支付工具信息(如,银行卡、红包等),用户可以选择其中一个支付工具来完成本次购物的支付。支付工具有多种类型,服务端12可以依据“参考数据”来决定在反馈的支付页面中提供哪些支付工具供用户选择使用。例如,预先设置一些业务规则,示例性的,可以包括“当交易是虚拟类交易时,不能支持信用卡支付”,如果将支付工具称为业务主体,那么,对于红包、余额、借记卡、银行卡这些业务主体来说,可以运算业务规则与业务主体之间的关系。比如,“红包”与上述列举的业务规则是无关联的,“余额”与业务规则也无关联,而“银行卡”与业务规则有关联,是被禁用的支付工具。这种“有关联”或“无关联”的关系,是根据业务规则和业务主体运算得到的。在本例子中的场景中,可以将上述的关系称为“参考数据”。业务规则和业务主体可以称为“因素信息”。根据参考数据,服务端12可以得知信用卡是被禁用,因此可以在反馈的支付页面中不显示信用卡。仍以图1的例子来看,业务主体和业务规则的数量都可以有多种,比如,三种业务规则、四种业务主体,那么,这些业务主体和业务规则两两运算得到的参考数据的数量也将较多(需要计算每一种业务规则与每一种业务主体的关系)。如图1所示,可以将该参数数据都存储在服务端12的缓存中,当服务端12接收到业务请求时(比如上述例子中的支付跳转请求),可以根据业务信息确定对应使用的业务规则,将这些业务规则和所有支付工具作为输入信息,查找缓存中与输入信息对应的参考数据,再根据参考数据确定可以向客户端11反馈显示的支付工具。上述支付工具选择的例子,只是一种示例性的应用场景,实际实施中也可以是其他场景,并且,获取参考数据的因素信息也可以不局限于业务规则 和业务主体(例如,支付工具),还可以是其他因素信息,也可以是多于两种类型的因素信息。在图1的场景中,本申请实施例的数据查找方法,即可以应用于对参考数据的查找,并旨在以较快的速度查找到参考数据。本申请的方法中,为了使得数据查找的效率得到提高,采用了一种数据存储结构,使得使用该结构存储的参考数据,在查找时速度较快。如下先介绍如何存储根据因素信息计算的参考数据:参见图2的示例,可以按照图2的方式进行参考数据的存储。在步骤201中,可以在接收到待运算的一个因素信息时,将因素信息在其所在类型的因素信息中进行唯一性排序,并将排序位置分配为所述因素信息的位置索引。本步骤中,是为每个因素信息进行唯一性编号。例如,假设有两种类型的因素信息,类型a和类型b,每一种类型的因素信息的数量都有多个,比如,三个类型a的因素信息,四个类型b的因素信息。对于每一种类型因素信息而言,可以用唯一性编号来标识该类型中包括的各个因素信息,比如,三个类型a的因素信息中每个因素信息都有各自的唯一性编号。本例子中,该唯一性标号即位置索引。如下以两种类型的因素信息为例,来说明位置索引的分配。假设该两种因素信息即上述例子中的业务规则和业务主体。例如,以四条业务规则和三个业务主体为例,分别如下:四条业务规则:rulemodel{expression:a=1&&c=1&&b=3,offset:0}rulemode2{expression:a=1&&c=2&&b=3,offset:0}rulemode3{expression:a=3&&c=1&&b=3,offset:0}rulemode4{expression:a=3&&b=3&&c=1,offset:0}三个业务主体:bizmodel1{a:1,b=2,c=3,offset:0}bizmodel2{a:3,b=3,c=1,offset:0}bizmodel3{a:1,b=2,c=3,offset:0}本例子中,可以将位置索引设为因素信息中的其中一个属性信息,比如,上述的offset即为位置索引,属于业务规则rulemode中的其中一个属性。本步骤中,尚未为因素信息编号之前,可以默认offset等于0。以四条业务规则的编号为例,说明位置索引的取值分配。请结合参见图3所示,可以维护一个数组模块31,其中包括各个业务规则的列表,本例子中,在将业务规则放入数组时,是以业务规则中的唯一字符串来标识该规则的。例如,expression:a=1&&c=1&&b=3即一条唯一字符串,expression:a=1&&c=2&&b=3是另一条唯一字符串。例如,可以将rulemodel的expression放入图3中的列表位置32,该位置对应的数组中的当前位置是“1”(排在数组中的第一位),可以将该位置称为编号;在将rulemode2的expression向数组模块31放入时,可以先判断下数组模块中是否存在该expression。如果不存在,可以将该唯一字符串expression添加在数组的末尾,即挨着列表位置32的列表位置33处,该位置对应的数组中的当前编号是“2”。如果在将某个规则的唯一字符串放入数组时,发现数组中已经存在该字符串,比如,rulemode3的expression放入列表位置34后,再将rulemode4的expression放入时,将发现该字符串已经存在,因为rulemode3和rulemode4的expression相同,则可以将已存在的唯一字符串对应的编号“3”作为rulemode4对应的位置。可以看到,各个因素信息的字符串可以放入对应该因素信息类型的数组中,并且,在该数组中进行唯一性排序,该唯一性排序即保证数组中的各个元素都具有唯一性,不包括重复的元素。经过数组排序后得到的对应各个唯一字符串的编号,可以作为位置索引分配至因素信息。例如,可以将编号“1”分配给rulemode1,具体是将rulemode1的位置索引offset的取值设置为1。同理,可以将rulemode2的offset的取值设置为2。业务主体的offset取值的方式同上述业务规则的处理方式,不再详述,需要说明的是,各个业务主体可以在另一个数组中进行排序,该数组是对应 业务主体这种类型的因素信息的数组。并且,业务主体中的唯一字符串可以是offset属性之外的其他属性的组合,例如,以bizmodel1为例,其中的用于进行数组排序的唯一字符串可以是“a:1,b=2,c=3”。经过本步骤的编号后,业务规则和业务主体的位置索引都已取值,如下:四条业务规则:rulemodel{expression:a=1&&c=1&&b=3,offset:1}rulemode2{expression:a=1&&c=2&&b=3,offset:2}rulemode3{expression:a=3&&c=1&&b=3,offset:3}rulemode4{expression:a=3&&b=3&&c=1,offset:3}三个业务主体:bizmodel1{a:1,b=2,c=3,offset:1}bizmodel2{a:3,b=3,c=1,offset:2}bizmodel3{a:1,b=2,c=3,offset:1}在步骤202中,根据所述至少两种因素信息的位置索引,计算所述数据存储位置,并将根据所述至少两种因素信息运算得到的参考数据,存储至所述数据存储位置。在计算出各个因素信息中的位置索引后,本步骤将根据位置索引计算出一个唯一的数据存储位置。例如,经过步骤201中的位置索引分配后,可以得到实际上共有三条业务规则和两个业务主体,如果将这些业务规则和业务主体进行两两运算,得到的参考数据共有六个(任一条业务规则和一个业务主体运算对应一个参考数据)。本步骤中,在存储参考数据时,旨在每一个参考数据对应唯一的一个数据存储位置,该数据存储位置可以用一个标识表示,例如,可以用“1/2/3…..”这些自然数表示,那么在上述六个参考数据的例子中,可以有六个数据存储位置“1”、“2”、“3”、“4”、“5”、“6”,数据存储位置与参考数据是对应的,以备在后续查找时,根据数据存储位置直接得到参考数据。根据位置索引计算数据存储位置的方式,如下仍然以两种类型的因素信 息为例,假设共有n条业务规则和m条业务主体,参见如下表1,以二维表的形式示例了这两种因素信息及其对应的数据存储位置:表1数据存储位置示意表规则1规则2……..规则n主体112n-1n主体2n+1n+2……2n主体32n+12n+2……3n……..主体m在上述的表1中,表格示例的“1、2、…n、n+1、n+2…..”等,这些是数据存储位置的标识,标识对应的存储位置。例如,根据表1,规则1和主体1运算得到的参考数据,将存储在“1”这个数据存储位置;又例如,规则n和主体2运算得到的参考数据,将存储在“2n”这个数据存储位置。此外,表1中的规则1、规则2、规则n中的“1、2、…n”,这些是业务规则的位置索引,而主体1、主体2、主体m中的“1、2、…m”是业务主体的位置索引。根据位置索引计算得到数据存储位置,可以按照如下公式:(bizmodel.getoffset-1)*n+rulemodel.getoffset在上述公式中,利用getoffse方法获取因素信息中的位置索引offset,n是业务规则的数量,比如,在表1中,业务规则的数量是n。根据该公式,以步骤201中计算得到的业务规则rulemode和业务主体bizmodel的位置索引offset为例,对于rulemode3和bizmodel2,可以将两者运算得到的参考数据放置的数据存储位置为:(bizmodel2.getoffset-1)*rulemodelsize+rulemodel3.getoffset=(2-1)*4+3=7,于是放入标识为7的数据存储位置。表1是以一个二维表的形式示例了参考数据的数据存储位置的分布,但是实际实施中,缓存中存储的不局限于一定是个二维表,比如,还可以是一个一维表,只是记录数据存储位置与参考数据的对应关系即可。基于上述参考数据的存储方式,图4示例了查找参考数据的方法,包括:在步骤401中,根据至少两种因素信息,分别获取各个因素信息对应的位置索引,所述位置索引唯一标识对应的所述因素信息。例如,以两种因素信息为例,当要获取其中一条业务规则和一个业务主体对应的参考数据时,可以在本步骤中先获取各个因素信息对应的位置索引,比如,可以使用getoffse方法获取因素信息中的位置索引offset。在步骤402中,根据所述位置索引,确定对应的数据存储位置,所述数据存储位置用于存储根据所述至少两种因素信息运算得到的参考数据。本步骤中,根据获取到的位置索引,计算对应的数据存储位置的标识,比如根据公式(bizmodel.getoffset-1)*rulemodelsize+rulemodel.getoffset计算出数据存储位置。在步骤403中,由所述数据存储位置获取所述参考数据。本实施例的数据查找方法,在查找数据时,只需要根据因素信息的位置索引计算一次数据存储位置即可,就可以根据数据存储位置与参考数据的对应关系,直接找到参考数据。这种方法实施较为快速,实现了o(1)查找,简单且快速,提高了数据查找的效率。本申请的数据查找方法,不限制因素信息的类型数量,比如,在上面的例子中是以两种类型的因素信息为例(业务规则和业务主体),在具体实施中,因素信息的数量还可以多于两种。例如,以三种因素信息为例,假设有x、y、z三种因素信息,以x.getoffset表示为x的位置索引,xmodelsize表示x这个类型的因素信息的数量,同理,ymodelsize表示y因素信息的数量,zmodelsize表示z因素信息的数量。可以推导出由上述三种因素信息确定的参考数据的数据存储位置为:xmodelsize*ymodelsize*(z.getoffset-1)+(x.getoffset-1)*ymodelsize+y.getoffset。只要将各个参数对应的数值代入公式,即可得到对应的唯一数据存储位置。此外,需要说明的是,根据因素信息确定数据存储位置,不一定是按照 上面例子中列举的公式,也可以使用其他方式根据因素信息确定存储位置。图5提供了一种数据查找装置,该装置可以执行上面例子中的数据查找方法。如图5所示,该装置可以包括:索引获取模块51、位置计算模块52和查找处理模块53。索引获取模块51,用于根据至少两种因素信息,分别获取各个因素信息对应的位置索引,所述位置索引唯一标识对应的所述因素信息;位置计算模块52,用于根据所述位置索引,确定对应的数据存储位置,所述数据存储位置用于存储根据所述至少两种因素信息运算得到的参考数据;查找处理模块53,用于由所述数据存储位置获取所述参考数据。进一步的,所述位置索引是所述因素信息中包括的其中一个属性信息。参见图6所示,该装置还可以包括:索引分配模块54,用于在接收到待运算的一个因素信息时,将所述因素信息在所述类型的因素信息中进行唯一性排序,并将排序位置分配为所述因素信息的位置索引;数据存储模块55,用于根据所述至少两种因素信息的位置索引,计算所述数据存储位置,并将根据所述至少两种因素信息运算得到的参考数据,存储至所述数据存储位置。进一步的,索引分配模块54,用于判断所述因素信息中的唯一字符串在对应因素信息类型的数组中是否存在,所述数组中包括已经分配位置索引的各个唯一字符串;若唯一字符串在数组中不存在,则将所述唯一字符串添加在数组的末尾,并将当前添加位置作为位置索引分配至所述因素信息;若唯一字符串在数组中存在,则将已存在的所述唯一字符串对应的位置作为位置索引分配至所述因素信息。例如,所述至少两种因素信息,包括:业务规则和业务主体。以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1