一种数据查找方法、装置及电子设备与流程

文档序号:23849186发布日期:2021-02-05 13:43阅读:75来源:国知局
一种数据查找方法、装置及电子设备与流程

[0001]
本发明涉及数据索引领域,更具体的说,涉及一种数据查找方法、装置及电子设备。


背景技术:

[0002]
数据查找的速度决定了整个数据查询流程的快慢,通常在进行数据查找时,是将待查找字段集合中的多个字段的内容进行组合,得到关键要素key,然后在容器中遍历该key,找到该key后,就可以获取到存储在该key所在位置的数据。
[0003]
但是上述这种数据查找方法,需要在容器中遍历key,遍历时间较长,进而使得整个数据查询流程占用时间较长,对于一些对处理时间要求较严格的紧急业务不能及时处理。


技术实现要素:

[0004]
有鉴于此,本发明提供一种数据查找方法、装置及电子设备,以解决现有数据查找方法的查找时间较长的问题。
[0005]
为解决上述技术问题,本发明采用了如下技术方案:
[0006]
一种数据查找方法,应用于处理器,所述处理器预先设置有多个存储区域,所述处理器为不同的字段集合设置有对应的存储区域,且所述存储区域用于存储所述字段集合的目标数据,所述存储区域设置有对应的位置索引值,所述位置索引值是通过预设处理规则,对所述字段集合处理得到;所述数据查找方法包括:
[0007]
获取待查找字段集合;所述待查找字段集合包括多个预先设定的字段;
[0008]
依据预设处理规则,对所述待查找字段集合进行处理,得到位置索引值;所述预设处理规则包括依据每一所述字段的字段值,确定所述待查找字段集合的多维特征值,以及依据预设降维规则,对所述多维特征值进行降维处理,将降维处理结果作为位置索引值;
[0009]
确定存储在所述位置索引值对应的存储区域的目标数据,并将所述目标数据确定为所述待查找字段集合对应的查询结果。
[0010]
可选地,依据每一所述字段的字段值,确定所述待查找字段集合的多维特征值,包括:
[0011]
获取所述待查找字段集合对应的字段最小值;
[0012]
依据预先设定的特征值计算规则、所述字段最小值以及所述待查找字段集合中每一字段的字段值,计算所述待查找字段集合中每一字段的特征值;
[0013]
将所述待查找字段集合中每一字段的特征值组合得到所述待查找字段集合的多维特征值。
[0014]
可选地,依据预先设定的特征值计算规则、所述字段最小值以及所述待查找字段集合中每一字段的字段值,计算所述待查找字段集合中每一字段的特征值,包括:
[0015]
获取所述待查找字段集合的字段类型,并确定与所述字段类型对应的特征值计算
规则;
[0016]
依据所述特征值计算规则、所述字段最小值以及所述待查找字段集合中每一字段的字段值,计算所述待查找字段集合中每一字段的特征值。
[0017]
可选地,依据预设降维规则,对所述多维特征值进行降维处理,将降维处理结果作为位置索引值,包括:
[0018]
获取预先设定的索引值计算公式,并调用所述索引值计算公式对所述多维特征值进行降维计算,得到降维结果;
[0019]
将所述降维处理结果确定为位置索引值。
[0020]
可选地,获取预先设定的索引值计算公式,并调用所述索引值计算公式对所述多维特征值进行降维计算,得到降维结果,包括:
[0021]
获取预先生成的维度乘数计算公式以及位置索引值计算公式;
[0022]
获取所述待查找字段集合对应的字段最小值和字段最大值;
[0023]
依据所述字段最小值、所述字段最大值以及所述维度乘数计算公式,计算得到维度乘数值;
[0024]
依据所述维度乘数值以及所述位置索引值计算公式,计算得到所述多维特征值的降维结果。
[0025]
一种数据查找装置,应用于处理器,所述处理器预先设置有多个存储区域,所述处理器为不同的字段集合设置有对应的存储区域,且所述存储区域用于存储所述字段集合的目标数据,所述存储区域设置有对应的位置索引值,所述位置索引值是通过预设处理规则,对所述字段集合处理得到;所述数据查找装置包括:
[0026]
集合获取模块,用于获取待查找字段集合;所述待查找字段集合包括多个预先设定的字段;
[0027]
数据处理模块,用于依据预设处理规则,对所述待查找字段集合进行处理,得到位置索引值;所述预设处理规则包括依据每一所述字段的字段值,确定所述待查找字段集合的多维特征值,以及依据预设降维规则,对所述多维特征值进行降维处理,将降维处理结果作为位置索引值;
[0028]
结果确定模块,用于确定存储在所述位置索引值对应的存储区域的目标数据,并将所述目标数据确定为所述待查找字段集合对应的查询结果。
[0029]
可选地,所述数据处理模块包括:
[0030]
数据获取子模块,用于获取所述待查找字段集合对应的字段最小值;
[0031]
数据计算子模块,用于依据预先设定的特征值计算规则、所述字段最小值以及所述待查找字段集合中每一字段的字段值,计算所述待查找字段集合中每一字段的特征值;
[0032]
特征确定子模块,用于将所述待查找字段集合中每一字段的特征值组合得到所述待查找字段集合的多维特征值。
[0033]
可选地,所述数据计算子模块具体用于:
[0034]
获取所述待查找字段集合的字段类型,并确定与所述字段类型对应的特征值计算规则,依据所述特征值计算规则、所述字段最小值以及所述待查找字段集合中每一字段的字段值,计算所述待查找字段集合中每一字段的特征值。
[0035]
可选地,所述数据处理模块包括:
[0036]
降维子模块,用于获取预先设定的索引值计算公式,并调用所述索引值计算公式对所述多维特征值进行降维计算,得到降维结果;
[0037]
结果确定子模块,用于将所述降维处理结果确定为位置索引值。
[0038]
一种电子设备,所述电子设备预先设置有多个存储区域,所述处理器为不同的字段集合设置有对应的存储区域,且所述存储区域用于存储所述字段集合的目标数据,所述存储区域设置有对应的位置索引值,所述位置索引值是通过预设处理规则,对所述字段集合处理得到;所述电子设备包括:存储器和处理器;
[0039]
其中,所述存储器用于存储程序;
[0040]
处理器调用程序并用于:
[0041]
获取待查找字段集合;所述待查找字段集合包括多个预先设定的字段;
[0042]
依据预设处理规则,对所述待查找字段集合进行处理,得到位置索引值;所述预设处理规则包括依据每一所述字段的字段值,确定所述待查找字段集合的多维特征值,以及依据预设降维规则,对所述多维特征值进行降维处理,将降维处理结果作为位置索引值;
[0043]
确定存储在所述位置索引值对应的存储区域的目标数据,并将所述目标数据确定为所述待查找字段集合对应的查询结果。
[0044]
相较于现有技术,本发明具有以下有益效果:
[0045]
本发明提供了一种数据查找方法、装置及电子设备,在进行数据查找时,确定待查找字段集合的多维特征值,并依据预设降维规则,对多维特征值进行降维处理,将降维处理结果作为位置索引值,确定存储在位置索引值对应的存储区域的目标数据,并将目标数据确定为待查找字段集合对应的查询结果。本发明中,直接确定待查找字段集合的位置索引值,然后,确定存储在所述位置索引值对应的存储区域的目标数据即可,本发明中的处理和查找操作,相比于在容器中遍历key的方式,数据处理速度较快,数据查找时间较短,进而能够缩短业务处理时间,对紧急业务的适用性更好。
附图说明
[0046]
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0047]
图1为本发明实施例提供的一种数据查找方法的方法流程图;
[0048]
图2为本发明实施例提供的另一种数据查找方法的方法流程图;
[0049]
图3为本发明实施例提供的再一种数据查找方法的方法流程图;
[0050]
图4为本发明实施例提供的一种对待查找字段集合处理得到位置索引值的场景示意图;
[0051]
图5为本发明实施例提供的一种数据查找装置的结构示意图。
具体实施方式
[0052]
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于
本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0053]
对于从事期货交易的交易员,都追求交易的速度,从而把握市场行情,获取盈利。因此对服务于交易员的期货交易业务处理模块要求有极高的性能,处理速度都要求是微秒级别。
[0054]
对于期货交易的业务处理模块,一般的业务流程大体是一笔委托到达后,进行资金冻结、持仓冻结等操作。在此过程中,主要涉及的关联数据有账户资金、账户持仓。因此如何根据委托数据中的账户、合约、买卖方向、投保方向等关键要素,快速的查询到资金、持仓等关联数据成为了提高业务处理速度的痛点。
[0055]
常规的做法是将待查找字段集合中的多个字段的内容进行组合,得到关键要素key,然后在map容器中遍历该key,找到该key后,就可以获取到存储在该key所在位置的数据。常规做法在大量账户,持仓多的场景下,每次委托业务的处理将耗费大量的时间在map中查询需要处理的数据,对于一些对处理时间要求较严格的紧急业务不能及时处理。因此在大量账户、持仓、交易量的场景下,如何创建高效的索引查找容器、建立高效的关键字查找机制成为了提高查询性能的重心。
[0056]
为了解决上述的技术问题,发明人经过研究发现,若是能够在进行数据查找之前,所述处理器预先设置有多个存储区域,所述处理器为不同的字段集合设置有对应的存储区域,且所述存储区域用于存储所述字段集合的目标数据,所述存储区域设置有对应的位置索引值,所述位置索引值是通过预设处理规则,对所述字段集合处理得到,进而就能够直接根据待查找字段集合对应的位置索引值,查找到相对应的数据,由于不需要遍历查找,因此缩短了数据查找时间,对紧急业务的适应性更强。
[0057]
更具体的,本发明中,在进行数据查找时,确定待查找字段集合的多维特征值,并依据预设降维规则,对多维特征值进行降维处理,将降维处理结果作为位置索引值,确定存储在位置索引值对应的存储区域的目标数据,并将目标数据确定为待查找字段集合对应的查询结果。本发明中,直接确定待查找字段集合的位置索引值,然后,确定存储在所述位置索引值对应的存储区域的目标数据即可,本发明中的处理和查找操作,相比于在容器中遍历key的方式,数据处理速度较快,数据查找时间较短,进而能够缩短业务处理时间,对紧急业务的适用性更好。
[0058]
在上述内容的基础上,本发明的实施例提供了一种数据查找方法,应用于处理器,所述处理器预先设置有多个存储区域,所述处理器为不同的字段集合设置有对应的存储区域,且所述存储区域用于存储所述字段集合的目标数据,所述存储区域设置有对应的位置索引值,所述位置索引值是通过预设处理规则,对所述字段集合处理得到。
[0059]
在实际应用中,一个存储区域设置有一个位置索引值,在进行数据查找之前,需要将数据存储到处理器的存储区域中,具体的,在进行数据存储时,待存储的数据是字段集合的目标数据,首先,将字段集合按照预设处理规则进行处理,得到的结果确定为位置索引值,然后在位置索引值对应的存储区域存储该字段集合对应的目标数据,这样后续在接收到字段集合之后,就可以对该字段集合进行处理,得到对应的位置索引值,该位置索引值对应的存储区域存储的数据即为该字段集合对应的数据,由于本发明仅需处理和查找,相比于遍历的方式,能够缩短数据处理时间。
[0060]
其中,本实施例中的位置索引值可以是哈希函数值,在使用位置索引值进行数据查找时,首先需要将待查找字段集合转换成对应的位置索引值,然后查找到存储在所述位置索引值对应的存储区域的目标数据,该目标数据即为所述待查找字段集合对应的查询结果。
[0061]
参照图1,数据查找方法可以包括:
[0062]
s11、获取待查找字段集合。
[0063]
其中,所述待查找字段集合包括多个预先设定的字段,在实际应用中,待查找字段集合可以是账户资金、账户持仓、账户委托、账户成交或合约等对应的待查找字段集合。
[0064]
其中,账户资金是指系统配置的交易员资金账户,按不同币种类别可分为不同的账户资金;特征值是账户编号和资金类型。
[0065]
账户持仓是指期货市场交易员的账户持仓,特征值是账户编号、合约代码、买卖方向、投保方向。
[0066]
账户委托是指期货市场相应交易员的交易委托记录,特征值是账户编号、合约代码、买卖方向、投保方向。
[0067]
账户成交是指期货交易所生成的账户、委托相关的交易成交数据。
[0068]
合约是指国内期货交易所的交易合约,特征值是合约代码。
[0069]
以合约为例,合约内容会包含:合约代码(au2011)、合约乘数、最小价格变动、最后交易日、报单最大手数等等。国内期货合约一般都是按字母和数字组成,且一般都是6位字符,合约字母范围:

a
’-‘
z’;

a
’-‘
z’,合约数字范围:
‘0’-‘9’
,如au2011。也就是说,合约对应的待查找字段集合中包括合约代码(au2011)、合约乘数、最小价格变动、最后交易日和报单最大手数这几个字段。
[0070]
对于账户资金,可以将资金账户和资金类别按整型数据顺序编号,一个编号和资金类别确定一个账户的资金数据。也就是说,账户资金对应的待查找字段集合中包括资金账户和资金类别两个字段。
[0071]
对于账户持仓,账户持仓一般包含有账户、合约、买卖方向、投保等4个关键要素,即账户持仓对应的待查找字段集合中包括账户、合约、买卖方向和投保四个字段。
[0072]
s12、依据预设处理规则,对所述待查找字段集合进行处理,得到位置索引值。
[0073]
其中,所述预设处理规则包括依据每一所述字段的字段值,确定所述待查找字段集合的多维特征值,以及依据预设降维规则,对所述多维特征值进行降维处理,将降维处理结果作为位置索引值;
[0074]
在实际应用中,首先确定每一字段的字段值,依据每一所述字段的字段值,确定所述待查找字段集合的多维特征值。
[0075]
具体的,参照图3,“依据每一所述字段的字段值,确定所述待查找字段集合的多维特征值”可以包括:
[0076]
s21、获取所述待查找字段集合对应的字段最小值。
[0077]
仍以待查找字段集合为合约的待查找字段集合为例,合约内容会包含:合约代码(au2011)、合约乘数、最小价格变动、最后交易日、报单最大手数等字段。
[0078]
在进行特征值计算时,由于每个英文及数字字符有相对应的ascii值,所以在使用每一字段的ascii值进行相应的特征值的计算,首先需要获取到合约对应的字段最小值,即
选取出合约中所有字段种类的最小ascii值,举例来说,不管是合约的哪一字段,均是由字母或数字构成,而合约字母范围:

a
’-‘
z’;

a
’-‘
z’,合约数字范围:
‘0’-‘9’
,由于0对应的ascii值小于a和a对应的ascii值,则合约对应的字段最小值为0对应的ascii值,根据

a’、

z’、

a’、

z’、
‘0’

‘9’
的大小关系,确定特征值范围为
‘0’-‘
z’。
[0079]
而由于国内期货合约一般都是按字母和数字组成,且一般都是6位字符,所以其对应的特征值是一个6维特征数组。
[0080]
s22、依据预先设定的特征值计算规则、所述字段最小值以及所述待查找字段集合中每一字段的字段值,计算所述待查找字段集合中每一字段的特征值。
[0081]
在实际应用中,步骤s22可以包括:
[0082]
1)获取所述待查找字段集合的字段类型,并确定与所述字段类型对应的特征值计算规则。
[0083]
对于不同的待查找字段集合,如合约、账户资金等,在进行数据查找时,是分开进行处理的,即通过合约查找到对应的数据,通过账户资金查找到对应的数据,然后对所有查找到的数据进行后续处理,如资金冻结等等操作。另外,不同的待查找字段集合使用的特征值的计算规则是不同的,所以需要依据待查找字段集合的字段类型,并确定与所述字段类型对应的特征值计算规则。
[0084]
具体的,在获取到待查找字段集合之后,就需要获取到待查找字段集合的字段类型,本实施例中的字段类型是指合约、账户资金、账户持仓、账户委托、账户成交等。
[0085]
2)依据所述特征值计算规则、所述字段最小值以及所述待查找字段集合中每一字段的字段值,计算所述待查找字段集合中每一字段的特征值。
[0086]
在实际应用中,待查找字段集合中每一字段的字段值是已知的,如上述的au2011,每一字段的字段值分别为a、u、2、0、1和1。字段最小值的确定过程在上述的方法步骤中已经给出。
[0087]
特征值的计算是在字段类型对应的容器中进行的,本实施例中在计算特征值时,需要获取特征值计算规则,本实施例中的特征值计算规则可以是坐标转换哈希函数,由于每一字段类型对应的字段的数量是不同的,如合约内容会包含:合约代码(au2011)、合约乘数、最小价格变动、最后交易日、报单最大手数等等,即合约对应的字段的数量至少是六维的,账户资金包括资金账户和资金类别两个字段,则账户资金的字段的数量是二维的,即在进行特征值计算时,由于最终计算得到的特征值是一维的,则对于不同的字段类型,由多维转换成一维时,多维的维数是不同的,所以对应的特征值计算规则也是不同的,即不同字段类型对应的坐标转换哈希函数也是不同的。
[0088]
在实际应用中,会预先设定字段类型与特征值计算规则的对应关系,在字段类型确定之后,直接依据对应关系,找到对应的特征值计算规则即可。
[0089]
更具体的,特征值计算规则是指将字段的字段值-字段最小值,将其结果确定为该字段的特征值。
[0090]
s23、将所述待查找字段集合中每一字段的特征值组合得到所述待查找字段集合的多维特征值。
[0091]
举例来说,1)合约:国内期货合约一般都是按字母和数字组成,且一般都是6位字符,如au2011。因此可以采用ascii码,将合约代码转换成6维的特征进行索引。
[0092]
合约字母范围:

a
’-‘
z’;

a
’-‘
z’[0093]
合约数字范围:
‘0’-‘9’
[0094]
特征值范围:
’0’-‘
z’[0095]
特征空间:6维特征数组
[0096]
具体的,因为每个英文及数字字符有相对应的ascii值,因此对应ascii值范围就是[48,122];则“au2011”对应的特征值:[97,117,50,48,49,49]。
[0097]
2)账户资金:可以将资金账户和资金类别按整型数据顺序编号,一个编号和资金类别确定一个账户的资金数据。资金类别按币种对应整型数字进行规范化转换成相应的特征值,如对人民币、美元等进行顺序数字编号。
[0098]
如账户编号:1,2,3,4
……
[0099]
币种编号:人民币:1,美元:2;
[0100]
特征空间:2维特征数组
[0101]
3)账户持仓:持仓一般包含有账户、合约、买卖方向、投保等4个关键要素,因此将持仓数据提取如上特征值。
[0102]
特征值规范化如下:
[0103]
账户:账户编号;
[0104]
合约特征值是合约代码对应合约索引容器的下标索引;
[0105]
买卖方向:买:0,卖:1;
[0106]
投机套保:投机:0,套保:1;
[0107]
特征空间:4维特征数组
[0108]
对于特征值不能规范化成容器下标索引值的场景,则定义有序的数字编号。如买卖方向、投机套保,从0开始进行整型数字编号。
[0109]
在本发明的另一实施例中,“依据预设降维规则,对所述多维特征值进行降维处理,将降维处理结果作为位置索引值”的过程包括:
[0110]
获取预先设定的索引值计算公式,并调用所述索引值计算公式对所述多维特征值进行降维计算,得到降维结果,将所述降维处理结果确定为位置索引值。
[0111]
在实际应用中,“获取预先设定的索引值计算公式,并调用所述索引值计算公式对所述多维特征值进行降维计算,得到降维结果”包括:
[0112]
s31、获取预先生成的维度乘数计算公式以及位置索引值计算公式。
[0113]
s32、获取所述待查找字段集合对应的字段最小值和字段最大值。
[0114]
s33、依据所述字段最小值、所述字段最大值以及所述维度乘数计算公式,计算得到维度乘数值。
[0115]
s34、依据所述维度乘数值以及所述位置索引值计算公式,计算得到所述多维特征值的降维结果。
[0116]
在实际应用中,算法的核心是特征空间的映射转换,而空间的转换可以模仿计算机存储数组的方式。
[0117]
当我们将每种特征做为一个特征维度,如账户、合约、买卖方向、投保方向,则是四维空间,可以定义如下:账户:x;合约:y;买卖方向:z;投保方向:t;目标容器的下标索引值:v;
[0118]
则有:f1(x,y,z,t)=v
[0119]
要实现唯一的hashid:f1(hashid)=v,则需要有hashid=f3(x,y,z,t);f3即是一个坐标转换的哈希函数。如果要实现所有的x,y,z,t各维度上的数据在转换到一维空间后不重复,即f3(x,y,z,t)都是一一对应,则可以模仿计算机存储多维数组的方法。
[0120]
交易业务逻辑处理中,经常会出现需要一个key或者多个key查找业务对象。这些key值在规范化后即可以作为数据的特征值。把每种特征类型当作一个数组维度,则在所有特征值确定后,可以统计出每个数组维度的最大值、最小值,从而确定每种特征类型的取值空间及特征数组长度。再模仿上述的计算机存储数组方式使用坐标转换哈希函数进行数组降维。使用一维数组来保存目标索引值,从而达到快速查找业务对象的目的。
[0121]
具体的,坐标转换哈希函数的构建过程可以如下:
[0122]
索引容器(searchindex)包含的必要函数如下:
[0123][0124]
插入需要构建的数据,addindex(int value_index,...):
[0125]
将所有的数据[{id11,id21,...,value1},{id12,id22,...,value2},...]缓存到cache_data;并计算dim个维度下每一维度的[idmin
i
,idmax
i
];;并保存到m_min和m_max中。
[0126]
使用的公式如下:
[0127]
i=1,....
[0128]
m_min[i]=idmin
i
=min(idi1,idi2,...idi
dim
)
[0129]
m_max[i]=idmax
i
=max(idi1,idi2,...idi
dim
)
[0130]
构建索引数据:buildindex():
[0131]
按维度遍历m_min、m_max中的数据,计算每个维度的维度乘数;
[0132]
维度乘数公式:
[0133]
其中multiplier[dim]=1申请大小为的内存hash_array,作为目标索引容器,用于存储哈希索引值对应的目标数据value。
[0134]
将id1,id2,...iddim转换为一维哈希索引值,使用的坐标哈希转换函数,也即位置索引值计算公式,如下:
[0135]
[0136]
index_value[hash_pow]=index
[0137]
使用上述的坐标哈希转换函数即可计算得到上述的字段结合的多维特征值的降维结果。
[0138]
参照图4,图4给出了对待查找字段集合进行处理,得到位置索引值的过程。具体的,目标索引数据(object array)可存放在一维数组或者std::vector类似的顺序容器定义的目标索引容器中。具体的目标索引数据(obji)保存的数据值可以是位置索引值,如目标数据指针地址或者目标容器的下标索引。通过目标索引数据可以在目标容器中直接索引得到业务数据。
[0139]
对待查找字段集合进行处理,得到位置索引值的过程包括:
[0140]
1)转换:将一个或多个key规范化转换为相应存储容器的下标索引id值或者有序的数字编号;
[0141]
2)遍历:将所有的key经过步骤1的转换,获取所有维度的[idmin,idmax]的区间;
[0142]
3)映射:将每个数据的的id映射到[0,idmax-idmin],得到新的区间上的idnew;
[0143]
idnew=id-idmin
[0144]
4)计算哈希索引值:将步骤3中映射得到的idnew,对多维数组计算维度乘数,之后使用坐标转换哈希函数将多维数组映射到一维数组上,得到哈希索引值hashpos,将hashpos对应的目标值(obj)复制到objarray[hashpos]。
[0145]
5)每次新插入数据值后,需要重新从(2)开始执行。
[0146]
为了本领域技术人员更加清楚的了解本发明的具体实现方案,现举例进行介绍:
[0147]
1)合约索引容器
[0148]
建立合约数据的目标容器std::vector<contract>m_contract;
[0149]
需要建立全部合约代码映射的下标索引容器。
[0150]
按特征提取中的分析,合约有6个特征维度,每个维度的区间值都在
’0’
~’z’之间;构建6维的索引容器,searchindex<6>m_contract_index。在输入合约代码后,getindex函数返回m_contract容器的下标索引。
[0151]
2)资金索引容器
[0152]
建立资金数据的目标容器std::vector<fundinfo>m_fund;需要按账户和资金类型建立全部资金账户的下标索引容器。
[0153]
账户编号为1开始的数字编号:1,2,3,4,5,.......;
[0154]
资金类型按币种进行编号:1:人民币;2:美元,....;
[0155]
则以资金账户编号为1维,资金类型为2维进行2维索引容器构建,searchindex<2>m_fund_index;
[0156]
在输入账户编号、资金类型后,getindex函数可以返回m_fund容器的下标索引。
[0157]
3)持仓索引容器
[0158]
建立持仓的目标容器std::vector<holdinfo>m_hold,需要按账户编号、合约下标索引、买卖方向、投保方向建立全部持仓的下标索引容器。
[0159]
账户编号同4.2;合约下标索引是m_contract中合约代码对应的从0开始的下标索引值。
[0160]
买卖方向:买:0;卖:1;
[0161]
投保方向:投机:0;保值:1;
[0162]
按以上4个关键要素建立4维索引容器,searchindex<4>m_hold_index。
[0163]
在输入账户编号、合约下标索引、买卖方向、投保方向后,getindex函数可以返回m_hold容器的下标索引。
[0164]
4)委托业务处理
[0165]
假设有一笔委托业务:
[0166]
账户:2;资金:人民币;合约:au2012;买卖方向:买;投保方向:投机;手数:5
[0167]
则相应的关联数据查找流程如下:
[0168]
业务关键要素规范化转换成特征id:
[0169]
合约:contracecode=“au2012”[0170]
账户编号:accid=2
[0171]
资金类型:fundtype=1
[0172]
买卖方向:buysell=0
[0173]
投保方向:hedge=0
[0174]
//合约数据查找
[0175]
int contract_index=m_contract.getindex(contracecode);
[0176]
//资金数据查找;
[0177]
int fund_index=m_fund.getindex(accid,fundtype);
[0178]
m_fund[fund_index]进行资金的冻结、扣减处理;
[0179]
//持仓数据查找
[0180]
int hold_index=m_hold.find(accid,contract_index,buysell,hedge);
[0181]
m_hold[hold_index]进行持仓的冻结、扣减处理;
[0182]
如果业务上还需要处理其它关联数据,则可以按上述内容构建相应的索引容器,之后在业务处理中按规范化转换特征值为id值后进行索引查找,从而快速的处理业务数据。
[0183]
本实施例中,通过上述的哈希算法进行数据查找具有速度快、构建简单以及适用性及扩展性强的优点。现分别进行介绍:
[0184]
1)速度快
[0185]
基于索引的快速查找是使用一维数组缓存的下标索引或指针查找目标数据,因此耗费的时间主要是在坐标转换哈希函数计算哈希索引值,耗时相比于常规的map容器,查询耗时平均值较小。使用新的算法进行关联数据查找,由于哈希函数运算简单且运算量小,因此获取关联数据快且耗时很小,相比常规的方法有很大的优势,满足交易业务极速处理的需求。
[0186]
2)构建简单
[0187]
只需要将提取的数据关键要素规范化转换为相应的特征值,之后使用多维特征空间可构建完整的目标索引容器,且只需要构建一次即可,后续可直接查询使用。
[0188]
3)适应性及扩展性强
[0189]
可以根据数据的关键要素多少而构建多维度的特征值,且可以自定义特征的规范化规则,使索引容器可以适用于各种场景。坐标转换哈希函数还可以根据不同的数据进行
修改,并不一定仅限于文中所定义的哈希函数,从而满足多维特征空间映射到一维空间的多样化。多维度、特征规范化可定制、坐标转换哈希函数可修改等使得该算法可扩展性及适应性强。
[0190]
可选地,在上述数据查找方法的实施例的基础上,本发明的另一实施例提供了一种数据查找装置,应用于处理器,所述处理器预先设置有多个存储区域,所述处理器为不同的字段集合设置有对应的存储区域,且所述存储区域用于存储所述字段集合的目标数据,所述存储区域设置有对应的位置索引值,所述位置索引值是通过预设处理规则,对所述字段集合处理得到。
[0191]
参照图5,所述数据查找装置包括:
[0192]
集合获取模块11,用于获取待查找字段集合;所述待查找字段集合包括多个预先设定的字段;
[0193]
数据处理模块12,用于依据预设处理规则,对所述待查找字段集合进行处理,得到位置索引值;所述预设处理规则包括依据每一所述字段的字段值,确定所述待查找字段集合的多维特征值,以及依据预设降维规则,对所述多维特征值进行降维处理,将降维处理结果作为位置索引值;
[0194]
结果确定模块13,用于确定存储在所述位置索引值对应的存储区域的目标数据,并将所述目标数据确定为所述待查找字段集合对应的查询结果。
[0195]
进一步,所述数据处理模块包括:
[0196]
数据获取子模块,用于获取所述待查找字段集合对应的字段最小值;
[0197]
数据计算子模块,用于依据预先设定的特征值计算规则、所述字段最小值以及所述待查找字段集合中每一字段的字段值,计算所述待查找字段集合中每一字段的特征值;
[0198]
特征确定子模块,用于将所述待查找字段集合中每一字段的特征值组合得到所述待查找字段集合的多维特征值。
[0199]
进一步,所述数据计算子模块具体用于:
[0200]
获取所述待查找字段集合的字段类型,并确定与所述字段类型对应的特征值计算规则,依据所述特征值计算规则、所述字段最小值以及所述待查找字段集合中每一字段的字段值,计算所述待查找字段集合中每一字段的特征值。
[0201]
进一步,所述数据处理模块包括:
[0202]
降维子模块,用于获取预先设定的索引值计算公式,并调用所述索引值计算公式对所述多维特征值进行降维计算,得到降维结果;
[0203]
结果确定子模块,用于将所述降维处理结果确定为位置索引值。
[0204]
进一步,降维子模块具体用于:
[0205]
获取预先生成的维度乘数计算公式以及位置索引值计算公式,获取所述待查找字段集合对应的字段最小值和字段最大值,依据所述字段最小值、所述字段最大值以及所述维度乘数计算公式,计算得到维度乘数值,依据所述维度乘数值以及所述位置索引值计算公式,计算得到所述多维特征值的降维结果。
[0206]
本实施例中,在进行数据查找时,确定待查找字段集合的多维特征值,并依据预设降维规则,对多维特征值进行降维处理,将降维处理结果作为位置索引值,确定存储在位置索引值对应的存储区域的目标数据,并将目标数据确定为待查找字段集合对应的查询结
果。本发明中,直接确定待查找字段集合的位置索引值,然后,确定存储在所述位置索引值对应的存储区域的目标数据即可,本发明中的处理和查找操作,相比于在容器中遍历key的方式,数据处理速度较快,数据查找时间较短,进而能够缩短业务处理时间,对紧急业务的适用性更好。
[0207]
需要说明的是,本实施例中的各个模块和子模块的工作过程,请参照上述实施例中的相应说明,在此不再赘述。
[0208]
可选地,在上述数据查找方法的实施例的基础上,本发明的另一实施例提供了一种电子设备,所述电子设备预先设置有多个存储区域,所述处理器为不同的字段集合设置有对应的存储区域,且所述存储区域用于存储所述字段集合的目标数据,所述存储区域设置有对应的位置索引值,所述位置索引值是通过预设处理规则,对所述字段集合处理得到;所述电子设备包括:存储器和处理器;
[0209]
其中,所述存储器用于存储程序;
[0210]
处理器调用程序并用于:
[0211]
获取待查找字段集合;所述待查找字段集合包括多个预先设定的字段;
[0212]
依据预设处理规则,对所述待查找字段集合进行处理,得到位置索引值;所述预设处理规则包括依据每一所述字段的字段值,确定所述待查找字段集合的多维特征值,以及依据预设降维规则,对所述多维特征值进行降维处理,将降维处理结果作为位置索引值;
[0213]
确定存储在所述位置索引值对应的存储区域的目标数据,并将所述目标数据确定为所述待查找字段集合对应的查询结果。
[0214]
进一步,依据每一所述字段的字段值,确定所述待查找字段集合的多维特征值,包括:
[0215]
获取所述待查找字段集合对应的字段最小值;
[0216]
依据预先设定的特征值计算规则、所述字段最小值以及所述待查找字段集合中每一字段的字段值,计算所述待查找字段集合中每一字段的特征值;
[0217]
将所述待查找字段集合中每一字段的特征值组合得到所述待查找字段集合的多维特征值。
[0218]
进一步,依据预先设定的特征值计算规则、所述字段最小值以及所述待查找字段集合中每一字段的字段值,计算所述待查找字段集合中每一字段的特征值,包括:
[0219]
获取所述待查找字段集合的字段类型,并确定与所述字段类型对应的特征值计算规则;
[0220]
依据所述特征值计算规则、所述字段最小值以及所述待查找字段集合中每一字段的字段值,计算所述待查找字段集合中每一字段的特征值。
[0221]
进一步,依据预设降维规则,对所述多维特征值进行降维处理,将降维处理结果作为位置索引值,包括:
[0222]
获取预先设定的索引值计算公式,并调用所述索引值计算公式对所述多维特征值进行降维计算,得到降维结果;
[0223]
将所述降维处理结果确定为位置索引值。
[0224]
进一步,获取预先设定的索引值计算公式,并调用所述索引值计算公式对所述多维特征值进行降维计算,得到降维结果,包括:
[0225]
获取预先生成的维度乘数计算公式以及位置索引值计算公式;
[0226]
获取所述待查找字段集合对应的字段最小值和字段最大值;
[0227]
依据所述字段最小值、所述字段最大值以及所述维度乘数计算公式,计算得到维度乘数值;
[0228]
依据所述维度乘数值以及所述位置索引值计算公式,计算得到所述多维特征值的降维结果。
[0229]
本实施例中,在进行数据查找时,确定待查找字段集合的多维特征值,并依据预设降维规则,对多维特征值进行降维处理,将降维处理结果作为位置索引值,确定存储在位置索引值对应的存储区域的目标数据,并将目标数据确定为待查找字段集合对应的查询结果。本发明中,直接确定待查找字段集合的位置索引值,然后,确定存储在所述位置索引值对应的存储区域的目标数据即可,本发明中的处理和查找操作,相比于在容器中遍历key的方式,数据处理速度较快,数据查找时间较短,进而能够缩短业务处理时间,对紧急业务的适用性更好。
[0230]
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1