Nothing Special   »   [go: up one dir, main page]

CN109075994B - 多集群仓库 - Google Patents

多集群仓库 Download PDF

Info

Publication number
CN109075994B
CN109075994B CN201780026006.8A CN201780026006A CN109075994B CN 109075994 B CN109075994 B CN 109075994B CN 201780026006 A CN201780026006 A CN 201780026006A CN 109075994 B CN109075994 B CN 109075994B
Authority
CN
China
Prior art keywords
clusters
query
cluster
computing
compute
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
Application number
CN201780026006.8A
Other languages
English (en)
Other versions
CN109075994A (zh
Inventor
弗洛里安·安德里亚斯·芬克
彼得·波维内克
蒂埃里·克吕安斯
本诺特·戴奇维勒
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Snowflake Co
Original Assignee
Snowflake Computing Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Snowflake Computing Inc filed Critical Snowflake Computing Inc
Publication of CN109075994A publication Critical patent/CN109075994A/zh
Application granted granted Critical
Publication of CN109075994B publication Critical patent/CN109075994B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/283Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0896Bandwidth or capacity management, i.e. automatically increasing or decreasing capacities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/50Network service management, e.g. ensuring proper service fulfilment according to agreements
    • H04L41/5003Managing SLA; Interaction between SLA and QoS
    • H04L41/5019Ensuring fulfilment of SLA
    • H04L41/5025Ensuring fulfilment of SLA by proactively reacting to service quality change, e.g. by reconfiguration after service quality degradation or upgrade
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0805Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
    • H04L43/0817Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking functioning

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Warehouses Or Storage Devices (AREA)

Abstract

一种用于多集群仓库的方法包括分配多个计算集群作为虚拟仓库的一部分。计算集群用于访问一个或更多个云存储资源中的一个或更多个数据库并对其执行查询。该方法包括向多个计算集群中的每一个提供对虚拟仓库的查询。虚拟仓库的多个计算集群中的每一个接收多个查询,使得计算负荷散布在不同集群当中。该方法还包括基于多个计算集群的工作负荷根据需要来动态地向虚拟仓库添加计算集群以及从虚拟仓库移除计算集群。

Description

多集群仓库
相关申请的交叉引用
本申请根据35 U.S.C.§119(e)要求2016年4月28日提交的标题为“Multi-ClusterWarehouses”的美国临时专利申请号62/328,943的利益,该临时申请特此通过引用被全部并入本文。
技术领域
本公开涉及用于多集群仓库的系统、方法和设备。
背景
数据库广泛用于在计算应用中的数据存储和访问。数据库可以包括一个或更多个表,这些表包括或参考可以使用查询来读取、修改或删除的数据。数据库可以在一个或更多个表内存储小数据集或极大数据集。该数据可例如通过网站或应用程序接口(API)由组织中的各种用户访问或甚至用于服务公共用户。计算和存储资源及其底层体系结构都可在实现理想的数据库性能方面发挥巨大作用。
附图的简要说明
参考以下附图描述了本公开的非限制性和非穷尽的实施例,其中,除非以其它方式说明,在所有各个附图中相似的参考数字指代相似的部分。
图1是描绘根据本文描述的系统和方法的示例实施例的处理平台的框图。
图2是示出根据一个实施例的资源管理器的部件的框图。
图3是描绘根据一个实施例的在多集群仓库上调度的框图。
图4是描绘根据一个实施例的可在单个执行平台上提供的多个(a plurality of)仓库的框图。
图5是示出根据一个实施例的具有多个分布式虚拟仓库的系统的框图。
图6是示出根据一个实施例的用于多集群仓库的方法的示意性流程图。
图7是示出根据一个实施例的用于在多集群仓库中动态地添加计算集群的方法的示意性流程图。
图8是示出根据一个实施例的用于动态地移除多集群仓库中的计算集群的方法的示意性流程图。
图9是示出根据一个实施例的用于多集群仓库的方法的示意性流程图。
图10是描绘与本文公开的过程和系统的至少一个实施例一致的示例计算设备的框图。
优选实施例的详细描述
本公开针对用于提供和管理多集群仓库的系统、方法和设备。仓库是被连接并在处理分析查询时协作的几台服务器。在一些仓库中,计算和存储资源被连接并分配在一起。在本文公开的至少一些实施例中,计算资源被独立地分配并且与存储资源分开地可缩放。在一些情况下,仓库包括可以一起工作来提供服务的一个或更多个集群和/或一个或更多个服务器节点的集群。申请人已经开发并在本文中提出用于多集群仓库的体系结构、方法、算法和系统。
根据一个实施例,一种用于多集群仓库的方法包括分配多个计算集群作为虚拟仓库的一部分。计算集群可用于访问在一个或更多个云存储资源中的一个或更多个数据库并对其执行查询。该方法包括向多个计算集群中的每一个提供对虚拟仓库的查询。例如,虚拟仓库的多个计算集群中的每一个可以接收多个查询,使得计算负荷散布在不同集群当中。该方法还可以包括基于多个计算集群的工作负荷根据需要动态地向虚拟仓库添加计算集群以及从虚拟仓库移除计算集群。
多集群仓库可以提供在并发性以及可用性方面的显著提高。例如,仓库通常只包括一个集群,其大小是仓库的大小。例如,大仓库可包括八个服务器节点的单个集群。多集群仓库可以允许具有多个集群的单个仓库的创建。仓库内的每个集群可以包括八个服务器节点。因此,多集群仓库可以支持由相同大小的单个集群仓库所提供的并发级别的三倍。这种体系结构可以允许对照单个仓库的高并发级别,同时也允许计算资源的缩放,如将在本文中进一步讨论的。
通过将不同的集群放置在不同的可用性区域中,也可以在多集群仓库中实现提高的可用性。例如,多集群仓库将提供提高的故障恢复能力,因为每个仓库集群可以在云提供商的不同可用性区域中(例如在不同的
Figure BDA0001842643110000031
可用性区域内)被分配。因此,与单集群仓库相比,多集群仓库将是高度可用的。此外,查询可以被路由到最佳集群,其中相关数据段已经在存储器或基于本地磁盘的存储装置中(例如,在高速缓存中)。例如,用于多集群仓库的方法可以包括基于查询起源于的会话来路由查询。通过从同一个会话向同一个集群提供查询,增加了查询所需的数据已经在存储器中的可能性,并且可以消除从云存储资源检索该数据的需要。利用提高的并发性和可用性,用户可能经历提高的响应时间和可用性,其在其他传统的单集群数据库体系结构中是难以或不可能实现的。
除了提高的可用性和并发性之外,在计算资源的自动缩放中的显著变化也是可能的。例如,至少一些实施例提供了计算资源与云存储的分开的分配。因此,多集群仓库可以在仍然针对尚未变化或者与查询工作负荷相比变化非常缓慢的数据进行查询的同时在计算集群的数量上按比例放大或缩小以适应工作负荷中的宽摆幅。
当仓库不能处理工作负荷并且必须排队查询(或排队查询比被接受的时间长度更长)时,自动重新开始(resuming)或开始新的或暂停的集群可被执行。查询可能被排队,因为在集群上的总资源消耗已经超过了阈值。例如,资源消耗可以包括用于存储器负荷以及计算或处理负荷的参数。在一个实施例中,参数控制在新集群应该被重新开始或供应之前查询可以被排队多长时间。新集群一重新开始,查询就可以被调度以在新集群上执行。这适用于新查询以及已经排队的查询。
在一个实施例中,一种用于多集群仓库的方法可以包括基于工作负荷来动态地向虚拟仓库添加计算集群。该方法可以包括确定查询是否可以在满足对于查询的性能度量的同时被处理。如果查询结合当前工作负荷不允许一个或更多个当前分配的计算集群满足性能度量,则该方法可以包括触发新计算集群的启动。在一些实施例中,可以足够快地分配新集群,以确保没有一个查询经历少于所需的性能度量。
当工作负荷的资源消耗足够低时可以执行自动暂停或停用多集群仓库的活动集群,使得暂停该集群将不会使在过去的N分钟内执行的任何查询被排队(或被排队比阈值时间长)。查询的排队或对于查询的排队时间只是可以被使用的性能度量的一个示例。在一个实施例中,用于多集群仓库的方法可以包括基于工作负荷来移除计算集群。该方法可以包括确定当前工作负荷是否在满足性能度量的情况下能够由比该多个计算集群少一个的集群服务。该方法可以包括响应于确定工作负荷能够由比多个计算集群少一个的集群服务而停用(或暂停)多个计算集群中的至少一个计算集群。
根据一个实施例,集群的自动供应或移除以及将查询按规定路线发送到仓库内的不同集群可以作为服务被用作强大且灵活的多集群仓库的一部分。
下面提供了与本公开的实施例一致的系统和方法的详细描述。虽然描述了几个实施例,但是应当理解,本公开不限于任何一个实施例,而相反包括许多替换、修改和等同物。此外,尽管在下面的描述中阐述了许多特定的细节以便提供对本文公开的实施例的彻底理解,但是一些实施例可以在没有这些细节中的一些或全部的情况下被实施。此外,为了清楚的目的,没有详细描述在相关领域中已知的某种技术材料,以避免使本公开不必要地模糊。
转向附图,图1是示出根据一个实施例的用于提供和/或管理多集群仓库的处理平台100的框图。处理平台100包括由多个用户104、106和108可访问的资源管理器102。资源管理器102在本文也可以被称为数据库服务管理器。在一些实现中,资源管理器102可以支持希望访问处理平台100的数据或服务的任何数量的用户。用户104-108可以包括例如提供数据存储和检索查询和请求的终端用户、管理本文描述的系统和方法的系统管理员、与数据库交互的软件应用以及与资源管理器102交互的其他部件/设备。
资源管理器102可以提供支持在处理平台100内的系统和部件的操作的各种服务和功能。资源管理器102可以访问与存储在整个数据处理平台100中的数据相关联的存储的元数据110。资源管理器102可以使用元数据110用于优化用户查询。在一些实施例中,元数据110包括存储在远程数据存储系统中的数据以及从本地高速缓存(例如,在执行平台112的一个或更多个集群内的高速缓存)可获得的数据的汇总。另外,元数据110可以包括关于如何在远程数据存储系统和本地高速缓存中组织数据的信息。元数据110允许系统和服务确定一段数据是否需要在不从存储设备加载或访问实际数据的情况下被处理。
作为数据处理平台100的一部分,当使用数据操作语言(DML)对数据进行改变时,可以收集元数据110,所述改变可以通过任何DML语句进行。操作数据的示例可以包括但不限于选择、更新、改变、合并数据以及将数据插入表中。作为处理平台100的一部分,可以创建文件,并且可以在每文件和每列基础上收集元数据110,其后可以将元数据110保存在元数据储存器中。元数据110的这个收集可以在数据摄取期间执行,或者元数据110的收集可以在数据被摄取或加载之后作为单独的过程执行。在实现中,元数据110可以包括多个不同的值;多个空值;以及对于每个文件的最小值和最大值。在实现中,元数据还可以包括字符串长度信息和在字符串中的字符的范围。
资源管理器102还与执行平台112通信,执行平台112提供执行各种数据存储和数据检索操作的多个计算资源,如下面更详细讨论的。执行平台112可以包括一个或更多个计算集群,其可以基于由用户104-108向特定仓库提供的查询工作负荷而为特定仓库被动态地分配或暂停。执行平台112与作为存储平台114的一部分的一个或更多个数据存储设备116、118和120通信。尽管在图1中示出了三个数据存储设备116、118和120,但是执行平台112能够与任何数量的数据存储设备通信。在一些实施例中,数据存储设备116、118和120是位于一个或更多个地理位置上的基于云的存储设备。例如,数据存储设备116、118和120可以是公共云基础设施或私有云基础设施的一部分,或者任何其他类别的分布式存储系统。数据存储设备116、118和120可以包括硬盘驱动器(HDD)、固态驱动器(SSD)、存储集群或任何其他数据存储技术。另外,存储平台114可以包括分布式文件系统(例如Hadoop分布式文件系统(HDFS))、对象存储系统等。
在一些实施例中,在资源管理器102和用户104-108、元数据110和执行平台112之间的通信链路经由一个或更多个数据通信网络来实现,并且可以被分配各种任务,使得用户请求可以被优化。类似地,在执行平台112和存储平台114中的数据存储设备116-120之间的通信链路经由一个或更多个数据通信网络来实现。这些数据通信网络可以利用任何通信协议和任何类型的通信介质。在一些实施例中,数据通信网络是彼此耦合的两个或更多个数据通信网络(或子网)的组合。在可选的实施例中,这些通信链路使用任何类型的通信介质和任何通信协议来实现。
如图1所示,数据存储设备116、118和120从与执行平台112相关联的计算资源去耦。该体系结构基于变化的数据存储/检索需要、计算需要以及访问数据处理平台100的用户和系统的变化的需要来支持对数据处理平台100的动态变化。动态变化的支持允许数据处理平台100响应于对数据处理平台100内的系统和部件的变化需求而快速缩放。计算资源从数据存储设备的去耦支持大量数据的存储,而不需要相应的大量计算资源。类似地,资源的这种去耦支持在特定时间处利用的计算资源的显著增加,而不需要可用数据存储资源的相应增加。
资源管理器102、元数据110、执行平台112和存储平台114在图1中显示为单独的部件。然而,资源管理器102、元数据110、执行平台112和存储平台114中的每一个可以被实现为分布式系统(例如,分布在多个地理位置处的多个系统/平台当中),或者可以被组合成一个或更多个系统。另外,资源管理器102、用于元数据110的存储装置、执行平台112和存储平台114中的每一个都可以根据从用户104-108接收的请求的变化和数据处理平台100的变化的需要而按比例放大或缩小(彼此独立)。因此,在所描述的实施例中,数据处理平台100是动态的,并且支持规则改变以满足当前的数据处理需要。
执行平台112包括可以共享处理平台100的计算或处理负荷的多个计算集群122、124、126。在一个实施例中,客户可以在创建仓库或改变其配置(当仓库正运行时和当它被暂停时)时,通过指定范围(例如,指定诸如minClusterCount和maxClusterCount的值)来控制活动(即运行)集群的数量。客户可以通过指定例如使最小集群计数等于最大集群计数来指定活动集群的确切数量,使得仓库每当它正在运行时将有那个确切数量的集群运行。如果用户指定大于最小集群计数的最大集群计数,则资源管理器102可以基于工作负荷来自动管理当前活动集群的数量,以满足吞吐量标准且是有成本效益的。因此,每当仓库运行时,至少最小集群计数(minClusterCount)的集群是活动的,且至多最大集群计数(maxClusterCount)的集群是活动的。考虑到在存储器负荷和并发级别方面的指定性能标准,资源管理器102可以决定需要多少集群来处理当前工作负荷。
图2示出了描绘根据一个实施例的资源管理器102的部件的框图。资源管理器102包括耦合到数据存储设备206的访问管理器202和密钥管理器204。访问管理器202处理用于本文描述的系统的认证和授权任务。密钥管理器204管理在认证和授权任务期间使用的密钥的存储和认证。请求处理服务208管理所接收的数据存储请求和数据检索请求。管理控制台服务210支持由管理员和其他系统管理者对各种系统和进程的访问。
资源管理器102还包括SQL编译器212、SQL优化器214和SQL执行器216。SQL编译器212解析SQL查询并生成对于该查询的执行代码。SQL优化器214基于需要被处理的数据来确定执行查询的最佳方法。SQL执行器216执行对于由资源管理器102接收的查询的查询代码。查询调度器和协调器218将接收到的查询发送到适当的服务或系统,用于编译、优化和分派到执行平台112。虚拟仓库管理器220管理在执行平台112中实现的多个虚拟仓库(包括多集群仓库)的操作。
另外,资源管理器102包括配置和元数据管理器222,其管理与存储在远程数据存储设备中和本地高速缓存中的数据相关的信息。监视器和工作负荷分析器224监督由资源管理器102执行的过程,并管理任务(例如,工作负荷)在执行平台112中的虚拟仓库和执行节点当中的分配。配置和元数据管理器222以及监视器和工作负荷分析器224耦合到数据存储设备226。
资源管理器102还包括事务管理和访问控制模块228,其管理与数据存储请求和数据访问请求的处理相关联的各种任务和其他活动。例如,事务管理和访问控制模块228提供由多个用户或系统对数据的一致和同步的访问。因为多个用户/系统可能同时访问相同的数据,因此对数据的更改必须被同步,以确保每个用户/系统都在使用数据的当前版本工作。事务管理和访问控制模块228在资源管理器102中的单个集中位置处提供对各种数据处理活动的控制。
进一步参考虚拟仓库管理器220,将讨论在多集群仓库中的自动集群重新开始和自动集群暂停。在一个实施例中,虚拟仓库管理器220将执行自动集群重新开始。当多集群仓库(例如,在执行平台112内)被标记为自动重新开始时,用于仓库的第一集群在SQL语句被调度并且仓库中的所有集群都处于暂停状态时将自动重新开始。但是,将根据工作负荷来执行自动重新开始剩余集群的决定。这假设activeClusterCount<maxClusterCount,也就是说,我们有可被激活/重新开始但当前暂停的集群。
工作负荷考虑因素至少包括两件事。首先,工作负荷考虑因素可以解释存储器使用。当查询因为所有集群都在其最大存储器容量处而被调度并排队时,虚拟仓库管理器220将重新开始一个或更多个集群,使得可以避免或缩短排队。由于重新开始集群可能花费一点时间(例如几分钟),因此如果新的集群需要被重新开始,则排队仍然可以发生。然而,虚拟仓库管理器220还可以确保有几个免费服务器(free server)的免费池(free pool),使得在新集群的启动期间可以对免费池进行查询。此外,虚拟仓库管理器220可以在决定供应新集群之前等待特定时间段,以查看排队是否将自动解决。
其次,工作负荷考虑因素可解释一定程度的并发或者在集群上的处理/计算负荷。如果并发程度在所有活动集群上都高,则虚拟仓库管理器220可以启动另一个集群,即使有足够的存储器来调度查询。在这里,可以基于并行度(DOP)来为每个活动集群计算并发程度。特别地,并发程度可以是在完全DOP下运行的查询的数量。例如,这可以被计算为对于所有运行查询的DOP的和除以最大DOP(MAX_DOP)与运行查询的数量的乘积。这可以是分数或非整数值,因为一些轻量级查询以比最大值更小的DOP运行。在一个实施例中,可以指定仓库参数来控制并发程度。例如,并发程度(concurrency_level_target)可以默认地被设置为8的值。这个参数可能暴露于客户,因为它的值实际上取决于客户希望在这个问题上投入多少钱以及他们多么愿意在仓库被共享时允许查询性能下降(与独立查询性能相比)。
在一个实施例中,虚拟仓库管理器220将执行自动集群暂停。在一个实施例中,在特定数量的秒的不活动之后(例如,基于auto_suspend参数),整个仓库可以关闭。与此正交,当仓库有多于一个活动集群时,如果仓库在大于规定时间量(例如以分钟为单位测量的)内低于它的容量运行,则一个或更多个集群可能被暂停。例如,考虑具有三个活动集群的仓库。如果仓库在大于指定时间段内负荷不足,即能够在当前时间处执行在指定时间段引擎中发布的所有SQL语句而没有任何排队或没有超过最大并发程度,则一个或更多个集群将被暂停。注意,虽然仓库负荷不足,但它仍将运用当前活动的所有集群。集群不需要在特定数量的分钟内是不活动的以被关闭。可以在周期性基础上例如在最后5分钟、最后10分钟、最后半小时、最后一小时等期间执行对自动集群暂停的检查。在一个实施例中,可以以不同于指定时间段的间隔执行对自动集群的检查。例如,检查最后10分钟是否低于负荷可以在每一小时变化时执行,使得客户可以在每小时基础上被收费。
进一步参考查询调度器和协调器218,可以基于工作负荷、查询亲和度和其他因素来执行查询调度。查询调度器和协调器218可以基于工作负荷来将查询转发到特定集群。例如,查询调度器和协调器218可以尝试在每个集群上保持近似相等的工作负荷,以分散处理任务并改善查询执行时间和用户体验。可以使用查询亲和度,使得相关查询、特别是与同一数据相关的查询将被发送到同一集群。例如,查询调度器和协调器218可以向同一集群发送具有同一会话标识符的查询。基于查询亲和度来转发查询可以允许查询调度器和协调器218确保将针对其执行查询的数据已经在特定集群的本地高速缓存中。这可以显著减少响应时间、工作负荷和数据查找。
图3是示出多集群仓库302和在多集群仓库302上的查询304的调度的示意性框图。仓库302包括多个集群(集群1、集群2、集群N),每个集群包括多个服务器节点。在一个实施例中,每个集群包括相同数量的服务器,尽管在不同的实施例中这可能不同。在一个实施例中,集群中的每个服务器属于同一可用性区域,但是不同的集群可以放置在不同的可用性区域中。仓库的可用性的概念可以基于仓库的总可用性百分比。例如,对于在仓库302内的特定集群的可用性可以是相对于集群大小可用(例如,在运行状态中)的服务器的百分比。然而,当该百分比变得低于运行查询所需的最小值(例如,50%)时,可以为该集群确定0%的可用性,并且直到仓库302或在仓库302中的一些服务器被修复之前可以不分配任何查询。如本文所讨论的,可以基于工作负荷、集群中的服务器故障等来动态地调整仓库302中的集群的数量。
在一个实施例中,查询调度器和协调器218基于它的所计划的资源消耗来对每个查询(例如,SQL语句或SQL语句的一部分)加权。例如,一些查询可能占用明显更多的存储器来执行,而其他查询可能占用明显更多的处理资源来执行。类似地,一些查询对于存储器和处理可能具有高消耗或低消耗。资源管理器102可以确定所预测或计划的消耗是什么,且然后也许能够确定将查询放置在哪里,以最有效地平衡在不同集群当中的工作负荷。例如,一个高消耗查询可以使用与多个低消耗查询一样多的资源。
在一个实施例中,查询调度器和协调器218可以调度在仓库302的一个或更多个集群上的查询,或者可以在工作负荷太高或可用性太低时将查询排队。例如,查询调度器和协调器218可以首先尝试在仓库302的活动(即,未暂停的)集群上调度查询304(例如,SQL语句)。如果存在多个活动集群,则查询调度器和协调器218将消除不可用的或其中查询304将不运行的集群组,因为存储器将被超额预订。如前面所提到的,如果节点的少于50%的服务器是不可用的(例如,出现故障),集群可以默认地被确定为不可用的。如果还有多个可能的集群剩余,则查询调度器和协调器218可以选择最少负荷的集群。在一个实施例中,最少负荷的集群被定义为在该集群上运行的所有作业的DOP之和。最少负荷的集群也可以基于对于该集群的所有存储器需求的总和。如果存在具有相等负荷的多个集群,则查询调度器和协调器218可以将对于特定查询304的会话ID用作平局决胜(tie-breaker),使得来自同一会话的查询可以在同一集群上执行。已经被分配给仓库302中的集群的查询304被示为运行查询306。
如果没有任何集群来调度特定查询,则查询调度器和协调器218可以将查询排队在全局队列中。全局地排队的查询304被示为排队的查询308。排队的查询308可以保持被排队,直到仓库302的集群之一被释放或变得可用为止。注意,在所分配的集群中的一个或更多个服务器可能被标记为被怀疑出故障的,在这种情况下,某个运行查询306可能也必须被排队,等待集群被修复。
图4是描绘根据一个实施例的可以是活动的或者在单个执行平台112上操作的多个仓库的实施例的框图。示出了多个虚拟仓库402、404、406,并且每个虚拟仓库包括多个集群408。每个集群408包括多个执行节点410,每个执行节点包括处理器412和高速缓存414(例如,存储器)。尽管示出了三个虚拟仓库402-406,但是虚拟仓库的数量可以动态地变化。类似地,在不同的实施例中,在每个仓库402-406中的集群408的数量和在每个集群中的执行节点410的数量可以变化,并且也可以相对于彼此变化而没有限制。此外,在虚拟仓库中的集群408的数量和在集群中的执行节点410的数量可以是动态的,使得新的集群408和执行节点410在需求改变时被创建或移除。
每个虚拟仓库402-406能够访问图1所示的数据存储设备116-120的任一个。因此,虚拟仓库402-406不一定被分配给特定的数据存储设备116-120,而相反可以访问来自数据存储设备116-120的任一个的数据。类似地,集群408和执行节点410中的每一个可以访问来自数据存储设备116-120的任一个的数据。在一些实施例中,特定虚拟仓库或特定执行节点可以临时被分配给特定数据存储设备,但是虚拟仓库或执行节点可以稍后访问来自任何其他数据存储设备的数据。
尽管所示的执行节点410每个包括一个高速缓存和一个处理器,但是可选的实施例可以包括包含任何数量的处理器和任何数量的高速缓存的执行节点。另外,高速缓存在不同执行节点410当中可以在大小上变化。高速缓存414在本地执行节点中存储从存储平台114(图1)中的一个或更多个数据存储设备检索的数据。因此,高速缓存减少或消除了在从远程存储系统中一致地检索数据的平台中出现的瓶颈问题。本文描述的系统和方法不是重复地访问来自远程存储设备的数据,而是访问来自执行节点中的高速缓存的数据,这明显更快并避免上面讨论的瓶颈问题。在一些实施例中,使用提供对所缓存的数据的快速访问的高速存储设备来实现高速缓存。每个高速缓存可以存储来自存储平台114中的任何存储设备的数据。
此外,高速缓存资源和计算资源可以在不同的执行节点之间变化。例如,一个执行节点可以包含重要的计算资源和最少的高速缓存资源,使得该执行节点对需要重要计算资源的任务变得有用。另一个执行节点可能包含重要的高速缓存资源和最少的计算资源,使这个执行节点对需要大量数据的缓存的任务变得有用。在一些实施例中,基于将由执行节点执行的预期任务,在创建执行节点时确定与特定执行节点相关联的高速缓存资源和计算资源。
此外,与特定执行节点相关联的高速缓存资源和计算资源可以基于由执行节点执行的变化的任务随着时间的过去而改变。例如,如果由执行节点执行的任务变成更加处理器密集,则可以为特定执行节点分配更多的处理资源。类似地,如果由执行节点执行的任务需要更大的高速缓存容量,则可以为执行节点分配更多的高速缓存资源。
尽管虚拟仓库402-406与同一执行平台112相关联,但是虚拟仓库可以使用在多个地理位置处的多个计算系统来实现。例如,虚拟仓库402可由在第一地理位置处的计算系统实现,而虚拟仓库404和406由在第二地理位置处的另一计算系统实现。在一些实施例中,这些不同的计算系统是由一个或更多个不同实体维护的基于云的计算系统。
另外,每个虚拟仓库在图4中被示为具有多个集群408。与每个虚拟仓库相关联的集群408可以使用在多个地理位置处或在不同可用性区域内的多个计算系统来实现。例如,虚拟仓库402的特定实例在特定地理位置处的一个计算平台上实现具有执行节点410的集群408,并且实现在另一地理位置处的不同计算平台处的其他集群408和执行节点410。虚拟仓库402-406也是容错的。例如,如果有一个虚拟仓库或执行节点410,则那个虚拟仓库或执行节点在相同或不同的地理位置处被快速替换。
特定执行平台112可以包括任何数量的虚拟仓库402-406。此外,在特定执行平台中的虚拟仓库的数量是动态的,使得当额外的处理和/或高速缓存资源被需要时,新的虚拟仓库被创建。类似地,当与虚拟仓库相关联的资源不再是必要的时,可以删除现有虚拟仓库。
图5示出了描绘具有多个分布式虚拟仓库和执行平台组的另一示例操作环境500的框图。环境500包括通过数据通信网络502与执行平台组1 504和执行平台组2 506通信的资源管理器102。执行平台组1 504包括两个集群,特别地,用于第一虚拟仓库508的集群A和用于第二虚拟仓库510的集群A。执行平台组2 506包括两个额外的集群,特别地,用于第一虚拟仓库514的集群B和用于第二虚拟仓库516的集群B。资源管理器102还通过数据通信网络502与第一虚拟仓库512的集群C(其不是执行平台组504、506中的任一个的一部分)通信。
执行平台组504和506以及用于第一虚拟仓库512的集群C通过数据通信网络518与数据库520、522和524通信。在一些实施例中,数据通信网络502和518是相同的网络或一个或更多个搭接网络(overlapping network)的组合。环境500允许资源管理器102在多个仓库的多个集群508-516当中协调用户数据存储和检索请求,以在数据库520-524中存储和检索数据。执行平台组504和506以及用于第一虚拟仓库512的集群C可以位于相同或不同的地理区域中,或者可以位于相同或不同的可用性区域中。另外,执行平台组504和506可以由同一实体或由不同的实体实现。
本文描述的系统和方法允许数据作为与计算(或处理)资源分离的服务来被存储和访问。即使没有从执行平台请求计算资源,数据也是虚拟仓库可用的,而不需要从远程数据源重新加载数据。所描述的系统和方法对于任何类型的数据都是有用的。在特定实施例中,数据以结构化、优化的格式被存储。数据存储/访问服务与计算服务的去耦也简化了在不同用户和组当中的数据的共享。如本文所讨论的,每个虚拟仓库可以访问它具有访问权限的任何数据,即使在与其他虚拟仓库访问同一数据时相同的时间。该体系结构支持运行查询,而没有任何实际数据存储在本地高速缓存中。本文描述的系统和方法能够有透明的动态数据移动,其根据需要以对系统的用户透明的方式将数据从远程存储设备移动到本地高速缓存。此外,该体系结构支持数据共享而没有先前的移动数据,因为由于数据存储服务与计算服务的去耦,任何虚拟仓库可以访问任何数据。
此外,环境500允许跨越多个地理位置或可用性区域散布单个虚拟仓库。例如,集群508、512和514都属于同一虚拟仓库(第一虚拟仓库),但是可以位于不同的地理区或可用性区域中。因为停机或故障可能跨越地理区或可用性区域而发生,所以可以实现提高的容错。例如,可用性区域有时由云服务(计算或存储)提供商实现,使得在一个可用性区域中的问题有很小或没有传播到不同的可用性区域的机会。因此,在同一仓库内但在不同可用性区域中的集群可以显著降低仓库没有任何可用的执行或计算节点的可能性。
在一个实施例中,本文公开的多集群仓库实施例可以使用特殊数据定义语言(DDL)。下文是可以是多集群仓库DDL的一部分的命令或指令的一些示例:
Figure BDA0001842643110000141
create warehouse single_cluster size=xlarge;
Figure BDA0001842643110000142
//这将创建单个集群仓库
Figure BDA0001842643110000143
create warehouse multi_cluster size=xlarge max_cluster_count=3min_cluster_count=1;
Figure BDA0001842643110000144
//这将创建x-大型3集群仓库。只有一个集群将被默认地起动
Figure BDA0001842643110000145
create warehouse multi_cluster size=xlarge max_cluster_count=3min_cluster_count=2;
Figure BDA0001842643110000151
//这将创建x-大型仓库,其中两个集群最初被重新开始
Figure BDA0001842643110000152
create warehouse multi_cluster size=xlarge max_cluster_count=3min_cluster_count=3;
Figure BDA0001842643110000153
//这将创建x-大型仓库,其中所有集群被重新开始
Figure BDA0001842643110000154
注意,资源管理器将尝试利用所有可用性区域,每个集群一个。用于每个集群的可用性区域可以由基础设施管理系统实现
Figure BDA0001842643110000155
alter warehouse<warehouse_name>set warehouse_size=<size>:允许改变仓库的大小。如果这个仓库被启动,则仓库中的所有集群都被调整大小。实现该指令的代码可以包括对于每个集群的调整大小操作。
Figure BDA0001842643110000156
alter warehouse<warehouse_name>set max_cluster_count=<count>:这将从现有仓库添加或删除集群。内部集群可以被编号,因此该操作将在范围的末尾处添加新集群,或者删除从范围的末尾开始的集群。如果新的集群被创建,则它们将在暂停状态中被创建。如果集群被移除并且这些集群是活动的,它们将首先被去激活(静止),以允许运行查询终止。
Figure BDA0001842643110000157
drop warehouse<warehouse_name>:丢掉仓库和所有相关联的集群。在丢掉集群之前它们将被去激活(静止)。
返回到附图,图6是示出用于多集群仓库的示例方法600的示意性流程图。方法600可由处理平台或资源管理器(例如图1的处理平台100或图1、2或5的资源管理器)执行。
方法600开始,且系统分配602多个计算集群作为虚拟仓库的一部分,用于访问一个或更多个云存储资源中的一个或更多个数据库并对其执行查询。在一个实施例中,多个计算集群独立于一个或更多个云存储资源而由系统分配,使得计算集群的数量可以在不增加或减少一个或更多个云存储资源的情况下按比例放大和缩小。系统向多个计算集群中的每一个提供604对虚拟仓库的查询。例如,多个查询可以被提供给虚拟仓库的多个计算集群中的每一个。该系统基于多个计算集群的工作负荷根据需要来动态地向虚拟仓库添加606计算集群以及从虚拟仓库移除计算集群。方法600还可以包括确定对于多个计算集群的工作负荷。该系统可以通过确定对于多个计算集群中的每一个的处理器资源和对于多个计算集群中的每一个的存储器资源中的一个或更多个的可用性来确定工作负荷。
方法600可以由数据库系统或设备实现,以允许单个实体(例如仓库)根据查询的数量来扩展和收缩。特别地,当仓库的并发性(或计算和存储器负荷)的变化出现时,资源管理器或其他系统可以允许仓库按比例放大和缩小。
图7是示出用于在多集群仓库中动态地添加计算集群的示例方法700的示意性流程图。方法700可以由处理平台或资源管理器(例如图1的处理平台100或图1、2或5的资源管理器)执行。方法700可结合图6的方法600或与图6的方法600分开地执行。
方法700开始,并且系统确定702查询是否可以在满足对于查询的性能度量的同时被处理。在一个实施例中,方法700包括确定702是否可以针对指向计算集群的每个查询来处理查询,以便针对每个查询满足性能度量。性能度量可以包括由客户接受的服务级别协议(SLA)。例如,SLA可能要求在特定时间量(例如10秒)内安排查询。这可能限制任何查询在全局队列中被排队比最大时间(例如10秒)长的时间。在作为服务提供商的仓库和客户之间可以事先同意SLA。基于SLA是什么,可以呈现不同的价格等级,或者SLA可以规定系统使用更多的资源来确保用户在访问数据库和执行对数据库的查询时经历最小的延迟。
响应于确定该查询与当前工作负荷相结合不允许一个或更多个当前分配的计算集群满足性能度量,系统触发704新计算集群的启动。在一个实施例中,如果当前活动的集群的数量小于计算集群的预定最大数量,则系统可以仅触发704启动。
图8是示出用于动态地移除多集群仓库中的计算集群的示例方法800的示意性流程图。方法800可由处理平台或资源管理器(例如图1的处理平台100或图1、2或5的资源管理器)执行。方法800可以与图6和图7的方法600或700中的一个或更多个结合或分开地执行。
方法800开始,并且系统确定802当前工作负荷是否在满足性能度量的同时能够由比多个计算集群少一个的集群服务。在一个实施例中,确定802当前工作负荷是否能够由比多个计算集群少一个的集群服务可包括确定历史工作负荷在一直到当前时间的时间段期间是否在满足性能度量的同时能够由比多个集群少一个的集群服务。例如,如果从虚拟仓库中移除了最佳集群,虚拟仓库将能够在满足性能度量的同时处理所有查询吗?
响应于确定工作负荷能够由比多个计算集群少一个的集群服务,系统停用804(或去激活)多个计算集群中的至少一个计算集群。如果活动集群的当前数量小于计算集群的预定最小数量,则系统可以仅停用804或移除计算集群。在一个实施例中,停用804至少一个计算集群可以包括响应于确定历史工作负荷在该时间段期间能够由比多个计算集群少一个的集群服务而停用。
在一个实施例中,停用804至少一个计算集群包括使集群变得静止以防止向至少一个计算集群提供或调度附加查询。停用804还可以包括允许至少一个计算集群完成当前分配的查询,并在完成已经调度的或活动的查询时释放对应于至少一个计算集群的一个或更多个资源。
图9是示出用于多集群仓库的示例方法900的示意性流程图。方法900可由处理平台或资源管理器(例如图1的处理平台100或图1、2或5的资源管理器)执行。方法900可以与图6、7和8的方法600、700或800中的一个或更多个结合或分开地执行。
方法900开始,且系统分配902多个计算集群作为虚拟仓库的一部分,用于访问一个或更多个云存储资源中的一个或更多个数据库并对其执行查询。系统将对虚拟仓库的查询转发904到多个计算集群中的每一个。多个查询可以被提供给虚拟仓库的多个计算集群中的每一个。在一个实施例中,将对虚拟仓库的查询转发904到多个计算集群中的每一个包括基于查询所源自于的会话来按规定路线发送906查询,使得来自同一会话的查询默认地被路由到同一计算集群。每个集群都有能力来存留它正在上面操作的数据库的片段。也就是说,每个集群(或集群中的每个计算节点)可以维持它当前访问的所有表的高速缓存,同时处理集群上的查询。因此,资源管理器或调度器将查询从同一查询流(例如,具有同一会话标识符)驱动到同一集群,所以它们可以运用缓存效果。在一些情况下,如果正在处理特定会话的集群比另一个集群具有少得多的可用资源,则具有同一会话标识符的查询可能在不同的集群上结束。
在一个实施例中,系统可以基于多个计算集群中的每一个的工作负荷来按规定路线发送906查询。例如,如果集群不能接受新的查询,则系统可以向不同的集群提供查询,即使不同的集群没有处理对应于同一会话的队列。在一个实施例中,系统可以向不同可用性区域中的至少两个计算集群提供904查询。
图10是描绘示例计算设备1000的框图。在一些实施例中,计算设备1000用于实现本文讨论的系统和部件中的一个或更多个。例如,计算设备1000可以允许用户或管理员访问资源管理器102。作为另一个示例,本文讨论的部件、系统或平台可以包括一个或更多个计算设备1000。此外,计算设备1000可以与本文描述的任何系统和部件交互。因此,计算设备1000可以用于执行各种过程和任务,例如在本文中所讨论的过程和任务。计算设备1000可以起服务器、客户端或任何其他计算实体的作用。计算设备1000可以是各种计算设备(例如台式计算机、笔记本计算机、服务器计算机、手持计算机、平板计算机等)中的任一个。
计算设备1000包括都耦合到总线1012的一个或更多个处理器1002、一个或更多个存储器设备1004、一个或更多个接口1006、一个或更多个大容量储存设备1008以及一个或更多个输入/输出(I/O)设备1010。处理器1002包括执行在存储器设备1004和/或大容量储存设备1008中存储的指令的一个或更多个处理器或控制器。处理器1002还可以包括各种类型的计算机可读介质,例如高速缓存。
存储器设备1004包括各种计算机可读介质,例如易失性存储器(例如,随机存取存储器(RAM))和/或非易失性存储器(例如,只读存储器(ROM))。存储器设备1004还可以包括可重写ROM,例如闪速存储器。
大容量储存设备1008包括各种计算机可读介质,例如磁带、磁盘、光盘、固态存储器(例如,闪速存储器)等。在大容量储存设备1008中还可以包括各种驱动器,以实现从各种计算机可读介质的读取和/或到各种计算机可读介质的写入。大容量储存设备1008包括可移动介质和/或不可移动介质。
I/O设备1010包括允许将数据和/或其他信息输入到计算设备1000或从计算设备400取出数据和/或其他信息的各种设备。示例I/O设备1010包括光标控制设备、键盘、小键盘、麦克风、监视器或其他显示设备、扬声器、打印机、网络接口卡、调制解调器、透镜、CCD或其他图像捕获设备等。
接口1006包括允许计算设备1000与其他系统、设备或计算环境交互的各种接口。示例接口1006包括任何数量的不同的网络接口,例如到局域网(LAN)、广域网(WAN)、无线网络和互联网的接口。
总线1012允许处理器1002、存储器设备1004、接口1006、大容量储存设备1008以及I/O设备1010与彼此以及与耦合到总线1012的其他设备或部件通信。总线1012表示几种类型的总线结构中的一个或更多个,例如系统总线、PCI总线、IEEE 1394总线、USB总线等。
示例
以下示例涉及另外的实施例。
示例1是用于多集群仓库的计算机实现的方法。该方法包括分配多个计算集群作为虚拟仓库的一部分,用于访问一个或更多个云存储资源中的一个或更多个数据库和执行对一个或更多个云存储资源中的一个或更多个数据库的查询。该方法包括向多个计算集群中的每一个提供对虚拟仓库的查询,其中向虚拟仓库的多个计算集群中的每一个提供多个查询。该方法包括基于多个计算集群的工作负荷根据需要来动态地向虚拟仓库添加计算集群以及从虚拟仓库移除计算集群。
在示例2中,示例1的多个计算集群独立于一个或更多个云存储资源而被分配,使得可以在不增加或减少一个或更多个云存储资源的情况下按比例放大和缩小计算集群的数量。
在示例3中,示例1-2中的任一个中的方法还包括确定对于多个计算集群的工作负荷。确定工作负荷包括确定对于多个计算集群中的每个的多个计算集群存储器资源中的每个的一个或更多个处理器资源的可用性。
在示例4中,示例1-3中的任一个中的动态地添加计算集群包括确定查询是否可以在满足用于查询的性能度量的同时被处理,以及响应于确定查询与当前工作负荷相结合不允许一个或更多个当前分配的计算集群满足性能度量而触发新计算集群的启动。
在示例5中,示例4的方法包括确定是否可以针对指向计算集群的每个查询来处理该查询,使得针对每个查询满足性能度量。
在示例6中,示例4-5中的任一个中的性能度量包括由客户接受的服务级别协议。
在示例7中,示例4-6中的任一个中的性能度量包括查询将被排队的最大时间段。
在示例8中,示例1-7中的任一个中的动态地添加计算集群包括添加计算集群一直到计算集群的预定最大数量。
在示例9中,示例1-8中的任一个中的动态地移除计算集群包括将计算集群移除直到计算集群的预定最小数量。
在示例10中,示例1-9中的任一个中的移除计算集群包括确定当前工作负荷是否在满足性能度量的同时能够由比多个计算集群少一个的集群服务,以及响应于确定工作负荷能够由比多个计算集群少一个的集群服务而停用多个计算集群中的至少一个计算集群。
在示例11中,在示例10中的停用至少一个计算集群包括:防止向至少一个计算集群提供附加查询;允许至少一个计算集群完成当前分配的查询;以及在完成当前分配的查询时释放对应于至少一个计算集群的一个或更多个资源。
在示例12中,示例10-11中的任一个中的确定当前工作负荷是否能够由比多个计算集群少一个的集群服务包括确定在一直到当前时间的时间段期间历史工作负荷是否在满足性能度量的同时能够由比多个集群少一个的集群服务。停用至少一个计算集群包括响应于确定在所述时间段期间历史工作负荷能够由比多个计算集群少一个的集群服务而停用。
在示例13中,在示例1-12中的任一个中的向多个计算集群中的每一个提供对虚拟仓库的查询包括基于查询所源自于的会话来路由查询。
在示例14中,在示例1-13中的任一个中的向多个计算集群中的每一个提供对虚拟仓库的查询包括基于多个计算集群中的每一个的工作负荷来路由查询。
在示例15中,在示例1-14中的任一个中的分配多个计算集群在不同的可用性区域中分配至少两个计算集群。
示例16是一种包括用于执行如在示例1-15中的任一个的方法的装置的设备。
示例17是一种包括机器可读指令的机器可读存储器,该机器可读指令当被执行时实施示例1-16中的任一个的方法或实现示例1-16中的任一个的装置。
本文的流程图和框图示出了根据本公开的各种实施例的系统、方法和计算机程序产品的可能的实现的体系结构、功能性和操作。就这点而言,在流程图或框图中的每个块可代表模块、程序段或代码的部分,该模块、程序段或代码的部分包括用于实现指定的逻辑功能的一个或更多个可执行指令。还要注意的是,框图和/或流程图中的每个块以及在框图和/或流程图中的块的组合可由执行指定功能或动作的专用的基于硬件的系统或专用的硬件和计算机指令的组合实现。这些计算机程序指令还可存储在计算机可读介质中,该指令可指导计算机或其他可编程数据处理装置以特定方式起作用,使得存储在计算机可读介质中的指令产生制造的物品,其包括实现流程图和/或框图的一个或更多个块中所指定的功能/动作的指令装置。
本文描述的系统和方法使用新的数据处理平台、方法、系统和算法来提供灵活和可扩展的数据仓库。在一些实施例中,所描述的系统和方法运用支持基于云的存储资源、计算资源等的云基础设施。示例性的基于云的存储资源以低成本按需提供可用的大量存储容量。此外,这些基于云的存储资源可能是容错的和高度可扩展的,这在私有数据存储系统中实现起来可能是昂贵的。示例性的基于云的计算资源可以是按需可得到的,并且可以基于资源的实际使用水平来定价。通常,云基础设施以快速的方式动态地被部署、重新配置和停用。
在所描述的系统和方法中,数据存储系统利用基于SQL(结构化查询语言)的关系数据库。然而,这些系统和方法可适用于任何类型的数据库,其使用任何数据存储体系结构并使用任何语言来存储和检索数据库内的数据。本文描述的系统和方法还可以提供支持在不同客户/客户端之间以及在同一客户/客户端内的不同用户之间的计算资源和数据的隔离的多租户系统。
各种技术或其某些方面或部分可以采取体现在有形介质(例如软盘、CD-ROM、硬盘、非暂时性计算机可读存储介质或任何其他机器可读存储介质)中的程序代码(即指令)的形式,其中当程序代码被加载到诸如计算机的机器中并由该机器执行时,该机器成为用于实践各种技术的装置。在可编程计算机上的程序代码执行的情况下,计算设备可以包括处理器、由处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备和至少一个输出设备。易失性和非易失性存储器和/或存储元件可以是RAM、EPROM、闪存驱动器、光学驱动器、磁性硬盘驱动器或用于存储电子数据的另一种介质。可以实现或利用本文描述的各种技术的一个或更多个程序可以使用应用编程接口(API)、可重用控件等。这样的程序可以用高级程序或面向对象的编程语言来实现,以与计算机系统通信。然而,如果需要,程序可以用汇编语言或机器语言实现。在任何情况下,该语言可以是编译或解释语言,并与硬件实现组合。
应当理解,在本说明书中描述的许多功能单元可以被实现为一个或更多个部件,其是用于更特别地强调它们的实现独立性的术语。例如,部件可以被实现为包括定制超大规模集成(VLSI)电路或门阵列、现成的半导体(例如逻辑芯片、晶体管或其他分立部件)的硬件电路。部件也可以在可编程硬件设备(例如现场可编程门阵列、可编程阵列逻辑、可编程逻辑设备等)中实现。
部件也可以用软件实现,用于由各种类型的处理器执行。可执行代码的所识别的部件可以例如包括计算机指令的一个或更多个物理或逻辑块,其可以例如被组织为对象、过程或功能。然而,所识别的部件的可执行程序不需要物理上位于一起,而是可以包括存储在不同位置上的不同指令,这些指令当在逻辑上连接在一起时包括部件并实现对于部件的规定目的。
事实上,可执行代码的部件可以是单个指令或许多指令,并且可以甚至在若干不同的代码段上、在不同的程序当中以及跨越若干存储器设备而分布。类似地,操作数据可以在本文中在部件内被识别和示出,并且可以体现在任何合适的形式中并且被组织在任何合适类型的数据结构中。操作数据可以作为单个数据集被收集,或者可以分布在不同位置上,包括在不同存储设备上,并且可以至少部分地仅作为电子信号存在于系统或网络上。部件可以是被动的或主动的,包括可操作来执行期望功能的代理。
在整个本说明书中对“示例”的提及意味着结合该示例描述的特定的特征、结构或特性被包括在本公开的至少一个实施例中。因此,在整个本说明书中的各个地方中的短语“在示例中”的出现不一定都指同一实施例。
如在本文所使用的,为了方便起见,多个项目、结构元件、组成元件和/或材料可以呈现在公共列表中。然而,这些列表应该被解释为好像列表中的每个成员都被单独识别为单独且唯一的成员一样。因此,这种列表中没有单独成员应该仅仅基于它在共同组中的呈现而被解释为同一列表中任何其他成员的事实上的等同物,而没有相反的指示。此外,本公开的各种实施例和示例可以连同对于其各种部件的替代物一起在本文中被提到。应当理解,这样的实施例、示例和替代方案不应被解释为彼此的事实上的等同物,而是应被认为是本公开的单独和自主的表示。
虽然为了清楚的目的稍微详细地描述了前述内容,但是将明显,可以做出某些改变和修改而不偏离其原理。应当注意,存在实现本文描述的过程和装置的许多替代方式。因此,当前的实施例应被认为是说明性的而非限制性的。
本领域的技术人员将认识到,可以对上述实施例的细节进行许多改变而不偏离本公开的基本原理。因此,本公开的范围应仅由随附的权利要求确定。

Claims (30)

1.一种系统,包括:
用于在执行平台上分配多个计算集群作为虚拟仓库的一部分以用于访问一个或更多个云存储资源中的一个或更多个数据库和执行对所述一个或更多个云存储资源中的所述一个或更多个数据库的查询的装置,所述一个或更多个云存储资源位于与所述执行平台分开的存储平台上,其中所述多个计算集群与所述一个或更多个云存储资源分开地分配,并且其中每个计算集群包括一个或更多个节点,每个节点包括一个或更多个处理器和将来自所述一个或更多个数据库的数据缓存的高速缓存;
用于接收指向所述一个或更多个数据库中的数据的查询的装置;
用于使用所述多个计算集群的当前工作负荷在满足所述查询的性能度量的同时确定所述查询是否能够由所述多个计算集群中的一个或更多个当前分配的计算集群进行处理的装置;以及
用于在满足所述查询的所述性能度量的同时在所述查询不能够由所述多个计算集群中的一个或更多个当前分配的计算集群处理时,使用所述多个计算集群的所述当前工作负荷,根据需要来动态地向所述虚拟仓库添加计算集群或从所述虚拟仓库移除计算集群的装置,其中用于添加或移除所述计算集群的所述装置在不增加或减少所述一个或更多个云存储资源的情况下动态地按比例放大和缩小计算集群的数量。
2.根据权利要求1所述的系统,其中,动态地向所述虚拟仓库添加计算集群或从所述虚拟仓库移除计算集群的所述装置包括:
用于响应于确定所述查询与所述当前工作负荷相结合不允许所述多个计算集群中的一个或更多个当前分配的计算集群满足所述性能度量而触发新计算集群的启动的装置。
3.根据权利要求1所述的系统,其中,动态地向所述虚拟仓库添加计算集群或从所述虚拟仓库移除计算集群的所述装置包括:
用于确定当前工作负荷是否在满足性能度量的同时能够由比所述多个计算集群少一个的集群服务的装置;以及
用于响应于确定所述工作负荷能够由比所述多个计算集群少一个的集群服务而停用所述多个计算集群中的至少一个计算集群的装置。
4.根据权利要求1所述的系统,还包括用于在满足所述查询的所述性能度量的同时在所述查询能够由所述多个计算集群中的一个或更多个当前分配的计算集群处理时,向所述一个或更多个当前分配的计算集群中的一个计算集群提供所述查询的装置,所述装置用于提供包括下列项中的一个或更多个:
用于使用所述查询所源自于的会话来路由所述查询的装置;
用于使用集群可用性来路由所述查询的装置;或者
用于使用集群资源的可用性来路由所述查询以执行查询的装置。
5.一种用于多集群仓库的计算机实现的方法,所述方法包括:
在执行平台上分配多个计算集群作为虚拟仓库的一部分,用于访问一个或更多个云存储资源中的一个或更多个数据库和执行对所述一个或更多个云存储资源中的所述一个或更多个数据库的查询,所述一个或更多个云存储资源位于与所述执行平台分开的存储平台上,其中所述多个计算集群与所述一个或更多个云存储资源分开地分配;
接收指向所述一个或更多个数据库中的数据的查询;
使用所述多个计算集群的当前工作负荷确定在满足所述查询的性能度量的同时所述查询是否能够由所述多个计算集群中的一个或更多个当前分配的计算集群进行处理;以及
在满足所述查询的性能度量的同时在所述查询不能够由所述一个或更多个当前分配的计算集群处理时,使用所述多个计算集群的当前工作负荷根据需要来动态地向所述虚拟仓库添加计算集群或从所述虚拟仓库移除计算集群,其中添加或移除所述计算集群不会增加或减少所述一个或更多个云存储资源。
6.根据权利要求5所述的计算机实现的方法,还包括确定
对于所述多个计算集群的所述当前工作负荷,其中确定所述当前工作负荷包括确定下列项中的一个或更多个的可用性:
用于所述多个计算集群中的每一个的处理器资源;以及
用于所述多个计算集群中的每一个的存储器资源。
7.根据权利要求5所述的计算机实现的方法,其中,动态地向所述虚拟仓库添加计算集群包括:
响应于确定所述查询与当前工作负荷相结合不允许所述一个或更多个当前分配的计算集群满足所述性能度量而触发新计算集群的启动。
8.根据权利要求7所述的计算机实现的方法,其中,所述性能度量包括由客户接受的服务级别协议。
9.根据权利要求7所述的计算机实现的方法,其中,所述性能度量包括所述查询将被排队的最大时间段。
10.根据权利要求5所述的计算机实现的方法,其中,动态地添加计算集群包括添加计算集群一直到计算集群的预定最大数量。
11.根据权利要求5所述的计算机实现的方法,其中,动态地移除计算集群包括移除计算集群直到计算集群的预定最小数量。
12.根据权利要求5所述的计算机实现的方法,其中,移除计算集群包括:
确定所述当前工作负荷是否在满足性能度量的同时能够由比所述多个计算集群少一个的集群服务;以及
响应于确定所述工作负荷能够由比所述多个计算集群少一个的集群服务而停用所述多个计算集群中的至少一个计算集群。
13.根据权利要求12所述的计算机实现的方法,其中,停用所述至少一个计算集群包括:
防止向所述至少一个计算集群提供附加查询;
允许所述至少一个计算集群完成当前分配的查询;以及
在完成所述当前分配的查询时释放对应于所述至少一个计算集群的一个或更多个资源。
14.根据权利要求12所述的计算机实现的方法,其中:
确定所述当前工作负荷是否在满足性能度量的同时能够由比所述多个计算集群少一个的集群服务还包括确定在一直到当前时间的时间段期间历史工作负荷是否在满足所述性能度量的同时能够由比所述多个计算 集群少一个的集群服务;以及
其中,停用所述至少一个计算集群包括响应于确定在所述时间段期间所述历史工作负荷能够由比所述多个计算集群少一个的集群服务而停用。
15.根据权利要求5所述的计算机实现的方法,还包括在满足所述查询的所述性能度量的同时在所述查询能够由所述多个计算集群中的一个或更多个当前分配的计算集群处理时,向所述一个或更多个当前分配的计算集群中的一个计算集群提供所述查询,其中提供所述查询包括使用所述查询所源自于的会话来路由所述查询。
16.根据权利要求5所述的计算机实现的方法,还包括在满足所述查询的所述性能度量的同时在所述查询能够由所述多个计算集群中的一个或更多个当前分配的计算集群处理时,向所述一个或更多个当前分配的计算集群中的一个计算集群提供所述查询,其中提供所述查询包括使用所述多个计算集群中的每一个的工作负荷来路由所述查询。
17.根据权利要求5所述的计算机实现的方法,其中,分配所述多个计算集群包括在不同的可用性区域中分配至少两个计算集群。
18.一种多集群处理平台系统,所述系统包括:
一个或更多个云存储资源,其用于存储数据库数据;
处理器资源,其用于访问在所述一个或更多个云存储资源中的所述数据库数据并对在所述一个或更多个云存储资源中的所述数据库数据执行查询;
资源管理器,其用于:
在执行平台上分配多个计算集群作为虚拟仓库的一部分,以用于访问在所述一个或更多个云存储资源中的一个或更多个数据库并对在所述一个或更多个云存储资源中的所述一个或更多个数据库执行查询,
所述一个或更多个云存储资源位于与所述执行平台分开的存储平台上,其中所述多个计算集群与所述一个或更多个云存储资源分开地分配;
接收指向所述一个或更多个数据库中的数据的查询;
使用所述多个计算集群的当前工作负荷确定在满足所述查询的性能度量的同时所述查询是否能够由所述多个计算集群中的一个或更多个当前分配的计算集群进行处理;以及
在满足所述查询的所述性能度量的同时在所述查询不能够由所述多个计算集群中的一个或更多个当前分配的计算集群处理时,使用所述多个计算集群的当前工作负荷根据需要来动态地向所述虚拟仓库添加计算集群或从所述虚拟仓库移除计算集群。
19.根据权利要求18所述的系统,其中,所述资源管理器还被配置为确定对于所述多个计算集群的所述当前工作负荷,其中所述资源管理器通过确定下列项中的一个或更多个的可用性来确定所述当前工作负荷:
用于所述多个计算集群中的每一个的处理器资源;
用于所述多个计算集群中的每一个的存储器资源;以及
预测处理特定查询所需的最小资源。
20.根据权利要求18所述的系统,其中,为了动态地向所述虚拟仓库添加计算集群,所述资源管理器用于:
响应于确定所述查询与所述当前工作负荷相结合不允许所述多个计算集群中的一个或更多个当前分配的计算集群满足所述性能度量而触发新计算集群的启动。
21.根据权利要求18所述的系统,其中,为了动态地移除计算集群,所述资源管理器用于:
确定当前工作负荷是否在满足性能度量的同时能够由比所述多个计算集群少一个的集群服务;以及
响应于确定所述工作负荷能够由比所述多个计算集群少一个的集群服务而停用所述多个计算集群中的至少一个计算集群。
22.根据权利要求21所述的系统,其中,为了停用所述至少一个计算集群,所述资源管理器用于:
防止向所述至少一个计算集群提供附加查询;
允许所述至少一个计算集群完成当前分配的查询;以及
在完成所述当前分配的查询时释放对应于所述至少一个计算集群的一个或更多个资源。
23.根据权利要求21所述的系统,其中:
为了确定所述当前工作负荷是否能够由比所述多个计算集群少一个的集群服务,所述资源管理器进一步确定在一直到当前时间的时间段期间历史工作负荷是否在满足所述性能度量的同时能够由比所述多个计算 集群少一个的集群服务;以及
为了停用所述至少一个计算集群,所述资源管理器响应于确定在所述时间段期间所述历史工作负荷能够由比所述多个计算集群少一个的集群服务而停用。
24.根据权利要求18所述的系统,还包括在满足所述查询的所述性能度量的同时在所述查询能够由所述多个计算集群中的一个或更多个当前分配的计算集群处理时,向所述一个或更多个当前分配的计算集群中的一个计算集群提供所述查询,其中,提供所述查询包括基于所述查询所源自于的会话来路由所述查询。
25.一种存储指令的非暂时性计算机可读存储介质,所述指令在由一个或更多个处理器执行时使所述一个或更多个处理器:
在执行平台上分配多个计算集群作为虚拟仓库的一部分,用于访问一个或更多个云存储资源中的一个或更多个数据库和执行对所述一个或更多个云存储资源中的所述一个或更多个数据库的查询,所述一个或更多个云存储资源位于与所述执行平台分开的存储平台上,其中所述多个计算集群与所述一个或更多个云存储资源分开地分配,使得添加或移除来自所述多个计算集群的计算集群不会增加或减少所述一个或更多个云存储资源;
接收指向所述一个或更多个数据库中的数据的查询;
使用所述多个计算集群的当前工作负荷确定在满足所述查询的性能度量的同时所述查询是否能够由所述多个计算集群中的一个或更多个当前分配的计算集群进行处理;以及
在满足所述查询的所述性能度量的同时在所述查询不能够由所述多个计算集群中的一个或更多个当前分配的计算集群处理时,使用所述多个计算集群的当前工作负荷根据需要来动态地向所述虚拟仓库添加计算集群或从所述虚拟仓库移除计算集群,其中为了添加或移除所述计算集群不增加或减少所述一个或更多个云存储资源。
26.根据权利要求25所述的计算机可读存储介质,其中,所述指令使所述一个或更多个处理器:
在满足所述查询的所述性能度量的同时在所述查询能够由所述多个计算集群中的一个或更多个当前分配的计算集群处理时,向所述一个或更多个当前分配的计算集群中的一个计算集群提供所述查询,其中为了提供所述查询,所述一个或更多个处理器执行以下项中的一个或更多个:
使用所述查询所源自于的会话来路由所述查询;
使用集群可用性来路由所述查询;或者
使用计算集群执行查询的可用性来路由所述查询。
27.根据权利要求25所述的计算机可读存储介质,其中,所述指令还使所述一个或更多个处理器在不同的可用性区域中分配至少两个计算集群。
28.根据权利要求25所述的计算机可读存储介质,其中,所述指令还使所述一个或更多个处理器使用所述多个计算集群的工作负荷根据需要来动态地将计算集群添加到所述虚拟仓库以及从所述虚拟仓库移除计算集群。
29.根据权利要求25所述的计算机可读存储介质,其中,为了动态地向所述虚拟仓库添加计算集群,所述指令使所述一个或更多个处理器:
响应于确定所述查询与所述当前工作负荷相结合不允许所述一个或更多个当前分配的计算集群满足所述性能度量而触发新计算集群的启动。
30.根据权利要求25所述的计算机可读存储介质,其中,为了从所述虚拟仓库动态地移除计算集群,所述指令使所述一个或更多个处理器:
确定当前工作负荷是否在满足性能度量的同时能够由比所述多个计算集群少一个的集群服务;以及
响应于确定所述工作负荷能够由比所述多个计算集群少一个的集群服务而停用所述多个计算集群中的至少一个计算集群。
CN201780026006.8A 2016-04-28 2017-04-28 多集群仓库 Active CN109075994B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201662328943P 2016-04-28 2016-04-28
US62/328,943 2016-04-28
PCT/US2017/030207 WO2017190058A1 (en) 2016-04-28 2017-04-28 Multi-cluster warehouse

Publications (2)

Publication Number Publication Date
CN109075994A CN109075994A (zh) 2018-12-21
CN109075994B true CN109075994B (zh) 2022-04-05

Family

ID=60158363

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780026006.8A Active CN109075994B (zh) 2016-04-28 2017-04-28 多集群仓库

Country Status (8)

Country Link
US (9) US11615117B2 (zh)
EP (1) EP3449363A4 (zh)
JP (3) JP7271059B2 (zh)
CN (1) CN109075994B (zh)
AU (1) AU2017258659B2 (zh)
CA (1) CA3021963C (zh)
DE (1) DE202017007217U1 (zh)
WO (1) WO2017190058A1 (zh)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10614066B2 (en) 2016-09-01 2020-04-07 Amazon Technologies, Inc. Selecting resource configurations for query execution
JP7080033B2 (ja) * 2017-11-07 2022-06-03 株式会社日立製作所 タスク管理システム、タスク管理方法、及びタスク管理プログラム
JP6614280B1 (ja) * 2018-06-05 2019-12-04 富士通株式会社 通信装置および通信方法
US12013856B2 (en) * 2018-08-13 2024-06-18 Amazon Technologies, Inc. Burst performance of database queries according to query size
US10979359B1 (en) * 2018-09-28 2021-04-13 Amazon Technologies, Inc. Polling resource management system
US20200183948A1 (en) * 2018-12-07 2020-06-11 Capital One Services, Llc Provisioning compute and data resources within an elastic data warehouse system
CN110166282B (zh) * 2019-04-16 2020-12-01 苏宁云计算有限公司 资源分配方法、装置、计算机设备和存储介质
US11308100B2 (en) 2019-06-25 2022-04-19 Amazon Technologies, Inc. Dynamically assigning queries to secondary query processing resources
US10719517B1 (en) * 2019-12-18 2020-07-21 Snowflake Inc. Distributed metadata-based cluster computing
US10769167B1 (en) * 2019-12-20 2020-09-08 Lifebit Biotech Limited Federated computational analysis over distributed data
US11048716B1 (en) * 2020-01-31 2021-06-29 Snowflake Inc. Managed virtual warehouses for tasks
CN111367672A (zh) * 2020-03-05 2020-07-03 北京奇艺世纪科技有限公司 数据缓存方法、装置、电子设备及计算机存储介质
CN115398502B (zh) * 2020-04-21 2023-10-13 哲库科技(上海)有限公司 用于无线通信的数据平面可缩放架构
CN111696344B (zh) * 2020-04-21 2021-03-23 交通运输部公路科学研究院 一种智能云交通控制系统及交通控制方法
US10860381B1 (en) * 2020-05-14 2020-12-08 Snowflake Inc. Flexible computing
US11914624B2 (en) * 2020-12-10 2024-02-27 Coupang Corp. Systems and methods for managing connections in scalable clusters
US11762860B1 (en) 2020-12-10 2023-09-19 Amazon Technologies, Inc. Dynamic concurrency level management for database queries
US11669529B2 (en) * 2021-07-13 2023-06-06 Capital One Services, Llc Dynamic query allocation to virtual warehouses
US11494413B1 (en) * 2021-07-13 2022-11-08 Capital One Services, Llc Query alerts generation for virtual warehouse
US11914595B2 (en) 2021-07-13 2024-02-27 Capital One Services, Llc Virtual warehouse query monitoring and reporting
US11392587B1 (en) 2021-12-14 2022-07-19 Capital One Services, Llc Rule generation and data certification onboarding process for cloud database platform
US11392715B1 (en) 2021-12-14 2022-07-19 Capital One Services, Llc Data certification process for cloud database platform
US11829367B2 (en) 2021-12-14 2023-11-28 Capital One Services, Llc Data certification process for updates to data in cloud database platform
WO2023150039A1 (en) * 2022-02-01 2023-08-10 Capital One Services, Llc Optimization of virtual warehouse computing resource allocation
US11693857B1 (en) 2022-06-22 2023-07-04 Keebo Inc. Managed tuning for data clouds
US20240104054A1 (en) * 2022-09-22 2024-03-28 Docusign, Inc. Smart content load
CN116226095A (zh) * 2023-05-08 2023-06-06 中用科技有限公司 一种无共享架构数据库的存算分离系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102467570A (zh) * 2010-11-17 2012-05-23 日电(中国)有限公司 用于分布式数据仓库的连接查询系统和方法
US8296419B1 (en) * 2009-03-31 2012-10-23 Amazon Technologies, Inc. Dynamically modifying a cluster of computing nodes used for distributed execution of a program
CN104813292A (zh) * 2012-11-26 2015-07-29 亚马逊科技公司 缩放计算群集

Family Cites Families (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2297180B (en) 1993-09-27 1998-05-20 Oracle Corp Method and apparatus for parallel processing in a database system
US5574900A (en) * 1994-02-25 1996-11-12 International Business Machines Corporation System and method for optimizing parallel processing of database queries
US5692182A (en) * 1995-10-05 1997-11-25 International Business Machines Corporation Bufferpool coherency for identifying and retrieving versions of workfile data using a producing DBMS and a consuming DBMS
JP2005056077A (ja) * 2003-08-01 2005-03-03 Hitachi Ltd データベース制御方法
US7415487B2 (en) * 2004-12-17 2008-08-19 Amazon Technologies, Inc. Apparatus and method for data warehousing
US7757214B1 (en) * 2005-11-10 2010-07-13 Symantec Operating Coporation Automated concurrency configuration of multi-threaded programs
US7783605B2 (en) * 2005-12-30 2010-08-24 Microsoft Corporation Calculating cluster availability
US20100128638A1 (en) 2008-11-20 2010-05-27 Sap Ag Hierarchical shortest path first network routing protocol
US8285709B2 (en) * 2009-05-12 2012-10-09 Teradata Us, Inc. High-concurrency query operator and method
US8473506B2 (en) * 2009-05-20 2013-06-25 Oracle International Corporation Type system for building extensible business applications
US8335765B2 (en) * 2009-10-26 2012-12-18 Amazon Technologies, Inc. Provisioning and managing replicated data instances
US20110126197A1 (en) 2009-11-25 2011-05-26 Novell, Inc. System and method for controlling cloud and virtualized data centers in an intelligent workload management system
US8316010B2 (en) 2010-03-08 2012-11-20 Nec Laboratories America, Inc. Systems and methods for SLA-aware scheduling in cloud computing
JP5513997B2 (ja) * 2010-06-07 2014-06-04 日本電信電話株式会社 通信システムおよび通信システム更新方法
US8719415B1 (en) * 2010-06-28 2014-05-06 Amazon Technologies, Inc. Use of temporarily available computing nodes for dynamic scaling of a cluster
US8832130B2 (en) * 2010-08-19 2014-09-09 Infosys Limited System and method for implementing on demand cloud database
US20120102189A1 (en) * 2010-10-25 2012-04-26 Stephany Burge Dynamic heterogeneous computer network management tool
US20130205028A1 (en) * 2012-02-07 2013-08-08 Rackspace Us, Inc. Elastic, Massively Parallel Processing Data Warehouse
JP5735899B2 (ja) * 2011-10-25 2015-06-17 日本電信電話株式会社 サービス提供システム、ファイル更新方法、および分散管理装置
US9122535B2 (en) 2011-11-22 2015-09-01 Netapp, Inc. Optimizing distributed data analytics for shared storage
CN107451225B (zh) * 2011-12-23 2021-02-05 亚马逊科技公司 用于半结构化数据的可缩放分析平台
US8756609B2 (en) 2011-12-30 2014-06-17 International Business Machines Corporation Dynamically scaling multi-tier applications vertically and horizontally in a cloud environment
JP2013186745A (ja) * 2012-03-08 2013-09-19 Fuji Xerox Co Ltd 処理システム及びプログラム
US9027024B2 (en) * 2012-05-09 2015-05-05 Rackspace Us, Inc. Market-based virtual machine allocation
US9379995B2 (en) * 2012-09-11 2016-06-28 Vmware, Inc. Resource allocation diagnosis on distributed computer systems based on resource hierarchy
EP2731040B1 (en) 2012-11-08 2017-04-19 CompuGroup Medical SE Computer system for storing and retrieval of encrypted data items, client computer, computer program product and computer-implemented method
US9449038B2 (en) * 2012-11-26 2016-09-20 Amazon Technologies, Inc. Streaming restore of a database from a backup system
US9158812B2 (en) * 2013-01-30 2015-10-13 Oracle International Corporation Enhancing parallelism in evaluation ranking/cumulative window functions
US9390129B2 (en) * 2013-01-30 2016-07-12 Oracle International Corporation Scalable and adaptive evaluation of reporting window functions
US8972337B1 (en) * 2013-02-21 2015-03-03 Amazon Technologies, Inc. Efficient query processing in columnar databases using bloom filters
US9063710B2 (en) * 2013-06-21 2015-06-23 Sap Se Parallel programming of in memory database utilizing extensible skeletons
US9251003B1 (en) 2013-08-14 2016-02-02 Amazon Technologies, Inc. Database cache survivability across database failures
FR3011413A1 (fr) * 2013-09-30 2015-04-03 Orange Procede d'acces d'un utilisateur a au moins un service de communication fourni par l'intermediaire d'un centre informatique d'un systeme d'informatique en nuage
US9892163B2 (en) 2013-11-26 2018-02-13 Sap Se Optimal operator placement for distributed query processing
US10366102B2 (en) 2014-02-19 2019-07-30 Snowflake Inc. Resource management systems and methods
JP6085265B2 (ja) * 2014-02-27 2017-02-22 日本電信電話株式会社 分散処理システム
US9454571B2 (en) * 2014-06-26 2016-09-27 Sap Se Optimization of parallelization of user-defined functions with flexible partitioning
US10248688B2 (en) * 2014-06-26 2019-04-02 Sap Se Annotations for parallelization of user-defined functions with flexible partitioning
JP6455035B2 (ja) 2014-09-10 2019-01-23 富士通株式会社 負荷分散管理装置、制御方法およびプログラム
US9860316B2 (en) * 2014-09-19 2018-01-02 Facebook, Inc. Routing network traffic based on social information
CN104484472B (zh) * 2014-12-31 2018-10-16 天津南大通用数据技术股份有限公司 一种混合多种异构数据源的数据库集群及实现方法
CN105404690B (zh) * 2015-12-16 2019-06-21 华为技术服务有限公司 查询数据库的方法和装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8296419B1 (en) * 2009-03-31 2012-10-23 Amazon Technologies, Inc. Dynamically modifying a cluster of computing nodes used for distributed execution of a program
CN102467570A (zh) * 2010-11-17 2012-05-23 日电(中国)有限公司 用于分布式数据仓库的连接查询系统和方法
CN104813292A (zh) * 2012-11-26 2015-07-29 亚马逊科技公司 缩放计算群集

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Snowflake Challenge Concurrent Load and Query;Benoit Dageville;《https://www.snowflake.com/blog/snowflake-challenge-concurrent-load-and-query/》;20150922;第1-7页 *
The Snowflake Elastic Data Warehouse;Benoit Dageville 等;《PROCEEDINGS OF THE 2016 INTERNATIONAL CONFERENCE ON MANAGEMENT OF DATA》;20160101;第215-226页 *

Also Published As

Publication number Publication date
WO2017190058A1 (en) 2017-11-02
US20210089559A1 (en) 2021-03-25
JP2022069497A (ja) 2022-05-11
US11675815B1 (en) 2023-06-13
US11620313B2 (en) 2023-04-04
AU2017258659B2 (en) 2020-05-14
JP2019519026A (ja) 2019-07-04
EP3449363A4 (en) 2019-10-02
US11593403B2 (en) 2023-02-28
US11615117B2 (en) 2023-03-28
EP3449363A1 (en) 2019-03-06
US20170316078A1 (en) 2017-11-02
US11593404B2 (en) 2023-02-28
JP2024096963A (ja) 2024-07-17
US20230259530A1 (en) 2023-08-17
CA3021963A1 (en) 2017-11-02
CN109075994A (zh) 2018-12-21
CA3021963C (en) 2024-05-28
US20210089560A1 (en) 2021-03-25
US11615118B2 (en) 2023-03-28
US20200218736A1 (en) 2020-07-09
US11983198B2 (en) 2024-05-14
JP7271059B2 (ja) 2023-05-11
AU2017258659A1 (en) 2018-11-22
US20200257705A1 (en) 2020-08-13
US20200257706A1 (en) 2020-08-13
US11630850B2 (en) 2023-04-18
DE202017007217U1 (de) 2020-02-06
US20240232226A1 (en) 2024-07-11
US20230169095A1 (en) 2023-06-01

Similar Documents

Publication Publication Date Title
CN109075994B (zh) 多集群仓库
US10997163B2 (en) Data ingestion using file queues
US11163794B2 (en) Resource provisioning systems and methods

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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: California, USA

Applicant after: SNOWFLAKE COMPUTING Inc.

Address before: California, USA

Applicant before: SNOWFLAKE COMPUTING Inc.

CB02 Change of applicant information
CB02 Change of applicant information

Address after: Montana

Applicant after: SNOWFLAKE COMPUTING Inc.

Address before: California, USA

Applicant before: SNOWFLAKE COMPUTING Inc.

GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: Montana

Patentee after: Snowflake Co.

Country or region after: U.S.A.

Address before: Montana

Patentee before: SNOWFLAKE COMPUTING Inc.

Country or region before: U.S.A.