实现对异构数据源的联合查询访问转让专利

申请号 : CN202080068171.1

文献号 : CN114450678B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : A·A·维尔托索R·帕塔克M·沙阿A·坦纳库恩J·方S·T·丹尼J·丹顿

申请人 : 亚马逊技术股份有限公司

摘要 :

本发明描述了用于交互式查询服务的技术,所述交互式查询服务使用户能够查询存储在联合数据源集合中的数据。交互式查询服务提供了使用户能够配置所述交互式查询服务来查询与用户相关的任何数量的异构数据源的接口。一般来讲,数据源的所述配置可以包括以下各项的标识:数据源类型、与访问所述数据源相关的访问配置,以及在某些情况下,描述由所述数据源存储的所述数据的结构的元数据(例如,描述模式、表、列、分区、数据类型或与存储数据相关联的其他元数据的数据目录)。一旦被配置,交互式查询服务就可以接收并执行涉及存储在用户数据源的任何组合中的数据的查询,其中可以使用标准查询语言诸如结构化查询语言(SQL)来表达所述查询。

权利要求 :

1.一种由服务提供商网络的交互式查询服务执行的计算机实现的方法,所述方法包括:经由所述交互式查询服务的接口从所述交互式查询服务的用户接收输入,所述输入定义:用于第一数据源的第一配置数据,所述第一配置数据指示所述第一数据源的第一类型并且还包括用于访问所述第一数据源的至少第一访问配置,所述第一数据源的所述第一类型包括以下一项或多项:对象存储、数据库实例、数据仓库、或能够从外部服务访问的数据;

以及

用于第二数据源的第二配置数据,所述第二配置数据指示所述第二数据源的第二类型,并且还包括用于访问所述第二数据源的至少一个第二访问配置,所述第二数据源的所述第二类型包括以下一项或多项:对象存储、数据库实例、数据仓库、或能够从外部服务访问的数据;其中所述第一数据源使用第一类型的数据存储装置来存储数据,所述第一类型的数据存储装置与由所述第二数据源使用的第二类型的数据存储装置不同;

接收引用存储在所述第一数据源处的第一数据和存储在所述第二数据源处的第二数据的查询;

将所述查询的至少第一部分转换为用于访问所述第一数据源的第一操作,并且将所述查询的至少第二部分转换为用于访问所述第二数据源的第二操作;以及通过使用所述第一配置数据和所述第一操作访问存储在所述第一数据源处的所述第一数据并且使用所述第二配置数据和所述第二操作访问存储在所述第二数据源处的所述第二数据来执行所述查询。

2.如权利要求1所述的计算机实现的方法,其中所述第一数据源包括以下项中的至少一者:由所述服务提供商网络的对象存储服务提供的对象存储、由所述服务提供商网络的数据库服务提供的数据库实例、由所述服务提供商网络的数据仓库服务提供的数据仓库、经由所述服务提供商网络的应用程序编程接口API访问的数据、经由所述服务提供商网络外部的服务的API访问的数据、存储在数据高速缓存中的数据、存储在与交互式查询服务在其中操作的第二区域不同的第一区域中的数据,或者存储在所述服务提供商网络外部的内部存储位置的数据。

3.如权利要求1所述的计算机实现的方法,其中所述第一配置数据标识由所述服务提供商网络的按需代码执行服务管理的至少一个用户创建的功能,并且其中执行所述查询包括调用所述至少一个用户创建的功能的执行以访问存储在所述第一数据源处的所述第一数据。

4.一种由交互式查询服务执行的计算机实现的方法,所述方法包括:

接收定义用于第一数据源的第一配置数据和用于第二数据源的第二配置数据的输入,其中所述第一数据源使用第一类型的数据存储装置,所述第一类型的数据存储装置与由所述第二数据源使用的第二类型的数据存储装置不同,并且其中所述第一类型的数据存储装置和所述第二类型的数据存储装置包括以下一项或多项:对象存储、数据库实例、数据仓库、或能够从外部服务访问的数据;

接收引用存储在所述第一数据源处的第一数据和存储在所述第二数据源处的第二数据的查询;

将所述查询的至少第一部分转换为用于访问所述第一数据源的第一操作,并且将所述查询的至少第二部分转换为用于访问所述第二数据源的第二操作;以及通过使用所述第一配置数据和所述第一操作访问存储在所述第一数据源处的所述第一数据并且使用所述第二配置数据和所述第二操作访问存储在所述第二数据源处的所述第二数据来执行所述查询。

5.如权利要求4所述的计算机实现的方法,其中所述第一数据源包括以下项中的至少一者:由服务提供商网络的对象存储服务提供的对象存储、由所述服务提供商网络的数据库服务提供的数据库实例、由所述服务提供商网络的数据仓库服务提供的数据仓库、经由所述服务提供商网络的应用程序编程接口API访问的数据、经由所述服务提供商网络外部的服务的API访问的数据、存储在数据高速缓存中的数据、存储在与交互式查询服务在其中操作的第二区域不同的第一区域中的数据,或者存储在所述服务提供商网络外部的内部存储位置的数据。

6.如权利要求4所述的计算机实现的方法,其中所述第一配置数据标识由服务提供商网络的按需代码执行服务管理的至少一个用户创建的功能,并且其中执行所述查询包括:调用所述至少一个用户创建的功能的执行以访问存储在所述第一数据源处的所述第一数据。

7.如权利要求4所述的计算机实现的方法,其还包括:

标识所述查询的要被执行以获得所述第一数据的一部分;

从所述第一数据源获得用于执行所述查询的所述部分的查询计划,所述查询计划由所述第一数据源的查询引擎生成并且指示执行所述查询的所述部分的预期工作量;

基于所述查询计划和所述预期工作量来确定使用所述第一数据源的所述查询引擎来执行所述查询的所述部分;以及使得所述第一数据源执行所述查询的所述部分。

8.如权利要求4所述的计算机实现的方法,其中所述第一配置数据指示所述第一数据源的类型并且还包括用于访问所述第一数据源的至少一个第一访问配置。

9.如权利要求4所述的计算机实现的方法,其中所述第一配置数据指示将如何检取描述所述第一数据的结构的元数据,所述元数据标识以下项中的至少一者:所述第一数据的模式、表、所述表的列或所述第一数据中包含的数据类型。

10.如权利要求4所述的计算机实现的方法,其中所述第一配置数据包括限速配置,并且其中所述交互式查询服务根据所述限速配置访问所述第一数据源。

11.如权利要求4所述的计算机实现的方法,其中所述第一数据源包括提供服务并且能够经由应用程序编程接口API访问的数据,其中所述第一配置数据包括描述能够经由所述API访问的所述数据的结构的数据目录,并且其中执行所述查询包括:向所述服务发送至少一个API请求以访问所述第一数据。

12.如权利要求4所述的计算机实现的方法,其中所述交互式查询服务使用查询引擎执行所述查询,所述查询引擎使用实施用于从所述第一数据源读取数据的功能的连接器来访问所述第一数据源。

13.如权利要求4所述的计算机实现的方法,其还包括:

确定所述第一数据能够经由多个访问机制而被访问;

至少部分地基于要对所述第一数据执行的操作类型和与所述第一数据源相关联的能力信息来选择所述多个访问机制中的特定访问机制;以及使用所述特定访问机制来执行所述查询的至少一部分。

14.如权利要求4所述的计算机实现的方法,其中所述交互式查询服务使用查询引擎来执行所述查询,所述查询引擎使用实施用于从所述第一数据源读取数据的功能的连接器来访问所述第一数据源,并且其中所述连接器向所述交互式查询服务提供与所述第一数据源相关的能力信息。

15.如权利要求4所述的计算机实现的方法,其中所述查询是结构化查询语言SQL查询。

16.一种系统,其包括:

由第一一个或多个电子装置实施的服务提供商网络的交互式查询服务,所述交互式查询服务包括在执行时使所述交互式查询服务执行以下操作的指令:接收定义用于第一数据源的第一配置数据和用于第二数据源的第二配置数据的输入,其中所述第一数据源使用第一类型的数据存储装置来存储数据,所述第一类型的数据存储装置与由所述第二数据源使用的第二类型的数据存储装置不同,其中所述第一数据源的所述第一类型的数据存储装置是以下一项:对象存储、数据仓库、或能够从外部服务访问的数据,并且其中所述第二数据源由所述服务提供商网络的数据库服务提供,接收引用存储在所述第一数据源处的第一数据和存储在所述第二数据源处的第二数据的查询,将所述查询的至少第一部分转换为用于访问所述第一数据源的第一操作,并且将所述查询的至少第二部分转换为用于访问所述第二数据源的第二操作;

至少部分地基于所述查询、所述第一配置数据和所述第二配置数据来生成查询计划,以及至少部分地通过将所述查询计划的一部分发送至所述数据库服务来执行所述查询计划;以及由第二一个或多个电子装置实施的所述服务提供商网络的所述数据库服务,所述数据库服务包括在执行时使所述数据库服务执行以下操作的指令:从所述交互式查询服务接收所述查询计划的所述部分,

使用所述数据库服务的查询引擎来执行所述查询计划的所述部分以获得部分查询结果,以及将所述部分查询结果发送至所述交互式查询服务。

17.如权利要求16所述的系统,其中所述第一数据源包括以下项中的一者:由所述服务提供商网络的对象存储服务提供的对象存储、由所述服务提供商网络的数据库服务提供的数据库实例、由所述服务提供商网络的数据仓库服务提供的数据仓库、经由所述服务提供商网络的应用程序编程接口API访问的数据、经由所述服务提供商网络外部的服务的API访问的数据,或者存储在所述服务提供商网络外部的内部存储位置的数据。

18.如权利要求16所述的系统,其中所述第一配置数据指示所述第一数据源的类型并且还包括用于访问所述第一数据源的至少一个第一访问配置。

19.如权利要求16所述的系统,其中所述第一配置数据包括描述所述第一数据的结构的元数据的标识,所述元数据标识以下项中的至少一者:所述第一数据的模式、表、所述表的列或所述第一数据中包含的数据类型。

20.如权利要求16所述的系统,其中所述第一配置数据包括限速配置,并且其中所述交互式查询服务根据所述限速配置访问所述第一数据源。

说明书 :

实现对异构数据源的联合查询访问

背景技术

[0001] 关系数据库将数据建模为一系列表中的行和列长期以来一直是一种受欢迎的数据组织和存储形式。然而,服务提供商网络和其他应用程序使开发人员越来越容易在他们的软件应用程序和系统中使用各种其他类型的数据存储库。此类另选的数据存储类型的示例包括对象存储服务(这些对象存储服务可以存储几乎任何文件类型和格式的文件)、非关系数据库、数据仓库等。虽然关系数据库在某些情况下可以提供最佳的存储和查询性能,但其他此类数据存储库的特性可以提高其他用例的可扩展性和性能。将不同类型的数据存储库轻松集成到软件应用程序和系统中的能力已导致越来越多地使用多种类型的数据存储库,具体取决于特定的性能、持久性和可用性、可缩放性、安全性以及与应用程序要存储和使用的每个数据子集相关的其他考虑因素。

附图说明

[0002] 将参考附图描述根据本公开的各种实施方案,在附图中:
[0003] 图1是示出根据一些实施方案的包括交互式查询服务的环境的图,该交互式查询服务使用户能够查询存储在数据源的联合集合处的数据。
[0004] 图2是示出根据一些实施方案的对多个不同类型的数据源的查询的联合的图。
[0005] 图3是示出根据一些实施方案的交互式查询服务经由由按需代码执行服务管理的自定义连接器来查询内部数据源的图。
[0006] 图4是示出根据一些实施方案的查询应用程序编程接口(API)的交互式查询服务作为联合查询的一部分的图。
[0007] 图5是示出根据一些实施方案的用于交互式查询服务的方法的操作的流程图,该交互式查询服务使用户能够查询存储在数据源的联合集合中的数据。
[0008] 图6示出了根据一些实施方案的示例性提供商网络环境。
[0009] 图7是根据一些实施方案的向客户提供存储服务和硬件虚拟化服务的示例性提供商网络的框图。
[0010] 图8是示出可以用于一些实施方案中的示例性计算机系统的框图。

具体实施方式

[0011] 本公开涉及用于交互式查询服务的方法、装置、系统和非暂时性计算机可读存储介质,该交互式查询服务使用户能够查询存储在数据源的联合集合中的数据。根据一些实施方案,交互式查询服务提供使用户能够配置交互式查询服务以访问和查询存储与用户相关的数据的任意数量的异构数据源的接口。一般来讲,数据源的配置可以包括以下标识:数据源类型(例如,由提供商网络的对象存储服务提供的对象存储、由提供商网络的数据库服务提供的数据库实例、经由应用程序编程接口(API)从外部服务访问的数据,或任何其他类型的数据源)、与访问数据源相关的访问配置(例如,用于访问存储资源的统一资源定位符(URL)、用于访问数据库实例的连接字符串、速率限制配置等),并且在某些情况下,如何检取描述由数据源存储的数据结构的元数据的指示(例如,用于检取描述模式、表、列、分区、数据类型或与存储的数据相关联的其他元数据的数据目录的API端点或其他接口)。一旦被配置,交互式查询服务就可以接收并执行涉及存储在用户数据源的任何组合中的数据的查询,其中可以使用标准查询语言诸如结构化查询语言(SQL)或其他查询语言来表达查询。通过这种方式,用户可以轻松地从存储在任何数量的单独数据源中的数据中获得强大的洞察力,而无需执行繁琐的提取、转换和加载(ETL)操作或其他流程来首先整合数据以进行查询。
[0012] 许多类型的基于软件的应用程序和系统依赖于将数据存储在各种类型的数据存储库中,诸如数据库、文件等。在开发此类应用程序时,开发人员通常会努力使用最适合用户特定数据和手边一般问题的数据存储类型。例如,开发人员可确定一种类型的数据存储最适合存储由应用程序生成的日志数据,而另一种类型的数据存储更适合存储应用程序和用户设置等。服务提供商网络使开发人员能够更轻松地开发、部署和扩展此类应用程序并且使用各种数据存储库。例如,提供商网络可提供对象存储服务、关系数据库服务、数据仓库服务、档案存储服务以及其他类型的存储相关服务中的每一者。除了使用位于内部或其他位置的其他数据源外,开发人员还可以根据需要轻松地将这些不同类型的存储服务集成到他们的应用程序中。
[0013] 虽然对不同类型的数据存储库和存储服务的随时访问使开发人员能够使用最适合其各种数据存储需求的数据存储库,但以这种方式开发应用程序通常会导致数据碎片化。例如,如果应用程序开发人员希望分析其客户使用应用程序的某些方面,则回答该问题所需的数据可以跨任何数量的独立数据源分布(例如,包括由数据库实例管理的用户配置文件数据、存储在独立数据仓库服务中的日志数据、存储在另一个独立对象存储服务中的配置数据,等等)。在这些场景和其他场景中,获得数据环境的整体视图并且有效地获得有趣的数据驱动问题的答案通常具有挑战性。一些用户可求助于将数据从他们的各种数据源中的每一个数据源导出到单个数据源中,并且尝试分析手动整合的数据集。然而,此过程通常会阻碍用户按需执行数据分析的能力,并且由于繁琐的数据导出和整合过程,还可引入数据质量和一致性问题。
[0014] 在一些实施方案中,为了使用户能够容易地查询存储在对象存储服务处的各种类型的数据和数据格式,提供商网络包括交互式查询服务。交互式查询服务支持使用标准查询语言诸如SQL来分析此类数据,方法是允许用户标识数据的存储位置、为数据定义模式,并且基于定义的模式对数据运行查询。在一些实施方案中,此类交互式查询服务从用户的角度来看是“无服务器的”,这意味着用于实施服务的硬件主要由提供商网络管理,并且用户可以在不了解用于运行查询和执行其他操作的底层硬件和其他部件的情况下使用该服务。用户可以经由各种接口访问交互式查询服务,例如基于web的控制台、由交互式查询服务提供的API或CLI接口。使用这些接口,用户可以执行各种动作,包括创建或选择数据库;创建、查看和删除表示用户数据的表;过滤表;预览表;显示表属性;对表运行查询、保存和格式化查询以及查看查询历史记录;显示、保存和导出查询结果等。
[0015] 如上所述的交互式查询服务使用户能够查询存储在对象存储服务中的几乎任何类型的数据和数据格式。然而,至少出于上述原因,用户可能还希望查询不仅存储在对象存储服务中而且存储在其他类型的数据存储装置中的数据,诸如由数据库服务提供的数据库、由其他类型的存储服务提供的数据存储库、内部存储资源、经由API从外部服务访问的数据、存储在高速缓存中的数据等。根据本文所述的实施方案,交互式查询服务进一步使用户能够将任何这种类型的数据存储配置为用户可以使用交互式查询服务查询的数据源。通过这种方式,用户可以轻松有效地查询跨任何数量的单独或联合数据源存储的数据,使用任何数量的不同类型的数据存储装置来存储这些数据源。
[0016] 图1是示出根据一些实施方案的包括交互式查询服务的环境的图,该交互式查询服务使用户能够查询存储在数据源的联合集合处的数据。在一些实施方案中,交互式查询服务102、按需代码执行服务104和其他数据存储服务106(包括例如对象存储服务108、关系数据库服务110和数据仓库服务112),以及许多其他可能的服务,作为服务提供商网络100的一部分操作。每个服务包括由一个或多个电子装置在一个或多个数据中心和地理位置执行的一个或多个软件模块。使用一个或多个电子装置128(其可以是服务提供商网络100的一部分或与其相分离)的用户可以经由一个或多个网络114(诸如因特网)与服务提供商网络100的各种服务进行交互。尽管本文所述的实施方案涉及提供商网络的外部“客户”自定义提供商网络API的能力,但一般来讲,任何希望修改或扩展与提供商网络100的API相关联的一个或多个动作的操作的用户都可以使用本文所述的技术。
[0017] 提供商网络100(或“云”提供商网络)为用户提供利用各种类型的计算相关资源中的一者或多者的能力,所述计算相关资源诸如计算资源(例如,执行虚拟机(VM)实例和/或容器、执行批作业、执行代码而不预配服务器)、数据/存储资源(例如,对象存储、块级存储、数据档案存储、数据库和数据库表等)、网络相关资源(例如,配置虚拟网络(包括多组计算资源)、内容传递网络(CDN)、域名服务(DNS))、应用程序资源(例如,数据库、应用构建/部署服务)、访问策略或角色、身份策略或角色、机器图像、路由器及其他数据处理资源等。这些和其他计算资源可以作为服务提供,所述服务诸如:可以执行计算实例的硬件虚拟化服务、可以存储数据对象的存储服务等。提供商网络100的用户(或“客户”)可以利用与客户账户相关联的一个或多个用户账户,但是可以根据使用的情境稍微可互换地使用这些项。用户可以经由一个或多个接口在一个或多个中间网络114(例如,因特网)上与提供商网络100交互,诸如通过使用应用程序编程接口(API)调用、经由被实现为网站或应用程序的控制台等。一个或多个接口可以是提供商网络100的控制平面的一部分,或者用作其前端,其包括支持和启用可能会更直接地提供给客户的服务的“后端”服务。
[0018] 例如,云提供商网络(或简称为“云”)通常是指大的可访问虚拟化计算资源池(诸如计算、存储和网络资源、应用程序和服务)。云可以提供对可配置计算资源的共享池的便捷、按需网络访问,这些可配置计算资源可以响应于客户命令以编程方式供应和释放。这些资源可以被动态供应和重新配置以适应可变负载。因此,云计算可以被视为通过公共可访问网络(例如,互联网、蜂窝通信网络)作为服务递送的应用程序以及提供这些服务的云提供商数据中心中的硬件和软件。
[0019] 云提供商网络可形成为多个区,其中一个区可以是云提供商将数据中心聚集在其中的地理区域。每个区均可包括多个(例如,两个或更多个)可用区(AZ),这些可用区经由专用高速网络(例如,光纤通信连接)彼此连接。AZ可提供隔离的故障域,其包括一个或多个数据中心设施,这些设施具有与另一AZ中的设施独立的电源、独立的网络和独立的冷却。优选地,一个区内的AZ彼此之间的距离足够远,以至于同一自然灾害(或其他引发故障的事件)不应同时影响多于一个AZ或使多于一个AZ脱机。客户能够经由可公共访问的网络(例如,因特网、蜂窝通信网络)连接到云提供商网络的AZ。
[0020] 一般来讲,提供商网络的流量和操作可以大致分为两类:逻辑控制平面上承载的控制平面操作和逻辑数据平面上承载的数据平面操作。数据平面表示用户数据通过分布式计算系统的移动,而控制平面表示控制信号通过分布式计算系统的移动。控制平面通常包括跨一个或多个控制服务器分布并且由一个或多个控制服务器实施的一个或多个控制平面部件。控制平面流量通常包括管理操作,诸如系统配置和管理(例如,资源放置、硬件容量管理、诊断监测、系统状态信息)。数据平面包括在提供商网络上实施的客户资源(例如,计算实例、容器、块存储卷、数据库、文件存储装置)。数据平面流量通常包括非管理操作,诸如将客户数据传送到客户资源以及从客户资源传送客户数据。控制平面部件通常在与数据平面服务器不同的一组服务器上实施,并且控制平面流量和数据平面流量可以通过单独/不同的网络发送。图1中所示的示例示出了例如交互式查询服务102的控制平面116,其操作在本文的其他位置具有更详细的描述。
[0021] 为了提供这些和其他计算资源服务,提供商网络100通常依赖于虚拟化技术。例如,虚拟化技术可以用于为用户提供控制或利用计算实例(例如,使用访客操作系统(O/S)的VM,所述访客操作系统使用管理程序来操作,所述管理程序可以在或可以不在底层主机O/S的顶上进一步监测;可以在或可以不在VM中操作的容器;可以在无底层管理程序的“裸金属”硬件上执行的实例)的能力,其中可以使用单个电子装置来实现一个或多个计算实例。因此,用户可直接利用由提供商网络托管的计算实例(例如,由硬件虚拟化服务提供)来执行各种计算任务。附加地或替代地,用户可通过提交要由提供商网络执行的代码(例如,经由按需代码执行服务)来间接地利用计算实例,该提供商网络继而利用计算实例来执行代码,而通常无需用户具有对所涉及的基础计算实例的任何控制或知识。
[0022] 例如,在各种实施方案中,“无服务器”功能可以包括由用户或其他实体(诸如提供商网络本身)提供的可以按需执行的代码。无服务器功能可以由按需代码执行服务104在提供商网络100内维护,并且可以与特定用户或账户相关联,或者通常可由多个用户/账户访问。无服务器功能可以与统一资源定位符(URL)、统一资源标识符(URI)或可用于调用无服务器功能的其他引用相关联。无服务器功能可以在被触发或调用时由计算实例(诸如虚拟机、容器等)执行。在一些实施方案中,可以通过应用程序编程接口(API)调用或特殊格式的超文本传输协议(HTTP)请求消息来调用无服务器功能。因此,用户可以定义可以按需执行的无服务器功能,而无需用户维护专用基础架构来执行无服务器功能。相反,无服务器功能可以使用由提供商网络100维护的资源按需执行。在一些实施方案中,这些资源可以保持在“就绪”状态(例如,具有被配置为执行无服务器功能的预初始化运行时环境),从而允许接近实时地执行无服务器功能。
[0023] 在一些实施方案中,提供商网络100包括交互式查询服务102。在高层,为了使用交互式查询服务102,用户首先创建数据库和表示用户希望查询的数据的至少一个表。例如,可以创建表来引用存储在提供商网络或其他位置的数据存储服务中的数据。在一些实施方案中,交互式查询服务102包括一个或多个查询引擎118A至118N,该一个或多个查询引擎以一种方式被构建为与托管在交互式查询服务102以外的位置的各种数据源对接。
[0024] 传统上,使用紧密耦接的架构来实施数据库引擎,其中数据库引擎确定数据的存储方式,并且进一步与专有数据存储格式相关联。此类数据库引擎通常维护目录,该目录描述数据的存储方式,例如,作为表、列和数据类型的集合。这些数据库引擎还包括查询引擎,该查询引擎被配置为使用目录和专有数据存储格式的知识来查询数据。相反,如本文所述的交互式查询服务102将数据库引擎的存储、目录元数据和计算功能分离为独立可配置的部件。通过这种方式,用户可以通过配置交互式查询服务102来访问数据源并且可选地定义存储在数据源处的数据的模式来查询任何数据源。例如,如果用户的数据源是由包括一个或多个CSV文件的对象存储服务108提供的存储位置,用户可以提供指示如何连接到存储位置的配置数据,并且进一步标识描述存储在文件中的数据结构的元数据的位置(例如,包含在JSON文件或XML文件中)。使用该配置数据,交互式查询服务102可以针对存储在标识的存储位置的数据执行查询。
[0025] 在一些实施方案中,使用在服务器集群上运行的分布式系统来实施交互式查询服务102。如图1所示,为了执行查询和执行其他操作,此类集群可以包括协调器实例120,该协调器实例管理任何数量的工作器实例122A至122N的操作。在高层,从客户端计算装置接收的查询最初由控制平面116接收并且转发到协调器实例120。在一些实施方案中,协调器实例120然后解析查询、分析和计划查询的执行,并且将执行查询执行计划的工作分配给一个或多个工作实例122A至122N。
[0026] 在一些实施方案中,交互式查询服务102能够与之交互的每个数据源都与对应的“连接器”相关联。连接器广泛地表示使交互式查询服务102能够与一种或多种特定类型的数据源对接的可执行代码或其他逻辑。无论数据源的数据存储装置类型如何,假设连接器实施交互式查询服务102期望的用于访问数据源的某些功能,则连接器可用于访问数据源(例如,与管理元数据、提供模式和表信息、标识要作为扫描/投影/过滤任务的一部分读取的表的部分、将数据拆分为分区等相关的功能)。在一些实施方案中,连接器提供关于数据源的附加信息,诸如与支持的并行量、支持的连接数量等相关的能力信息。如本文别处更详细描述的,协调器实例120和由协调器实例120管理的工作器实例在启动时各自配置有一个或多个连接器124,以便访问与正在执行的查询相关的数据源。在一些实施方案中,交互式查询服务102实施连接器接口136层,该连接器接口层使得任何查询引擎118A至118N能够与任何连接器124通信,并且通过扩展与任何配置的数据源通信。作为一个示例,连接器接口136可以至少部分地基于用于存储器内数据的跨语言开发平台来实施,诸如平台等。
[0027] 如上所述,现代软件应用程序和系统的开发人员经常面临数据碎片化的问题。根据本文所述的实施方案,管理和查询联合数据源集合的能力部分地经由交互式查询服务102向提供商网络100的客户和其他外部用户公开,以减轻此类数据碎片化的挑战(并且通常能够查询任何类型的数据)。图1中标记为“1”至“8”的编号的圆圈示出了根据一些实施方案的示性例过程,该示性例过程涉及服务提供商网络100的外部客户配置要使用交互式查询服务102查询的一个或多个数据源,以及发送涉及存储在配置的数据源处的数据的查询以供交互式查询服务102执行。在一些实施方案中,在图1中标记为“1”的圆圈处,提供商网络100的客户或其他用户生成一个或多个数据源配置请求126,其中该一个或多个请求可以源自提供商网络100外部的计算装置128。用户可以例如通过使用API调用、经由实施为网站或应用程序的控制台等来生成数据源配置请求126。例如,用户可能希望将数据源配置为能够查询用户已导致存储在对象存储服务108、关系数据库服务110、数据仓库服务112或任何其他数据源处的数据。
[0028] 在一些实施方案中,数据源的配置通常包括提供指示数据源类型的输入,指定用于访问数据源的访问配置,以及可选地标识描述存储在数据源的数据结构的元数据,以及其他可能的数据源特定选项。例如,假设用户正在配置交互式查询服务102以访问由关系数据库服务110维护的数据库实例。在该示例中,数据源配置请求126可以标识数据源是关系数据库,进一步指定用于连接到数据库的连接字符串,用于对数据库进行身份验证的用户名和密码,与数据库连接的其他网络属性,以及可能的其他相关配置。对于某些类型的数据源,例如关系数据库,描述数据结构的元数据由数据源本身(诸如由关系数据库实例维护的数据目录)维护。对于其他类型的数据源,用户可以单独标识数据目录或描述数据结构的其他元数据的位置(例如,在元数据存储库中)。如图1所示,例如,用户可以指定一个或多个数据目录140的位置,该一个或多个数据目录由单独的目录服务138管理,由提供商网络100的另一个服务管理,由提供商网络100外部的服务管理,或者数据目录可以由用户提供给交互式查询服务102。
[0029] 在一些实施方案中,数据源的配置可以包括指定速率限制配置或与定义数据源在每单位时间可以接收的请求的数量相关的其他设置。再次参考上文配置对应于关系数据库的数据源的示例,例如,用户可以指定连接的最大吞吐量(例如,为了避免源自交互式查询服务102的查询使数据库实例过载并且可能阻止其他客户端读取相同的数据)。在一些实施方案中,该速率限制信息可以表示为交互式查询服务102在访问数据源时可以使用的每秒输入/输出操作的最大数量(IOP)、数据源的总读取容量的百分比(跨所有表、基于每个表、基于每个查询等),或者基于数据源所支持的任何其他速率限制机制。除了在配置时提供的速率限制配置,交互式查询服务102还在查询执行时间根据正在查询的数据源的当前状态应用速率限制控制(例如,如果确定数据源当前处于高负荷使用状态,则限制该数据源处的操作)。
[0030] 在一些实施方案中,交互式查询服务102在内部实施到许多不同类型的数据源,诸如由服务的用户使用的各种数据存储服务106提供的数据源的连接器。用户还可以创建与交互式查询服务102可能未明确支持的其他数据源的自定义连接器。例如,在一些实施方案中,用户可以使用按需代码执行服务104来创建自定义连接器功能130,以访问和执行与存储在能够经由网络访问的几乎任何数据源中的数据相关的其他操作。交互式查询服务102然后可以通过由交互式查询服务102实施的被设计成与此类功能通信的按需代码执行服务104连接器与这些自定义连接器功能130对接。通过这种方式,用户可以执行涉及跨任何数量的数据存储服务106、专有数据存储库等分布的数据的查询。与自定义连接器功能相关的附加细节在本文别处描述。在一些实施方案中,自定义连接器功能130也可以用于丰富或补充存储在数据源处的数据。例如,如果交互式查询服务102用于查询存储在对象存储服务
108处的数据,则用户可以创建自定义连接器功能130以对交互式查询服务102访问的数据中的字段执行查找(例如,将包含IP地址的字段转换为域名,基于包含用户名的字段添加用户配置文件信息等)。
[0031] 在一个实施方案中,在图1的圆圈“2”处,交互式查询服务102的控制平面116接收并且处理数据源配置请求126,并且在圆圈“3”处创建数据源配置数据并且将配置数据与用户账户相关联地存储。如图1所示,可以根据由用户配置的多个单独的数据源来创建和存储任何数量的数据源配置132A至132N。在一些示例中,数据源配置132A至132N可以在逻辑上分离,或者在其他示例中,可以存储为特定用户或用户组的相同配置的一部分。
[0032] 一旦用户使用交互式查询服务102配置了一个或多个数据源,如上所述,用户就可以针对存储在这些数据源中的数据运行查询。返回到图1,在圆圈“4”处,用户使电子装置128发送一个或多个查询134,该一个或多个查询涉及用户的配置数据源中的一些或全部。
在其他示例中,可以将查询作为由在提供商网络100内部或外部运行的应用程序以编程方式生成的API请求的一部分包括在其中。例如,查询可以源自外部电子装置128以外的源,包括源自硬件虚拟化服务的计算实例、源自提供商网络100的其他服务,或者源自提供商网络
100外部的其他装置。
[0033] 作为示例,考虑涉及存储在对象存储服务108处的第一数据和存储在关系数据库服务110处的第二数据之间的连接操作的查询。在该示例中,由用户提交的查询引用了存储在对象存储服务108处的至少一个表(例如,“oss.table1”)和存储在关系数据库服务110处的至少一个表(例如,“rds.table2”),但这两个表的底层数据存储类型可能有很大不同。例如,查询中引用的表和相关联的列的标识可以在由用户标识为数据源配置过程的一部分的元数据中或在由数据源维护的元数据中指定。在一些实施方案中,交互式查询服务102的控制平面116接收查询,并且在圆圈“5”处,将查询转发给查询引擎118A,该查询引擎负责协调查询的执行。在一些实施方案中,对执行查询的一个或多个查询引擎118A至118N的选择可以取决于查询中涉及的数据源以及可能与查询相关联的用户已经指定的其他配置。例如,用户可以提供指定用于查询某些数据源、某些类型的查询或基于其他偏好的查询引擎的偏好的输入。
[0034] 在一些实施方案中,在圆圈“6”处,查询引擎118A的协调器实例120分析查询并且标识所涉及的数据源(在上文的示例中,对象存储服务108处的存储位置和关系数据库服务110处的关系数据库)。控制平面116进一步向协调器实例120提供查询中涉及的数据源的数据源配置(例如,对应于相关数据源的数据源配置132A至132N中的一个或多个数据源配置)。
[0035] 在一些实施方案中,在圆圈“7”处,协调器实例120使用数据源配置来确定用于执行查询的适当资源量并且启动对应数量的工作器实例122A至122N。工作器实例122A至122N的启动包括用适当的连接器124配置实例,使得工作器实例可以与同查询相关的数据源通信。如图1的示例所示,在一些实施方案中,工作器实例122A和对应的连接器124的配置在查询执行时间发生。通过这种方式,交互式查询服务102可以“即时”对新添加的数据源执行查询,而无需用户重新配置查询引擎的操作。在其他实施方案中,一个或多个工作器实例可以被预先配置为与某些类型的数据源通信。
[0036] 在一些实施方案中,查询引擎118A现在能够与查询中涉及的一个或多个数据源通信,并且引擎确定预期执行查询的工作量。例如,查询引擎118A可以为查询创建一个或多个查询计划并且确定执行相应计划中的每一个计划的估计成本。在一些实施方案中,执行查询的预期工作量可用于确定专用于执行查询的硬件量(例如,作为上述过程的一部分启动的工作节点的数量和类型)。专用于每个数据源的工作器实例的数量可取决于,例如,为执行查询而执行的操作类型,为执行操作而访问的数据量、用于并行化某些类型的操作的对应数据源的相应缩放能力,等等。
[0037] 在一些实施方案中,交互式查询服务102部分地通过标识与查询相关联的用户账户和与查询中涉及的各种数据源相关联的用户许可来处理查询。用户许可信息可以由执行查询的查询引擎、检取数据的相应的数据源、数据目录或这些服务的组合来检取和使用,以确定请求执行查询的用户是否有足够的权限访问查询中涉及的特定数据项。如果用户试图访问用户没有足够权限的数据,则交互式查询服务102可以向用户返回错误消息,屏蔽用户没有足够权限的数据,或者执行其他操作。
[0038] 作为示例,再次考虑涉及访问由对象存储服务108管理的第一数据和由关系数据库服务110管理的第二数据的查询。图2示出了交互式查询服务102执行涉及存储在数据源的联合集合中的数据的查询,包括存储在对象存储服务108处的数据对象200和由关系数据库服务110提供的数据库实例202。在图2的示例中,在圆圈“1”处,用户提交查询204,该查询涉及存储为数据对象200的一部分和数据库实例202的数据存储装置206的一部分的数据。在该示例中,进一步假设数据库引擎208已经用与要从数据库实例202查询的数据相关的索引进行了优化。
[0039] 在该示例中,在圆圈“2”处,查询引擎118A生成查询计划210,该查询计划涉及从对象存储服务108和关系数据库服务110两者获得数据。在该示例中,待执行的查询进一步涉及过滤来自数据对象200的数据和存储在数据存储装置206处的数据。作为生成查询计划210的一部分,查询引擎118A确定查询引擎将过滤从对象存储服务108获得的数据(例如,因为数据未在对象存储服务108处编索引)。在该示例中,查询引擎118A进一步从数据库引擎
208获得查询计划以执行与数据库实例202相关的查询部分,其中查询计划指示执行该部分查询的预期工作量。如上所述,数据库引擎208具有与数据存储装置206中的数据相关的存储索引,因此可以有效地执行操作;因此,查询引擎118A将存储在数据存储器206的数据的过滤委托给数据库引擎208。
[0040] 如上所述,图2中的查询引擎118A通过在圆圈“3A”处从对象存储服务108获得数据并且在圆圈“3B”处从关系数据库服务110获得数据来执行查询计划210(其中查询引擎进一步将过滤操作委托给数据库引擎208)。在一些实施方案中,在圆圈“4”处,查询引擎118A然后过滤从对象存储服务108获得的数据,进一步使用从关系数据库服务110获得的过滤数据来执行连接操作,并且将结果返回给请求的客户端装置。
[0041] 如上所述,在一些实施方案中,交互式查询服务102在一些情况下将用于处理部分查询的计算资源委托给其他引擎。交互式查询服务可以与任何数量的不同查询引擎、数据源连接器和数据源对接,具体取决于它们各自在功能和优化方面的各种特性。例如,为了执行特定查询,交互式查询服务102可以将内部查询引擎和用于涉及特定数据源的查询计划的某些部分的特定连接器,同时使用其他特定于数据源的查询引擎或其他工具来执行查询中涉及的其他操作。在一些实施方案中,从这些联合源中的每一个联合源获得的部分查询结果随后可以由交互式查询服务102连接、聚合或以其他方式组合以获得期望的查询结果。
[0042] 在图2所示的示例中,进一步假设对象存储服务108支持高度并行性并且启动更多工作器实例通常会增加吞吐量,而关系数据库服务110仅支持有限数量的连接(但可能能够在内部并行化一些查询操作)。一旦从数据源获得数据,查询引擎118A就可以进一步确定要用于执行连接、聚合和其他操作的工作器实例的数量。一般来讲,查询引擎118A可以根据每个数据源的能力缩放多个工作节点以用于执行查询。在一些实施方案中,关于数据源的能力的信息通过数据源的连接器传送到交互式查询服务的查询引擎。例如,作为由协调器实例执行的查询计划过程的一部分,实例可以从连接器获得指示预期能够执行相应操作的工作量以及数据源支持多少并行度或吞吐量来执行操作的信息。通过这种方式,协调器实例的基于成本的优化器可以更好地基于每个数据源的相应的特性来确定最优的执行计划。
[0043] 如图2所示,在一些实施方案中,交互式查询服务102所查询的数据源可以驻留在提供商网络100的一个或多个定义的区域中,该一个或多个定义的区域不同于交互式查询服务102所在的区域。例如,虽然交互式查询服务102的一些或所有计算资源和其他部件可以与区域210A相关联,但用户的数据对象200可以由对象存储服务108存储在驻留在不同区域210B中的资源上,而相同用户的数据库实例202可以对驻留在另一个区域210C中的资源进行操作。一般来讲,交互式查询服务102可以被配置为访问驻留在相同的区域中或跨提供商网络100的任何数量的单独区域的数据源。
[0044] 如上所述,在一些情况下,交互式查询服务102可以将部分查询的执行委托给查询中涉及的数据源中的一个或多个数据源。在一些实施方案中,作为查询计划过程的一部分,交互式查询服务102可以确定针对特定数据源存在多种访问机制并且在多种访问机制中进行选择以访问数据。例如,如果查询涉及访问和过滤由提供商网络100的数据库服务管理的数据库实例存储的数据,则交互式查询服务102可以确定存在多种获得相关数据的访问机制:使用连接器经由数据库服务读取数据并且在交互式查询引擎处执行过滤,将读取和过滤委托给数据库服务处的数据库引擎,直接访问数据存储装置以执行读取和过滤,以及其他可能的访问机制。在该示例中,交互式查询服务102可以分析每个可能的访问机制,并且至少部分地基于待执行的操作类型和与相关数据源相关联的能力信息来选择特定的访问机制(例如,操作是过滤、连接还是其他操作以及数据源执行此类操作的能力),并且使用所选择的访问机制来执行至少一部分查询。
[0045] 如上所述,在一些实施方案中,交互式查询服务102使用户能够跨提供商网络100的不同服务以及位于提供商网络100外部的数据源(例如,在内部资源或外部服务处)查询存储在数据源中的数据。图3示出了根据一些实施方案的使用交互式查询服务102来执行涉及存储在一个或多个内部数据源中的数据的查询的示例。在图3所示的示例中,交互式查询服务102的用户已经创建一个或多个自定义连接器功能130,该一个或多个自定义连接器功能实施用于访问由托管在内部网络302内的数据库实例300存储的数据的各种操作。在一些实施方案中,用户可以为以下操作和可能的其他操作实施单独的自定义连接器功能:管理元数据、生成数据的拆分,以及执行各种表扫描活动。然后,用户可以将交互式查询服务102配置为与自定义连接器功能130通信(例如,经由交互式查询服务102实施的按需执行服务连接器),使得将内部数据库实例300配置为可访问的数据源。如图所示,内部数据库实例300包括其自身的数据库引擎304和数据存储装置306。在一些实施方案中,自定义连接器功能130进一步实施用于经由一个或多个中间网络114访问内部数据源的网络配置。
[0046] 在一些实施方案中,在图3中的圆圈“1”处,交互式查询服务102的控制平面116接收到查询308。在一些实施方案中,在圆圈“2”处,交互式查询服务102从对应的自定义连接器功能130获得与查询相关的基本表和模式信息。查询引擎118A至118N的协调器实例类似地获得模式、数据类型信息和表布局信息(例如,分区)并且可选地执行初始分区修剪操作。在一些实施方案中,协调器实例进一步调用提供一组分区的自定义连接器功能130的拆分处理功能并且接收回指示如何读取这些分区中的数据的信息。在一些实施方案中,由协调器实例管理的工作节点然后调用自定义连接器功能130的记录处理功能,以经由自定义连接器功能从数据源读取数据。
[0047] 如该示例所示,创建自定义连接器功能130的能力使用户能够扩展交互式查询服务102的功能。例如,自定义连接器功能130可用于访问存储在任何类型的数据源中的数据,这些数据源包括交互式查询服务102为其提供本机连接器的数据源。例如,用户可以创建自定义连接器功能130以读取由对象存储服务108存储的数据,其方式当前未由交互式查询服务自身的到对象存储服务108的连接器实施。在其他示例中,可以创建自定义连接器功能以支持存储在提供商网络服务或其他位置的专有数据存储或数据格式,包括能够经由其他服务的API访问的数据。
[0048] 图4是示出根据一些实施方案的查询各种API的交互式查询服务作为联合查询的一部分的图。在一些实施方案中,例如,假设用户标识描述数据结构(例如,由表、列、字段、数据类型等表示的结构)的元数据,交互式查询服务102可以查询能够经由任何API访问的数据。在一些实施方案中,可以由交互式查询服务102访问的API 400A至400N包括与外部服务408(诸如客户关系管理(CRM)应用和服务、团队协作软件、外部数据分析工具等)相关联的API。在一些实施方案中,API还包括可以与其他提供商网络410的各种服务412以及提供商网络服务API诸如API 400C至400N相关联的API 400B。通过这种方式,用户可以查询与由各种类型的提供商网络服务管理的资源相关的信息(例如,获得关于由硬件虚拟化服务402管理的VM实例或由容器服务404管理的容器的信息。类似地,用户可以查询能够经由外部服务的API 400A访问的任何数量的数据存储库406A至406N。如上所述,通过标识描述数据结构的元数据的位置,可以将描述经由API可访问的数据结构的模式指定为数据源配置的一部分。在一些实施方案中,可以通过一个或多个自定义连接器功能130实施对能够经由API访问的数据的访问,使得用户可以使用交互式查询服务102来根据需要访问任何API。
[0049] 图5是示出根据一些实施方案的用于使用户能够查询存储在数据源的联合集合处的数据的交互式查询服务的方法的操作500的流程图。操作500(或本文描述的其他过程或其变型和/或组合)的一些或全部在配置有可执行指令的一个或多个计算机系统的控制下执行,并且作为共同在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用程序)由硬件或其组合来实现。代码例如以包括可由一个或多个处理器执行的指令的计算机程序的形式存储在计算机可读存储介质上。计算机可读存储介质是非暂时性的。在一些实施方案中,一个或多个(或所有)操作500由其他图的交互式查询服务102执行。
[0050] 操作500包括,在框502处,接收定义用于第一数据源的第一配置数据和用于第二数据源的第二配置数据的输入,其中第一数据源使用与第二数据源所使用的第二类型的数据存储装置不同的第一类型的数据存储装置来存储数据。在一些实施方案中,第一数据源包括以下项中的一者:由服务提供商网络的对象存储服务提供的对象存储装置、由服务提供商网络的数据库服务提供的数据库实例、由服务提供商网络的数据仓库服务提供的数据仓库、经由服务提供商网络的应用程序编程接口(API)访问的数据、经由服务提供商网络外部的服务的API访问的数据,或者存储在服务提供商网络外部的内部存储位置的数据。
[0051] 在一些实施方案中,第一配置数据指示第一数据源的类型,并且还包括用于访问第一数据源的至少一个第一访问配置。在一些实施方案中,第一配置数据包括描述第一数据的结构的元数据的标识,该元数据标识以下项中的至少一者:第一数据的模式、表、表的列或第一数据中包含的数据类型。在一些实施方案中,第一配置数据包括限速配置,并且其中交互式查询服务根据限速配置访问第一数据源。
[0052] 在一些实施方案中,第一配置数据标识由服务提供商网络的按需代码执行服务管理的至少一个用户创建的功能,并且其中执行查询包括调用至少一个用户创建的功能的执行以访问存储在第一数据源处的第一数据。
[0053] 操作500还包括,在框504处,接收涉及存储在第一数据源处的第一数据和存储在第二数据源处的第二数据的查询。在一些实施方案中,查询是结构化查询语言(SQL)查询,并且交互式查询服务将SQL查询的至少第一部分转换为用于访问第一数据源的第一操作,并且将SQL查询的至少第二部分转换为用于访问第二数据源的第二操作。
[0054] 操作500还包括,在框506处,通过使用第一配置数据访问存储在第一数据源处的第一数据并且使用第二配置数据访问存储在第二数据源处的第二数据来执行查询。在一些实施方案中,交互式查询服务使用查询引擎执行查询,该查询引擎使用实施用于从第一数据源读取数据的功能性的连接器访问第一数据源。在一些实施方案中,连接器向交互式查询服务提供与第一数据源相关的能力信息。
[0055] 在一些实施方案中,操作还包括标识查询的要被执行以获得第一数据的一部分;从第一数据源获得用于执行该部分查询的查询计划,该查询计划由第一数据源的查询引擎生成并且指示执行该部分查询的预期工作量;基于查询计划和预期工作量,确定使用第一数据源的查询引擎来执行该部分查询;以及使第一数据源执行该部分查询。
[0056] 在一些实施方案中,第一数据源包括提供服务并且能够经由应用程序编程接口(API)访问的数据,其中第一配置数据包括描述能够经由API访问的数据的结构的数据目录,并且其中执行查询包括向服务发送至少一个API请求以访问第一数据。
[0057] 在一些实施方案中,操作还包括确定第一数据能够经由多个访问机制而被访问;至少部分地基于要对第一数据执行的操作类型和与第一数据源相关联的能力信息来选择多个访问机制中的特定访问机制;使用特定访问机制来执行查询的至少一部分。
[0058] 图6示出了根据一些实施方案的示例性提供商网络(或“服务提供商系统”)环境。提供商网络600可以经由一个或多个虚拟化服务610向客户提供资源虚拟化,所述一个或多个虚拟化服务允许客户购买、租借或以其他方式获得在一个或多个数据中心中一个或多个提供商网络内的装置上实现的虚拟化资源(包括但不限于计算资源和存储资源)的实例
612。本地互联网协议(IP)地址616可以与资源实例612相关联;本地IP地址是提供商网络
600上的资源实例612的内部网络地址。在一些实施方案中,提供商网络600还可以提供客户可以从提供商网络600获得的公共IP地址614和/或公共IP地址范围(例如,因特网协议版本
4(IPv4)或因特网协议版本6(IPv6)地址)。
[0059] 常规上,提供商网络600可以经由虚拟化服务610来允许服务提供商的客户(例如,操作包括一个或多个客户装置652的一个或多个客户端网络650A至650C的客户)使指派或分配给客户的至少一些公共IP地址614与指派给客户的特定资源实例612动态地相关联。提供商网络600还可允许客户将先前映射到分配给客户的一个虚拟化计算资源实例612的公共IP地址614重新映射到也分配给客户的另一虚拟化计算资源实例612。使用由服务提供商提供的虚拟化计算资源实例612和公共IP地址614,服务提供商的客户,诸如客户网络650A至650C的运营商可以例如,实现客户特定的应用并且在中间网络640,诸如互联网上呈现客户的应用程序。然后,中间网络640上的其他网络实体620可以生成到由一个或多个客户网络650A至650C发布的目的地公共IP地址614的流量;流量被路由到服务提供商数据中心,并且在数据中心处经由网络基板被路由到当前映射到目的地公共IP地址614的虚拟化计算资源实例612的本地IP地址616。类似地,来自虚拟化计算资源实例612的响应流量可以经由网络基板被路由回到中间网络640上到源实体620。
[0060] 如本文中所使用的,本地IP地址是指例如提供商网络中的资源实例的内部或“私有”网络地址。本地IP地址可以在由互联网工程任务组(IETF)的注释请求(RFC)1918保留的地址块内和/或具有由IETF RFC 4193指定的地址格式,并且可以在提供商网络内更改。源自提供商网络外部的网络流量不会直接路由到本地IP地址;而是,流量使用映射到资源实例的本地IP地址的公共IP地址。提供商网络可以包括提供网络地址转换(NAT)或类似功能以执行从公共IP地址到本地IP地址的映射且反之亦然的网络装置或设备。
[0061] 公共IP地址是由服务提供商或客户分配给资源实例的互联网可变网络地址。路由到公共IP地址的流量被转换,例如经由1:1NAT,并且被转发到资源实例的相应的本地IP地址。
[0062] 一些公共IP地址可由提供商网络基础设施分配给特定的资源实例;这些公共IP地址可称为标准公共IP地址,或简称为标准IP地址。在一些实施方案中,标准IP地址到资源实例的本地IP地址的映射是所有资源实例类型的默认启动配置。
[0063] 至少一些公共IP地址可以被分配给提供商网络600的客户或由提供商网络的客户获得;然后,客户可以将其分配的公共IP地址指派给分配给客户的特定资源实例。这些公共IP地址可以被称为客户公共IP地址,或简称为客户IP地址。代替如在标准IP地址的情况下一样由提供商网络600指派给资源实例,客户IP地址可以由客户例如经由服务提供商提供的API指派给资源实例。与标准IP地址不同,客户IP地址被分配给客户帐户,并且可根据需要或期望由相应客户重新映射到其他资源实例。客户IP地址与客户账户(而不是特定的资源实例)相关联,并且客户控制该IP地址,直到客户选择释放它为止。与常规的静态IP地址不同,客户IP地址允许客户通过将客户的公共IP地址重新映射到与客户账户相关联的任何资源实例来掩盖资源实例或可用性区域故障。例如,客户IP地址使客户能够通过将客户IP地址重新映射到替换资源实例来解决关于客户的资源实例或软件的问题。
[0064] 图7是根据一些实施方案的向客户提供存储服务和硬件虚拟化服务的示例性提供商网络的框图。硬件虚拟化服务720向客户提供多个计算资源724(例如,VM)。例如,可以将计算资源724租借或租赁给提供商网络700的客户(例如,实现客户网络750的客户)。每个计算资源724可以设置有一个或多个本地IP地址。提供商网络700可以被配置为将数据包从计算资源724的本地IP地址路由到公共互联网目的地,以及从公共互联网源路由到计算资源724的本地IP地址。
[0065] 提供商网络700可以为例如经由本地网络756耦合到中间网络740的客户网络750提供经由耦合到中间网络740和提供商网络700的硬件虚拟化服务720实现虚拟计算系统792的能力。在一些实施方案中,硬件虚拟化服务720可以提供一个或多个API 702(例如,web服务接口),经由所述API,客户网络750可以例如经由控制台794(例如,基于web的应用程序、独立应用程序、移动应用程序等)访问由硬件虚拟化服务720提供的功能。在一些实施方案中,在提供商网络700处,客户网络750处的每个虚拟计算系统792可以对应于被租赁、租借或以其他方式提供给客户网络750的计算资源724。
[0066] 客户可以例如经由一个或多个API 702从虚拟计算系统792和/或另一客户装置790(例如,经由控制台794)的实例访问存储服务710的功能性,以从提供商网络700所提供的虚拟数据存储区716(例如,文件夹或“桶”、虚拟化卷、数据库等)的存储资源718A至718N访问数据以及将数据存储到所述存储资源。在一些实施方案中,可以在客户网络750处提供虚拟化数据存储网关(未示出),所述虚拟化数据存储网关可以在本地缓存至少一些数据(例如,频繁访问的或关键的数据),并且可以经由一个或多个通信信道与存储服务710通信以从本地高速缓存上载新的或修改的数据,以便维护数据的主存储区(虚拟化数据存储区
716)。在一些实施方案中,用户经由虚拟计算系统792和/或在另一个客户装置790可以经由充当存储虚拟化服务的存储服务710安装和访问虚拟数据存储区716卷,并且这些卷在用户看来可以是本地(虚拟化)存储装置798。
[0067] 虽然在图7中未示出,但还可以经由一个或多个API 702从提供商网络700内的资源实例访问一个或多个虚拟化服务。例如,客户、设备服务提供商或其他实体可以经由API 702从提供商网络700上的相应的虚拟网络内部访问虚拟化服务,以请求分配虚拟网络内或另一虚拟网络内的一个或多个资源实例。
[0068] 说明性系统
[0069] 在一些实施方案中,一种实现本文所述的技术的部分或全部的系统可以包括通用计算机系统(诸如图8所示的计算机系统800),所述通用计算机系统包括一个或多个计算机可访问介质或者被配置为访问一个或多个计算机可访问介质。在所示的实施方案中,计算机系统800包括一个或多个处理器810,所述一个或多个处理器经由输入/输出(I/O)接口830耦合到系统存储器820。计算机系统800还包括耦合到I/O接口830的网络接口840。虽然图8将计算机系统800示出为单个计算装置,但在各种实施方案中,计算机系统800可以包括一个计算装置或被配置为作为单个计算机系统800一起工作的任何数量的计算装置。
[0070] 在各种实施方案中,计算机系统800可以为包括一个处理器810的单处理器系统或包括若干处理器810(例如,两个、四个、八个或另一合适数量)的多处理器系统。处理器810可以是能够执行指令的任何合适的处理器。例如,在各种实施方案中,处理器810可以为实施多种指令集架构(ISA)中的任何一种(诸如,x86、ARM、PowerPC、SPARC、或MIPS ISA或任何其他合适的ISA)的通用或嵌入式处理器。在多处理器系统中,处理器810中的每一个通常可以但未必实施相同的ISA。
[0071] 系统存储器820可以存储可由一个或多个处理器810访问的指令和数据。在各种实施方案中,可以使用任何合适的存储器技术(诸如,随机存取存储器(RAM)、静态RAM(SRAM)、同步动态RAM(SDRAM)、非易失性/快闪型存储器或任何其他类型的存储器)来实现系统存储器820。在示出的实施方案中,实现一个或多个期望功能的程序指令和数据(诸如,上述那些方法、技术和数据)被示出为作为服务代码825和数据826存储在系统存储器820内。
[0072] 在一个实施方案中,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中。
[0073] 网络接口840可以被配置为允许在计算机系统800与附接到一个或多个网络850的其他装置860(例如诸如,其他计算机系统或如图1中示出的装置)之间交换数据。在各种实施方案中,例如,网络接口840可以支持经由任何适当的有线或无线通用数据网络(诸如,以太网网络类型)进行的通信。另外,网络接口840可以支持经由电信/电话网络(诸如模拟语音网络或数字光纤通信网络)、经由存储局域网(SAN)(诸如光纤通道SAN)或经由I/O任何其他合适类型的网络和/或协议进行的通信。
[0074] 在一些实施方案中,计算机系统800包括一个或多个卸载卡870(包括一个或多个处理器875,并且可能包括一个或多个网络接口840),所述一个或多个卸载卡使用I/O接口830(例如,实现快速外围组件互连快速(PCI‑E)标准的一个版本或诸如快速路径互连(QPI)或超路径互连(UPI)的另一互连的总线)来连接。例如,在一些实施方案中,计算机系统800可以充当托管计算实例的主机电子装置(例如,作为硬件虚拟化服务的一部分进行操作),并且一个或多个卸载卡870执行可管理在主机电子装置上执行的计算实例的虚拟化管理器。作为示例,在一些实施方案中,一个或多个卸载卡870可以执行计算实例管理操作,诸如暂停和/或取消暂停计算实例、启动和/或终止计算实例、执行存储器转移/复制操作等。在一些实施方案中,这些管理操作可以由一个或多个卸载卡870与由计算机系统800的其他处理器810A至810N执行的管理程序(例如,根据来自管理程序的请求)协作来执行。然而,在一些实施方案中,由一个或多个卸载卡870实现的虚拟化管理器可以容纳来自其他实体(例如,来自计算实例本身)的请求,并且可以不与任何单独的管理程序协作(或服务于任何单独的管理程序)。
[0075] 在一些实施方案中,系统存储器820可以为被配置为存储如上文所描述的程序指令和数据的计算机可访问介质的一个实施方案。然而,在其他实施方案中,程序指令和/或数据可以在不同类型的计算机可访问介质上接收、发送或存储。一般来说,计算机可访问介质可以包括非暂时性存储介质或存储器介质,诸如磁性介质或光学介质,例如经由I/O接口830耦合到计算机系统800的磁盘或DVD/CD。非暂时性计算机可访问存储介质还可以包括任何易失性或非易失性介质,诸如RAM(例如,SDRAM、双倍数据速率(DDR)SDRAM、SRAM等)、只读存储器(ROM)等,它们可以作为系统存储器820或另一种类型的存储器包括在计算机系统
800的一些实施方案中。此外,计算机可访问介质可包括经由通信介质(诸如网络和/或无线链路,诸如能够经由网络接口840实现)传达的传输介质或信号,诸如电信号、电磁信号或数字信号。
[0076] 本文所讨论或提出的各种实施方案可在多种多样的操作环境中实现,在一些情况下,所述操作环境可包括能够被用来操作若干应用中的任一个的一个或多个用户计算机、计算装置或处理装置。用户或客户端装置可包括多个通用个人计算机中的任何一个,如运行标准操作系统的台式计算机或膝上计算机,以及运行移动软件并且能够支持多个网络连接协议和消息传递协议的蜂窝装置、无线装置和手持式装置。这种系统还可包括多个工作站,所述工作站运行各种可商购得的操作系统和用于如开发和数据库管理等目的的其他已知应用程序中的任一个。这些装置还可包括其他电子装置,诸如虚拟终端、瘦客户端、游戏系统和/或能够经由网络通信的其他装置。
[0077] 大多数实施方案利用本领域技术人员将熟悉的至少一个网络来支持使用多种广泛可用的协议中的任一个进行通信,所述协议诸如传输控制协议/互联网协议(TCP/IP)、文件传送协议(FTP)、通用即插即用(UPnP)、网络文件系统(NFS)、公共互联网文件系统(CIFS)、可扩展消息传递和现场协议(XMPP)、AppleTalk等。所述一个或多个网络可包括例如局域网(LAN)、广域网(WAN)、虚拟专用网(VPN)、互联网、内联网、外联网、公用电话交换网(PSTN)、红外网络、无线网络以及它们的任何组合。
[0078] 在使用web服务器的实施方案中,web服务器可以运行各种服务器或中间层应用中的任一种,包括HTTP服务器、文件传输协议(FTP)服务器、通用网关接口(CGI)服务器、数据服务器、Java服务器、业务应用服务器等。服务器还能够响应来自用户装置的请求而执行程序或脚本,如通过执行可以实施为以任何编程语言(如 C、C#或C++)或任何脚本语言(如Perl、Python、PHP或TCL)以及其组合写成的一个或多个脚本或程序的一个或多个Web应用。所述一个或多个服务器还可包括数据库服务器,包括但不限于可从Oracle(R)、Microsoft(R)、Sybase(R)、IBM(R)等购得的数据库服务器。数据库服务器可为关系型或非关系型(例如,“NoSQL”)、分布式或非分布式等。
[0079] 本文所公开的环境可包括如上文所讨论的各种数据存储库以及其他存储器和存储介质。这些可驻留在多种位置,诸如驻留在计算机中的一个或多个计算机本地(和/或驻留在一个或多个计算机中)的存储介质上,或驻留在跨网络位于计算机中的任一个或全部计算机远程的存储介质上。在实施方案的特定集中,信息可驻留在本领域技术人员熟悉的存储区域网(SAN)中。类似地,用于执行属于计算机、服务器或其他网络装置的功能的任何必要的文件可视情况本地和/或远程存储。在系统包括计算机化装置的情况下,这个这种装置可包括可通过总线电耦合的硬件元件,所述元件包括例如至少一个中央处理单元(CPU)、至少一个输入装置(例如,鼠标、键盘、控制器、触摸屏或小键盘)和/或至少一个输出装置(例如,显示装置、打印机或扬声器)。此类系统还可以包括一个或多个存储装置,诸如磁盘驱动器、光学存储装置和固态存储装置,诸如随机存取存储器(RAM)或只读存储器(ROM),以及可移动媒体装置、存储卡、闪存卡等。
[0080] 此类装置还可包括计算机可读存储介质读取器、通信装置(例如,调制解调器、网卡(无线或有线)、红外线通信装置等)和工作存储器,如上文所论述。计算机可读存储介质读取器可与计算机可读存储介质连接或被配置来接收计算机可读存储介质,计算机可读存储介质表示远程、本地、固定和/或可移动存储装置以及用于暂时和/或更永久地包含、存储、传输和检取计算机可读信息的存储介质。系统和各种装置通常还将包括位于至少一个工作存储器装置内的多个软件应用、模块、服务或其他元件,包括操作系统和应用程序,诸如客户端应用或web浏览器。应当了解,替代实施方案可具有与上述实施方案不同的众多变体。例如,也可使用定制硬件,和/或特定元件可以在硬件、软件(包括可移植软件,诸如小程序)或两者中实现。此外,可采用与诸如网络输入/输出装置的其他计算装置的连接。
[0081] 用于含有代码或部分代码的存储介质和计算机可读介质可包括本领域已知或已使用的任何适当介质,包括存储介质和通信介质,如但不限于以用于存储和/或传输信息(如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术所实现的易失性和非易失性、可移动和不可移动的介质,包括RAM、ROM、电可擦可编程只读存储器(EEPROM)、快闪存储器或其他存储器技术、光盘只读存储器(CD‑ROM)、数字通用光盘(DVD)或其他光学存储装置、磁盒、磁带、磁盘存储装置或其他磁性存储装置,或可用于存储所需信息且可由系统装置访问的任何其他介质。基于本文所提供的公开内容和教示,本技术领域普通技术人员将了解实现各种实施方案的其他方式和/或方法。
[0082] 在前面的描述中,描述了各种实施方案。出于解释的目的,阐述了具体的配置和细节,以便提供对实施方案的透彻理解。然而,对本领域的技术人员也将明显的是,可以在没有具体细节的情况下实践所述实施方案。此外,为了不使所描述的实施方案变得模糊,可能会省略或简化众所周知的特征。
[0083] 在本文中使用带有虚线边框(例如,大破折号、小破折号、点破折号和点)的带括号的文本和块来说明向一些实施方案添加附加特征的可选操作。然而,这种表示法不应视为意味着这些是仅有的选项或任选操作,和/或在某些实施方案中,带有实线边界的框不是任选的。
[0084] 在各种实施方案中,具有后缀字母的附图标记(例如,718A至718N)可以用于指示所引用实体的一个或多个实例,并且当存在多个实例时,每个实例不必相同,而是可以替代地共享一些一般特征或按惯例行事。此外,除非有相反的明确说明,否则所使用的特定后缀并不意味着暗示存在特定量的实体。因此,在各种实施方案中,使用相同或不同后缀字母的两个实体可以具有或可以不具有相同数量的实例。
[0085] 提及“一个实施方案”、“实施方案”、“示例性实施方案”等指示所描述的实施方案可以包括特定特征、结构或特性,但是每个实施方案可能不一定包括所述特定特征、结构或特性。此外,此类短语不一定是指同一实施方案。此外,当结合实施方案来描述特定特征、结构或特性时,应认为,无论是否有明确描述,结合其他实施方案来实现此类特征、结构或特性也在本领域技术人员的知识范围内。
[0086] 此外,在上述各种实施方案中,除非另外特别指出,否则诸如词语“A、B或C中的至少一个”的析取语言意图被理解为表示A、B或C或其任何组合(例如,A、B和/或C)。因此,析取语言通常不意图并且不应被理解为暗示给定实施方案要求A中的至少一个、B中的至少一个和C中的至少一个各自存在。
[0087] 可以根据以下条款描述所公开的技术的至少一些实施方案:
[0088] 1.一种由服务提供商网络的交互式查询服务执行的计算机实现的方法,所述方法包括:
[0089] 经由所述交互式查询服务的接口从所述交互式查询服务的用户接收输入,所述输入定义:
[0090] 用于第一数据源的第一配置数据,所述第一配置数据指示所述第一数据源的第一类型并且还包括用于访问所述第一数据源的至少第一访问配置,以及
[0091] 用于第二数据源的第二配置数据,所述第二配置数据指示所述第二数据源的第二类型,并且还包括用于访问所述第二数据源的至少一个第二访问配置,其中所述第一数据源使用不同于所述第二数据源使用的第二类型的数据存储装置的第一类型的数据存储装置来存储数据;
[0092] 接收涉及存储在所述第一数据源处的第一数据和存储在所述第二数据源处的第二数据的查询;以及
[0093] 通过使用所述第一配置数据访问存储在所述第一数据源处的所述第一数据并且使用所述第二配置数据访问存储在所述第二数据源处的所述第二数据来执行所述查询。
[0094] 2.如条款1所述的计算机实现的方法,其中所述第一数据源包括以下项中的至少一者:由所述服务提供商网络的对象存储服务提供的对象存储、由所述服务提供商网络的数据库服务提供的数据库实例、由所述服务提供商网络的数据仓库服务提供的数据仓库、经由所述服务提供商网络的应用程序编程接口(API)访问的数据、经由所述服务提供商网络外部的服务的API访问的数据、存储在数据高速缓存中的数据、存储在与交互式查询服务在其中操作的第二区域不同的第一区域中的数据,或者存储在所述服务提供商网络外部的内部存储位置的数据。
[0095] 3.如条款1或2中任一项所述的计算机实现的方法,其中所述第一配置数据标识由所述服务提供商网络的按需代码执行服务管理的至少一个用户创建的功能,并且其中执行所述查询包括调用所述至少一个用户创建的功能的执行以访问存储在所述第一数据源处的所述第一数据。
[0096] 4.一种由交互式查询服务执行的计算机实现的方法,所述方法包括:
[0097] 接收定义用于第一数据源的第一配置数据和用于第二数据源的第二配置数据的输入,其中所述第一数据源使用与所述第二数据源所使用的第二类型的数据存储装置不同的第一类型的数据存储装置;
[0098] 接收涉及存储在所述第一数据源处的第一数据和存储在所述第二数据源处的第二数据的查询;以及
[0099] 通过使用所述第一配置数据访问存储在所述第一数据源处的所述第一数据并且使用所述第二配置数据访问存储在所述第二数据源处的所述第二数据来执行所述查询。
[0100] 5.如条款4所述的计算机实现的方法,其中所述第一数据源包括以下项中的至少一者:由服务提供商网络的对象存储服务提供的对象存储、由所述服务提供商网络的数据库服务提供的数据库实例、由所述服务提供商网络的数据仓库服务提供的数据仓库、经由所述服务提供商网络的应用程序编程接口(API)访问的数据、经由所述服务提供商网络外部的服务的API访问的数据、存储在数据高速缓存中的数据、存储在与交互式查询服务在其中操作的第二区域不同的第一区域中的数据,或者存储在所述服务提供商网络外部的内部存储位置的数据。
[0101] 6.如条款4或5中任一项所述的计算机实现的方法,其中所述第一配置数据标识由服务提供商网络的按需代码执行服务管理的至少一个用户创建的功能,并且其中执行所述查询包括调用所述至少一个用户创建的功能的执行以访问存储在所述第一数据源处的所述第一数据。
[0102] 7.如条款4‑6中任一项所述的计算机实现的方法,所述计算机实现的方法还包括:
[0103] 标识所述查询的要被执行以获得所述第一数据的一部分;
[0104] 从所述第一数据源获得用于执行所述查询的所述部分的查询计划,所述查询计划由所述第一数据源的查询引擎生成并且指示执行所述查询的所述部分的预期工作量;
[0105] 基于所述查询计划和所述预期工作量来确定使用所述第一数据源的所述查询引擎来执行所述查询的所述部分;以及
[0106] 使得所述第一数据源执行所述查询的所述部分。
[0107] 8.如条款4至7中任一项所述的计算机实现的方法,其中所述第一配置数据指示所述第一数据源的类型并且还包括用于访问所述第一数据源的至少一个第一访问配置。
[0108] 9.如条款4至8中任一项所述的计算机实现的方法,其中所述第一配置数据指示将如何检取描述所述第一数据的结构的元数据,所述元数据标识以下项中的至少一者:所述第一数据的模式、表、所述表的列或所述第一数据中包含的数据类型。
[0109] 10.如条款4至9中任一项所述的计算机实现的方法,其中所述第一配置数据包括限速配置,并且其中所述交互式查询服务根据所述限速配置访问所述第一数据源。
[0110] 11.如条款4至10中任一项所述的计算机实现的方法,其中所述第一数据源包括提供服务并且能够经由应用程序编程接口(API)访问的数据,其中所述第一配置数据包括描述能够经由所述API访问的所述数据的结构的数据目录,并且其中执行所述查询包括向所述服务发送至少一个API请求以访问所述第一数据。
[0111] 12.如条款4至11中任一项所述的计算机实现的方法,其中所述交互式查询服务使用查询引擎执行所述查询,所述查询引擎使用实施用于从所述第一数据源读取数据的功能的连接器来访问所述第一数据源。
[0112] 13.如条款4‑12中任一项所述的计算机实现的方法,所述计算机实现的方法还包括:
[0113] 确定所述第一数据能够经由多个访问机制而被访问;
[0114] 至少部分地基于要对所述第一数据执行的操作类型和与所述第一数据源相关联的能力信息来选择所述多个访问机制中的特定访问机制;以及
[0115] 使用所述特定访问机制来执行所述查询的至少一部分。
[0116] 14.如条款4至13中任一项所述的计算机实现的方法,其中所述交互式查询服务使用查询引擎来执行所述查询,所述查询引擎使用实施用于从所述第一数据源读取数据的功能的连接器来访问所述第一数据源,并且其中所述连接器向所述交互式查询服务提供与所述第一数据源相关的能力信息。
[0117] 15.如条款4至14中任一项所述的计算机实现的方法,其中所述查询是结构化查询语言(SQL)查询,并且所述交互式查询服务将所述SQL查询的至少第一部分转换为用于访问所述第一数据源的第一操作,并且将所述SQL查询的至少第二部分转换为用于访问所述第二数据源的第二操作。
[0118] 16.一种系统,其包括:
[0119] 由第一一个或多个电子装置实施的服务提供商网络的交互式查询服务,所述交互式查询服务包括在执行时使所述交互式查询服务执行以下操作的指令:
[0120] 接收定义用于第一数据源的第一配置数据和用于第二数据源的第二配置数据的输入,其中所述第一数据源使用与所述第二数据源所使用的第二类型的数据存储装置不同的第一类型的数据存储装置来存储数据,并且其中所述第二数据源由所述服务提供商网络的数据库服务提供,
[0121] 接收涉及存储在所述第一数据源处的第一数据和存储在所述第二数据源处的第二数据的查询,
[0122] 至少部分地基于所述查询、所述第一配置数据和所述第二配置数据来生成查询计划,以及
[0123] 通过将所述查询计划的一部分发送至所述数据库服务来至少部分地执行所述查询计划;以及
[0124] 由第二一个或多个电子装置实施的所述服务提供商网络的所述数据库服务,所述数据库服务包括在执行时使所述数据库服务执行以下操作的指令:
[0125] 从所述交互式查询服务接收所述查询计划的所述部分,
[0126] 使用所述数据库服务的查询引擎来执行所述查询计划的所述部分以获得部分查询结果,以及
[0127] 将所述部分查询结果发送至所述交互式查询服务。
[0128] 17.如条款16所述的系统,其中所述第一数据源包括以下项中的一者:由所述服务提供商网络的对象存储服务提供的对象存储、由所述服务提供商网络的数据库服务提供的数据库实例、由所述服务提供商网络的数据仓库服务提供的数据仓库、经由所述服务提供商网络的应用程序编程接口(API)访问的数据、经由所述服务提供商网络外部的服务的API访问的数据,或者存储在所述服务提供商网络外部的内部存储位置的数据。
[0129] 18.如条款16至17中任一项所述的系统,其中所述第一配置数据指示所述第一数据源的类型并且还包括用于访问所述第一数据源的至少一个第一访问配置。
[0130] 19.如条款16至18中任一项所述的系统,其中所述第一配置数据包括描述所述第一数据的结构的元数据的标识,所述元数据标识以下项中的至少一者:所述第一数据的模式、表、所述表的列或所述第一数据中包含的数据类型。
[0131] 20.如条款16至19中任一项所述的系统,其中所述第一配置数据包括限速配置,并且其中所述交互式查询服务根据所述限速配置访问所述第一数据源。
[0132] 因此,应当以说明性意义而不是限制性意义来理解本说明书和附图。然而,将显而易见的是,在不脱离如在权利要求中阐述的本公开的更宽泛精神和范围的情况下,可对其做出各种修改和改变。