CN109983456B - 存储器内密钥范围搜索方法和系统 - Google Patents
存储器内密钥范围搜索方法和系统 Download PDFInfo
- Publication number
- CN109983456B CN109983456B CN201680090849.XA CN201680090849A CN109983456B CN 109983456 B CN109983456 B CN 109983456B CN 201680090849 A CN201680090849 A CN 201680090849A CN 109983456 B CN109983456 B CN 109983456B
- Authority
- CN
- China
- Prior art keywords
- key
- tree
- index
- map
- range
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 84
- 230000015654 memory Effects 0.000 title claims abstract description 52
- 238000012545 processing Methods 0.000 claims abstract description 122
- 238000013507 mapping Methods 0.000 claims abstract description 48
- 230000004044 response Effects 0.000 claims description 28
- 230000006870 function Effects 0.000 description 28
- 230000008569 process Effects 0.000 description 21
- 238000004891 communication Methods 0.000 description 9
- 229920002239 polyacrylonitrile Polymers 0.000 description 9
- 201000006292 polyarteritis nodosa Diseases 0.000 description 9
- 101150064138 MAP1 gene Proteins 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 3
- 238000003780 insertion Methods 0.000 description 3
- 230000037431 insertion Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- FMFKNGWZEQOWNK-UHFFFAOYSA-N 1-butoxypropan-2-yl 2-(2,4,5-trichlorophenoxy)propanoate Chemical compound CCCCOCC(C)OC(=O)C(C)OC1=CC(Cl)=C(Cl)C=C1Cl FMFKNGWZEQOWNK-UHFFFAOYSA-N 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000135 prohibitive effect Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9027—Trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2474—Sequence data queries, e.g. querying versioned data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/248—Presentation of query results
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Organic Low-Molecular-Weight Compounds And Preparation Thereof (AREA)
Abstract
本发明的一个实施例涉及一种用于在分布式计算系统中执行高效密钥范围搜索的方法。所述方法可包括接收第一密钥(例如文字数字标识符)。可从多个密钥范围树映射中识别与所述第一密钥相关联的密钥范围树映射。在一些实施例中,个别密钥范围树映射将一组最小范围值映射到一组索引值。所述方法还可包括使用所确定的密钥范围树映射确定与第二密钥相关联的索引值。可使用所述索引值确定与所述第一密钥相关联的交易处理数据并将所述交易处理数据提供到请求源。如本文所描述,利用所述多个密钥范围树映射使得能够使用电子装置的板载存储器执行密钥范围搜索。
Description
背景
分布式计算系统通常用于管理和处理大型数据集。分布式计算系统可将数据库分布在若干计算机上,所述计算机通过高速网络等各种通信介质彼此通信。分布式数据库系统可由单个逻辑数据库组成,所述逻辑数据库可拆分为不同片段,每个片段被存储在分布式计算系统的单个计算机(例如节点)上。分布式计算系统可能会面临如何管理和/或访问大型数据集的挑战。例如,协调计算机之间的任务所需的信息交换和额外计算是一种在集中式系统中不会出现的开销。另外,分布式计算系统可能容易出现错误,因为当数据集在分布式计算系统的许多计算机上扩散时,更加难以确保算法的正确性。
用于执行密钥范围搜索的当前技术可包含为密钥范围构建搜索树。然而,维持一大组密钥范围的搜索树的存储器开销可能不切实际,甚至是禁止的,在密钥自身具有较大的大小(例如22字节)时尤其如此。搜索树(以及其它容器,例如树映射和散列映射)还有可能受制于特定存储器约束条件,从而使得大数据集的存储无效。例如,当将条目插入到搜索树中时,可能需要对树进行排序或重新生成以保留搜索功能。然而,在添加、删除和/或修改条目时重构建或重排搜索树可能导致资源的大量利用,且可能提供不准确的搜索结果或延迟的处理。在一些实例中,可构建散列表以将范围中的每个可能的值映射到其对应的数据。然而,此类散列表将利用昂贵的存储器,且同样会面临与表管理相关的开销问题。另外,此类搜索树和/或散列表可能过大(例如5 TB)而无法加载到分布式计算系统中的节点的存储器(例如128 GB的随机存取存储器(RAM))中,因此,它们通常存储在集中式位置中。在这些情境中搜索密钥范围可能需要大规模计算,且可能产生变化的搜索时间,因为搜索的数据大小很大,且许多系统可能在相同时间尝试访问数据。因此,可对数据集和分布式计算系统进行改进,以提供更高效的搜索时间。
本发明的实施例单独地以及共同地解决这些问题和其它问题。
发明内容
本发明的一个实施例涉及一种包括接收第一密钥的方法。所述方法还可包括从多个密钥范围树映射中识别与第一密钥相关联的密钥范围树映射,个别密钥范围树映射将一组最小范围值映射到一组索引值。所述方法还可包括使用所确定的密钥范围树映射确定与第二密钥相关联的索引值,所述第二密钥与第一密钥相关联。所述方法还可包括使用索引值确定与第一密钥相关联的交易处理数据,其中利用多个密钥范围树映射使得能够使用电子装置的板载存储器执行密钥范围搜索。所述方法还可包括提供所确定的与第一密钥相关联的交易处理数据。
本发明的另一实施例涉及一种包括一个或多个管理器节点、多个工作节点和集中式数据存储区的系统。一个或多个管理器节点个别地包括第一处理器和耦合到第一处理器的第一计算机可读介质,所述第一计算机可读介质包括可由第一处理器执行以实施第一方法的代码。第一方法可包括接收请求消息,所述请求消息包括第一密钥。第一方法还可包括将请求消息的至少一部分传输到多个工作节点中的一个或多个工作节点。第一方法还可包括接收与请求消息相关联的响应消息。第一方法还可包括传输响应消息。多个工作节点中的工作节点可个别地包括第二处理器和耦合到第二处理器的第二计算机可读介质,所述第二计算机可读介质包括可由第二处理器执行以实施第二方法的代码。第二方法可包括使用第一密钥和散列映射来识别多个树映射中的树映射。第二方法还可包括使用所识别的树映射确定与第二密钥相关联的索引值,其中使用所识别的树映射使得能够使用工作节点的板载存储器确定所述索引值。第二方法还可包括利用索引值和索引列表确定与第二密钥相关联的交易处理数据。第二方法还可包括提供所确定的交易处理数据。
本发明的另一实施例涉及一种包括一个或多个管理器节点、多个工作节点和集中式数据存储区的系统。一个或多个管理器节点个别地包括第一处理器和耦合到第一处理器的第一计算机可读介质,所述第一计算机可读介质包括可由第一处理器执行以实施第一方法的代码。第一方法可包括接收请求消息,所述请求消息包括第一密钥。第一方法还可包括使用第一密钥和散列映射来识别多个树映射中的树映射。第一方法还可包括向多个工作节点中的工作节点发送信息,所述信息包括第一密钥,所述工作节点对应于所识别的树映射。第一方法还可包括接收与请求消息相关联的响应消息。第一方法还可包括传输响应消息。多个工作节点中的工作节点可个别地包括第二处理器和耦合到第二处理器的第二计算机可读介质,所述第二计算机可读介质包括可由第二处理器执行以实施第二方法的代码。第二方法可包括使用所识别的树映射确定与第二密钥相关联的索引值,其中使用所识别的树映射使得能够使用工作节点的板载存储器确定所述索引值。第二方法还可包括利用索引值和索引列表确定与第二密钥相关联的交易处理数据。第二方法还可包括提供所确定的交易处理数据。集中式数据存储区可供所述一个或多个管理器节点和所述多个工作节点访问。集中式数据存储区可存储索引列表,所述索引列表包括交易处理数据。
本发明的另一实施例涉及一种电子装置,所述电子装置包括处理器和耦合到处理器的计算机可读介质,所述计算机可读介质包括可由处理器执行以实施方法的代码。所述方法可包括接收与数据集相关联的标识符。所述方法还可包括由数据集生成索引列表,所述索引列表将多个索引值映射到数据集的多个交易处理数据。所述方法还可包括存储索引列表。对于索引列表的每个条目,所述方法还可包括确定与索引列表的条目相关联的范围的最小范围值。所述方法还可包括更新树映射,所述树映射包括最小范围值和与索引列表的条目相关联的索引值。所述方法还可包括用与最小范围值相关联的文字数字标识符和树映射的标识符更新散列映射。
本发明的另一实施例涉及一种电子装置,所述电子装置包括处理器和耦合到处理器的计算机可读介质,所述计算机可读介质包括可由处理器执行以实施方法的代码。所述方法可包括接收与数据集相关联的标识符。所述方法还可包括由数据集生成索引列表,所述索引列表将多个索引值映射到数据集的多个交易处理数据。所述方法还可包括存储索引列表。对于索引列表的每个条目,所述方法还可包括确定与索引列表的条目相关联的范围的最小范围值。所述方法还可包括发送包括最小范围值和与索引列表的条目相关联的索引值的树映射更新请求消息,其中所述树映射更新请求消息的接收使树映射通过最小范围值和与索引列表的条目相关联的索引值被更新。所述方法还可包括用与最小范围值相关联的文字数字标识符和树映射的标识符更新散列映射。
下文进一步详细描述本发明的这些和其它实施例。
附图说明
图1描绘根据至少一些实施例的实例分布式计算环境。
图2描绘能够实施分布式计算系统的管理器节点的至少一些实施例的实例计算机架构。
图3示出能够实施分布式计算系统的工作节点的至少一些实施例的实例计算机架构。
图4示出描绘数个算法效率的实例图。
图5示出可由根据至少一个实施例的分布式计算系统利用的第一实例数据结构。
图6示出可由根据至少一个实施例的分布式计算系统利用的第二实例数据结构。
图7示出可由根据至少一个实施例的分布式计算系统利用的第三实例数据结构。
图8示出可由根据至少一个实施例的分布式计算系统利用的第四实例数据结构。
图9示出流程图,所述流程图示出根据至少一个实施例的用于将数据集的部分分布在一组节点当中的实例过程。
图10示出流程图,所述流程图示出根据至少一个实施例的利用图5到7的数据结构进行搜索的实例过程。
实施方式
在以下描述中,将描述各种实施例。出于解释的目的,阐述特定配置和细节以便提供对实施例的透彻理解。然而,所属领域的技术人员也应清楚,可在无所述特定细节的情况下实践实施例。此外,可能省略或简化众所周知的特征以免使描述的实施例模糊不清。
在论述本发明的一些实施例的细节之前,对一些术语的描述可有助于理解各种实施例。
“分布式计算系统”可指以通信方式彼此耦合的电子装置的集合。在一些实施例中,较大数据集的子集可分布在分布式计算系统当中(例如在系统的节点内的存储器上)。电子装置的集合可用于执行各种功能(例如任务)。在一些实例中,电子装置的集合可包含一个或多个管理器节点、一个或多个工作节点和/或一个或多个数据库。
“管理器节点”可以是可用于管理分布式计算系统中的其它节点(例如工作节点)的电子装置。在一些实例中,管理器节点可负责将工作(例如任务)分派给分布式计算系统中的一个或多个其它节点(例如工作节点)。在一些实例中,管理器节点可维持将密钥(例如账户标识符)映射到值(例如散列映射)的映射(例如散列映射)。例如,管理器节点可维持将账户标识符接收为输入并输出用于另一散列映射的标识符的散列映射。管理器节点可负责确定对应于密钥(例如账户标识符)的所识别的散列映射的所在位置(例如分布式计算系统中的特定节点)。管理器节点可将信息(例如请求消息)传输到分布式计算系统中的各种节点,并且可在完成对应的任务时或在另一合适的时间从各种节点接收信息(例如响应消息)。
“工作节点”可以是可用于处理分布式计算系统中的数据(例如任务)的电子装置。在一些实例中,工作节点可从管理器节点接收信息(例如请求消息)。工作节点可负责执行各种操作以便执行功能(例如查找数据)。在处理请求时或在另一合适的时间,工作节点可向分布式计算系统中的另一节点(例如管理器节点)传输信息(例如响应消息)。在至少一些实例中,工作节点可包含其在处理期间可利用的一些量(例如,128千兆字节(GB)、1太字节(TB)等)的板载存储器(例如RAM)。
“交易处理数据”可包含与交易相关联的数据。此数据可指与密钥相关联的任何合适的数据。在一些实施例中,交易处理数据可以是与用户相关联的支付账户数据。在一些实施例中,交易处理数据可包含配送地址、开单地址或与消费者相关联的其它相关信息。在一些实例中,交易处理数据可包含一个或多个账户标识符。在一些实施例中,账户标识符可以是支付卡号(PAN)和/或主账号。PAN可以是14、16或18位的。交易处理数据还可包含与账户相关联的有效期,以及服务代码和/或验证值(例如,CVV、CVV2、dCVV和dCVV2值)。另外或替代地,交易处理数据可包含过去的购买信息、与网站使用相关的导航信息、与账户相关联的欺诈交易规则,或可进行搜索的任何合适的数据。此类数据可能或可能不会涉及消费者账户/交易。
“协议集”可以是指示允许和/或应当执行一个或多个动作的规则或配置设置的集合。在一些情况下,协议集可包含要执行那些动作所基于的条件。在一些实施例中,协议集可包含条件语句,例如“如果x_condition发生,则执行y_action”。在一些实施例中,协议集可包含策略,所述策略用于指定涉及检测到欺诈交易时应何时执行特定动作和/或应执行何种特定动作。在一些实例中,所述协议集可与其它协议集一起存储在协议集存储容器中。
“请求消息”是可包含请求数据(例如交易处理数据、欺诈交易协议集等)时所必要的任何合适的信息的电子消息。在一些实施例中,请求消息可被引导到分布式计算系统的管理器节点和/或分布式计算系统的节点之间(例如,管理器与工作器之间、工作器与工作器之间等)在一些实施例中,请求消息可包含要用以搜索所请求的数据的一个或多个密钥(例如账户标识符、卡号等)。
“响应消息”可包含提供与请求消息相关的数据所必要的任何合适的信息。例如,响应消息可包含请求的数据(例如交易处理数据、欺诈交易协议集等)。
“散列映射”可包含可用于实施关联阵列的数据结构,是可将密钥映射到值的数据结构。散列映射可以是未排序密钥集合。散列映射可利用散列函数将索引计算成密钥阵列,从所述阵列中可找到所要值(例如与特定密钥相关联的值)。在至少一个实例中,散列映射可在用于执行搜索时提供O(1)算法复杂度。
“密钥”可包含可与值相关联的任何合适的数据(例如,账户标识符、文字数字标识符、数据对象、社会保障号、名称等)。
“树映射”可包含将密钥映射到值并根据其密钥的固有次序进行排序的数据结构。在插入和/或去除树映射的条目(例如密钥/值对)时,树映射将进行重排序以确保密钥始终有序。
“算法复杂度”是指特定算法执行的快慢程度。例如,算法的平均情况运行时复杂度是由在大小为x的任何实例上取得的集的平均数定义的函数。如果不论输入大小都需要相同的时间量,则将算法称为以恒定时间运行。例如,访问阵列中的元素是以恒定时间运行的(另外标示为“O(1)”),因为访问阵列的元素并不取决于阵列中存储多少元素。下文相对于图4进一步论述算法复杂度。
由O(x)表示的“大O记法”表示算法的性能或复杂度。具体地说,大O记法描述最坏情况情境,且可用于描述算法所需的执行时间或所用的空间(例如,存储器内或磁盘上)。换句话说,大O记法描述函数在变量参数趋向于特定值或无穷大时的限制行为。大O记法通常用于根据算法对输入大小改变的响应方式,例如算法的处理时间在问题大小变得极其大时的改变方式,来对算法进行分类。
“树映射更新请求消息”可包含关于树映射的创建和/或修改的信息。例如,树映射更新请求消息可包含可存储在例如分布式计算环境中的工作节点上的树映射中的密钥(例如最小PAN)和值(例如索引值)。
“最小PAN”可指对应于范围的最小范围值。尽管本文实例使用最小PAN,其为主账号范围的最小范围值,但可利用任何合适的范围(例如社会保障范围、整数范围、距离范围、温度范围等等),在此情况下,最小PAN仅指范围中的下限范围值。
“树映射更新响应消息”可包含关于树映射更新请求的成功性的指示。例如,树映射更新响应消息可指示更新成功或是不成功。在一些实例中,如果更新不成功,则树映射更新响应消息可包含关于更新为何不成功的指示(例如存储器已满、密钥已经存在等)。
“最大PAN”可指对应于范围的最大范围值。尽管本文实例使用最大PAN,其为主账号范围的最大范围值,但可利用任何合适的范围(例如社会保障范围、整数范围、距离范围、温度范围等等),在此情况下,最大PAN仅指范围中的上限范围值。
“索引列表”可以是将密钥(例如,索引值)映射到值的数据结构。在至少一个实例中,索引列表可以是将索引值映射到交易处理数据的阵列。在另一实例中,索引列表可以是将索引值映射到最大PAN的阵列。在至少一个实例中,索引列表可在用于执行搜索时提供O(1)算法复杂度。
“用户装置”可以是由用户操作的电子装置。用户装置的实例可包含移动电话、智能电话、个人数字助理(PDA)、笔记本电脑、台式计算机、服务器计算机、例如汽车的车辆、精简客户端装置、平板PC等。另外,用户装置可以是任何类型的可穿戴技术装置,例如手表、耳机、眼镜等。用户装置可包含能够处理用户输入的一个或多个处理器。用户装置还可包含用于接收用户输入的一个或多个输入传感器。用户装置可包括可由用户操作的任何电子装置,所述电子装置还可提供与网络的远程通信能力。远程通信能力的实例包含使用移动电话(无线)网络、无线数据网络(例如3G、4G或类似网络)、Wi-Fi、Wi-Max,或可提供对互联网或私用网络等网络的访问的任何其它通信介质。
“服务器计算机”可包含功能强大的计算机或计算机集群。例如,服务器计算机可以是大型主机、小型计算机集群或作为一个单元运作的一组服务器。在一个实例中,服务器计算机可以是耦合到网络服务器的数据库服务器。服务器计算机可耦合到数据库,且可包含用于服务来自一个或多个客户端计算机的请求的任何硬件、软件、其它逻辑或前述内容的组合。服务器计算机可包括一个或多个计算设备,且可使用各种计算结构、布置和编译中的任一种来服务来自一个或多个客户端计算机的请求。
“处理器”可指任何合适的一个或多个数据计算装置。处理器可包括一起工作以实现所要功能的一个或多个微处理器。处理器可包含CPU,所述CPU包括足以执行用于执行用户和/或系统生成的请求的程序组件的至少一个高速数据处理器。所述CPU可以是微处理器,例如AMD的速龙(Athlon)、钻龙(Duron)和/或皓龙(Opteron);IBM和/或摩托罗拉(Motorola)的PowerPC;IBM和索尼(Sony)的Cell处理器;英特尔(Intel)的赛扬(Celeron)、安腾(Itanium)、奔腾(Pentium)、至强(Xeon)和/或XScale;和/或类似处理器。
“存储器”可以是可存储电子数据的任何合适的一个或多个装置。合适的存储器可包括非暂时性计算机可读介质,其存储可由处理器执行以实现所要方法的指令。存储器的实例可包括一个或多个存储器芯片、磁盘驱动器等等。此类存储器可使用任何合适的电、光和/或磁操作模式来操作。
现在将描述本发明的一些实施例的细节。
由于分布式计算系统被广泛用于管理大型数据集,因此执行高效密钥范围搜索的能力是相当重要的。
具体地说,
将密钥范围(例如从最小密钥到最大密钥)映射到特定数据(例如交易处理数据)的能力是交易处理系统的重要成分。例如,密钥可以是文字数字标识符,例如社会保障号、温度、主账号(PAN)等等,且密钥范围可映射到进行交易处理所需的信息(例如对应于社会保障号范围的信息、在交易存在欺诈性时用于进行确定的协议集等)。当密钥范围的数量变大时,对特定密钥范围的搜索可能是一种计算量大的操作。在当前系统中,主数据库可由分布式计算系统的每个节点访问。然而,此类方式会带来挑战。例如,维持磁盘上的主数据库可能产生变化的搜索时间,因为数据集较大且难以搜索。实施搜索的另一方式是为密钥范围构建搜索树,其可能提供与提供高效搜索时间有关的各种缺点,还可能在计算上代价较大。另外,由于容器的存储器约束条件,数据集可能过大而无法存储在容器(例如散列映射、树映射、索引列表等)中。为了保留搜索树在实际存储器约束条件内提供的效率,可将一组密钥范围分隔为易处理子集,每个子集与较小搜索树相关联。不大直观地,这需要引入额外的映射,包含密钥到相关联密钥范围树映射分区的散列映射,其中密钥范围树映射将密钥映射到可用于获得最大密钥范围的索引值(当密钥范围不连续时)。索引值还可用以获得与密钥范围相关联的交易处理数据。通过利用这些自定义数据结构,可高效地(例如以O(logn)算法复杂度)执行密钥范围搜索。虽然对于金融交易处理尤其有用,但本发明广泛适用于使用具有大数量的密钥范围和大的密钥大小的密钥范围树映射的应用。例如,虽然本文所描述的实例利用主账户范围和密钥,但可使用其它范围,例如社会保障范围、温度范围,或具有最小范围值和最大范围值的值的任何合适范围。
本发明的实施例涉及可用于管理分布式计算系统的一组节点上的数个数据结构的方法和系统。本文所描述的数据结构的利用使分布式计算系统能够将数据集分布在一组节点当中,以便在执行数据搜索时提供恒定O(log n)算法效率。在一些实施例中,系统可接收数据集标识信息,其指定要分布的数据集和/或数据集的位置。系统可将数据集分成更小部分以存储在一组节点上的自定义数据结构中。在一些实例中,系统可确定一组节点(例如,分布式计算系统的某一部分节点)中的每个节点上的可用存储空间,且根据每个节点上的可用存储空间生成本文所描述的数据结构。在至少一个实施例中,系统可使提供索引列表(例如阵列)的数据结构被创建,所述索引列表将索引值映射到交易处理数据(例如所请求的数据)。系统还可使提供单独索引列表(例如另一阵列)的数据结构被创建,所述单独索引列表将索引值映射到最大PAN(或其它合适的值)。在至少一个实例中,交易处理数据和其对应的最大PAN可各自位于其相应索引列表内的相同索引(例如共同索引值)处。另外,系统可使得在一组节点(例如,工作节点)上维持一组树映射,所述一组树映射中的个别树映射提供密钥(例如最小PAN)到索引值(例如索引列表中的索引值)的映射。系统还可使相同或不同组节点(例如一个或多个管理器节点)上的处理器维持散列映射,所述散列映射将密钥(例如PAN、账户标识符等)映射到树映射(例如包含对应的最小PAN到索引值的映射的树映射)。
在至少一个实施例中,系统(例如分布式计算系统)可接收与密钥(例如PAN、账户标识符、文字数字标识符等)相关联的交易处理数据的请求消息。在至少一个实例中,请求消息可由分布式系统的管理器节点接收。管理器节点可将请求(例如账户标识符)的某一部分转发到分布式计算系统的工作节点。工作节点可利用散列函数对密钥进行散列化以确定散列化密钥。散列化密钥可用于返回对应于密钥的树映射标识符。工作节点可利用密钥(例如PAN)确定对应于密钥的最小PAN。例如,如果PAN是“4444 4454 9864 1222”,则与账号相关联的最小PAN可以是“4444 4444 4444 4444”。通过将最小PAN提供为所识别的树映射的输入并接收与最小PAN相关联的索引号的输出,工作节点就可利用最小PAN来确定索引值。在一些实例(例如,其中各范围之间,最小PAN到最大PAN范围并不一致的实例)中,工作节点则可利用返回的索引值以便从第一索引列表(例如将索引值映射到最大PAN的索引列表)中检索值(例如最大PAN)。工作节点还可利用索引值以便从第二索引列表(例如将索引值映射到交易处理数据的索引列表)检索值(例如交易处理数据)。从第二索引列表检索到的值可返回与最小PAN/最大PAN密钥范围相关联的交易处理数据。在至少一个实例中,第一和第二索引列表可存储在工作节点的存储器(例如RAM)中。可将返回的交易处理数据提供到管理器节点,且最终提供到发起请求消息的用户装置。
在至少一个实施例中,系统(例如分布式计算系统)可接收与密钥(例如PAN、账户标识符、文字数字标识符等)相关联的交易处理数据的请求消息。在至少一个实例中,请求消息可由分布式系统的管理器节点接收。管理器节点可利用散列函数对密钥进行散列化以确定散列化密钥。散列化密钥可用于返回对应于密钥的树映射位置或树映射标识符(例如通过将散列化密钥提供到由管理器节点存储的散列映射并且接收由散列映射返回的位置/标识符)。管理器节点可利用返回的位置或标识符将请求消息提供到分布式计算系统的特定工作节点。在接收到请求消息时或在另一合适的时间,工作节点可利用密钥(例如PAN)确定对应于密钥的最小PAN。通过将最小PAN提供为树映射的输入并接收与最小PAN相关联的索引号的输出,工作节点就可利用最小PAN来确定索引值。在一些实例(例如,其中各范围之间,最小PAN到最大PAN范围并不一致的实例)中,工作节点则可利用返回的索引值以便从第一索引列表(例如将索引值映射到最大PAN的索引列表)中检索值(例如最大PAN)。工作节点还可利用索引值以便从第二索引列表(例如将索引值映射到交易处理数据的索引列表)检索值(例如交易处理数据)。从第二索引列表检索到的值可返回与最小PAN/最大PAN密钥范围相关联的交易处理数据。在一些实例中,第一和/或第二索引列表可存储在工作节点的存储器(例如RAM)中和/或集中式存储位置中。可将返回的交易处理数据提供到管理器节点,且最终提供到发起请求消息的用户装置。
图1描绘根据至少一些实施例的实例分布式计算环境100。分布式计算环境100可包括由用户104操作的一个或多个用户装置102(1)到102(N)(以下称作用户装置102)。用户装置102还可通过网络106与分布式计算系统108通信。用户装置102可由用户104中的一个或多个用户操作,以通过网络106访问分布式计算系统108。用户装置102可以是能够与网络106通信的任何合适的装置。例如,用户装置102可以是任何合适的计算装置,例如但不限于移动电话、智能电话、个人数字助理(PDA)、笔记本电脑、精简客户端装置、平板PC、台式计算机、机顶盒或其它计算装置。
分布式计算系统108可具有任何合适的特性。分布式计算系统108可包含一个或多个管理器节点(例如管理器节点110)、一个或多个工作节点(例如工作节点112)以及一个或多个集中式数据存储区(例如集中式数据存储区122),以用于执行本文所描述的功能。管理器节点110和工作节点112彼此可通信耦合。结合数据处理,管理器节点110可包含管理模块114,所述管理模块被配置成执行包含以下各项的功能:接收/处理/传输请求消息;接收/处理/传输响应消息;接收/处理/传输散列映射更新请求/响应消息;维持一个或多个数据结构;以及使一个或多个其它数据结构维持在工作节点112和/或集中式数据存储区122中。管理器节点110还可包含分布式数据存储区116,其被配置成存储一个或多个数据结构。例如,分布式数据存储区116可被配置成存储将密钥(例如PAN、账户标识符、文字数字标识符等)映射到树映射(例如存储在工作节点112的分布式数据存储区120上的树映射,下文进一步论述)的散列映射。在至少一个实例中,分布式数据存储区116可以是管理器节点110的随机存取存储器(RAM)。
结合数据处理,工作节点112可包含执行模块118。执行模块118可被配置成执行包含以下各项的功能:接收和处理请求消息;传输响应消息;接收树映射更新请求消息;传输树映射更新响应消息;以及维持与较大数据集相关联的一个或多个数据结构。工作节点112还可包含分布式数据存储区120。分布式数据存储区120可被配置成存储与较大数据集和/或任何合适的信息相关联的一个或多个数据结构。例如,分布式数据存储区120可被配置成存储:将密钥(例如PAN)映射到值的散列映射(例如树映射);个别地将密钥(例如最小PAN)映射到索引值的一个或多个树映射;将索引值映射到最大PAN(或其它合适的数据)的一个或多个索引列表;和/或将索引值映射到交易处理数据的一个或多个索引列表。在至少一个实例中,分布式数据存储区120可以是工作节点112的随机存取存储器(RAM)。
分布式计算系统108还可包含集中式数据存储区(例如,集中式数据存储区122)。集中式数据存储区可被配置成存储与较大数据集相关联的一个或多个数据结构。例如,集中式数据存储区122可被配置成存储一个或多个索引列表。例如,集中式数据存储区122可存储将索引值映射到交易处理数据(欺诈交易协议集)或任何合适的数据的索引列表。另外或替代地,集中式数据存储区122可存储将索引值映射到最大PAN的索引列表。在至少一个实施例中,集中式数据存储区122可以由管理器节点110和/或工作节点112访问。集中式数据存储区122未必需要由单个装置提供,而替代地可由数个装置提供。
图1中的计算机、网络和装置之间的消息可使用安全通信协议来传输,所述安全通信协议例如但不限于:文件传输协议(FTP);超文本传输协议(HTTP);安全超文本传输协议(HTTPS);安全套接层(SSL);ISO(例如,ISO 8583)和/或其类似者。
图1中的每个实体可通过任何合适的通信信道或通信网络(例如,网络106)通信。合适的通信网络可以是下列中的任一个和/或其组合:直接互连;互联网;局域网(LAN);城域网(MAN);作为互联网上节点的运行任务(OMNI);安全自定义连接;广域网(WAN);无线网络(例如,采用例如但不限于无线应用协议(WAP)、I-模式和/或其类似者的协议);和/或其类似者。
图2描绘能够实施图1的分布式计算系统108的管理器节点(例如,图1的管理器节点110)的至少一些实施例的实例计算机架构200。管理器节点110可个别地包含处理器和耦合到处理器的计算机可读介质,所述计算机可读介质包括可由处理器执行以执行本文中描述的功能的代码。应了解,相对于图2的模块描述的任何功能可进行组合以由单个模块执行,或可由管理器节点110外部的模块执行。图2示出以通信方式耦合到集中式数据存储区122的管理器节点110。集中式数据存储区122可如图2中所描绘进行配置,或集中式数据存储区122可完全或部分地被提供为管理器节点110的部分。分布式数据存储区116、集中式数据存储区122(以及本文所描述的任何其它数据库)可以是常规的、容错的、关系的、可扩展的安全数据库,例如Oracle™或Sybase™。在至少一个实例中,分布式数据存储区116和/或集中式数据存储区122(以及本文所描述的任何其它数据库)可以是HadoopTM分布式文件系统,其被设计成可靠地存储极大数据集并以高带宽向用户应用程序流式传输那些数据集。可使用例如阵列、散列映射、(链接)列表、结构化文本文件(例如XML)、表格和/或类似的各种数据结构来实施分布式数据存储区116和/或集中式数据存储区122。此类数据结构可存储在存储器中和/或结构化的文件中。
管理器节点110可包括处理器204,所述处理器可耦合到系统存储器206和外部通信接口208。计算机可读介质210也可操作地耦合到处理器204。
计算机可读介质210可包括数个软件模块,包含分布模块212和搜索处理模块214。可利用更多或更少模块来执行本文所描述的功能。
分布模块212可包括在被执行时使处理器204确定数据集的部分的分布的代码。例如,分布模块212可被配置成使处理器204接收分布数据集的部分的请求。所述请求可包含数据集的标识符。响应于请求,分布模块212可被配置成使处理器204访问所识别的(例如存储在集中式数据存储区122或另一合适的位置中的)数据集并且生成一个或多个数据结构(例如图5到8的数据结构的某一组合)以存储数据集的一部分。例如,分布模块212可被配置成使处理器204执行代码以生成索引列表(例如下文论述的数据结构800)。索引列表可将索引值(例如0、1、2、3等)映射到值(例如数据集的交易处理数据)。例如,分布模块212可被配置成使处理器204按交易处理数据创建/接收的次序生成交易处理数据的索引列表。分布模块212可被配置成使处理器204将索引列表存储在存储器中(例如工作节点112上、集中式数据存储区122上,等)。在最小PAN/最大PAN范围变化和/或不连续的实例中,分布模块212可被配置成使处理器204生成最大PAN的额外索引列表(例如下文论述的数据结构700)。作为简单实例,考虑最小PAN/最大PAN范围如下:0-100、101-150、151-160、161-200、210-300等。在此实例中,因为范围变化且不连续,所以需要将索引值映射到最大PAN的索引列表。在范围连续的实例中,可能无需额外索引列表,因为前一范围的最大PAN始终比下一个范围的最小PAN小1。另外,如果范围是恒定的,则可能无需额外索引列表,因为最大PAN始终比前一最小PAN大x。在至少一个实例中,分布模块212可被配置成使处理器204在两个索引列表中使用相同的索引值,使得最大PAN和交易处理数据共用共同索引号(例如均在其相应索引列表的位置4处)。在至少一个实例中,分布模块212可使多个索引列表(例如多个索引值/最大PAN索引列表、多个索引值/交易处理数据索引列表)被创建并存储在一个或多个工作节点上的存储器中、集中式数据存储区122上或任何合适的存储位置中。
根据至少一个实施例,分布模块212可使处理器204确定对应于交易处理数据索引列表中的每个条目的最小PAN。在至少一些实例中,分布模块212可使处理器204更新/生成一个或多个树映射,所述一个或多个树映射包含最小PAN到对应于索引列表中的合适的交易处理数据的索引值的映射。在至少一个实例中,分布模块212可将树映射发送到工作节点112,以便使树映射存储在工作节点112上。
在至少一个实例中,分布模块212可使处理器204确定对应于交易处理数据索引列表中的每个条目的最小PAN。在至少一些实例中,分布模块212可使处理器204确定分布式计算系统108的至少一个节点(例如图1的工作节点112)上的可用存储器。分布模块212可使处理器204向工作节点112传输树映射更新请求消息,以便使树映射中的条目在工作节点112上创建/更新。树映射更新请求消息可包含密钥(例如最小PAN)和值(例如索引值)。创建的/更新的树映射可存储在工作节点112上。在插入新密钥/索引值对时,树映射可自动再排序,使得树映射的密钥在树内有序。在至少一个实例中,分布模块212可使处理器204从工作节点112接收树映射更新响应消息。树映射更新响应消息可指示条目是否在树映射内成功地创建/更新。在至少一个实例中,进一步处理可取决于树映射更新响应消息的内容(例如成功/失败的指示、原因标识符等)。例如,如果树映射更新响应消息指示条目未在工作节点112的树映射中创建/更新,则分布模块212可使处理器204停止处理数据集的分布,或在一些情况下,停止处理所述条目的分布。根据至少一个实施例,分布模块212可使处理器204向用户装置(例如图1的用户装置102)提供指示和/或原因。
在一些情况下,分布模块212可使处理器204将树映射更新请求消息传输到分布式计算系统中的另一工作节点,而在其它实例中,分布模块212可使处理器204停止处理失败的条目。
在至少一个实例中,分布模块212可使处理器204创建和/或更新散列映射的条目。散列映射可将密钥(例如PAN)映射到值(例如位于工作节点112上的树映射的标识符、树映射的位置等)。分布模块212可使处理器204将创建的/更新的散列映射存储在本地存储装置(例如分布式数据存储区116、分布式数据存储区120等等)中。如图2中所描绘,分布式数据存储区116可被包含为管理器节点110的部分(例如管理器节点110的随机存取存储器(RAM))。分布式数据存储区120可被包含为工作节点112的部分(例如工作节点112的RAM)。在至少一个实例中,分布模块212可针对数据集的每个条目或数据集的至少某一部分执行上述功能,以便将关于数据集/部分的信息分布在一个或多个工作节点和管理器节点当中。存储在分布式数据存储区116或分布式数据存储区120上的散列映射可充当在分布开始/完成后用于定位特定数据的工具。
搜索处理模块214可包括在被执行时使处理器204接收并处理(例如来自图1的用户装置102的)请求消息的代码。在至少一个实施例中,搜索处理模块214可被配置成使处理器204向图1的分布式计算系统108的一个或多个工作节点(例如工作节点112)传输请求消息。搜索处理模块214还可被配置成使处理器204从工作节点(例如工作节点112)接收并处理响应消息,和/或将响应消息传输到用户装置102。搜索处理模块214还可被配置成使处理器204利用内部存储的数据结构(例如下文论述的将PAN映射到树映射的散列映射,例如图5的数据结构500)执行密钥范围搜索。搜索处理模块214还可被配置成利用索引值执行对集中式数据存储区122的查询。在至少一个实例中,集中式数据存储区122可被配置成存储将密钥(例如索引值)关联到返回值(例如交易处理数据、最大PAN等)的一个或多个数据结构(例如一个或多个索引列表)。
图3描绘能够实施图1的分布式计算系统108的工作节点(例如图1的工作节点112)的至少一些实施例的实例计算机架构300。工作节点112可个别地包含处理器304和耦合到处理器304的计算机可读介质310,计算机可读介质310包括可由处理器执行以执行本文所描述的功能的代码。应了解,相对于图3的模块描述的任何功能可进行组合以由单个模块执行,或可由工作节点112外部的模块执行。图3示出以通信方式耦合到集中式数据存储区122的工作节点112。集中式数据存储区122可如图3中所描绘进行配置,或集中式数据存储区122可完全或部分地被提供为工作节点112的部分。可使用例如阵列、散列映射、(链接)列表、结构化文本文件(例如XML)、表格和/或类似的各种数据结构来实施分布式数据存储区120和/或集中式数据存储区122。此类数据结构可存储在存储器中和/或结构化的文件中。
工作节点112可包括处理器304,所述处理器可耦合到系统存储器306和外部通信接口308。计算机可读介质310也可操作地耦合到处理器304。
计算机可读介质310可包括数个软件模块,所述软件模块包含数据结构管理模块312和搜索处理模块314。可利用更多或更少模块来执行本文所描述的功能。
在至少一个实例中,数据结构管理模块312可包括在被执行时使处理器304接收散列映射、树映射和/或索引列表的代码。数据结构管理模块312可被配置成使处理器304将所接收的散列映射、树映射和索引列表存储在分布式数据存储区120上。
数据结构管理模块312可包括在被执行时使处理器304(例如从图1和2的管理器节点110)接收树映射更新请求消息的代码。树映射更新请求消息可包含将由工作节点112维持在树映射内的密钥(例如最小PAN)和值(例如索引值),所述树映射将被存储或已经存储在分布式数据存储区120上。在接收到树映射更新请求消息时,数据结构管理模块312可使处理器304创建和/或更新存储在分布式数据存储区120中的树映射。在至少一个实例中,数据结构管理模块312还可被配置成使处理器304向管理器节点110(或另一合适的请求装置)发送树映射更新响应消息,其指示树映射的创建/更新成功或是不成功。树映射更新响应消息可包含与创建/更新不成功的原因(例如存储器已满、密钥已经存在等)相关联的原因代码。在至少一个实例中,响应于树映射更新请求消息而对树映射执行的插入和/或删除可使处理器304对树映射进行重构建/再排序,使得密钥(包含其在中添加密钥的实例中,所插入的密钥)被排序。
搜索处理模块314可包括在被执行时使处理器304(例如从图1和2的管理器节点110)接收并处理请求消息的代码。在至少一个实施例中,搜索处理模块314可被配置成使处理器304从请求消息提取密钥(例如PAN)。搜索处理模块314还可被配置成使处理器304利用内部存储的数据结构(例如下文论述的将PAN映射到树映射的散列映射,例如图5的数据结构500)执行密钥范围搜索。例如,搜索处理模块314可被配置成使处理器304将PAN输入到散列映射中并且接收返回的树映射(例如下文论述的将最小PAN映射到索引值的树映射,例如图6的数据结构600)的标识符/位置。
搜索处理模块314可使处理器304访问分布式数据存储区120,以便访问所识别的树映射(例如下文论述的将最小PAN映射到索引值的树映射,例如图6的数据结构600)。搜索处理模块314可使处理器304利用所接收的密钥(例如PAN)来确定密钥的最小PAN,所述最小PAN是树映射内的密钥。例如,搜索处理模块314可使处理器304执行PAN与树映射的一个或多个密钥之间的数个比较。针对此类比较执行的具体操作在下文结合图6进行论述。在确定与所接收的密钥(例如PAN)相关联的树映射密钥(例如最小PAN)时,搜索处理模块314可使处理器304检索/接收与树映射密钥相关联的索引值。在至少一个实例中,搜索处理模块314可访问存储的索引列表(例如将索引值映射到交易处理数据的阵列/索引列表,和/或将索引值映射到最大PAN的阵列/索引列表)。被访问的索引列表的实例可包含下文论述的图7和8的数据结构700和/或数据结构800。索引列表可存储在分布式数据存储区120和/或集中式数据存储区122上。搜索处理模块314可使处理器304利用索引值作为索引列表的输入,以便获得与索引值(且因此最初接收到的PAN)相关联的最大PAN。类似地,搜索处理模块314可使处理器304利用索引值作为另一索引列表的输入,以便获得与索引值(且因此,最初接收到的PAN)相关联的交易处理数据。在至少一个实例中,搜索处理模块314还可被配置成使处理器304在响应消息中将所获得的最大PAN和/或交易处理数据传输到图1和2的管理器节点110。
图4示出描绘数个算法效率的实例图400。如上文所论述,算法的算法复杂度是指算法的平均或最差时间运行时复杂度。算法的算法复杂度指定大小为x的任何实例所花的平均步数。即,算法的平均运行时复杂度是由应用于大小为x的输入并随时间平均化的一系列操作定义的函数。
算法复杂度通常以“大O记法”表示。“O(log n)”是结合大写“O”表示的算法复杂度(log n)的实例。大O记法用于根据算法对输入大小改变的响应方式,例如算法的处理时间在问题大小变得极其大时的改变方式,来对算法进行分类。因此,大O记法根据函数增长大小来表征函数,使得可使用相同的O记法来表示具有相同增长率的不同算法。举例来说,“O(log n)”指示算法的限制行为具有(log n)的阶数。
图400旨在示出若干不同算法复杂度。例如,O(n!)、O(2n)、O(n2)、O(n log n)、O(n)和O(log n)。提供的复杂度仅是可用于对算法效率进行分类/特征化的许多不同复杂度中的几个。未描绘的O(1)也可用于将算法分类为具有恒定时间。具有恒定时间的算法并不基于输入大小而变化。例如,可在恒定时间中执行确定整数是偶数还是奇数。同样,可在恒定时间中执行访问索引列表中的单个元素。
提供了所描绘的复杂度的简要概述。O(log n)也称为“对数时间”,对数通常以2为底数,但不论对数的底数如何,都使用所述记法。以对数时间操作的算法的实例是对分搜索。O(log n)算法被视为高效的,因为每实例所需完成的操作随着每个实例减少。
O(n)也称为“线性时间”。以线性时间运行的算法意指对于足够大的输入大小,运行时间随着输入的大小线性地增大。以线性时间操作的算法的实例是在未排序列表中查找最小或最大项的算法。因此,如图400所描绘,O(log n)处于比O(n)更高效的阶数,因为随着输入变大,完成具有O(log n)复杂度的算法实例所需的操作远低于具有O(n)复杂度的算法所需的操作。
O(n log n)也称为“线性对数时间(linearithmic time)”。以线性对数时间操作的算法的实例是最可能快的比较排序。O(n2)也称为“二次时间”,且以二次时间操作的算法的实例包含冒泡排序(bubble sort)和插入排序。O(2n)也称为“指数时间”,且以指数时间操作的算法的实例是穷举搜索(brute force search)。O(n!)也称为“阶乘时间”,且以阶乘时间操作的算法的实例包含用于解决例如“给定城市列表和每对城市之间的距离,则只访问每个城市一次并返回到原来城市的最短可能路线是什么?”的问题的算法。因此,图4中所描绘的算法复杂度从最低效到最高效为:O(n!)、O(2n)、O(n2)、O(n log n)、O(n)和O(logn)。
图5示出可由根据至少一个实施例的分布式计算系统(例如图1的分布式计算系统108)利用的第一实例数据结构500。在图5中所描绘的实例中,数据结构500是散列映射。数据结构500可包含数个密钥(例如,密钥502)。每个密钥可与密钥/值对的链接列表相关联。例如,数据结构500的密钥“0”可与包含密钥/值对504的链接列表相关联。与密钥相关联的链接列表中的每个元素可指向链接列表中的下一个元素,除非所述元素是链接列表中的最后一个,在此情况下,指针元素可为空/未赋值。例如,参看图5的链接列表506。
数据结构500可结合散列函数用以将数个密钥/值对分布在数据结构500中的密钥502上。在至少一个实例中,所利用的散列函数应维持“平衡的散列映射”,因为密钥/值对是均匀分布的(例如每个密钥502有相同/类似数目的密钥/值对)。因此,可针对很平衡的散列映射以恒定时间(O(1))执行平均时间复杂度,而可能以线性时间(O(n))执行包含不均匀平衡的散列映射的较差情况情境。
举例来说,散列函数可用于对密钥(例如PAN,例如“4444 4454 9864 1222”)进行散列化。散列化密钥可等于“2”,其可对应于数据结构500的密钥“2”。因此,密钥(“44444454 9864 1222”)和其对应值(例如树映射的标识符“树映射1”)可被指派到密钥“2”,如图5中所描绘。在至少一个实例中,替代地,与密钥相关联的对应值可以是与树映射相关联的存储器内位置(例如对应于图1的分布式计算系统108的工作节点的标识符、对应于工作节点和/或树映射的存储器地址)。条目508可使其指针元素设置成“空”,前提是所述条目是指派到密钥“2”的唯一条目。
在至少一个实例中,表510中的每个密钥可通过散列函数散列化以确定数据结构500内合适的密钥。因此,可根据散列化密钥将表510中的每个密钥/值对的条目插入到数据结构500中。在至少一个实例中,图1和2的管理器节点110(或管理器节点110的组件,例如,分布模块212、搜索处理模块214等)可执行操作以创建、管理、存储和/或访问数据结构500。在其它实例中,图1和3的工作节点112(或工作节点112的组件)可执行操作以管理、存储和/或访问数据结构500。因此,数据结构500可存储在管理器节点110、图1和3的工作节点112和/或任何合适的存储位置中。
在至少一个实施例中,数据结构500可存储在管理器节点(例如图1和2的管理器节点110)或任何合适的存储位置/装置上。在一些实例中,数据结构500可符合管理器节点110的存储器约束条件。例如,如果管理器节点110具有256 GB的RAM,则数据结构500可能不超过256 GB。
图6示出可由根据至少一个实施例的分布式计算系统(例如图1的分布式计算系统108)利用的第二实例数据结构600。在图6中所描绘的实例中,数据结构600是树映射。由此,数据结构600包括根节点602和数个子节点(对应于密钥604到620)。每个子节点可包含密钥(例如最小PAN)和值(例如索引值)树映射的密钥(例如与PAN范围相关联的最小PAN)可根据其固有次序进行布置/排序。例如,密钥604可小于密钥606,密钥606小于密钥608,密钥608小于610,610小于612,612小于根节点602的密钥,此密钥小于密钥614,密钥614小于密钥616,密钥616小于密钥618,密钥618小于620。表622可提供数据结构600的密钥/值对的表格显示。
在至少一个实施例中,密钥的次序可用于根据第一密钥确定第二密钥。例如,给定第一密钥(例如PAN),可从根节点602处开始遍历树映射。可将所述PAN与根节点602所关联的密钥相比。如果与根节点602相关联的密钥大于所述PAN,则可向左遍历树映射。如果与根节点602相关联的密钥小于所述PAN,则可向右遍历树映射。在每个后续子节点处,可进行类似比较,即,如果当前节点的密钥大于所述PAN,则向左遍历,或如果当前节点的密钥小于所述PAN,则向右遍历。在当前节点小于所述PAN但右侧没有子节点时(则当前节点的密钥是最小PAN),或在当前节点大于所述PAN但左侧没有子节点时(在此情况下,所述子节点的父节点是最小PAN),确定最小PAN。
继续参看图5和6的实例,可(例如通过请求消息)接收PAN 4444 4564 9864 1222。可将PAN与根节点602处的密钥(例如5555 5555 5555 5555)相比。由于根节点602处的密钥大于所述PAN,则可向左遍历树映射。如表622中指定,密钥610可等于3333 3333 33333333。可将所述PAN与密钥610相比,且由于密钥610小于所述PAN,因此可向右遍历树映射。由于密钥612小于所述PAN且对应于密钥612的节点右侧没有子节点,则可确定密钥612是对应于所述PAN的最小PAN,在此情况下为4444 4444 4444 4444。应了解,所给出的使用第一密钥(所述PAN)确定第二密钥(例如最小PAN)的实例在本质上仅是说明性的。可利用其它合适的方式来确定与所述PAN相关联的最小PAN。在另外的实例中,第二密钥可与第一密钥相同,或可以是除最小PAN外的另一合适的值,可使用第一密钥确定所述值(例如通过使用第一密钥执行查找,所述查找返回第二密钥)。
在至少一个实例中,在确定最小PAN后,可返回与最小PAN相关联的值。例如,可返回作为上文所描述的遍历/比较过程的部分的值(例如对应于索引值“4”),或可将最小PAN作为树映射中的密钥输入且可返回索引值。
在至少一个实施例中,数据结构600可存储在工作节点(例如图1和3的工作节点112)或任何合适的存储位置/装置上。在一些实例中,数据结构600可符合工作节点112的存储器约束条件。例如,如果工作节点112具有128 GB的RAM,则数据结构600可能不超过128GB。
图7示出可由根据至少一个实施例的分布式计算系统利用的第三实例数据结构700。在图7中所描绘的实例中,数据结构700是阵列,但其可为任何合适的索引列表。数据结构700可包含以密钥(例如列704的索引值)作索引的数据集(例如包含在列702中的最大PAN值)。
继续参看图5和6的实例,条目706可对应于与最小PAN“4444 4444 4444 4444”相关联且因此与PAN“4444 4454 9864 1222”相关联的最大PAN。如上文所描述,账号“44444454 9864 1222”被映射(例如数据结构500中)到“树映射1”(例如数据结构600)。“树映射1”(数据结构600)将对应于所述PAN的最小PAN“4444 4444 4444 4444”映射到索引值“4”。作为本文所论述的分布过程的部分,对应的最大PAN(例如5000 0000 0000 0000)可与数据结构700中的索引值“4”相关联。因此,输入索引值“4”可返回最大PAN“5000 0000 00000000”。数据结构700可例如存储在图1到3的集中式数据存储区122或其它合适的位置中。
应了解,数据结构700可包含预定义数目的条目,或数据结构700可随着系统接收到与最小PAN/最大PAN相关联的更多交易处理数据而动态地增长。作为非限制性实例,可由分布式计算系统接收/获得交易处理数据(例如与最小PAN/最大PAN相关联的欺诈交易处理的协议集)。在一些情况下(例如在确定最小PAN/最大PAN范围不连续时),可在对应于数据结构700的索引值的特定位置处将交易处理数据的最大PAN添加到数据结构700。所述索引值可与数据结构800(下文论述)结合存储交易处理数据而提供的索引值相同。
在至少一个实施例中,集中式数据存储区122可负责维持数据结构700,但可利用其它合适的存储位置(例如分布式数据存储区120、分布式数据存储区116等)。
图8示出可由根据至少一个实施例的分布式计算系统利用的第四实例数据结构800。在图8中所描绘的实例中,数据结构800是阵列,但其可为任何合适的索引列表。数据结构800可包含以密钥(例如列804的索引值)作索引的数据集(例如包含在列802中的交易处理数据)。
继续参看图5、6和7的实例,条目806可对应于与最小PAN“4444 4444 4444 4444”相关联且因此与PAN“4444 4454 9864 1222”相关联的交易处理数据。如上文所描述,账号“4444 4454 9864 1222”被映射(例如数据结构500中)到“树映射1”(例如数据结构600)。“树映射1”(数据结构600)将对应于所述PAN的最小PAN“4444 4444 4444 4444”映射到索引值“4”。在一些实例中(其中最小PAN/最大PAN范围不连续),通过将索引值“4”输入到数据结构700中来确定最大PAN。作为本文所论述的分布过程的部分,对应的交易处理数据(例如与最小PAN/最大PAN相关联的任何合适的信息)可与数据结构800中的索引值“4”相关联。因此,将索引值“4”输入到数据结构800中可返回对应于最小PAN“4444 4444 4444 4444”和最大PAN“5000 0000 0000 0000”的合适的交易处理数据。数据结构800可例如存储在图1到3的集中式数据存储区122或其它合适的位置中。数据结构800可包含预定义数目的条目,或数据结构800可随着系统接收到与最小PAN/最大PAN相关联的更多交易处理数据而动态地增长。
作为非限制性实例,可由分布式计算系统接收/获得交易处理数据(例如与最小PAN/最大PAN相关联的欺诈交易处理的协议集)。可在对应于数据结构800的索引值的特定位置(例如下一个可用位置,例如“4”)处将交易处理数据添加到数据结构800。在一些实例中,可在对应于索引值的相同位置(例如“4”)处将与交易处理数据相关联的最大PAN添加到图7的数据结构700。索引值可进一步添加到树映射(例如位于存储器(RAM)仍然可用的工作节点上的数据结构600)且与交易处理数据所关联的最小PAN相关联。此外,可更新散列映射(例如数据结构500)以将特定PAN与存储对应的最小PAN的树映射相关联。
在至少一个实施例中,集中式数据存储区122可负责维持数据结构800,但可利用其它合适的存储位置(例如分布式数据存储区120、分布式数据存储区116等)。
图9示出流程图,所述流程图示出根据至少一个实施例的用于将数据集的部分分布在多个节点当中的实例过程900。过程900可在框902处开始,其中可(例如由图1和2的管理器节点110)接收与数据集相关联的标识符。标识符可以是文字数字标签、地址或用于识别数据集的合适的数据。在框904处,可生成索引列表。所述索引列表可将多个索引值映射到数据集的多个交易处理数据。举例来说,数据集可包括用于确定交易是否具欺诈性的数个协议集。每个协议集可与由最小PAN和最大PAN限定的PAN范围相关联。在非限制性实例中,金融机构可与PAN范围相关联,这意指金融机构仅可发行具有属于其相关联PAN范围内的个人卡号的支付卡。与PAN范围相关联的协议集可因此与金融机构相关联。可从数据集提取交易处理数据(例如每个协议集)并编索引以生成交易处理数据的索引列表(例如图8的数据结构800)。
在框906处,可存储索引列表(例如在图1的分布式数据存储区120和/或集中式数据存储区122中)。索引列表可供管理器节点110(和分布式计算系统108的任何其它管理器节点)和工作节点112(和分布式计算系统的任何其它工作节点)访问。
在决策点908处,可确定索引列表的条目(例如第一条目)。如上文所论述,(交易处理数据的)所述条目可与特定最小PAN和最大PAN相关联。在框910处,如果与数据集相关联的范围不连续,则可更新(和/或生成)额外索引列表(例如图7的数据结构700)。在至少一个实例中,额外索引列表可将条目的索引值映射到与条目相关联的最大范围值。在一些实例中,与交易处理数据相关联的相同索引值可用于关联额外索引列表的最大范围值。因此,最大范围值和交易处理数据可与不同索引列表的相同索引值相关联(所述不同索引列表例如数据结构700和数据结构800。应了解,关于此图论述的索引列表可按相反次序更新和/或生成,即,可在更新将交易处理数据映射到索引值的索引列表之前生成/更新映射索引值中的最大PAN的索引列表。因此,在一些情况下,将交易处理数据映射到索引值的索引列表可利用指派到另一索引列表中的最大PAN的索引值。索引列表或索引列表的某一部分可存储在集中式数据存储区122和/或工作节点112的分布式数据存储区120中)。
在框912处,可确定与索引列表的条目相关联的范围的最小范围值。在至少一个实例中,可更新/创建将与条目相关联的范围的最小范围值映射到与条目相关联的索引值的树映射。在一些情况下,可将树映射直接发送到工作节点112(以存储在分布式数据存储区120中)或集中式数据存储区122以进行存储。在替代实施例中,在框914处,可(例如由管理器节点110)发送树映射更新请求消息。所述树映射更新请求消息可包括最小范围值和与索引列表的条目相关联的索引值。在其它实例中,树映射更新请求消息可包含整个树映射。在一些实例中,(例如由工作节点112)接收到树映射更新请求消息可使树映射通过使用最小范围值和与索引列表的条目相关联的索引值(例如作为树映射的密钥/值对)得以更新和/或创建。
在框916处,可创建/更新散列映射(例如由管理器节点110创建/更新,并存储在分布式数据存储区116或分布式数据存储区120中)以包含文字数字标识符(例如与最小范围值相关联的PAN、与最小范围值相关联的文字数字标识符或与最小范围值无关联的任何合适的文字数字标识符)和树映射的标识符。在决策点918处,可确定索引列表中是否存在其它未处理条目。如果不存在未处理条目,则方法可在框920处结束。如果存在另外的未处理条目,则过程可返回到决策点908。过程可重复框908到918,直到索引列表中不存在未处理条目,此时过程可在框920处结束。树映射(例如图6的数据结构600)可存储在分布式数据存储区120和/或集中式数据存储区122中。
在完成过程900时,可提供散列映射,其将每个密钥(例如PAN)映射到树映射,所述树映射将与密钥相关联的最小范围值映射到索引值。在一些实例中,散列映射可存储在管理器节点110上的分布式数据存储区116中和/或工作节点112上的分布式数据存储区120中。在至少一个实施例中,树映射可存储在工作节点112上(例如分布式数据存储区120中)。根据每个工作节点的存储器约束条件,其它树映射可存储在分布式计算系统的各种其它工作节点上。在至少一个实施例中,分布式数据存储区120可被配置成存储数据结构500到800的任何合适的组合。在至少一个实例中,本文所论述的每个数据结构(包含数据结构500、600、700和/或800)的副本可存储在分布式计算系统中的一个或多个工作节点(例如每个工作节点)上。索引列表可存储在任何合适位置(例如分布式数据存储区116、分布式数据存储区120、集中式数据存储区122中,等等)。
图10示出流程图,所述流程图示出根据至少一个实施例的利用图5到8的数据结构进行密钥范围搜索的实例过程1000。过程1000可在框1002处开始,其中可(例如由图1和2的管理器节点110)接收第一密钥。在至少一个实例中,第一密钥包括文字数字标识符(例如消费者的支付卡号、PAN、社会保障号、温度等)。第一密钥可例如由管理器节点110通过请求消息接收到。
在框1004处,可从多个密钥范围树映射识别与第一密钥相关联的密钥范围树映射。所述多个密钥范围树映射中的每个密钥范围树映射可将一组最小范围值映射到一组索引号。所述多个树映射中的每个树映射可被配置成加载到电子装置(例如工作节点112)的板载存储器(例如RAM)中。作为非限制性实例,在接收到第一密钥时,管理器节点110可对第一密钥进行散列化并利用散列化密钥和存储的散列映射(例如将密钥映射到散列映射标识符/位置的散列映射)来确定与第一密钥相关联的密钥范围树映射。在另一实例中,工作节点112可执行此类功能(例如接收密钥、对密钥进行散列化、使用散列化密钥确定存储的散列映射)。在任一实例中,所识别的密钥范围树映射可位于特定工作节点(例如工作节点112)上的存储器中。
在框1006处,可利用所识别的密钥范围树映射确定与第二密钥(例如与第一密钥相关联的最小PAN)相关联的索引值。此类功能可由工作节点112执行。在一些实施例中,可根据第一密钥确定第二密钥。在至少一个实例中,可通过将第一密钥与树映射中所含有的数个密钥相比较来确定第二密钥。可将第二密钥用作密钥范围树映射的输入,以便确定与第二密钥相关联的索引值。
在框1008处,可使用索引值确定与第一密钥相关联的交易处理数据。例如,工作节点112可利用对应于第一密钥(利用存储在分布式数据存储区120中的密钥范围树映射而确定,所述密钥范围树映射将最小PAN映射到索引值)的索引值来从索引列表检索数据(例如交易处理数据)。索引列表可存储在工作节点112可访问的位置(例如分布式数据存储区120中、集中式数据存储区122中或任何合适的存储位置)。如上文所论述,索引列表可将索引号映射到与第一密钥(PAN)和第二密钥(与所述PAN相关联的最小PAN)相关联的交易处理数据。因此,通过输入索引值,可返回对应于第一密钥的交易处理数据。
在框1010处,可提供所确定的与第一密钥相关联的交易处理数据。例如,工作节点112可将交易处理数据返回到管理器节点110,所述管理器节点继而可将交易处理数据提供到发起请求消息的电子装置。
技术优势
与当前分布式计算系统中当前所需的操作相比,本发明的实施例可提供更高效地进行密钥范围搜索的能力。具体地说,上文所论述的散列映射和树映射能够加载到存储装置(例如管理器节点、工作节点等)的板载存储器(例如RAM)中。在一些实例中,由系统维持的每个数据结构可加载到装置(例如工作节点)的板载存储器中。因此,在一些实例中,可在单个装置上以恒定算法复杂度(例如O(log n))来进行搜索。另外,在一些实例中,比分布式计算系统中的单个节点的存储容量(例如64 GB、128 GB等)更大(例如4 TB)的数据集可分布到自定义数据结构(例如一个或多个索引列表、一个或多个树映射和散列映射)中。利用上文所论述的自定义数据结构在进行密钥范围搜索时能提供恒定算法效率(O(log n)),从而优于提供变化的搜索时间的先前系统。利用上文所论述的多个树映射能提供降低与维持数据集相关联的维持成本的额外益处。例如,数据集中的新条目仅需要使单个树映射的更新,而其余树映射保持不变。另外,可用更少时间执行密钥范围搜索,因为管理器节点和工作节点所利用的存储器是RAM,其本质上比存储在磁盘(例如硬盘驱动器)上的数据搜索得更快。
实例计算机系统
本文所描述的各种参与者和元件可操作一个或多个计算机设备以促进本文所描述的功能。上文描述的图1中的任何元件,包含任何服务器或数据库,可使用任何合适数目的子系统来促进文中描述的功能。
以上图中示出的此类子系统或组件的实例可通过系统总线互连。可包含额外的子系统,例如打印机、键盘、固定磁盘(或包括计算机可读介质的其它存储器)、耦合到显示适配器的监视器等等。外围装置和耦合到输入/输出(I/O)控制器(其可为处理器或任何合适的控制器)的I/O装置可通过所属领域中已知的例如串行端口等任何数目的构件连接到计算机系统。例如,串行端口或外部接口可用于将计算机设备连接到例如互联网的广域网、鼠标输入装置或扫描仪。通过系统总线的互连允许中央处理器与每个子系统通信,且控制来自系统存储器或固定磁盘的指令的执行以及子系统之间的信息交换。系统存储器和/或固定磁盘可体现计算机可读介质。
本申请中描述的任何软件组件或功能可使用任何合适的计算机语言实施为由处理器执行的软件代码,所述计算机语言例如使用常规的或面向对象的技术等的Java、C++或Perl。软件代码可作为一系列指令或命令存储在计算机可读介质上,所述计算机可读介质例如随机存取存储器(RAM)、只读存储器(ROM)、硬盘驱动器或软盘等磁性介质或CD-ROM等光学介质。任何此类计算机可读介质可驻存在单个计算设备上或内部,且可存在于系统或网络内的不同计算设备上或内部。
以上描述是说明性的而非限制性的。本发明的许多变化在所属领域的技术人员查阅本公开时可变得显而易见。因此,本发明的范围可以不参考以上描述来确定,而是可参考待决的权利要求以及其完整范围或等同物来确定。
在不脱离本发明的范围的情况下,任何实施例的一个或多个特征可与任何其它实施例的一个或多个特征组合。
除非明确指示有相反的意思,否则“一”或“所述”的叙述旨在表示“一个或多个”。
上文所提及的所有专利、专利申请、公开案和描述都出于所有目的以其全文引用的方式并入本文中。并非承认它们是现有技术。
Claims (17)
1.一种用于执行密钥范围查找的方法,包括:
接收第一密钥;
获得将一组散列化密钥中的每一个映射到多个密钥范围树映射中的密钥范围树映射的散列映射,所述散列映射被配置成加载到电子装置的板载存储器中;
至少基于使用所述第一密钥从所述散列映射检索与所述第一密钥相关联的所述密钥范围树映射的位置的标识符来从所述多个密钥范围树映射中识别与所述第一密钥相关联的密钥范围树映射,所述多个密钥范围树映射中的每个密钥范围树映射将一组最小范围值映射到一组索引值,每个索引值标识索引列表中存储对应于所述第一密钥的交易处理数据的位置;
至少基于遍历所述密钥范围树映射并将所述第一密钥与遍历期间标识的节点值进行比较,来从所述第一密钥导出第二密钥;
从所标识的密钥范围树映射获得与所述第二密钥相关联的索引值;
获得包含所述一组索引值和交易处理数据的实例之间的映射的所述索引列表;
至少部分地基于从所述索引列表中检索与从所标识的密钥范围树映射中获得的索引值相关联的交易处理数据来获得与所述第一密钥相关联的交易处理数据,其中利用所述多个密钥范围树映射和所述索引列表使得能够使用所述电子装置的板载存储器来执行所述密钥范围查找;以及
提供所获得的与所述第一密钥相关联的交易处理数据。
2.根据权利要求1所述的方法,其中所述第二密钥是对应于范围的最小范围值。
3.根据权利要求1所述的方法,其中从所述多个密钥范围树映射中识别与所述第一密钥相关联的所述密钥范围树映射包括:
对所述第一密钥进行散列化以产生散列化密钥;
将所述散列化密钥输入到所述散列映射中;以及
接收标识对应于所述散列化密钥的所述密钥范围树映射的输出。
4.根据权利要求1所述的方法,其中所述密钥范围树映射被配置成加载到存储所述索引列表的对应电子装置的板载存储器中。
5.根据权利要求1所述的方法,其中所述索引列表被配置成加载到存储所述索引列表的对应所述电子装置的板载存储器中。
6.根据权利要求1所述的方法,还包括使用所述索引值确定与所述第一密钥相关联的最大范围值。
7.根据权利要求6所述的方法,其中使用所述索引值确定与所述第一密钥相关联的所述最大范围值包括:
获得额外索引列表,所述额外索引列表将多个索引值映射到多个最大范围值,所述额外索引列表被配置成加载到所述电子装置的板载存储器中;
将所述索引值输入到所述额外索引列表中;以及
接收指示对应于所述索引值的所述最大范围值的输出。
8.根据权利要求1所述的方法,其中在分布式计算系统的单个计算装置上执行所述方法。
9.根据权利要求1所述的方法,其中所述多个密钥范围树映射包括与数据集相关联的所述一组最小范围值,且其中所识别的与所述第一密钥相关联的密钥范围树映射包括与所述数据集相关联的所述一组最小范围值的子集。
10.一种系统,包括:
一个或多个管理器节点,管理器节点包括:
第一处理器,和
第一计算机可读介质,其耦合到所述第一处理器,所述第一计算机可读介质包括能由所述第一处理器执行以实施第一方法的代码,所述第一方法包括:
接收请求消息,所述请求消息包括第一密钥;
将所述请求消息的至少一部分传输到多个工作节点中的一个或多个工作节点;
接收与所述请求消息相关联的响应消息;以及
传输所述响应消息;以及
所述多个工作节点,所述多个工作节点中的工作节点包括:
第二处理器,和
第二计算机可读介质,其耦合到所述第二处理器,所述第二计算机可读介质包括能由所述第二处理器执行以实施第二方法的代码,所述第二方法包括:
使用所述第一密钥和散列映射识别多个树映射中的树映射,其中所述树映射是至少部分地基于使用所述第一密钥从所述散列映射中检索所述树映射的位置的标识符来标识的,多个树映射中的每一个将一组最小范围值映射到一组索引值,每个索引值标识索引列表中存储对应于所述第一密钥的交易处理数据的位置;
至少基于遍历所述树映射并将所述第一密钥与遍历期间标识的节点值进行比较,来从所述第一密钥导出第二密钥;
使用所识别的树映射来从所标识的树映射中获得与所述第二密钥相关联的索引值;
获得包含所述一组索引值和交易处理数据的实例之间的映射的所述索引列表;
至少部分地基于从所述索引列表中检索与从所标识的树映射中获得的索引值相关联的交易处理数据来获得与所述第一密钥相关联的交易处理数据;以及
提供所获得的交易处理数据。
11.根据权利要求10所述的系统,其中所述第一密钥是字母数字值,且所述第二密钥是对应于与所述第一密钥相关联的范围的最小范围值。
12.根据权利要求10所述的系统,其中使用所述第一密钥和所述散列映射识别所述多个树映射中的所述树映射包括:
对所述第一密钥进行散列化以产生散列化密钥;
获得被配置成存储在所述管理器节点的板载存储器中的所述散列映射,所述散列映射将多个密钥映射到所述多个树映射;
将所述散列化密钥输入到所述散列映射中;以及
输出所述多个树映射中的所述树映射,所述树映射对应于所述散列化密钥。
13.根据权利要求10所述的系统,其中所述树映射被配置成加载到电子装置的板载存储器中。
14. 根据权利要求10所述的系统,其中使用所述索引值确定与所述第一密钥相关联的所述交易处理数据包括:
将从所述树映射中标识出的所述索引值输入到所述索引列表中;以及
输出对应于所述索引值的所述交易处理数据。
15.根据权利要求10所述的系统,其中所述第二方法还包括使用所述索引值确定与所述第一密钥相关联的最大范围值。
16.根据权利要求15所述的系统,其中使用所述索引值确定与所述第一密钥相关联的所述最大范围值包括:
访问额外索引列表,所述额外索引列表将多个索引值映射到多个最大范围值;
将从所述树映射中标识出的所述索引值输入到所述额外索引列表中;以及
接收指示对应于所述索引值的所述最大范围值的输出。
17.根据权利要求10所述的系统,其中所述多个树映射包括与数据集相关联的最小范围值,且其中与所述第一密钥相关联的所述树映射包括与所述数据集相关联的所述最小范围值的子集。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310943259.9A CN116955361A (zh) | 2016-09-22 | 2016-09-22 | 存储器内密钥范围搜索方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2016/053189 WO2018056992A1 (en) | 2016-09-22 | 2016-09-22 | Techniques for in-memory key range searches |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310943259.9A Division CN116955361A (zh) | 2016-09-22 | 2016-09-22 | 存储器内密钥范围搜索方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109983456A CN109983456A (zh) | 2019-07-05 |
CN109983456B true CN109983456B (zh) | 2023-08-15 |
Family
ID=61690597
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310943259.9A Pending CN116955361A (zh) | 2016-09-22 | 2016-09-22 | 存储器内密钥范围搜索方法和系统 |
CN201680090849.XA Active CN109983456B (zh) | 2016-09-22 | 2016-09-22 | 存储器内密钥范围搜索方法和系统 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310943259.9A Pending CN116955361A (zh) | 2016-09-22 | 2016-09-22 | 存储器内密钥范围搜索方法和系统 |
Country Status (5)
Country | Link |
---|---|
US (2) | US11392600B2 (zh) |
EP (1) | EP3516539B1 (zh) |
CN (2) | CN116955361A (zh) |
SG (1) | SG11201811425TA (zh) |
WO (1) | WO2018056992A1 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
SG11201811425TA (en) | 2016-09-22 | 2019-01-30 | Visa Int Service Ass | Techniques for in-memory key range searches |
US20190034454A1 (en) * | 2017-12-19 | 2019-01-31 | Intel Corporation | Expandable tree-based indexing framework that enables expansion of the hadoop distributed file system |
US11157631B1 (en) * | 2017-12-19 | 2021-10-26 | Robert J. Whelton | System and method for securely indexing, storing, and retrieving data within a computer network |
US10922239B2 (en) * | 2017-12-29 | 2021-02-16 | Samsung Electronics Co., Ltd. | Device for performing iterator operation in database |
US11836134B2 (en) | 2018-03-20 | 2023-12-05 | Vmware, Inc. | Proactive splitting and merging of nodes in a Bε-tree |
US11720568B2 (en) * | 2018-03-20 | 2023-08-08 | Vmware, Inc. | Reduced bandwidth queries in B e-trees using approximate membership query data structures |
CN110291514A (zh) | 2018-11-07 | 2019-09-27 | 阿里巴巴集团控股有限公司 | 通过逻辑映射遍历智能合约数据库 |
US11429961B2 (en) | 2019-05-02 | 2022-08-30 | Visa International Service Association | Masking a primary account number between a party and a service provider |
US11238641B2 (en) * | 2019-09-27 | 2022-02-01 | Intel Corporation | Architecture for contextual memories in map representation for 3D reconstruction and navigation |
US11307782B2 (en) * | 2020-06-03 | 2022-04-19 | Micron Technology, Inc. | Host identification and verification system and method for a memory system |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7251663B1 (en) * | 2004-04-30 | 2007-07-31 | Network Appliance, Inc. | Method and apparatus for determining if stored memory range overlaps key memory ranges where the memory address space is organized in a tree form and partition elements for storing key memory ranges |
CN101512525A (zh) * | 2006-09-06 | 2009-08-19 | 微软公司 | 加密的数据搜索 |
CN103731432A (zh) * | 2014-01-11 | 2014-04-16 | 西安电子科技大学昆山创新研究院 | 一种支持多用户的可搜索加密系统及方法 |
CN105683898A (zh) * | 2014-01-17 | 2016-06-15 | 网络装置公司 | 对储存系统中数据高效存储与检索的组相关哈希表组织 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2406679B (en) * | 2000-11-30 | 2005-05-18 | Coppereye Ltd | Database |
WO2002090978A1 (en) * | 2001-05-04 | 2002-11-14 | Paracel, Inc. | Method and apparatus for high-speed approximate sub-string searches |
US20040133590A1 (en) * | 2002-08-08 | 2004-07-08 | Henderson Alex E. | Tree data structure with range-specifying keys and associated methods and apparatuses |
US7478109B1 (en) | 2004-03-15 | 2009-01-13 | Cisco Technology, Inc. | Identification of a longest matching prefix based on a search of intervals corresponding to the prefixes |
JP4498409B2 (ja) * | 2007-12-28 | 2010-07-07 | 株式会社エスグランツ | データベースのインデックスキー更新方法及びプログラム |
US9465836B2 (en) * | 2010-12-23 | 2016-10-11 | Sap Se | Enhanced business object retrieval |
US8645412B2 (en) * | 2011-10-21 | 2014-02-04 | International Business Machines Corporation | Computing correlated aggregates over a data stream |
US9280575B2 (en) | 2012-07-20 | 2016-03-08 | Sap Se | Indexing hierarchical data |
US20140337375A1 (en) * | 2013-05-07 | 2014-11-13 | Exeray Inc. | Data search and storage with hash table-based data structures |
US20160253322A1 (en) * | 2013-10-18 | 2016-09-01 | Telefonaktiebolaget L M Ericsson (Publ) | Method and apparatus for data storage and retrieval |
US10545917B2 (en) * | 2014-02-19 | 2020-01-28 | Snowflake Inc. | Multi-range and runtime pruning |
US11023453B2 (en) * | 2015-01-29 | 2021-06-01 | Hewlett Packard Enterprise Development Lp | Hash index |
SG11201811425TA (en) | 2016-09-22 | 2019-01-30 | Visa Int Service Ass | Techniques for in-memory key range searches |
-
2016
- 2016-09-22 SG SG11201811425TA patent/SG11201811425TA/en unknown
- 2016-09-22 CN CN202310943259.9A patent/CN116955361A/zh active Pending
- 2016-09-22 US US16/315,491 patent/US11392600B2/en active Active
- 2016-09-22 CN CN201680090849.XA patent/CN109983456B/zh active Active
- 2016-09-22 WO PCT/US2016/053189 patent/WO2018056992A1/en unknown
- 2016-09-22 EP EP16916959.6A patent/EP3516539B1/en active Active
-
2022
- 2022-06-02 US US17/831,240 patent/US20220292093A1/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7251663B1 (en) * | 2004-04-30 | 2007-07-31 | Network Appliance, Inc. | Method and apparatus for determining if stored memory range overlaps key memory ranges where the memory address space is organized in a tree form and partition elements for storing key memory ranges |
CN101512525A (zh) * | 2006-09-06 | 2009-08-19 | 微软公司 | 加密的数据搜索 |
CN103731432A (zh) * | 2014-01-11 | 2014-04-16 | 西安电子科技大学昆山创新研究院 | 一种支持多用户的可搜索加密系统及方法 |
CN105683898A (zh) * | 2014-01-17 | 2016-06-15 | 网络装置公司 | 对储存系统中数据高效存储与检索的组相关哈希表组织 |
Also Published As
Publication number | Publication date |
---|---|
EP3516539A1 (en) | 2019-07-31 |
SG11201811425TA (en) | 2019-01-30 |
CN109983456A (zh) | 2019-07-05 |
WO2018056992A1 (en) | 2018-03-29 |
EP3516539A4 (en) | 2020-05-06 |
EP3516539B1 (en) | 2024-03-13 |
CN116955361A (zh) | 2023-10-27 |
US11392600B2 (en) | 2022-07-19 |
US20190236071A1 (en) | 2019-08-01 |
US20220292093A1 (en) | 2022-09-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109983456B (zh) | 存储器内密钥范围搜索方法和系统 | |
US11971880B2 (en) | Techniques for in-memory data searching | |
US10394792B1 (en) | Data storage in a graph processing system | |
US9449115B2 (en) | Method, controller, program and data storage system for performing reconciliation processing | |
US20150149437A1 (en) | Method and System for Optimizing Reduce-Side Join Operation in a Map-Reduce Framework | |
CN114281989B (zh) | 基于文本相似度的数据去重方法、装置及存储介质和服务器 | |
US10552419B2 (en) | Method and system for performing an operation using map reduce | |
US20190196783A1 (en) | Data shuffling with hierarchical tuple spaces | |
US10885157B2 (en) | Determining a database signature | |
CN110874349A (zh) | 一种文件整理方法和装置 | |
CN114048219A (zh) | 图数据库更新方法及装置 | |
CN110297842B (zh) | 一种数据比对方法、装置、终端和存储介质 | |
US20170031982A1 (en) | Maintaining Performance in the Presence of Insertions, Deletions, and Streaming Queries | |
US20170031909A1 (en) | Locality-sensitive hashing for algebraic expressions | |
US11687542B2 (en) | Techniques for in-memory data searching | |
US11841857B2 (en) | Query efficiency using merged columns | |
CN114297260A (zh) | 分布式rdf数据查询方法、装置和计算机设备 | |
EP2657862B1 (en) | Parallel set aggregation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |