CN113168348A - 通过下推过滤进行分析的多租户存储 - Google Patents
通过下推过滤进行分析的多租户存储 Download PDFInfo
- Publication number
- CN113168348A CN113168348A CN201980082737.3A CN201980082737A CN113168348A CN 113168348 A CN113168348 A CN 113168348A CN 201980082737 A CN201980082737 A CN 201980082737A CN 113168348 A CN113168348 A CN 113168348A
- Authority
- CN
- China
- Prior art keywords
- query
- data
- storage
- sub
- node
- 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.)
- Pending
Links
Images
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/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24535—Query rewriting; Transformation of sub-queries or views
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- 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/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
-
- 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/2455—Query execution
- G06F16/24568—Data stream processing; Continuous 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/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
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
- G06F30/3308—Design verification, e.g. functional simulation or model checking using simulation
- G06F30/331—Design verification, e.g. functional simulation or model checking using simulation with hardware acceleration, e.g. by using field programmable gate array [FPGA] or emulation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Computational Linguistics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Operations Research (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
描述了用于使用下推过滤进行分析的多租户存储的技术。一种多租户存储服务可以包括可被分组到机架中的资源,其中每个机架提供客户端服务可以向其提交查询的不同端点。每个机架可以包括接口节点和存储节点。所述接口节点可以通过将接收到的查询拆分为要由所述存储节点执行的多个块来预处理所述查询。每个存储节点都包括现场可编程门阵列(FPGA)和CPU。所述CPU可以接收所述操作,并且将所述操作转换为可以由所述FPGA执行的指令。所述指令可以包括指向数据的指针以及所述FPGA对所述数据执行的操作。所述FPGA可以处理数据流并返回经由所述接口节点返回的处理结果。
Description
背景技术
许多公司和其他组织运营计算机网络,所述计算机网络将多个计算系统互连来支持其运营,诸如所述计算系统位于同一地点(例如,作为本地网络的一部分)或替代地位于多个不同的地理位置(例如,经由一个或多个私有或公共中间网络连接)。例如,容纳大量互连计算系统的数据中心已经变得常见,诸如由单个组织运营并代表所述单个组织的私有数据中心,以及由作为企业的实体运营以向客户提供计算资源的公共数据中心。一些公共数据中心运营商为各种客户所拥有的硬件提供网络访问、电力和安全安装设施,而其他公共数据中心运营商提供还包括可供其客户使用的硬件资源的“全面服务”设施。然而,随着典型数据中心的规模和范围增加,预配、实施和管理物理计算资源的任务已经变得越来越复杂。
用于商品硬件的虚拟化技术的出现在为具有多种需求的许多客户管理大规模计算资源方面提供了益处,从而允许各种计算资源被多个客户高效且安全地共享。例如,虚拟化技术可以通过向每个用户提供由单个物理计算机器托管的一个或多个虚拟机而允许单个物理计算机器在多个用户之间共享,其中每个这种虚拟机都是充当不同逻辑计算系统的软件模拟,所述软件模拟向用户提供他们是给定硬件计算资源的唯一操作员和管理员这一错觉,同时还在各种虚拟机之间提供应用隔离和安全性。此外,一些虚拟化技术能够提供跨越两个或更多个物理资源的虚拟资源,诸如具有跨越多个不同物理计算系统的多个虚拟处理器的单个虚拟机。作为另一示例,虚拟化技术可以通过向每个用户提供可以分布在多个数据存储装置上的虚拟化数据存储区而允许数据存储硬件在多个用户之间共享,其中每个这种虚拟化数据存储区充当不同的逻辑数据存储区,所述逻辑数据存储区向用户提供他们是数据存储资源的唯一操作员和管理员这一错觉。
附图说明
将参考附图描述根据本公开的各种实施方案,在附图中:
图1是示出根据一些实施方案的用于通过下推过滤进行分析的多租户存储的环境的图示。
图2是示出根据一些实施方案的用于通过下推过滤进行分析的多租户存储的环境中的数据流的图示。
图3是示出根据一些实施方案的示例性存储节点的图示。
图4是示出根据一些实施方案的查询计划划分的示例的图示。
图5是示出根据一些实施方案的用于通过下推过滤进行分析的多租户存储的方法的操作的流程图。
图6示出了根据一些实施方案的示例性提供商网络环境。
图7是根据一些实施方案的向客户提供存储服务和硬件虚拟化服务的示例性提供商网络的框图。
图8是示出了可以在一些实施方案中使用的示例性计算机系统的框图。
具体实施方式
描述了用于通过下推过滤进行分析的多租户存储的方法、设备、系统和非暂时性计算机可读存储介质的各种实施方案。根据一些实施方案,一种多租户存储服务可以包括可被分组到机架中的资源,其中每个机架提供诸如查询引擎的客户端服务可以向其提交查询的不同端点。可以将查询处理下推到机架,所述机架可以包括多个接口节点和多个存储节点。接口节点可以通过将接收到的查询拆分为要由存储节点执行的多个块(例如,要对数据流执行的一个或多个操作)来预处理所述查询。接口节点可以基于请求将操作发送到存储节点。每个存储节点包括被配置为流处理器和CPU的现场可编程门阵列(FPGA)。CPU可以从接口节点接收操作,并将所述操作转换为可以由FPGA执行的指令。指令可以包括指向存储在存储节点上的数据的指针,以及在数据流传输通过时FPGA对数据执行的操作。然后,CPU可以将指令提供给FPGA,以处理数据流并返回处理结果。可以将结果返回到接口节点,该接口节点将结果返回给请求者。
数据湖为客户数据(包括结构化和非结构化数据)提供了集中式库。这允许客户在单个位置以任何可用的格式或类型存储其所有数据。然而,数据湖可能无法被多个客户端工具访问。例如,数据湖通常被实现为使得只能使用其自己的接口将数据添加到数据湖或从数据湖中检索数据。这限制了访问分析工具,其是可用的,但是在没有要求客户先将数据从数据湖中传送出并添加到分析工具可访问的源中的情况下,则可能无法访问客户的数据。这也限制了组合使用多个分析工具的能力。
另外,大型存储服务底层的基础结构无法扩展成向多个客户提供多租户数据湖。这些存储服务通常至少部分地从存储服务内的各个存储位置检索数据并重新汇编数据。这需要先通过网络传送大量数据,然后才能对数字进行处理,并导致网络和CPU瓶颈,从而降低性能。
图1是示出根据一些实施方案的用于通过下推过滤进行分析的多租户存储的环境的图示。实施方案通过提供可以与各种客户端服务介接并将处理下推到存储节点的存储基础结构来解决这些缺点。这使得数据能够在存储节点上进行本地处理,其中仅处理结果(例如,查询结果等)通过网络传送。在各种实施方案中,提供商网络100可以提供多租户存储服务101,该多租户存储服务包括可以被分组为机架102A至102C的资源集。每个机架可以提供客户端查询引擎104可以连接以向机架提交请求的不同端点(例如,外部交换机109),所述请求的处理可以被下推。每个机架102可以包括多个接口节点110A至110C和多个存储节点114A至114C。尽管在图1中示出了相等数量的接口节点和存储节点,但是在各种实施方案中,取决于性能要求、存储要求等,接口节点的数量可以大于或小于存储节点的数量。高速的机架内联网允许任何接口节点通过内部交换机112与任何存储节点进行通信。
提供商网络100为用户提供利用各种类型的计算相关资源中的一者或多者的能力,所述计算相关资源诸如计算资源(例如,执行虚拟机(VM)实例和/或容器、执行批作业、执行代码而不预配服务器)、数据/存储资源(例如,对象存储、块级存储、数据档案存储、数据库和数据库表等)、网络相关资源(例如,配置虚拟网络(包括多组计算资源)、内容传递网络(CDN)、域名服务(DNS))、应用程序资源(例如,数据库、应用构建/部署服务)、访问策略或角色、身份策略或角色、机器图像、路由器及其他数据处理资源等。这些和其他计算资源可以作为服务提供,所述服务诸如:可以执行计算实例的硬件虚拟化服务、可以存储数据对象的存储服务等。提供商网络100的用户(或“客户”)可以利用与客户账户相关联的一个或多个用户账户,但是可以根据使用的情境稍微可互换地使用这些项。用户可以经由一个或多个接口在一个或多个中间网络106(例如,因特网)上与提供商网络100交互,诸如通过使用应用程序编程接口(API)调用、经由被实现为网站或应用程序的控制台等。一个或多个接口可以是提供商网络100的控制平面的一部分,或者用作其前端,其包括支持和启用可能会更直接地提供给客户的服务的“后端”服务。
为了提供这些和其他计算资源服务,提供商网络100通常依赖于虚拟化技术。例如,虚拟化技术可以用于为用户提供控制或利用计算实例(例如,使用客机操作系统(O/S)的VM,所述客机操作系统使用管理程序操作,所述管理程序可能会或可能不会进一步在底层主机O/S之上运行;可以或可以不在VM中操作的容器;可以在没有底层管理程序的“裸金属”硬件上执行的实例)的能力,其中可以使用单个电子装置来实现一个或多个计算实例。因此,用户可以直接利用由提供商网络托管的计算实例来执行各种计算任务,或者可以通过提交要由提供商网络执行的代码来间接地利用计算实例,所述提供商网络继而利用计算实例来执行代码(通常无需用户具有对所涉及的一个或多个底层计算实例的任何控制或了解)。
用户可以通过一个或多个客户端查询引擎104访问多租户存储服务101。客户端查询引擎可以包括各种客户端服务,诸如各种SQL服务和非SQL服务。多租户存储服务101存储来自多个客户的数据。在一些实施方案中,为了确保请求者可以访问请求的数据,在数字1处,可以由授权服务108来授权请求者。在数字2处,可以将请求发送到多租户存储服务101,所述请求包括在数字1处从授权服务108接收的授权令牌。所述请求可以包括要由包括所请求数据的一个或多个存储节点执行的查询执行计划的全部或部分。在一些实施方案中,可以将查询提供给一个或多个客户端查询引擎104。一个或多个客户端查询引擎可以生成查询执行计划,并且可以将执行计划划分为一个或多个子计划。查询执行计划和子计划可以表示为查询树。树的全部或部分可以被序列化并发送到包括要处理的数据的机架102A。在一些实施方案中,在请求中发送到机架的查询树的部分可以包括由机架支持的操作,诸如要在存储节点处本地执行的查询执行计划的扫描和聚合部分。在各种实施方案中,多租户存储服务101可以发布由机架102支持的操作的列表。
在一些实施方案中,客户端查询引擎可以为从用户或其他实体接收的查询生成查询执行计划。可以通过它们在外部模式中的存在来标识存储在存储节点114A至114C中的数据,诸如表数据。在一些实施方案中,客户端查询引擎可以从多租户存储服务101接收数据清单信息以用于执行代码生成。客户端查询引擎可以从查询中标识包括由多租户存储服务101支持的操作的子计划。在一些实施方案中,多租户存储服务可以周期性地发布所支持的操作的库。客户端查询引擎或其他客户端服务可以通过使用该库在表示查询执行计划的查询树上运行技术映射算法来使用该库。在各种实施方案中,技术映射算法可以用于不同的客户端查询引擎。
可以通过外部交换机109在机架102A处接收请求。外部交换机可以是客户端查询引擎访问机架所借助的端点。外部交换机可以在数字3处将请求路由到接口节点110A。在一些实施方案中,可以将请求路由到请求中指定的接口节点。在一些实施方案中,可以在机架102A中的多个接口节点110上对请求进行加载平衡。接口节点110A接收请求并分析请求以确定正在处理什么数据。在一些实施方案中,如数字4处所示,接口节点110A可以在将请求传递给存储节点进行处理之前,使用授权服务108来对请求进行授权。例如,当请求不包括授权令牌时,接口节点可以对请求进行授权。在一些实施方案中,接口节点可以直接与授权服务通信,或者可以通过外部交换机或其他实体进行通信以用授权服务对请求进行授权。
每个接口节点可以维护存储在机架的存储节点上的数据目录,并使用所述目录确定哪个或哪些存储节点包括要处理以服务请求的数据。如所讨论的,接口节点可以接收查询执行计划的序列化子树。接口节点可以通过将序列化子树拆分为要由存储节点执行的多个块(例如,要对数据流执行的一个或多个操作)来预处理所述序列化子树。接口节点可以经由内部交换机112在数字5处基于请求将操作发送到存储节点114A,所述内部交换机在数字6处将操作路由到存储节点114A。每个存储节点114包括自定义数字逻辑(CDL),诸如在现场可编程门阵列(FPGA)中实现,该阵列被配置为流处理器和CPU。在一些实施方案中,可以在专用集成电路(ASIC)、图形处理单元(GPU)或其他处理器中实现CDL。CPU可以从接口节点接收操作,并将所述操作转换为可以由CDL执行的指令。指令可以包括指向存储在存储节点上的数据的指针,以及在数据流传输通过时CDL对数据执行的操作。然后,CPU可以将指令提供给CDL,以处理数据流并返回处理结果。可以将结果返回到接口节点,该接口节点将结果返回给请求者。尽管图1中示出的示例示出了与单个存储节点通信的接口节点,但是在各个实施方案中,接口节点可以与多个存储节点通信以执行子查询。
如下面进一步讨论的,每个存储节点包括连接到多个存储驱动器(例如,硬盘驱动器、SSD驱动器等)的CDL。与过去经由主机总线连接的存储节点不同,实施方案包括其中每个CDL充当存储驱动器的集线器的存储节点。另外,每个CDL可以被配置为流处理引擎,所述流处理引擎可以处理一系列操作(例如,数值比较、数据类型变换、正则表达式等),并且然后将数据流传输通过CDL以进行处理。当对来自存储节点中的驱动器的数据进行操作时,使用CDL执行这些操作不会降低吞吐量。另外,传统的数据湖为各种类型的数据存储提供存储,而对存储的数据的分析是由另一服务单独执行,所述另一服务先从数据湖中检索所有要处理的数据,然后处理数据,丢弃大部分数据,并返回结果。由于非常高的数据传送要求,这限制了此类服务的可扩展性。然而,如上所讨论的,实施方案首先在数据湖中本地处理数据,从而提供了高度可扩展的分析解决方案。
图2是示出根据一些实施方案的用于通过下推过滤进行分析的多租户存储的环境中的数据流的图示。图2示出了客户端查询引擎104(或其他客户端服务)与多租户存储服务101之间的数据流的概况。尽管在图2的实施方案中示出了单个接口节点和存储节点,但是这是只是为简化说明起见。如以上关于图1所讨论的,每个机架102可以包括多个存储节点和接口节点。
如图2所示,在数字1处,客户端查询引擎104可以将获得机架的包括要由查询处理的数据的端点的请求发送到数据目录200。所述请求可以包括与要处理的数据相关联的标识符(例如,表名、文件名等)。数据目录可以由提供商网络100维护,或者可以由客户端系统或第三方服务单独维护。数据目录可以返回与机架相关联的一组端点,该组端点包括所请求的数据。在一些实施方案中,如果特定数据段存储在多个机架中,则客户端查询引擎可以选择要向其发送请求的单个端点。如果请求失败,则可以将另一个请求发送到包括所请求的数据的不同端点。使用从数据目录200检索的端点,在数字2处,客户端查询引擎104可以发送消息,所述消息指示数据集正在被请求的部分以及要对该数据执行的操作。在一些实施方案中,来自客户端查询引擎的请求可以包括来自较大查询的子查询。客户端查询引擎可以标识子查询可以由存储节点处理。客户端查询引擎可以发送与子查询相对应的查询树的序列化表示。
接口节点110可以接收请求并确定哪个存储节点包括要由请求处理的数据。接口节点可以通过将请求划分为多个指令来预处理请求,并在数字3处将此请求的预处理后的版本发送到存储节点。每个存储节点可以包括CPU 202、CDL 204和存储阵列206。例如,存储阵列可以包括多个存储驱动器(例如,SSD驱动器或其他存储驱动器)。CPU202可以将请求转换为一系列CDL请求,并且在数字4处将那些请求发出给CDL 204。在一些实施方案中,CDL请求可以包括一系列数据处理指令(在本文中也称为“分析指令”)和一系列数据位置。
数据处理指令可以包括要由CDL执行的各种数据变换、谓词等。例如,指令可以包括对每个输入数据元素进行变换(例如,将输入的X字节整数扩展为Y字节整数等)的指令。指令还可以包括以下指令:向扩展数据元素增加或从扩展数据元素中减去第一常量值,以及然后将结果与第二常量进行比较并且在结果大于第二常量时将位向量填充为包括“1”。基于来自CPU的指令,可以指示CDL对存储在数据位置中的数据执行数据处理指令中定义的任务。例如,在CDL在FPGA中实现的情况下,可以指示FPGA(或FPGA内配置的分析处理器)将一组预编程的数据集管道配置为执行请求的数据处理指令。
CPU可以发送第二指令序列,该第二指令序列包括其中存储要处理的数据的地址。然后,CDL可以使用数据位置,并在数字5处启动通过数据连接(诸如PCIE)从存储阵列206到CDL 204的数据传送。CDL通过数据管道路由数据,并产生输出位向量。在各种实施方案中,可以对多个数据集(例如,来自表的多个列)执行这样的处理,并且可以组合所得的位向量。然后可以提供一组新的指令,以将该所得位向量应用于另一个数据集,并仅输出数据集中与位向量中的“1”值相对应的那些元素。这提供了较高的流处理速率,以将变换和谓词应用于数据,作为响应,通过网络连接仅将数据处理的结果经由接口节点传递到客户端查询引擎。
图3是示出根据一些实施方案的示例性存储节点的图示。如图3所示,存储节点114A可以包括CDL 204和CPU 202。如所讨论的,CDL可以包括FPGA、ASIC、GPU或其他处理器。在一些实施方案中,CDL可以实现被配置为执行SQL类型的流传输操作的流处理器。CDL可以被配置一次,然后可以被指示执行由CPU汇编的分析指令,以执行请求的数据处理操作。CDL204可以通过多个驱动器控制器300A至300D连接到多个存储驱动器302A至302P。在该实现方式中,CDL用作集线器,其中CDL从存储驱动器302获得数据,执行所请求的数据处理操作(例如,过滤),并返回所得的已处理数据。这样,CDL在数据传递通过CDL时对其进行处理,从而提高了存储节点的吞吐量。每个存储节点可以包括网络接口304,通过该网络接口,存储节点可以与同一机架内的接口节点进行通信。在各种实施方案中,网络接口304可以是CDL的对等体。这允许CPU直接通过网络接口接收数据,而不必通过CDL将数据路由到CPU。
在各种实施方案中,CDL而不是CPU可以启动对存储驱动器302的读取和写入。在一些实施方案中,每个驱动器控制器(诸如NVME接口)可以在数据通过网络接口传递到CDL或从CDL传递时执行数据的压缩、空间管理和/或加密。因此,CDL可以以明文形式处理数据,而不必首先对数据进行解压和/或解密。同样地,CDL可以将数据写入存储位置,而无需首先压缩和/或加密数据。在一些实施方案中,CDL而不是驱动器控制器可以执行压缩和/或加密。
尽管图3示出了具有单个CPU和CDL的实施方案,但是在各种实施方案中,存储节点可以包括多个CDL和/或CPU。例如,存储节点114A可以包括多个存储系统(例如,如301A至301C处所指示),其中每个存储系统301A至301C包括CDL作为存储装置的集线器。另外或替代地,实施方案可以包括多个CPU。例如,每个存储系统301A至301C可以与单独的CPU相关联,或者如图3所示,多个存储系统可以共享CPU,其中每个存储系统都是其他存储系统的对等体。
在一些实施方案中,所有CDL(例如,FPGA、ASIC等)可以被配置为相同类型的流处理器。在一些实施方案中,可以基于存储在连接到CDL的存储装置上的数据的类型来配置不同的CDL。例如,如果存储系统正在存储地理空间数据,则该存储系统中的CDL可以专门用于对地理空间数据执行操作,而不同存储系统或不同存储节点上的CDL可以被配置为对各种各样的数据类型执行操作。
图4是示出根据一些实施方案的查询计划划分的示例的图示。如图4所示,客户端查询引擎102可以为查询生成查询执行计划400。查询执行计划可以包括多个子计划402和404。每个子计划可以包括要作为查询的一部分执行的一个或多个操作,并且可以表示查询执行计划的树表示内的子树。基于由多租户存储服务发布的库,可以验证每个子计划以包括可以由多租户存储服务101执行的操作。一旦验证了子计划,就可以对其进行序列化并将其发送到包括要处理的数据的机架上的接口节点。如图4所示,可以将不同的子计划发送到不同的接口节点以进行处理,这些可以是同一机架或不同机架上的不同接口节点。替代地,可以将多个子计划发送到同一接口节点以进行处理。
接口节点可以验证传入的请求,以确保它们包括由多租户存储服务支持的操作。该验证还可以包括标识可以在存储节点内执行的每个子计划的部分。在一些实施方案中,由多租户存储服务支持的操作库的子集可以用于标识由存储节点本身支持的操作。
在一些实施方案中,每个接口节点可以维护内部目录,所述内部目录具有数据切片到存储节点的映射。如果是查询子计划,则接口节点使用该目录来确定机架上要与之通信的存储节点,以将查询子计划应用于整个数据(例如,正在被处理的整个表)。接口节点可以生成指令406A、406B,所述指令标识存储节点上的要处理的数据部分以及来自子计划的要对所述数据执行的操作。这些指令可以发送到存储节点。
如上所述,每个存储节点可以包括具有两个接口的FPGA:到存储驱动器阵列的接口和到CPU的另一个接口。接口节点可以使用CPU通过网络与同一机架中的存储节点进行通信,所述CPU继而通过硬件抽象层(HAL)与CDL通信。HAL接口用于将指令406A和406B提交给CDL,所述CDL将其设置为新作业(例如,分析指令),请求通过当前配置拉取数据流(例如,数据指令)、或管理位图的CDL存储器分配。当从接口节点接收到指令时,存储节点可以将指令分解成多个作业408A、408B。在一些实施方案中,来自接口节点的指令可以包括一组独立的查询子计划,并且每个独立的查询子计划导致不同的作业。
在一些实施方案中,每个存储节点可以维护存储在其相关联的存储驱动器上的每个块的元数据。可以将子计划中的任何常量与每个块的该元数据进行比较,以从考虑中移除不可能包括相关值的块。该过程将有效地减少指令中提供的任何数据范围,并可能将该数据范围碎片化。在一些实施方案中,元数据可以包括在每个块中找到的最小值和最大值以及该块中的值的数量,从而提供块级过滤。
接口节点可以遍历表示每个工作的独立子计划,以便将其分解为许多分析指令,其中每个分析指令表示对CDL上的数据的传递。在单个分析指令中可表示的子计划部分与CDL中每个过滤器单元中的阶段数量有关。单独地,由于每个数据凭单必须引用磁盘上的连续数据段,因此可以沿着块边界进一步细分来自上一步的数据范围。
如果需要一个以上的分析指令来完成作业的执行,则可以将CDL存储器中的空间分配为存储表示作业的中间结果的位图。第一配置可以填充第一位图,第二配置将使用第一位图并填充第二位图,依此类推。在一些实施方案中,提交分析指令,之后提交所有对应的数据指令。重复该过程,直到已经提交了单个作业的所有分析指令为止。当CDL将给定的计算应用于请求的数据时,将结果流传输到CPU的存储器中,诸如通过直接存储器访问(DMA)。一旦已经从CDL接收到所有结果,或者一旦已经从CDL接收到在指令406A、406B中指定的可配置量的结果,处理器就可以将结果转发给发送指令的接口节点。在一些实施方案中,可以经由跨步DMA来完成该转发,使得来自结果数据的值被直接放置在等待批次中的正确位置。一旦数据已经被处理,就将结果返回到接口节点以路由回到请求者客户端查询引擎。
在一些实施方案中,其中CDL在FPGA中实现,FPGA可以被配置为流处理器,并且然后指示其使用已经生成以处理该查询的分析指令来指示执行每个查询。例如,FPGA可以被配置为包括专用于分析处理的多个软处理器。当接收到查询时,可以将软处理器配置为在一组数据位置上执行子查询。为每个子查询生成的分析指令可以用于配置这些软处理器。替代地,可以针对每个查询来重新配置FPGA(例如,重新配置为包括专用于执行不同操作的不同软处理器)。
图5是示出根据一些实施方案的用于通过下推过滤进行分析的多租户存储的方法的操作500的流程图。操作500(或本文描述的其他过程、或其变型、和/或组合)的一些或全部在配置有可执行指令的一个或多个计算机系统的控制下执行,并且作为共同在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用程序)实现、由硬件实现或由其组合实现。代码以例如包括可由一个或多个处理器执行的指令的计算机程序的形式存储在计算机可读储存介质上。计算机可读储存介质是非暂时性的。在一些实施方案中,操作500中的一个或多个(或全部)由其他附图的多租户存储服务101、授权服务108或客户端查询引擎104执行。
操作500包括:在框502处,接收对数据执行查询的请求,所述数据存储在多租户存储服务中的多个存储节点中。在一些实施方案中,所述请求包括与查询相对应的查询执行计划的序列化表示。在一些实施方案中,从多个分析引擎中的一个接收请求,所述多个分析引擎被配置为生成与查询相对应的查询执行计划。
操作500包括:在框504处,将请求发送到多租户存储服务的接口节点,所述接口节点用于标识要由存储节点执行的至少一个子查询,所述存储节点包括连接到自定义数字逻辑(CDL)的多个存储装置。在一些实施方案中,CDL包括用于连接到多个存储装置的第一接口和用于连接到处理器的第二接口,所述处理器将CDL配置为执行子查询并向CDL提供多个数据指令,所述数据指令包括指向多个存储装置上的数据位置的指针。在一些实施方案中,在现场可编程门阵列(FPGA)、专用集成电路(ASIC)或图形处理单元(GPU)中的一者或多者中实现自定义数字逻辑。
操作500包括:在框506处,指示CDL执行子查询。在一些实施方案中,将CDL配置为执行子查询可以包括:接口节点基于子查询生成至少一个分析指令;以及将至少一个分析指令发送到存储节点的处理器,所述处理器用于将CDL中的一组数据管道配置为实现子查询的至少一部分。
操作500包括:在框508处,致使CDL对来自存储节点中的多个存储位置的流数据执行子查询以生成查询结果。操作500包括:在框510处,经由接口节点返回查询结果。在一些实施方案中,经由接口节点返回查询结果可以包括将查询结果流传输到处理器的存储器,一旦处理器已经接收到可配置量的查询结果,处理器就将查询结果的子集返回到接口节点。
在一些实施方案中,接口节点使用具有数据到存储节点的映射的目录来标识用于执行子查询的存储节点。在一些实施方案中,查询引擎将获得多租户存储服务中的端点的请求发送到数据目录,将所述请求发送到端点以执行所述查询,所述请求到数据目录。
在一些实施方案中,所述操作还可以包括发布支持的操作的库,所述库用于在将子查询发送到CDL以进行执行之前对其进行验证。在一些实施方案中,所述操作还可以包括:从所述请求获得授权令牌;以及利用授权服务来验证授权令牌以对进行请求授权。
在一些实施方案中,所述操作包括:从查询引擎接收对客户数据执行查询的请求,所述客户数据存储在多租户存储服务中的多个存储节点中,所述请求包括查询引擎针对查询生成的查询执行计划的序列化表示;使用授权服务对请求进行授权;将所述请求发送到多租户存储服务的机架的接口节点,所述接口节点用于标识要由存储节点执行的查询执行计划的序列化表示中的至少一个子计划;基于至少一个子计划生成分析指令和数据指令;标识包括客户数据的至少一个存储节点;将分析指令和数据指令发送到至少一个存储节点;由至少一个存储节点执行分析指令,以指示自定义数字逻辑(CDL)执行所述子计划;执行数据指令以通过CDL流传输来自存储节点中的多个存储位置,所述CDL用于在数据流传输通过CDL时对数据执行子计划以生成查询结果;以及经由接口节点将查询结果返回到查询引擎。
图6示出了根据一些实施方案的示例性提供商网络(或“服务提供商系统”)环境。提供商网络600可以经由一个或多个虚拟化服务610向客户提供资源虚拟化,所述一个或多个虚拟化服务允许客户购买、租借或以其他方式获得在一个或多个数据中心中的一个或多个提供商网络内的装置上实现的虚拟化资源(包括但不限于计算资源和存储资源)的实例612。本地因特网协议(IP)地址616可以与资源实例612相关联;本地IP地址是提供商网络600上的资源实例612的内部网络地址。在一些实施方案中,提供商网络600还可以提供客户可以从提供商600获得的公共IP地址614和/或公共IP地址范围(例如,因特网协议版本4(IPv4)或因特网协议版本6(IPv6)地址)。
常规上,提供商网络600可以经由虚拟化服务610来允许服务提供商的客户(例如,操作包括一个或多个客户装置652的一个或多个客户端网络650A至650C的客户)使指派或分配给客户的至少一些公共IP地址614与指派给客户的特定资源实例612动态地相关联。提供商网络600还可以允许客户将先前映射到分配给客户的一个虚拟化计算资源实例612的公共IP地址614重新映射到也分配给客户的另一虚拟化计算资源实例612。例如,服务提供商(诸如,一个或多个客户网络650A至650C的运营商)的客户可以使用由服务提供商提供的虚拟化计算资源实例612和公共IP地址614来实施客户特定的应用并且在诸如因特网的中间网络640上呈现客户的应用。然后,中间网络640上的其他网络实体620可以生成到由一个或多个客户网络650A至650C发布的目的地公共IP地址614的流量;所述流量被路由到服务提供商数据中心,并且在数据中心处经由网络底层路由到虚拟化计算资源实例612的当前映射到目的地公共IP地址614的本地IP地址616。类似地,来自虚拟化计算资源实例612的响应流量可以经由网络底层路由回到中间网络640上到源实体620。
如本文中所使用的,本地IP地址是指例如提供商网络中的资源实例的内部或“私有”网络地址。本地IP地址可以在由因特网工程任务组(IETF)的注释请求(RFC)1918保留的地址块内和/或具有由IETF RFC 4193指定的地址格式,并且可以在提供商网络内更改。源自提供商网络外部的网络流量不会直接路由到本地IP地址;而是,流量使用映射到资源实例的本地IP地址的公共IP地址。提供商网络可以包括提供网络地址转译(NAT)或类似功能以执行从公共IP地址到本地IP地址的映射的网络装置或设备,反之亦然。
公用IP地址是由服务提供商或由客户分配给资源实例的因特网可变网络地址。例如,经由1:1NAT转译路由到公共IP地址的流量,并将其转发到资源实例的相应本地IP地址。
提供商网络基础结构可能会将一些公共IP地址分配给特定的资源实例;这些公共IP地址可以被称为标准公共IP地址,或简称为标准IP地址。在一些实施方案中,标准IP地址到资源实例的本地IP地址的映射是所有资源实例类型的默认启动配置。
至少一些公共IP地址可以被分配给提供商网络600的客户或由提供商网络600的客户获得;然后,客户可以将其分配到的公共IP地址指派给分配给客户的特定资源实例。这些公共IP地址可以被称为客户公共IP地址,或简称为客户IP地址。代替如在标准IP地址的情况下由提供商网络600指派给资源实例,客户IP地址可以由客户例如经由服务提供商提供的API指派给资源实例。与标准IP地址不同,客户IP地址被分配给客户帐户,并且可以根据需要或期望由相应客户重新映射到其他资源实例。客户IP地址与客户帐户(而不是特定的资源实例)相关联,并且客户控制该IP地址,直到客户选择释放它为止。与常规的静态IP地址不同,客户IP地址允许客户通过将客户的公共IP地址重新映射到与客户帐户相关联的任何资源实例来掩盖资源实例或可用性区域故障。例如,客户IP地址使客户能够通过将客户IP地址重新映射到替换资源实例来解决客户资源实例或软件的问题。
图7是根据一些实施方案的向客户提供存储服务和硬件虚拟化服务的示例性提供商网络的框图。硬件虚拟化服务720向客户提供多个计算资源724(例如,VM)。例如,可以将计算资源724租借或租赁给提供商网络700的客户(例如,实现客户网络750的客户)。每个计算资源724可以设置有一个或多个本地IP地址。提供商网络700可以被配置为将分组从计算资源724的本地IP地址路由到公共因特网目的地,以及从公共因特网源路由到计算资源724的本地IP地址。
提供商网络700可以为例如经由本地网络756耦合到中间网络740的客户网络750提供经由耦合到中间网络740和提供商网络700的硬件虚拟化服务720实现虚拟计算系统792的能力。在一些实施方案中,硬件虚拟化服务720可以提供一个或多个API 702(例如,web服务接口),经由所述API,客户网络750可以例如经由控制台794(例如,基于web的应用程序、独立应用程序、移动应用程序等)访问由硬件虚拟化服务720提供的功能。在一些实施方案中,在提供商网络700处,客户网络750处的每个虚拟计算系统792可以对应于被租赁、租借或以其他方式提供给客户网络750的计算资源724。
客户可以例如经由一个或多个API 702从虚拟计算系统792和/或另一客户装置790(例如,经由控制台794)的实例访问存储服务710的功能性,以从提供商网络700所提供的虚拟数据存储区716(例如,文件夹或“桶”、虚拟化卷、数据库等)的存储资源718A至718N中访问数据以及将数据存储到所述存储资源。在一些实施方案中,可以在客户网络750处提供虚拟化数据存储网关(未示出),所述虚拟化数据存储网关可以在本地缓存至少一些数据(例如,频繁访问的或关键的数据),并且可以经由一个或多个通信信道与存储服务710通信以从本地缓存上传新的或修改的数据,使得维护数据的主存储区(虚拟化数据存储区716)。在一些实施方案中,用户经由虚拟计算系统792和/或在另一客户装置790上可以经由充当存储虚拟化服务的存储服务710安装和访问虚拟数据存储区716卷,并且这些卷在用户看来可以是本地(虚拟化)存储装置798。
虽然在图7中未示出,但是还可以经由一个或多个API 702从提供商网络700内的资源实例访问一个或多个虚拟化服务。例如,客户、设备服务提供商或其他实体可以经由API 702从提供商网络700上的相应的虚拟网络内部访问虚拟化服务,以请求在虚拟网络内或另一虚拟网络内分配一个或多个资源实例。
说明性系统
在一些实施方案中,一种实现如本文所述的用于使用下推过滤进行分析的多租户存储的技术的部分或全部的系统可以包括通用计算机系统(诸如图8所示的计算机系统800),所述通用计算机系统包括一个或多个计算机可访问介质或者被配置为访问一个或多个计算机可访问介质。在所示的实施方案中,计算机系统800包括一个或多个处理器810,所述一个或多个处理器经由输入/输出(I/O)接口830耦合到系统存储器820。计算机系统800还包括耦合到I/O接口830的网络接口840。虽然图8将计算机系统800示出为单个计算装置,但是在各种实施方案中,计算机系统800可以包括一个计算装置或被配置为作为单个计算机系统800一起工作的任何数量的计算装置。
在各种实施方案中,计算机系统800可以是包括一个处理器810的单处理器系统或者包括若干处理器810(例如,两个、四个、八个或另一合适数量)的多处理器系统。处理器810可以是能够执行指令的任何合适的处理器。例如,在各种实施方案中,处理器810可以是实现多种指令集架构(ISA)中的任一种(诸如x86、ARM、PowerPC、SPARC、或MIPS ISA或任何其他合适的ISA)的通用或嵌入式处理器。在多处理器系统中,处理器810中的每一个通常可以(但不一定)实现相同的ISA。
系统存储器820可以存储可由一个或多个处理器810访问的指令和数据。在各种实施方案中,可以使用任何合适的存储器技术(诸如随机存取存储器(RAM)、静态RAM(SRAM)、同步动态RAM(SDRAM)、非易失性/快闪型存储器或任何其他类型的存储器)来实现系统存储器820。在所示的实施方案中,实现一个或多个期望功能的程序指令和数据(诸如上述那些方法、技术和数据)被示出为作为代码825和数据826存储在系统存储器820中。
在一个实施方案中,I/O接口830可以被配置为协调装置中的处理器810、系统存储器820和任何外围装置(包括网络接口840或其他外围接口)之间的I/O流量。在一些实施方案中,I/O接口830可以执行任何必要的协议、时序或其他数据变换,以将来自一个部件(例如,系统存储器820)的数据信号转换成适合于由另一部件(例如,处理器810)使用的格式。在一些实施方案中,I/O接口830可以包括支持通过各种类型的外围总线(例如,诸如外围部件互连(PCI)总线标准或通用串行总线(USB)标准的变型)附接的装置。在一些实施方案中,I/O接口830的功能可以拆分成两个或更多个单独的部件,例如,诸如北网桥和南网桥。而且,在一些实施方案中,I/O接口830(诸如到系统存储器820的接口)的功能性中的一些或全部可以直接并入处理器810中。
网络接口840可以被配置为允许在计算机系统800与附接到一个或多个网络850的其他装置860(例如,诸如如图1所示的其他计算机系统或装置)之间交换数据。在各种实施方案中,例如,网络接口840可以支持经由任何合适的有线或无线通用数据网络(例如,诸如以太网网络类型)进行的通信。另外,网络接口840可以支持经由电信/电话网络(诸如模拟语音网络或数字光纤通信网络)、经由存储区域网(SAN)(诸如光纤通道SAN)或经由I/O任何其他合适类型的网络和/或协议进行的通信。
在一些实施方案中,计算机系统800包括一个或多个卸载卡870(包括一个或多个处理器875,并且可能包括一个或多个网络接口840),所述一个或多个卸载卡使用I/O接口830(例如,实现外围部件互连快速(PCI-E)标准的版本或诸如快速路径互连(QPI)或超路径互连(UPI)的另一互连的总线)来连接。例如,在一些实施方案中,计算机系统800可以充当托管计算实例的主机电子装置(例如,作为硬件虚拟化服务的一部分进行操作),并且一个或多个卸载卡870执行可以管理在主机电子装置上执行的计算实例的虚拟化管理器。作为示例,在一些实施方案中,一个或多个卸载卡870可以执行计算实例管理操作,诸如暂停和/或取消暂停计算实例、启动和/或终止计算实例、执行存储器转移/复制操作等。在一些实施方案中,这些管理操作可以由一个或多个卸载卡870与由计算机系统800的其他处理器810A至810N执行的管理程序(例如,根据来自管理程序的请求)协作来执行。然而,在一些实施方案中,由一个或多个卸载卡870实现的虚拟化管理器可以容纳来自其他实体(例如,来自计算实例本身)的请求,并且可以不与任何单独的管理程序协作(或服务于任何单独的管理程序)。
在一些实施方案中,系统存储器820可以是被配置为存储如上所述的程序指令和数据的计算机可访问介质的一个实施方案。然而,在其他实施方案中,程序指令和/或数据可以在不同类型的计算机可访问介质上接收、发送或存储。一般来说,计算机可访问介质可以包括非暂时性存储介质或存储器介质,诸如磁性介质或光学介质,例如经由I/O接口830耦合到计算机系统800的磁盘或DVD/CD。非暂时性计算机可访问存储介质还可以包括任何易失性或非易失性介质,诸如RAM(例如,SDRAM、双倍数据速率(DDR)SDRAM、SRAM等)、只读存储器(ROM)等,它们可以作为系统存储器820或另一种类型的存储器包括在计算机系统800的一些实施方案中。此外,计算机可访问介质可以包括经由通信介质(诸如网络和/或无线链路,诸如可以经由网络接口840实现)传达的传输介质或信号,诸如电信号、电磁信号或数字信号。
在前面的描述中,描述了各种实施方案。出于解释的目的,阐述了具体的配置和细节,以便提供对实施方案的透彻理解。然而,对本领域的技术人员将显而易见的是,可以在没有具体细节的情况下实践所述实施方案。此外,为了不使所描述的实施方案变得模糊,可能会省略或简化众所周知的特征。
在本文中使用带有虚线边框(例如,大破折号、小破折号、点破折号和点)的带括号的文本和块来说明向一些实施方案添加附加特征的可选操作。然而,这种表示法不应被视为意味着这些是仅有的选项或可选操作,和/或在某些实施方案中,带有实线边界的框不是可选的。
在各种实施方案中,具有后缀字母的附图标记(例如,102A至102C、110A至110C、114A至114C、300A至300D、302A至302P、406A、406B、408A、408B和718A至718N)可以用于指示可以存在所引用实体的一个或多个实例,并且当存在多个实例时,每个实例不必相同,而是可以替代地共享一些一般特征或按惯例行事。此外,除非有相反的明确说明,否则所使用的特定后缀并非意在暗示存在特定量的实体。因此,在各种实施方案中,使用相同或不同后缀字母的两个实体可以具有或可以不具有相同数量的实例。
提及“一个实施方案”、“实施方案”、“示例性实施方案”等指示所描述的实施方案可以包括特定特征、结构或特性,但是每个实施方案可能不一定包括所述特定特征、结构或特性。此外,此类短语不一定是指同一实施方案。此外,当结合实施方案来描述特定特征、结构或特性时,应认为,无论是否有明确描述,结合其他实施方案来实现此类特征、结构或特性也在本领域技术人员的知识范围内。
此外,在上述各种实施方案中,除非另外特别指出,否则诸如词语“A、B或C中的至少一个”的析取语言意图被理解为表示A、B或C或其任何组合(例如,A、B和/或C)。因此,析取语言通常不意图并且不应被理解为暗示给定实施方案要求A中的至少一个、B中的至少一个和C中的至少一个各自存在。
可以根据以下条款描述所公开的技术的至少一些实施方案:
1.一种计算机实现的方法,其包括:
从查询引擎接收对客户数据执行查询的请求,所述客户数据存储在多租户存储服务中的多个存储节点中,所述请求包括由所述查询引擎针对所述查询生成的查询执行计划的序列化表示;
通过授权服务对所述请求进行授权;
将所述请求发送到所述多租户存储服务的机架的接口节点,所述接口节点用于标识要由存储节点执行的所述查询执行计划的所述序列化表示中的至少一个子计划;
基于所述至少一个子计划来生成分析指令和数据指令;
标识包括所述客户数据的至少一个存储节点;
将所述分析指令和所述数据指令发送到所述至少一个存储节点;
通过所述至少一个存储节点执行所述分析指令,以指示自定义数字逻辑执行所述子计划;
执行所述数据指令以通过所述自定义数字逻辑流传输来自所述存储节点中的多个存储位置的数据,所述自定义数字逻辑用于在所述数据流传输通过所述自定义数字逻辑时对所述数据执行所述子计划以生成查询结果;以及
经由所述接口节点将所述查询结果返回到所述查询引擎。
2.如条款1所述的计算机实现的方法,其中所述自定义数字逻辑在现场可编程门阵列(FPGA)、专用集成电路(ASIC)或图形处理单元(GPU)中的一者或多者中实现。
3.如条款1或2中任一项所述的计算机实现的方法,其中使用授权服务对所述请求进行授权还包括:
通过所述查询引擎将对与所述查询相关联的请求者进行授权的请求发送到所述授权服务,所述请求包括与所述请求者相关联的证书;以及
从所述授权服务接收授权令牌。
4.一种计算机实现的方法,其包括:
接收对数据执行查询的请求,所述数据存储在多租户存储服务中的多个存储节点中;
将所述请求发送到所述多租户存储服务的接口节点,所述接口节点用于标识要由存储节点执行的至少一个子查询,所述存储节点包括连接到自定义数字逻辑的多个存储装置;
指示所述自定义数字逻辑执行所述子查询;
致使所述自定义数字逻辑对来自所述存储节点中的多个存储位置的流数据执行所述子查询以生成查询结果;以及
经由所述接口节点返回所述查询结果。
5.如条款4所述的计算机实现的方法,其中所述自定义数字逻辑包括用于连接到所述多个存储装置的第一接口和用于连接到处理器的第二接口,所述处理器用于指示所述自定义数字逻辑执行所述子查询并向所述自定义数字逻辑提供包括指向所述多个存储装置上的所述数据的位置的指针的多个数据指令。
6.如条款5或6中任一项所述的计算机实现的方法,其中经由所述接口节点返回所述查询结果,所述方法还包括:
将所述查询结果流传输到所述处理器的存储器,一旦已由所述处理器接收到可配置量的所述查询结果,所述处理器就用于将所述查询结果的子集返回到所述接口节点。
7.如条款4至6中任一项所述的计算机实现的方法,其中指示所述自定义数字逻辑执行所述子查询还包括:
通过所述接口节点基于所述子查询生成至少一个分析指令;以及
将所述至少一个分析指令发送到所述存储节点的所述处理器,所述处理器用于将所述自定义数字逻辑中的一组数据管道配置为实现所述子查询的至少一部分。
8.如条款4至7中任一项所述的计算机实现的方法,其中所述接口节点使用具有数据到存储节点的映射的目录来标识用于执行所述子查询的所述存储节点。
9.如条款4至8中任何一项所述的计算机实现的方法,其中所述请求包括与所述查询相对应的查询执行计划的序列化表示。
10.如条款4至9中任一项所述的计算机实现的方法,其还包括:
发布支持的操作的库,所述库用于在所述子查询被发送到所述自定义数字逻辑以被执行之前,验证所述子查询。
11.如条款4至10中任一项所述的计算机实现的方法,其中查询引擎将获得所述多租户存储服务中的、执行所述查询的请求要发送至其的端点的请求发送到数据目录。
12.如条款4至11中任一项所述的计算机实现的方法,其还包括:
从所述请求获得授权令牌;以及
使用授权服务验证所述授权令牌以对所述请求进行授权。
13.如条款4至12中任一项所述的计算机实现的方法,其中所述请求是从多个分析引擎中的一个接收的,所述多个分析引擎被配置为生成与所述查询相对应的查询执行计划。
14.如条款4至13中任一项所述的计算机实现的方法,其中所述自定义数字逻辑在现场可编程门阵列(FPGA)、专用集成电路(ASIC)或图形处理单元(GPU)中的一者或多者中实现。
15.一种系统,其包括:
由第一一个或多个电子装置实现的客户端查询引擎;以及
由第二一个或多个电子装置实现的多租户存储服务,所述多租户存储服务包括在执行时致使所述多租户存储服务进行以下操作的指令:
接收对数据执行查询的请求,所述数据存储在多租户存储服务中的多个存储节点中;
将所述请求发送到所述多租户存储服务的接口节点,所述接口节点用于标识要由存储节点执行的至少一个子查询,所述存储节点包括连接到自定义数字逻辑的多个存储装置;
指示所述自定义数字逻辑执行所述子查询;
致使所述自定义数字逻辑对来自所述存储节点中的多个存储位置的流数据执行所述子查询以生成查询结果;以及
经由所述接口节点返回所述查询结果。
16.如条款15所述的系统,其中所述自定义数字逻辑包括用于连接到所述多个存储装置的第一接口和用于连接到处理器的第二接口,所述处理器用于将所述自定义数字逻辑配置为执行所述子查询并向所述自定义数字逻辑提供多个数据指令,所述多个数据指令包括指向所述多个存储装置上的所述数据的位置的指针。
17.如条款15或16中任一项所述的系统,其中经由所述接口节点返回所述查询结果还包括:
将所述查询结果流传输到所述处理器的存储器,一旦已由所述处理器接收到可配置量的所述查询结果,所述处理器就将所述查询结果的子集返回到所述接口节点。
18.如条款15至17中任一项所述的系统,其中为了指示所述自定义数字逻辑执行所述子查询,所述指令在被执行时还致使所述多租户存储服务进行以下操作:
通过所述接口节点基于所述子查询生成至少一个分析指令;以及
将所述至少一个分析指令发送到所述存储节点的所述处理器,所述处理器用于将所述自定义数字逻辑中的一组数据管道配置为实现所述子查询的至少一部分。
19.如条款15至18中任一项所述的系统,其中所述指令在被执行时还致使所述多租户存储服务进行以下操作:
发布支持的操作的库,所述库用于在所述子查询被发送到所述自定义数字逻辑以被执行之前,验证所述子查询。
20.如条款15至19中任一项所述的系统,其中查询引擎将获得所述多租户存储服务中的、执行所述查询的请求要发送至其的端点的请求发送到数据目录,所述请求到所述数据目录。
因此,说明书和附图应被认为是说明性的而不是限制性的。然而,将显而易见的是,在不脱离如在权利要求中阐述的本公开的更宽泛精神和范围的情况下,可以对其做出各种修改和改变。
Claims (15)
1.一种计算机实现的方法,其包括:
接收对数据执行查询的请求,所述数据存储在多租户存储服务中的多个存储节点中;
将所述请求发送到所述多租户存储服务的接口节点,所述接口节点用于标识要由存储节点执行的至少一个子查询,所述存储节点包括连接到自定义数字逻辑的多个存储装置;
指示所述自定义数字逻辑执行所述子查询;
致使所述自定义数字逻辑对来自所述存储节点中的多个存储位置的流数据执行所述子查询以生成查询结果;以及
经由所述接口节点返回所述查询结果。
2.如权利要求1所述的计算机实现的方法,其中所述自定义数字逻辑包括用于连接到所述多个存储装置的第一接口和用于连接到处理器的第二接口,所述处理器用于指示所述自定义数字逻辑执行所述子查询并向所述自定义数字逻辑提供包括指向所述多个存储装置上的所述数据的位置的指针的多个数据指令。
3.如权利要求1或2中任一项所述的计算机实现的方法,其中经由所述接口节点返回所述查询结果还包括:
将所述查询结果流传输到所述处理器的存储器,一旦已由所述处理器接收到可配置量的所述查询结果,所述处理器就用于将所述查询结果的子集返回到所述接口节点。
4.如权利要求1至3中任一项所述的计算机实现的方法,其中指示所述自定义数字逻辑执行所述子查询还包括:
通过所述接口节点基于所述子查询生成至少一个分析指令;以及
将所述至少一个分析指令发送到所述存储节点的所述处理器,所述处理器用于将所述自定义数字逻辑中的一组数据管道配置为实现所述子查询的至少一部分。
5.如权利要求1至4中任一项所述的计算机实现的方法,其中所述接口节点使用具有数据到存储节点的映射的目录来标识用于执行所述子查询的所述存储节点。
6.如权利要求1至5中任一项所述的计算机实现的方法,其中所述请求包括与所述查询相对应的查询执行计划的序列化表示。
7.如权利要求1至6中任一项所述的计算机实现的方法,其还包括:
发布支持的操作的库,所述库用于在所述子查询被发送到所述自定义数字逻辑以被执行之前,验证所述子查询。
8.如权利要求1至7中任一项所述的计算机实现的方法,其中查询引擎将获得所述多租户存储服务中的、执行所述查询的请求要发送至其的端点的请求发送到数据目录。
9.如权利要求1至8中任一项所述的计算机实现的方法,其还包括:
从所述请求获得授权令牌;以及
使用授权服务验证所述授权令牌以对所述请求进行授权。
10.如权利要求1至9中任一项所述的计算机实现的方法,其中所述请求是从多个分析引擎中的一个接收的,所述多个分析引擎被配置为生成与所述查询相对应的查询执行计划。
11.如权利要求1至10中任一项所述的计算机实现的方法,其中所述自定义数字逻辑在现场可编程门阵列(FPGA)、专用集成电路(ASIC)或图形处理单元(GPU)中的一者或多者中实现。
12.一种系统,其包括:
由第一一个或多个电子装置实现的客户端查询引擎;以及
由第二一个或多个电子装置实现的多租户存储服务,所述多租户存储服务包括在执行时致使所述多租户存储服务进行以下操作的指令:
接收对数据执行查询的请求,所述数据存储在多租户存储服务中的多个存储节点中;
将所述请求发送到所述多租户存储服务的接口节点,所述接口节点用于标识要由存储节点执行的至少一个子查询,所述存储节点包括连接到自定义数字逻辑的多个存储装置;
指示所述自定义数字逻辑执行所述子查询;
致使所述自定义数字逻辑对来自所述存储节点中的多个存储位置的流数据执行所述子查询以生成查询结果;以及
经由所述接口节点返回所述查询结果。
13.如权利要求13所述的系统,其中所述自定义数字逻辑包括用于连接到所述多个存储装置的第一接口和用于连接到处理器的第二接口,所述处理器用于将所述自定义数字逻辑配置为执行所述子查询并向所述自定义数字逻辑提供多个数据指令,所述多个数据指令包括指向所述多个存储装置上的所述数据的位置的指针。
14.如权利要求12或13-4中任一项所述的系统,其中经由所述接口节点返回所述查询结果还包括:
将所述查询结果流传输到所述处理器的存储器,一旦已由所述处理器接收到可配置量的所述查询结果,所述处理器就将所述查询结果的子集返回到所述接口节点。
15.如权利要求12至14中任一项所述的系统,其中为了指示所述自定义数字逻辑执行所述子查询,所述指令在被执行时还致使所述多租户存储服务进行以下操作:
通过所述接口节点基于所述子查询生成至少一个分析指令;以及
将所述至少一个分析指令发送到所述存储节点的所述处理器,所述处理器用于将所述自定义数字逻辑中的一组数据管道配置为实现所述子查询的至少一部分。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/220,824 | 2018-12-14 | ||
US16/220,824 US20200192898A1 (en) | 2018-12-14 | 2018-12-14 | Multi-tenant storage for analytics with push down filtering |
PCT/US2019/064045 WO2020123176A1 (en) | 2018-12-14 | 2019-12-02 | Multi-tenant storage for analytics with push down filtering |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113168348A true CN113168348A (zh) | 2021-07-23 |
Family
ID=69005943
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980082737.3A Pending CN113168348A (zh) | 2018-12-14 | 2019-12-02 | 通过下推过滤进行分析的多租户存储 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20200192898A1 (zh) |
EP (1) | EP3884387A1 (zh) |
CN (1) | CN113168348A (zh) |
WO (1) | WO2020123176A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117251871A (zh) * | 2023-11-16 | 2023-12-19 | 支付宝(杭州)信息技术有限公司 | 针对密态数据库的数据处理方法和系统 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114979157B (zh) * | 2022-05-17 | 2024-03-22 | 南昌智能新能源汽车研究院 | 基于some/ip协议的负载均衡方法、系统、存储介质及计算机 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105279286A (zh) * | 2015-11-27 | 2016-01-27 | 陕西艾特信息化工程咨询有限责任公司 | 一种交互式大数据分析查询处理方法 |
US20180145879A1 (en) * | 2016-11-22 | 2018-05-24 | Amazon Technologies, Inc. | Virtual network verification service |
CN108885627A (zh) * | 2016-01-11 | 2018-11-23 | 甲骨文美国公司 | 向远程客户端提供查询结果数据的查询即服务系统 |
-
2018
- 2018-12-14 US US16/220,824 patent/US20200192898A1/en not_active Abandoned
-
2019
- 2019-12-02 EP EP19828007.5A patent/EP3884387A1/en not_active Withdrawn
- 2019-12-02 WO PCT/US2019/064045 patent/WO2020123176A1/en unknown
- 2019-12-02 CN CN201980082737.3A patent/CN113168348A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105279286A (zh) * | 2015-11-27 | 2016-01-27 | 陕西艾特信息化工程咨询有限责任公司 | 一种交互式大数据分析查询处理方法 |
CN108885627A (zh) * | 2016-01-11 | 2018-11-23 | 甲骨文美国公司 | 向远程客户端提供查询结果数据的查询即服务系统 |
US20180145879A1 (en) * | 2016-11-22 | 2018-05-24 | Amazon Technologies, Inc. | Virtual network verification service |
Non-Patent Citations (1)
Title |
---|
MENGCHU CAI: "Integrated Querying of SQL database data and S3 data inAmazon Redshift", IEEE DATA ENGINEERING BULLETIN, pages 83 - 86 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117251871A (zh) * | 2023-11-16 | 2023-12-19 | 支付宝(杭州)信息技术有限公司 | 针对密态数据库的数据处理方法和系统 |
CN117251871B (zh) * | 2023-11-16 | 2024-03-01 | 支付宝(杭州)信息技术有限公司 | 针对密态数据库的数据处理方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
US20200192898A1 (en) | 2020-06-18 |
WO2020123176A1 (en) | 2020-06-18 |
EP3884387A1 (en) | 2021-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8769269B2 (en) | Cloud data management | |
US8694685B2 (en) | Migrating virtual machines with adaptive compression | |
US11032202B2 (en) | Load balancing in data hosting systems | |
US10534627B2 (en) | Scalable policy management in an edge virtual bridging (EVB) environment | |
US11442928B2 (en) | Multi-tenant provider network database connection management and governance | |
EP3807779B1 (en) | Dynamic distributed data clustering | |
EP4026014B1 (en) | Enabling federated query access to heterogeneous data sources | |
US10747763B2 (en) | Efficient multiple aggregation distinct processing | |
CN113168348A (zh) | 通过下推过滤进行分析的多租户存储 | |
US9577841B2 (en) | System and method for packet encapsulation wherein translation control entries (TCEs) may redirect DMA for software defined networks | |
US20220100885A1 (en) | Adaptive data loss prevention | |
US10382335B2 (en) | MAC learning in a multiple virtual switch environment | |
US9559910B2 (en) | Locating virtual machine(s) within virtual networks | |
US10791088B1 (en) | Methods for disaggregating subscribers via DHCP address translation and devices thereof | |
CN111868706A (zh) | 用于最近邻搜索的增量更新 | |
US11416448B1 (en) | Asynchronous searching of protected areas of a provider network | |
US11514184B1 (en) | Database query information protection using skeletons | |
US10958654B1 (en) | Resource deletion protection service | |
WO2015117380A1 (zh) | 一种远程桌面协议网关进行路由交换的方法、设备及系统 | |
US11860901B1 (en) | SQL execution over HTTP for relational databases using connection pooling | |
US11861409B2 (en) | Distributed decomposition of string-automated reasoning using predicates | |
US20230300124A1 (en) | Certificate authority selection in a cloud provider network | |
US11481397B1 (en) | Aggregating and emitting database activity record batches |
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 |