CN110419026B - 存储器内搜索技术 - Google Patents
存储器内搜索技术 Download PDFInfo
- Publication number
- CN110419026B CN110419026B CN201780088264.9A CN201780088264A CN110419026B CN 110419026 B CN110419026 B CN 110419026B CN 201780088264 A CN201780088264 A CN 201780088264A CN 110419026 B CN110419026 B CN 110419026B
- Authority
- CN
- China
- Prior art keywords
- block
- based table
- data
- table manager
- virtual machine
- 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 52
- 230000015654 memory Effects 0.000 claims abstract description 50
- 230000004044 response Effects 0.000 claims abstract description 31
- 230000007704 transition Effects 0.000 claims abstract 3
- 238000012545 processing Methods 0.000 claims description 61
- 230000006870 function Effects 0.000 claims description 35
- 230000006835 compression Effects 0.000 claims description 6
- 238000007906 compression Methods 0.000 claims description 6
- 238000013507 mapping Methods 0.000 claims 2
- 238000004891 communication Methods 0.000 description 10
- 241000256836 Apis Species 0.000 description 3
- 239000008186 active pharmaceutical agent Substances 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000006243 chemical reaction Methods 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
- 238000013479 data entry Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 239000007787 solid Substances 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/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/2471—Distributed queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
- G06F16/134—Distributed indices
-
- 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/2282—Tablespace storage structures; Management thereof
-
- 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/9017—Indexing; Data structures therefor; Storage structures using directory or table look-up
-
- 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
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)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明的一个实施方案涉及一种用于在分布式计算***中执行高效数据搜索的方法。所述方法可以包括:接收包括关键字的搜索请求。可以通过在计算机***上执行的虚拟机外部的编程接口,将所述关键字提供给基于块的表管理器。所述编程接口可以提供所述虚拟机的第一编程框架与所述基于块的表管理器的第二编程框架之间的转换。提供所述关键字可以使所述基于块的表管理器执行对应于所述关键字的值的搜索。可以响应于所述搜索请求来提供所述值。利用这种基于块的表可以使得数据搜索能够使用在分布式计算***内操作的计算节点的板载存储器来执行。
Description
背景技术
分布式计算***通常用于管理和处理大型数据集。分布式计算***可将数据库分布在若干计算机上,所述计算机通过诸如高速网络等各种通信介质彼此进行通信。分布式数据库***可由单个逻辑数据库组成,所述逻辑数据库可拆分为不同片段,每个片段被存储在分布式计算***的单个计算机(例如节点)上。分布式计算***可能会面临如何管理和/或访问大型数据集的挑战。例如,协调计算机之间的任务所需的信息交换和额外计算是一种在集中式***中不会出现的开销。另外,分布式计算***可能容易出现错误,因为当数据集在分布式计算***的许多计算机上扩散时,更加难以确保算法的正确性。另外,在分布式计算***中搜索数据集的特定部分可能在计算上代价较大,且可能产生变化的搜索时间。因此,可对数据集和分布式计算***进行改进,以提供更高效的搜索时间。
另外,当前用于执行关键字搜索的技术可能存在由搜索冲突导致的缺点,因为许多设备可能在相同时间访问容器。为了避免冲突,可能连续执行请求,这会导致更长的计算时间。另外,数据集和/或数据集容器可能过大(例如5TB)而无法加载到分布式计算***中的节点的存储器(例如,128GB的随机存取存储器(RAM))中,因此,它们通常存储在集中式位置中。因此,在这些情境中搜索关键字可能需要大规模计算,因为搜索的数据大小很大,且许多***可能在相同时间尝试访问数据。因此,可对数据集和分布式计算***进行改进,以提供更高效的搜索时间。
本发明的实施方案单独地以及共同地解决这些问题和其他问题。
发明内容
本发明的一个实施方案涉及一种方法,该方法包括通过由计算机***托管(host)的虚拟机执行的数据集准备模块至少部分地基于数据集生成一组关键字-值对。该方法还可以包括由数据集准备模块向基于块的表管理器提供该组关键字-值对。在一些实施方案中,基于块的表管理器可以由计算机***在虚拟机外部的执行环境中执行。数据集准备模块可以利用编程接口与基于块的表管理器进行交互,该编程接口至少被配置为使得在虚拟机内执行的模块能够访问虚拟机外部的功能。在一些实施方案中,将该组关键字-值对提供给基于块的表管理器可以使基于块的表管理器生成共同表示基于块的表的包含数据的多个数据块。该方法还可以包括由计算机***将基于块的表分发给与计算机***不同的多个计算机***。
本发明的另一个实施方案涉及一种包括第一计算设备和第二计算设备的***。第一计算设备可以包括第一处理器和耦合到第一处理器的第一计算机可读介质,所述第一计算机可读介质包括可由第一处理器执行以实施第一方法的代码。第一方法可以包括通过由计算机***托管的虚拟机执行的数据集准备模块至少部分地基于数据集生成一组关键字-值对。该方法还可以包括由数据集准备模块向基于块的表管理器提供该组关键字-值对。在一些实施方案中,基于块的表管理器可以由计算机***在虚拟机外部的执行环境中执行。数据集准备模块可以利用编程接口与基于块的表管理器进行交互,该编程接口至少被配置为使得在虚拟机内执行的模块能够访问虚拟机外部的功能。在一些实施方案中,将该组关键字-值对提供给基于块的表管理器可以使基于块的表管理器生成共同表示基于块的表的包含数据的多个数据块。该方法还可以包括由计算机***将基于块的表分发给与计算机***不同的多个计算机***。
第二计算设备可以包括第二处理器和耦合到第二处理器的第二计算机可读介质,所述第二计算机可读介质包括可由第二处理器执行以实施第二方法的代码。第二方法可以包括在由远程计算机***托管的分开的虚拟机执行的搜索处理模块的多个计算机***的远程计算机***处接收包括关键字的搜索请求。第二方法还可以包括:由搜索处理模块将关键字提供给基于块的表管理器,基于块的表管理器由远程计算机***在分开的虚拟机外部的执行环境中执行。在一些实施方案中,搜索处理模块可以利用分开的编程接口与基于块的表管理器进行交互,该编程接口被配置为至少使得在分开的虚拟机内执行的模块能够访问分开的虚拟机外部的功能。在一些实施方案中,向基于块的表管理器提供关键字可以使基于块的表管理器进行对其对应值的搜索。第二方法还可以包括由搜索处理模块从基于块的表管理器接收与关键字相对应的值。第二方法还可以包括:响应于搜索请求,由搜索处理模块提供值。
本发明的另一实施方案涉及一种计算设备,所述计算设备包括处理器和耦合至处理器的计算机可读介质,计算机可读介质包括可由处理器执行以用于实施方法的代码。该方法可以包括通过由计算设备托管的虚拟机执行的数据集准备模块至少部分地基于数据集生成一组关键字-值对。该方法还可以包括由数据集准备模块向基于块的表管理器提供该组关键字-值对。在一些实施方案中,基于块的表管理器可以由计算设备在虚拟机外部的执行环境中执行。数据集准备模块可以利用编程接口与基于块的表管理器进行交互,该编程接口至少被配置为使得在虚拟机内执行的模块能够访问虚拟机外部的功能。在一些实施方案中,将该组关键字-值对提供给基于块的表管理器可以使基于块的表管理器生成共同表示基于块的表的包含数据的多个数据块。该方法还可以包括由计算设备将基于块的表分发给与计算设备不同的多个计算机设备。
下文进一步详细描述本发明的这些和其他实施方案。
附图说明
图1描绘根据至少一些实施方案的示例分布式计算环境。
图2描绘了能够实现根据一些实施方案的管理***的至少一些实施方案的示例计算机体系结构。
图3示出了能够实现分布式计算***的执行引擎的至少一些实施方案的示例计算机体系结构。
图4示出了能够实现基于块的表管理器的至少一些实施方案的示例计算机体系结构。
图5示出了根据一些实施方案的示例计算环境。
图6示出了说明根据一些实施方案的用于生成与数据集相关联的基于块的表并将它们分发到一个或多个计算设备的示例过程的流程图。
图7示出了说明根据一些实施方案的用于利用基于块的表进行搜索的示例过程的流程图。
具体实施方式
在以下描述中,将描述各种实施方案。出于解释的目的,阐述特定配置和细节以便提供对实施方案的透彻理解。然而,所属领域的技术人员也应清楚,可在无所述特定细节的情况下实践实施方案。此外,可能省略或简化众所周知的特征以免使描述的实施方案模糊不清。
在论述本发明的一些实施方案的细节之前,对一些术语的描述可有助于理解各种实施方案。
“分布式计算***”可指以通信方式彼此耦合的电子设备的集合。在一些实施方案中,基于块的表可分布在分布式计算***当中(例如在***的节点内的存储器上)。电子设备的集合可用于执行各种功能(例如任务)。在一些示例中,电子设备的集合可包含一个或多个节点和/或一个或多个分布式数据库。
“管理***”可以是可以用于管理其他设备的一个或多个电子设备。例如,管理***可以管理分布式计算***中的一个或多个计算设备(例如,节点)。在一些示例中,管理***可以负责将工作(例如,存储任务、搜索任务)分派给分布式计算***中的一个或多个其他计算设备(例如,节点)。在一些示例中,管理***可以被配置为使得数据准备任务与数据集一起执行。例如,管理***可以被配置为执行一个或多个虚拟机(例如,Java虚拟机(JVM)),这些虚拟机分别执行一个或多个任务,以便准备要存储在一个或多个计算设备(例如,节点)上的数据集。管理***可以是分布式计算***中的节点,或者管理***可以通信地耦合到分布式计算***。管理***可被配置为将信息(例如,分发请求和/或搜索请求)传输到分布式计算***中的各种计算设备(例如,节点),并且可在完成对应的任务时或在另一合适的时间从各种节点接收信息(例如响应消息)。
“节点”可以是可用于处理分布式计算***中的数据(例如任务)的电子设备。在一些示例中,节点可以从管理***接收信息(例如,分发请求、搜索请求等)。节点可负责执行各种操作以便执行功能(例如存储数据、查找数据等等)。在处理请求时或在另一合适的时间,节点可向分布式计算***中的另一节点和/或管理***传输信息(例如响应消息)。在至少一些示例中,节点可包含其在处理期间可利用的一些量(例如,128千兆字节(GB)、1太字节(TB)等)的板载存储器(例如RAM)。
“交易处理数据”可包含与交易相关联的数据。此数据可指与关键字相关联的任何合适的数据。在一些实施方案中,交易处理数据可以是与用户相关联的支付账户数据。在一些实施方案中,交易处理数据可包含配送地址、开单地址或与消费者相关联的其他相关信息。在一些示例中,交易处理数据可包含一个或多个账户标识符。在一些实施方案中,账户标识符可以是支付***(PAN)和/或主账号。PAN可以是14、16或18位的。交易处理数据还可包含与账户相关联的有效期,以及服务代码和/或验证值(例如,CVV、CVV2、dCVV和dCVV2值)。另外或替代地,交易处理数据可包含过去的购买信息、与网站使用相关的导航信息、与账户相关联的欺诈交易规则,或可进行搜索的任何合适的数据。此类数据可能或可能不会涉及消费者账户/交易。
“分发请求”是可包含分发数据(例如交易处理数据、欺诈交易协议集等)时所必要的任何合适的信息的电子消息。在一些实施方案中,分发请求可以被引导到分布式计算***的管理***和/或分布式计算***的节点之间。在一些实施方案中,分发请求可以包括与要分发的一个或多个数据集相关联的一个或多个数据集标识符。在一些示例中,分发请求还可以包括分布式计算***的至少一个节点的存储容量值。
“搜索请求”是可包含搜索数据(例如交易处理数据、欺诈交易协议集等)时所必要的任何合适的信息的电子消息。在一些实施方案中,搜索请求可以被引导到分布式计算***的管理***,分布式计算***的节点,和/或分布式计算***的节点之间。在一些实施方案中,搜索请求可以包括与要搜索的一个或多个数据集相关联的一个或多个数据集标识符。搜索请求还可以包括对应于与数据集相关联的关键字-值对的关键字。
“响应消息”可包含提供响应数据所必要的任何合适的信息。在一些实施方案中,响应数据可以涉及分发请求和/或搜索请求。例如,响应消息可以包括从搜索请求中所请求的数据(例如,对应于账户标识符的交易处理数据)。在一些示例中,响应消息可以包括分发/搜索成功或不成功的指示。
“虚拟机”可以是在主机上运行的抽象计算机,其使主机能够运行程序。在一些示例中,虚拟机可以被配置为执行在特定编程环境(例如,Java运行时环境(JRE))中编译的程序。在一些情况下,虚拟机可以包括使得与本机应用程序相关联的库能够被加载或者使得应用程序编程接口库能够被加载的功能,使得本机库的功能可以从虚拟机调用。作为非限制性示例,虚拟机可以是Java虚拟机(JVM),其包括Java本机接口(JNI)编程框架,其使JVM能够加载本机库/本机API。通过利用JNI框架,在JVM中运行的Java代码可以与本机应用程序(特定于硬件和操作***平台的程序,如基于块的表管理器)和用其他语言(如C、C++和汇编语言)编写的库之间相互调用和被调用。
“基于块的表管理器”可以是本机应用程序的一个示例。在一些实施方案中,基于块的表管理器可以被配置为利用数据集来执行数据准备任务。例如,基于块的表管理器可以生成一个或多个数据块,用于存储数据集的一个或多个部分。另外,基于块的表管理器可以维护基于块的表的元数据,该元数据标识存储与给定关键字相关联的值的特定位置(例如,特定数据块)。基于块的表管理器可以执行一个或多个压缩算法以压缩一个或多个数据块,使得数据块需要较少的存储空间。基于块的表管理器还可以被配置为利用元数据和基于块的表来执行搜索过程以检索对应于给定关键字的数据值。
“基于块的表”旨在指代元数据和共同表示数据表的一个或多个数据块。可以压缩基于块的表的每个数据块以比未压缩数据块利用更少的存储器。基于块的表的元数据可以维持特定关键字与存储对应于该特定关键字的值的特定数据块之间的关联。
“数据块”可以是固定大小的存储容器。在一些情况下,默认块大小可以是4k,但是可以使用任何合适的块大小。在数据块内,可以存储许多数据条目。在一些示例中,数据块是可压缩的,使得压缩数据块比未压缩数据块需要更少的存储器。
“用户设备”可以是由用户操作的电子设备。用户设备的示例可包含移动电话、智能电话、个人数字助理(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;以及/或类似处理器。
“存储器”可以是可存储电子数据的任何合适的一个或多个设备。合适的存储器可包括非暂时性计算机可读介质,其存储可由处理器执行以实现所要方法的指令。存储器的示例可包括一个或多个存储器芯片、磁盘驱动器等等。此类存储器可使用任何合适的电、光和/或磁操作模式来操作。
现在将描述本发明的一些实施方案的细节。
由于分布式计算***被广泛用于管理大型数据集,因此执行高效搜索的能力是相当重要的。在当前***中,数据库可以复制到分布式计算***的每个节点上,而在其他示例中,主数据库可以由分布式计算***的每个节点访问。然而,每一种方法都会带来挑战。例如,仅当数据库足够小以能够存储在节点上时才可以将数据库复制到分布式计算***的每个节点上。另外,在磁盘上维护主数据库可能会产生变化的搜索时间,因为数据集较大且难以搜索。所需要的是一种在分布式计算***中的一组节点之间管理分布式数据集而同时又提供更有效的搜索解决方案的方法。
本发明的实施方案涉及可用于在分布式计算***内提供有效数据搜索的方法和***。本文描述的技术的利用使得分布式计算***能够将数据集分发到该组节点的本地存储器(例如,RAM),以便在执行数据搜索时提高效率。另外,本文描述的技术使得大数据集能够被压缩以容纳在分布式计算***的各个节点上的本地存储器(例如,RAM)内,这又使得对数据集的搜索能够比使用集中式数据库来进行搜索的情况更快地执行。
在一些实施方案中,***可以接收指定要分发的数据集和/或数据集位置的分发请求。***可以利用虚拟机来提供数据集准备任务。虚拟机可以由***执行/托管。在接收到分发请求时,***可以使虚拟机利用编程接口,该编程接口被配置为使得利用虚拟机执行的模块能够访问虚拟机外部的功能。举例来说,虚拟机可以利用编程接口来访问基于块的表管理器(例如,)的本机应用程序功能,以利用数据集来执行数据准备技术。例如,本机功能可以使得一个或多个数据结构(例如,表示基于块的表的一个或多个数据块)被创建以存储数据集。基于块的表管理器可以维护与数据结构相关联的元数据,该元数据标识特定数据值所在的位置(例如,特定的基于块的表)。例如,元数据可以指出存储对应于给定关键字的值的特定数据块。
在至少一个实施方案中,***(例如,分布式计算***)可以接收对与关键字(例如,账户标识符、字母数字值等)相关联的数据值(例如,交易处理数据)的搜索请求。搜索请求可以由分布式***的管理***的模块接收,并且在一些情况下,分发给分布式***的节点。管理***和/或节点可以利用虚拟机的编程接口(与上面讨论的虚拟机相同或不同的虚拟机)来调用与搜索基于块的表相关联的本机应用程序功能。例如,可以利用由虚拟机提供的编程接口来将关键字提供给本机应用程序(例如,基于块的表管理器)。基于块的表管理器可以返回与关键字相关联的相应数据值作为输出。管理***和/或节点可以响应于搜索请求提供返回的数据值。
图1描绘根据至少一些实施方案的示例分布式计算环境100。分布式计算环境100可包括由用户104操作的一个或多个用户设备102(1)到102(N)(以下称作用户设备102)。用户设备102还可通过网络106与分布式计算***108通信。用户设备102可由用户104中的一个或多个用户操作,以通过网络106访问分布式计算***108。用户设备102可以是能够与网络106通信的任何合适的设备。例如,用户设备102可以是任何合适的计算设备,例如但不限于移动电话、智能电话、个人数字助理(PDA)、笔记本电脑、精简客户端设备、平板PC、台式计算机、机顶盒或其他计算设备。
分布式计算***108可具有任何合适的特性。分布式计算***108可以包括一个或多个管理***(例如,管理***114)、一个或多个计算节点(例如,节点112)和一个或多个集中式数据存储(例如,集中式数据存储122)的任何合适的组合,用于执行本文描述的功能。管理引擎116可以作为管理***114的一部分操作。下面参考图2比较详细地描述了示例管理***。管理***114和节点112可以彼此通信耦合。类似地,节点112可以彼此通信耦合。管理***114结合数据处理可以包括管理引擎116,其被配置为执行功能,包括接收和处理分发和/或搜索请求,接收/处理/发送响应消息,以及与本机应用程序(例如,基于块的表管理器)连接,以使得一个或多个数据结构在节点112上被维护。应当理解,在一些情况下,管理***114可以全部或部分地作为一个或多个节点112的一部分来操作。由管理***114执行的每个任务都可以被由管理***114托管的虚拟机执行。
结合数据处理,节点112可包含执行引擎118。执行引擎118可以被配置为接收分发和/或搜索请求,发送响应消息,以及与本机应用程序(例如,基于块的表管理器)连接,以访问与较大数据集相对应的一个或多个数据结构(例如,基于块的表,包括元数据和任何合适数量的数据块)。节点112还可包含分布式数据存储120。分布式数据存储120可被配置成存储与较大数据集和/或任何合适的信息相关联的一个或多个数据结构。例如,分布式数据存储120可以被配置为存储一个或多个基于块的表。在至少一个示例中,分布式数据存储120可以是节点112的随机存取存储器(RAM)。
分布式计算***108还可包含集中式数据存储区(例如,集中式数据存储区122)。集中式数据存储可被配置成存储一个或多个数据集。在至少一个实施方案中,集中式数据存储122可以由管理***114和/或节点112访问。
图1中的计算机、网络和设备之间的消息可使用安全通信协议来传输,所述安全通信协议例如但不限于:文件传输协议(FTP);超文本传输协议(HTTP);安全超文本传输协议(HTTPS);安全套接层(SSL);ISO(例如,ISO 8583)和/或其类似者。
图1中的每个实体可通过任何合适的通信信道或通信网络(例如,网络106)通信。合适的通信网络可以是下列中的任一个和/或其组合:直接互连;互联网;局域网(LAN);城域网(MAN);作为互联网上节点的运行任务(OMNI);安全自定义连接;广域网(WAN);无线网络(例如,采用例如但不限于无线应用协议(WAP)、I-模式和/或其类似者的协议);以及/或其类似者。
图2描绘了能够实现分布式计算***(例如,图1的分布式计算***108)的管理***(例如,图1的管理***114)的至少一些实施方案的示例计算机体系结构200。管理***114可以单独包括处理器204和耦合到处理器204的计算机可读介质210,计算机可读介质包括可由处理器204执行的代码,用于执行本文描述的功能。应理解,相对于图2的模块描述的任何功能都可进行组合以由单个模块执行,或可由管理***114外部的模块执行。另外,还应该理解的是,相对于图2讨论的任何模块或由模块执行的功能都可以被由管理***114托管的虚拟机执行。管理***114可以被配置为托管可以执行任何合适数量的任务的功能的任何合适数量的虚拟机。
图2示出了以通信方式耦合到集中式数据存储122的管理***114。集中式数据存储122可如图2中所描绘的那样进行配置,或集中式数据存储122可完全或部分地被作为管理***114的一部分来提供。
分布式数据存储222、集中式数据存储122(以及本文所描述的任何其他数据库)可以是常规的、容错的、关系型的、可扩展的安全数据库,例如OracleTM或SybaseTM。可使用例如阵列、散列图、(链接)列表、基于块的表、结构化文本文件(例如XML)、表格和/或类似的各种数据结构来实施分布式数据存储222和/或集中式数据存储122。此类数据结构可存储在存储器中和/或结构化的文件中。
管理***114可包括处理器204,所述处理器可耦合到***存储器206和外部通信接口208。计算机可读介质210也可操作地耦合到处理器204。
计算机可读介质210可包括数个软件模块,包含数据集准备模块212、数据分发模块214和任务管理模块216。计算机可读介质210可以包括由处理器204执行的一个或多个虚拟机(例如,虚拟机218)。可利用更多或更少模块来执行本文所描述的功能。
虚拟机218可以是在管理***114上运行的抽象计算机,其执行数据集准备模块。虚拟机218可以被配置为提供编程接口(例如,基于块的表管理器接口220,JNI的示例),该接口提供虚拟机的编程框架(例如,Java)与本机应用程序(例如,基于块的表管理器224,非基于Java的应用程序)的编程框架之间的转换。在一些示例中,虚拟机218可以包括使得与本机应用程序(例如,基于块的表管理器224)相关联的库和/或应用程序编程接口库能够被加载的功能,以使得本机应用程序的功能可从虚拟机调用。作为非限制性示例,虚拟机可以是Java虚拟机(JVM),其包括Java本机接口(JNI)编程框架,该框架使得与基于块的表管理器224相对应的本机库/本机API能够由JVM加载。通过利用JNI框架,JVM中运行的Java代码可以与本机应用程序(特定于硬件和操作***平台的程序,如基于块的表管理器)之间相互调用和被调用。
数据集准备模块212可以包括代码,当在虚拟机218内执行时,代码使得处理器204从数据集生成一组关键字-值对。数据集准备模块212可以使处理器204利用基于块的表管理器接口220,来将关键字-值对提供给基于块的表管理器224。基于块的表管理器224可以在虚拟机218的执行环境之外的管理***114上执行。在不利用基于块的表管理器接口220的情况下,基于块的表管理器224的功能不可由虚拟机218和数据集准备模块212访问。通过利用基于块的表管理器接口220,使虚拟机能够使处理器204执行本机应用程序(例如,基于块的表管理器224)的功能。
在一些实施方案中,基于块的表管理器224可以利用关键字-值对来生成共同表示基于块的表的包含数据的一个或多个数据块。在某些情况下,可以压缩数据块。基于块的表管理器224可以维护与基于块的表相关联的元数据。元数据可以标识给定关键字和特定数据块之间的关联。在至少一个示例中,基于块的表管理器224可以经由基于块的表管理器接口220,来提供一个或多个基于块的表(例如,向数据集准备模块212)。数据集准备模块212(和/或基于块的表管理器224)可以被配置为使得一个或多个基于块的表存储在分布式数据存储120中。
在一些实施方案中,数据集准备模块212可以被配置为使处理器204将基于块的表提供给数据分发模块214,即管理***114的部件。数据分发模块214可以被配置为使处理器204将一个或多个基于块的表存储在分布式数据存储120中。另外或替代地,数据分发模块214可以被配置为使得处理器204将基于块的表(包括数据块和/或元数据)分发到节点112。根据一些实施方案,分发基于块的表包括向分布式计算环境中的每个节点提供副本。在接收时,节点可以被配置为将所接收到的基于块的表存储在本地存储器中。
在一些实施方案中,任务管理模块216可以被配置为接收与数据集(已经为其生成基于块的表)相关联的关键字的搜索请求。任务管理模块216可以被配置为使处理器204向一个或多个节点112提供搜索请求(例如,搜索任务)以进行进一步处理。任务管理模块216可以利用标准负载平衡技术来在分布式计算环境的节点112之间分发任务(例如,搜索任务)。任务管理模块216还可以被配置为使处理器204接收来自节点112的与响应于给定搜索请求而返回的数据相对应的响应消息(例如,对应于关键字的值)。在一些实施方案中,任务管理模块216可以被配置为在对应于先前接收的搜索请求的响应消息中提供返回的数据。
图3描绘了能够实现图1的分布式计算***108的节点(例如,图1的节点112)的至少一些实施方案的示例计算机体系结构300。节点112可分别包含处理器304和耦合到处理器304的计算机可读介质310,计算机可读介质310包括可由处理器304执行以执行本文所描述的功能的代码。应理解,相对于图3的模块描述的任何功能都可进行组合以由单个模块执行,或可由节点112外部的模块执行。另外,还应该理解的是,相对于图2讨论的任何模块或由模块执行的功能都可以被由管理***114托管的虚拟机执行。管理***114可以被配置为托管可以执行任何合适数量的任务的功能的任何合适数量的虚拟机。
图3示出了以通信方式耦合到集中式数据存储122的节点112。集中式数据存储122可如图3中所描绘的那样进行配置,或集中式数据存储122可完全或部分地被作为节点112的一部分来提供。分布式数据存储120可以使用诸如阵列、散列图、(链接)列表、基于块的表、结构化文本文件(例如,XML)、表格和/或类似的各种数据结构来实现。此类数据结构可存储在存储器中和/或结构化的文件中。
节点112可包括处理器204(一个或多个处理器),所述处理器可耦合到***存储器306和外部通信接口308。计算机可读介质310也可操作地耦合到处理器304。
计算机可读介质310可包括数个软件模块,所述软件模块包含搜索处理模块312和存储管理模块314。计算机可读介质310可以包括由处理器204执行的一个或多个虚拟机(例如,虚拟机316)。可利用更多或更少模块来执行本文所描述的功能。
虚拟机316可以是在节点112上运行的抽象计算机,其执行搜索处理模块312。虚拟机316可以被配置为提供编程接口(例如,基于块的表管理器接口318,JNI的示例),其提供虚拟机的编程框架(例如,Java)与本机应用程序(例如,基于块的表管理器320,非基于Java的应用程序)的编程框架之间的转换。在一些示例中,虚拟机316可以包括使得与本机应用程序相关联的库和/或应用程序编程接口库能够被加载的功能,使得本机应用程序的功能可以从虚拟机调用。作为非限制性示例,虚拟机可以是Java虚拟机(JVM),其包括Java本机接口(JNI)编程框架,其使得与基于块的表管理器320相对应的本机库/本机API能够由JVM加载。通过利用JNI框架,JVM中运行的Java代码可以与本机应用程序(特定于硬件和操作***平台的程序,如基于块的表管理器)之间相互调用和被调用。
搜索处理模块312可以包括代码,当在虚拟机316内执行时,代码使得处理器304接收包括关键字的搜索请求(例如,来自图2的任务管理模块216)。搜索处理模块312可以使处理器304利用基于块的表管理器接口318,来向基于块的表管理器320提供关键字。基于块的表管理器320可以在虚拟机316的执行环境之外的节点112上执行。在不利用基于块的表管理器接口318的情况下,基于块的表管理器320的功能不可由虚拟机316和搜索处理模块312访问。通过利用基于块的表管理器接口318,使虚拟机316能够使处理器204执行本机应用程序(例如,基于块的表管理器320)的功能。
作为非限制性示例,虚拟机316可以经由基于块的表管理器接口318,来向基于块的表管理器320提供一个或多个关键字。基于块的表管理器320可以利用关键字来识别基于块的表的与关键字对应的数据块。可以根据与基于块的表相关联的元数据来识别数据块。基于块的表(例如,元数据和任何合适数量的相应数据块)可以存储在分布式数据存储120(例如,节点112的RAM)中。基于块的表管理器320可以针对所识别的数据块执行搜索查询以检索与该关键字相对应的数据值。在至少一个示例中,虚拟机316可以被配置为使处理器304经由基于块的表管理器接口318,从基于块的表管理器320接收数据值。搜索处理模块312可以被配置为使处理器304在与搜索请求相对应的响应消息中发送所接收到的数据值。
在一些实施方案中,存储管理模块314可以被配置为使处理器304接收分发请求(例如,来自图2的数据分发模块214)。分发请求可以包括一个或多个基于块的表,其包括一个或多个数据块和与基于块的表相关联的元数据。存储管理模块314响应于分发请求,可以被配置为使处理器304存储一个或多个基于块的表(例如,在分布式数据存储120中)。在至少一个实施方案中,存储管理模块314可以被配置为使处理器304发送指出一个或多个基于块的表的存储是成功还是不成功的响应消息。在一些示例中,响应消息可以被发送到发起分发请求的设备。
图4描绘了能够实现基于块的表管理器402(例如,图2的基于块的表管理器224和/或图3的基于块的表管理器320)的至少一些实施方案的示例计算机体系结构400。基于块的表管理器402可以是特定于特定硬件或特定操作***的本机应用程序的示例。在一些实施方案中,基于块的表管理器402可以是开源软件应用程序,其为关键字-值数据提供高性能嵌入式数据库。基于块的表管理器可以被优化以利用许多中央处理单元(CPU)核,并且有效地使用快速存储,例如固态驱动器(SSD),用于输入/输出(I/O)绑定的工作负载。基于块的表管理器402的一个示例可以是数据库。在至少一个实施方案中,基于块的表管理器402可以由虚拟机执行,虚拟机由计算设备(例如,图1-3的管理***114和/或节点112)托管。
在一些实施方案中,基于块的表管理器402可以包括应用程序编程接口404。通常,应用程序编程接口404可以用于相对于本文提供的任何示例,从/向基于块的表管理器402(或基于块的表管理器402的模块)接收和/或提供任何合适的信息。
在一些实施方案中,表管理引擎406(基于块的表管理器402的部件)可以被配置为接收数据集的关键字-值对(例如,从图2的数据集准备模块212)。响应于接收到这样的关键字-值对,表管理引擎406可以被配置为将关键字-值对***到共同表示基于块的表的一个或多个数据块中。在完成生成一个或多个数据块之后,表管理引擎406可以被配置为提供基于块的表生成成功或不成功的指示(例如,提供给数据集准备模块212)。在一些实施方案中,表管理引擎406可以被配置为通过利用一个或多个标准压缩算法来压缩数据块。
在一些实施方案中,搜索模块408(基于块的表管理器402的部件)可以被配置为接收搜索请求(例如,来自图3的搜索处理模块312)。搜索请求可以单独地包括一个或多个关键字,要搜索这些关键字。在接收到时,或在另一合适的时间,搜索模块408可以利用基于块的表的元数据来识别存储与一个或多个关键字相对应的数据值的一个或多个数据块。搜索模块408可以针对所识别的数据块执行对一个或多个关键字的查询,以便检索数据值。在至少一个实施方案中,搜索模块408可以被配置为将检索到的数据值提供给另一计算设备/模块(例如,搜索处理模块312)。
图5示出了根据一些实施方案的示例计算环境500。在至少一个实施方案中,用户504(例如,图1的用户104之一)可以经由用户设备502(例如,图1的用户设备102的一个示例)提交分发请求506。分发请求506可以由图2的管理***114接收。响应于接收到分发请求506,管理***114可以被配置为识别一个或多个数据集508。利用一个或多个数据集508,管理***114可以被配置为使得一个或多个数据集准备技术在510处被执行。根据一些实施方案,数据集准备技术可以由图2的基于块的表管理器224来执行,并且利用基于块的表管理器接口220来激励。
在510处执行的数据集准备技术可以导致一个或多个基于块的表(例如,基于块的表512)的生成。在至少一个实施方案中,管理***114可以被配置为使得基于块的表512在514处被分发到节点112。在至少一个实施方案中,基于块的表512的实例可以存储在每个节点112上。基于块的表512可以包括存储数据集的一个或多个关键字-值对的一个或多个数据块。基于块的表512还可以包括标识关键字与存储与关键字对应的值的特定数据块之间的关联的元数据。在至少一个实施方案中,管理***114可以被配置为在518处提供响应消息。响应消息可以包括基于块的表512的生成成功或不成功的指示。
在至少一个实施方案中,用户504(或图1的用户104的不同用户)可以经由用户设备502(或用户设备102的另一用户设备)来提交搜索请求518。搜索请求516可以由图2的执行引擎118接收。响应于接收到搜索请求516,执行引擎118可以被配置为使得一个或多个数据搜索在节点112上被执行。例如,这样的数据搜索可以由图3的基于块的表管理器320来执行,并且利用基于块的表管理器接口318进行激励。
响应于执行数据搜索,执行引擎118可以接收与搜索请求中包括的关键字相对应的一个或多个数据值。在一些实施方案中,执行引擎118可以被配置为在522处向用户设备502提供响应消息。响应消息可以包括与搜索请求中包括的关键字相对应的数据值。
图6示出了说明根据一些实施方案的用于生成与数据集相关联的基于块的表并将它们分发到一个或多个计算设备的示例过程600的流程图。过程600可以在框602处开始,其中可以由数据集准备模块(例如,图2的数据集准备模块212)至少部分地基于数据集来生成一组关键字-值对。在一些实施方案中,数据集准备模块可以被由计算机***(例如,管理***114)托管的虚拟机(例如,图2的虚拟机218)执行。
在框604处,可以由数据集准备模块(例如,数据集准备模块212)将该组关键字-值对提供给基于块的表管理器(例如,基于块的表管理器224)。在一些实施方案中,数据集准备模块可以利用编程接口(例如,基于块的表管理器接口220),与基于块的表管理器进行交互,该编程接口被配置为至少使得在虚拟机内执行的模块能够访问虚拟机外部的功能。在一些实施方案中,将该组关键字-值对提供给基于块的表管理器使基于块的表管理器生成共同表示基于块的表的包含数据的多个数据块。此外,在一些实施方案中,基于块的表管理器224可以压缩多个数据块以包括小于或等于阈值的存储器分配。基于块的表管理器可以被配置为将各个数据块压缩为已压缩的存储器分配,其中压缩使得基于块的表能够利用小于多个计算***的存储器资源的大小的存储器分配,数据集太大而不能存储在多个计算***中的每一个上。
在框606处,基于块的表(例如,元数据和共同表示基于块的表的多个数据块)可以被分发到与计算机***不同的多个计算机***。例如,图2的数据分发模块214可以将基于块的表分发给多个计算节点(例如,节点112),其中基于块的表可以存储在计算节点的本地存储器(例如,RAM)中。在至少一个示例中,每个计算设备/节点都可以将基于块的表的只读副本存储在本地存储器中。另外,多个计算***还可以单独地具有存储器资源,所述存储器资源的大小大于与表示基于块的表的多个数据块相关联的存储器分配。
图7示出了说明根据一些实施方案的用于利用基于块的表(例如,由图4的基于块的表管理器402生成的基于块的表)来进行搜索的示例过程700的流程图。过程700可以在框702开始,其中接收包括关键字的搜索请求(例如,由图3的节点112的搜索处理模块312,通过图2的任务管理模块216)。搜索请求可以对应于数据集的多个关键字中的一个关键字。可以以与上面结合图6描述的方式类似的方式来生成多个关键字。在至少一个实施方案中,关键字可以对应于账户标识符。搜索请求可以由搜索处理模块312接收,该搜索处理模块被由远程计算机***(例如,节点112)托管的分开的虚拟机(例如,虚拟机316)执行。
在框704处,可以将关键字提供给基于块的表管理器(例如,图3的基于块的表管理器320)。在一些实施方案中,基于块的表管理器由远程计算机***(例如,节点112)在分开的虚拟机(例如,虚拟机316)之外的执行环境中执行。搜索处理模块可以利用分开的编程接口(例如,基于块的表管理器接口318)与基于块的表管理器进行交互,该编程接口可以被配置为至少使得在分开的虚拟机内执行的模块能够访问分开的虚拟机外部的功能。在一些实施方案中,向基于块的表管理器提供关键字使基于块的表管理器进行对其对应值的搜索。
例如,基于块的表管理器可以查询标识与关键字相关联的特定数据块的元数据。基于块的表管理器可以检索数据块,并且在一些情况下,可以从压缩状态解压缩数据块。基于块的表管理器可以利用关键字从数据块中检索相应的数据值,并且基于块的表管理器可以经由应用程序编程接口404,将数据值提供给搜索处理模块312。因此,在进行搜索的过程中,基于块的表管理器可以仅解压缩多个数据块的一部分(例如,一个数据块)(例如,解压缩的数据块对应于要搜索的关键字),而其余数据块可以保持压缩状态。在一些实施方案中,一旦提供了数据值,基于块的表管理器就可以使解压缩的数据块恢复到压缩状态。
在框706处,可以从基于块的表管理器(例如,基于块的表管理器320)接收(例如,由搜索处理模块312)对应于关键字的值。在一些示例中,该值可以对应于与关键字(例如,账户标识符)对应的交易处理数据。
在框708处,可以响应于搜索请求来提供值(例如,与账户标识符相关联的交易处理数据)。例如,值可以由搜索处理模块312提供给任务管理模块216。任务管理模块216可以进而将值提供给搜索请求的发起者。
技术优势
与当前分布式计算***中当前所需的操作相比,本发明的实施方案可提供更高效地进行数据搜索的能力。具体地说,上文所论述的每个基于块的表都能够被加载到存储设备(例如节点112等)的板载存储器(例如RAM)中。因此,最初比分布式计算***中的单个节点的存储容量(例如,256GB等)更大(例如,2TB)的数据集可以以压缩数据结构(例如,共同表示基于块的表的压缩数据块)被分发到各节点。因此,使用这些数据结构进行的数据搜索使得搜索能够比利用原始数据集执行搜索的情况的处理时间短。另外,可在更短的时间内执行搜索,因为节点所利用的存储器是RAM,其本质上比存储在磁盘(例如硬盘驱动器)上的数据搜索得更快。
示例计算机***
本文所描述的各种参与者和元件可操作一个或多个计算机设备以促进本文所描述的功能。上文描述的图1中的任何元件,包含任何服务器或数据库,可使用任何合适数目的子***来促进文中描述的功能。
以上图中示出的此类子***或部件的示例可通过***总线互连。可包含额外的子***,例如打印机、键盘、固定磁盘(或包括计算机可读介质的其他存储器)、耦合到显示适配器的监视器等等。***设备和耦合到输入/输出(I/O)控制器(其可为处理器或任何合适的控制器)的I/O设备可通过所属领域中已知的例如串行端口等任何数目的构件连接到计算机***。例如,串行端口或外部接口可用于将计算机装置连接到例如互联网的广域网、鼠标输入设备或扫描仪。通过***总线的互连允许中央处理器与每个子***通信,且控制来自***存储器或固定磁盘的指令的执行以及子***之间的信息交换。***存储器和/或固定磁盘可体现计算机可读介质。
本申请中描述的任何软件部件或功能可使用任何合适的计算机语言实施为由处理器执行的软件代码,所述计算机语言例如使用常规的或面向对象的技术等的Java、C++或Perl。软件代码可以存储为例如随机存取存储器(RAM)、只读存储器(ROM)、例如硬盘驱动器或软盘的磁性介质或例如CD-ROM的光学介质的计算机可读介质上的一系列指令或命令。任何此类计算机可读介质可驻存在单个计算装置上或单个计算装置内,并且可以存在于***或网络内的不同计算设备上或不同计算装置内。
以上描述是说明性的而不是限制性的。本发明的许多变化在所属领域的技术人员查阅本公开时可变得显而易见。因此,本发明的范围可以不参考以上描述来确定,而是可参考待决的权利要求以及其完整范围或等同物来确定。
在不脱离本发明的范围的情况下,任何实施方案的一个或多个特征可与任何其他实施方案的一个或多个特征组合。
除非明确指示有相反的意思,否则“一个/种”或“该/所述”的叙述旨在表示“一个/种或多个/种”。
上文所提及的所有专利、专利申请、公开案和描述都出于所有目的而以其全文引用的方式并入本文中。不承认它们是现有技术。
Claims (18)
1.一种用于数据搜索的方法,包括:
通过由计算机***托管的虚拟机执行的数据集准备模块,至少部分地基于数据集来生成一组关键字-值对;
由所述数据集准备模块向基于块的表管理器提供所述一组关键字-值对,所述基于块的表管理器由所述计算机***在所述虚拟机外部的执行环境中执行,所述数据集准备模块利用编程接口与所述基于块的表管理器进行交互,所述编程接口至少被配置为使得在所述虚拟机内执行的模块能够访问所述虚拟机外部的功能,其中将所述一组关键字-值对提供给所述基于块的表管理器导致所述基于块的表管理器生成共同表示基于块的表的包含数据的多个数据块;
由所述基于块的表管理器压缩所述多个数据块中的每一个,以生成压缩的基于块的表,所述压缩的基于块的表利用存储器分配,所述存储器分配小于与多个计算机***中的每一个相对应的、所述压缩的基于块的表要存储于其上的相应本地存储器资源,所述基于块的表在压缩之前太大而不能存储在所述相应本地存储器资源上;以及
由所述计算机***将所述压缩的基于块的表分发给与所述计算机***不同的多个计算机***。
2.如权利要求1所述的用于数据搜索的方法,其中所述编程接口提供所述虚拟机的第一编程框架与在所述计算机***上执行的所述基于块的表管理器的第二编程框架之间的转换。
3.如权利要求2所述的用于数据搜索的方法,其中将所述一组关键字-值对提供给基于块的表管理器还使得所述基于块的表管理器生成所述基于块的表的元数据,所述元数据提供多个关键字中的关键字与所述多个数据块中的对应数据块之间的映射。
4.如权利要求1所述的用于数据搜索的方法,其中所生成的多个数据块包括小于或等于阈值的存储器分配。
5.如权利要求1所述的用于数据搜索的方法,还包括:
在所述多个计算机***的远程计算机***处,通过由所述远程计算机***托管的分开的虚拟机执行的搜索处理模块,接收包括关键字的搜索请求;
由所述搜索处理模块向基于块的表管理器提供所述关键字,所述基于块的表管理器由所述远程计算机***在所述分开的虚拟机外部的执行环境中执行,所述搜索处理模块利用分开的编程接口与所述基于块的表管理器进行交互,所述分开的编程接口至少被配置为使得在所述分开的虚拟机内执行的模块能够访问所述分开的虚拟机外部的功能,其中将所述关键字提供给所述基于块的表管理器使得所述基于块的表管理器搜索其相应的值;
由所述搜索处理模块从所述基于块的表管理器接收与所述关键字对应的值;以及
由所述搜索处理模块,响应于所述搜索请求,提供所述值。
6.如权利要求1所述的用于数据搜索的方法,其中所述多个计算机***包括分布式***的多个计算节点,所述多个计算机***单独地具有存储器资源,所述存储器资源的大小大于与表示所述基于块的表的所述多个数据块相关联的存储器分配。
7.如权利要求1所述的用于数据搜索的方法,其中利用所述多个数据块进行的搜索以比用所述数据集执行搜索短的处理时间完成。
8.一种用于数据搜索的***,包括:
计算设备,所述计算设备包括:
第一处理器,以及
耦合到所述第一处理器的第一计算机可读介质,所述第一计算机可读介质包括能由所述第一处理器执行以实施第一方法的代码,所述第一方法包括:
通过由所述计算设备托管的虚拟机执行的所述计算设备的数据集准备模块,至少部分地基于数据集来生成一组关键字-值对;
由所述数据集准备模块向第一基于块的表管理器提供所述一组关键字-值对,所述第一基于块的表管理器由所述计算设备在所述虚拟机外部的执行环境中执行,所述数据集准备模块利用编程接口与所述基于块的表管理器进行交互,所述编程接口至少被配置为使得在所述虚拟机内执行的模块能够访问所述虚拟机外部的功能,其中将所述一组关键字-值对提供给所述基于块的表管理器导致所述基于块的表管理器生成共同表示基于块的表的包含数据的多个数据块;
由所述数据集准备模块压缩所述多个数据块中的每一个,以生成压缩的基于块的表,所述压缩的基于块的表利用存储器分配,所述存储器分配小于与多个计算机***中的每一个相对应的、所述压缩的基于块的表要存储于其上的相应本地存储器资源,所述基于块的表在压缩之前太大而不能存储在所述相应本地存储器资源上;以及
将所述压缩的基于块的表分发给与所述计算设备不同的多个计算机设备;以及
多个计算节点,每个计算节点包括:
第二处理器,以及
耦合到所述第二处理器的第二计算机可读介质,所述第二计算机可读介质包括能由所述第二处理器执行以实施第二方法的代码,所述第二方法包括:
通过由所述多个计算节点中的计算节点托管的分开的虚拟机执行的搜索处理模块接收包括关键字的搜索请求;
由所述搜索处理模块向第二基于块的表管理器提供所述关键字,所述第二基于块的表管理器由所述计算节点在所述分开的虚拟机外部的执行环境中执行,所述搜索处理模块利用分开的编程接口与所述基于块的表管理器进行交互,所述分开的编程接口至少被配置为使得在所述分开的虚拟机内执行的模块能够访问所述分开的虚拟机外部的功能,其中将所述关键字提供给所述基于块的表管理器使得所述基于块的表管理器搜索其相应的值;
由所述搜索处理模块从所述基于块的表管理器接收与所述关键字对应的值;
由所述搜索处理模块解压缩与所述关键字对应的所述值;以及
由所述搜索处理模块,响应于所述搜索请求,提供解压缩的值。
9.如权利要求8所述的***,其中所述关键字是账户标识符,并且所述值是与所述账户标识符相对应的交易处理数据。
10.如权利要求8所述的***,其中所述编程接口提供所述虚拟机的第一编程框架与在所述计算设备上执行的所述基于块的表管理器的第二编程框架之间的转换。
11.如权利要求10所述的***,其中将所述一组关键字-值对提供给基于块的表管理器还使得所述基于块的表管理器生成所述基于块的表的元数据,所述元数据提供多个关键字中的关键字与所述多个数据块中的对应数据块之间的映射。
12.如权利要求11所述的***,其中所生成的多个数据块包括小于或等于阈值的存储器分配,所述数据块根据所述多个关键字进行分类。
13.如权利要求8所述的***,其中所述多个计算节点参与分布式***,所述多个计算节点单独地具有存储器资源,所述存储器资源的大小大于与表示所述基于块的表的所述多个数据块相关联的存储器分配。
14.如权利要求8所述的***,其中由所述多个数据块进行的搜索以比用所述数据集执行搜索短的处理时间完成。
15.一种用于数据搜索的计算设备,包括:
处理器,以及
耦合到所述处理器的计算机可读介质,所述计算机可读介质包括能由所述处理器执行以实施一种方法的代码,所述方法包括:
通过由所述计算设备托管的虚拟机执行的数据集准备模块,至少部分地基于数据集来生成一组关键字-值对;
由所述数据集准备模块向基于块的表管理器提供所述一组关键字-值对,所述基于块的表管理器由所述计算设备在所述虚拟机外部的执行环境中执行,所述数据集准备模块利用编程接口与所述基于块的表管理器进行交互,所述编程接口至少被配置为使得在所述虚拟机内执行的模块能够访问所述虚拟机外部的功能,其中将所述一组关键字-值对提供给所述基于块的表管理器导致所述基于块的表管理器生成共同表示基于块的表的包含数据的多个数据块;
由所述基于块的表管理器压缩所述多个数据块中的每一个,以生成压缩的基于块的表,所述压缩的基于块的表利用存储器分配,所述存储器分配小于与多个计算机***中的每一个相对应的、所述压缩的基于块的表要存储于其上的相应本地存储器资源,所述基于块的表在压缩之前太大而不能存储在所述相应本地存储器资源上;以及
由所述计算设备将所述压缩的基于块的表分发给与所述计算设备不同的多个计算机设备。
16.如权利要求15所述的计算设备,其中所述数据集对应于交易处理数据。
17.如权利要求15所述的计算设备,其中所述方法还包括:
通过由所述计算设备托管的分开的虚拟机执行的搜索处理模块接收包括关键字的搜索请求;
由所述搜索处理模块向所述基于块的表管理器提供所述关键字,所述搜索处理模块利用分开的编程接口与所述基于块的表管理器进行交互,所述分开的编程接口至少被配置为使得在所述分开的虚拟机内执行的模块能够访问所述分开的虚拟机外部的功能,其中将所述关键字提供给所述基于块的表管理器使得所述基于块的表管理器搜索其相应的值;
由所述搜索处理模块从所述基于块的表管理器接收与所述关键字对应的值;以及
由所述搜索处理模块,响应于所述搜索请求,提供所述值。
18.如权利要求15所述的计算设备,其中所述多个计算设备包括分布式***的多个计算节点,所述多个计算节点单独地具有存储器资源,所述存储器资源的大小大于与表示所述基于块的表的所述多个数据块相关联的存储器分配。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410298994.3A CN118113221A (zh) | 2017-03-10 | 2017-03-10 | 存储器内搜索技术 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2017/021953 WO2018164700A1 (en) | 2017-03-10 | 2017-03-10 | Techniques for in-memory data searching |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410298994.3A Division CN118113221A (zh) | 2017-03-10 | 2017-03-10 | 存储器内搜索技术 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110419026A CN110419026A (zh) | 2019-11-05 |
CN110419026B true CN110419026B (zh) | 2024-04-16 |
Family
ID=63448251
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410298994.3A Pending CN118113221A (zh) | 2017-03-10 | 2017-03-10 | 存储器内搜索技术 |
CN201780088264.9A Active CN110419026B (zh) | 2017-03-10 | 2017-03-10 | 存储器内搜索技术 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410298994.3A Pending CN118113221A (zh) | 2017-03-10 | 2017-03-10 | 存储器内搜索技术 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11250011B2 (zh) |
EP (2) | EP4386577A2 (zh) |
CN (2) | CN118113221A (zh) |
WO (1) | WO2018164700A1 (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102375853A (zh) * | 2010-08-24 | 2012-03-14 | ***通信集团公司 | 分布式数据库***、在其中建立索引的方法和查询方法 |
CN102713904A (zh) * | 2009-12-22 | 2012-10-03 | 诺基亚公司 | 利用可缩放的数据结构的方法和装置 |
CN103268318A (zh) * | 2013-04-16 | 2013-08-28 | 华中科技大学 | 一种强一致性的分布式键值数据库***及其读写方法 |
CN104813276A (zh) * | 2012-11-26 | 2015-07-29 | 亚马逊科技公司 | 从备份***流式恢复数据库 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8375227B2 (en) * | 2009-02-02 | 2013-02-12 | Microsoft Corporation | Abstracting programmatic representation of data storage systems |
US9208211B2 (en) * | 2011-03-23 | 2015-12-08 | Red Hat, Inc. | Performing object relational mapping for a data grid |
WO2013035420A1 (ja) | 2011-09-09 | 2013-03-14 | インターナショナル・ビジネス・マシーンズ・コーポレーション | メモリ割り当て方法、プログラム、及びシステム |
US8700683B2 (en) | 2011-10-24 | 2014-04-15 | Nokia Corporation | Method and apparatus for providing a key-value based storage interface |
CN102394923A (zh) * | 2011-10-27 | 2012-03-28 | 周诗琦 | 一种基于n×n陈列结构的云***平台 |
US9178698B1 (en) * | 2011-12-21 | 2015-11-03 | Google Inc. | Dynamic key management |
US8904047B1 (en) * | 2012-06-29 | 2014-12-02 | Emc Corporation | Cloud capable storage system with high perormance nosql key-value pair operating environment |
CN103914483B (zh) * | 2013-01-07 | 2018-09-25 | 深圳市腾讯计算机***有限公司 | 文件存储方法、装置及文件读取方法、装置 |
IN2013MU02918A (zh) * | 2013-09-10 | 2015-07-03 | Tata Consultancy Services Ltd | |
US10275184B2 (en) * | 2014-07-22 | 2019-04-30 | Oracle International Corporation | Framework for volatile memory query execution in a multi node cluster |
US9740633B2 (en) | 2015-01-07 | 2017-08-22 | International Business Machines Corporation | Updatable address lookup application program interface |
KR20170060234A (ko) * | 2015-11-23 | 2017-06-01 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 장치의 동작 방법 |
US10740309B2 (en) * | 2015-12-18 | 2020-08-11 | Cisco Technology, Inc. | Fast circular database |
US9942321B2 (en) * | 2016-01-06 | 2018-04-10 | Ca, Inc. | Identity-to-account correlation and synchronization |
US10474656B1 (en) * | 2017-02-21 | 2019-11-12 | Nutanix, Inc. | Repurposing log files |
-
2017
- 2017-03-10 US US16/476,002 patent/US11250011B2/en active Active
- 2017-03-10 WO PCT/US2017/021953 patent/WO2018164700A1/en active Application Filing
- 2017-03-10 CN CN202410298994.3A patent/CN118113221A/zh active Pending
- 2017-03-10 CN CN201780088264.9A patent/CN110419026B/zh active Active
- 2017-03-10 EP EP24171704.0A patent/EP4386577A2/en active Pending
- 2017-03-10 EP EP17899515.5A patent/EP3593242B1/en active Active
-
2022
- 2022-01-06 US US17/570,290 patent/US11687542B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102713904A (zh) * | 2009-12-22 | 2012-10-03 | 诺基亚公司 | 利用可缩放的数据结构的方法和装置 |
CN102375853A (zh) * | 2010-08-24 | 2012-03-14 | ***通信集团公司 | 分布式数据库***、在其中建立索引的方法和查询方法 |
CN104813276A (zh) * | 2012-11-26 | 2015-07-29 | 亚马逊科技公司 | 从备份***流式恢复数据库 |
CN103268318A (zh) * | 2013-04-16 | 2013-08-28 | 华中科技大学 | 一种强一致性的分布式键值数据库***及其读写方法 |
Also Published As
Publication number | Publication date |
---|---|
US20200159728A1 (en) | 2020-05-21 |
EP4386577A2 (en) | 2024-06-19 |
US11250011B2 (en) | 2022-02-15 |
WO2018164700A1 (en) | 2018-09-13 |
US11687542B2 (en) | 2023-06-27 |
EP3593242A4 (en) | 2020-01-15 |
CN118113221A (zh) | 2024-05-31 |
CN110419026A (zh) | 2019-11-05 |
EP3593242B1 (en) | 2024-04-24 |
EP3593242A1 (en) | 2020-01-15 |
US20220129455A1 (en) | 2022-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9875265B2 (en) | Database table format conversion based on user data access patterns in a networked computing environment | |
US8332367B2 (en) | Parallel data redundancy removal | |
CN109983456B (zh) | 存储器内密钥范围搜索方法和*** | |
US20150193526A1 (en) | Schemaless data access management | |
CN111427971B (zh) | 用于计算机***的业务建模方法、装置、***和介质 | |
US11971880B2 (en) | Techniques for in-memory data searching | |
US20220019562A1 (en) | Data compression based on key-value store | |
CN109951553B (zh) | 数据处理方法、***、电子设备以及计算机可读存储介质 | |
US20150149437A1 (en) | Method and System for Optimizing Reduce-Side Join Operation in a Map-Reduce Framework | |
CN111880967A (zh) | 云场景下的文件备份方法、装置、介质和电子设备 | |
CN111966631A (zh) | 一种可快速分发的镜像文件生成方法、***、设备和介质 | |
CN110781159B (zh) | Ceph目录文件信息读取方法、装置、服务器及存储介质 | |
CN113687964A (zh) | 数据处理方法、装置、电子设备、存储介质及程序产品 | |
CN112416654A (zh) | 一种数据库日志重演方法、装置、设备及存储介质 | |
US10552419B2 (en) | Method and system for performing an operation using map reduce | |
CN105426119A (zh) | 一种存储设备及数据处理方法 | |
CN113010542A (zh) | 业务数据处理方法、装置、计算机设备及存储介质 | |
CN111581227A (zh) | 事件推送方法、装置、计算机设备及存储介质 | |
CN110419026B (zh) | 存储器内搜索技术 | |
US11727022B2 (en) | Generating a global delta in distributed databases | |
CN113076175A (zh) | 用于虚拟机的内存共享方法及装置 | |
US12019631B1 (en) | Systems and methods for reducing computational resource usage in a query-based data access system via a repeated query results repository | |
CN113535478B (zh) | 数据备份方法及装置、存储介质及电子设备 | |
EP4400982A1 (en) | Method and apparatus for processing photovoltaic data, and system for managing photovoltaic data |
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 |