CN105074702A - 提供单租户和多租户环境的数据库系统 - Google Patents
提供单租户和多租户环境的数据库系统 Download PDFInfo
- Publication number
- CN105074702A CN105074702A CN201480018651.1A CN201480018651A CN105074702A CN 105074702 A CN105074702 A CN 105074702A CN 201480018651 A CN201480018651 A CN 201480018651A CN 105074702 A CN105074702 A CN 105074702A
- Authority
- CN
- China
- Prior art keywords
- database
- request
- tenant environment
- environment
- service
- 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.)
- Granted
Links
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/21—Design, administration or maintenance of databases
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
数据库服务可以提供可以代表客户端维护表的多租户和单租户环境。所述服务(或基本系统)可以在任一种或两种类型的环境中创建数据库实例和表(例如,默认地或根据在创建所述实例或表的请求中所指定的各种参数值)。在接收和服务针对托管在单租户环境中的表的请求时,所述系统可以省略将在服务针对托管在多租户环境中的表的请求时执行的认证或计量操作中的至少一些。表可以由所述系统自动地(例如,根据观测的、预期的或所需的吞吐量)或响应于从客户端这样做(例如,增加吞吐量或降低成本)的显式请求而从单租户环境被移动到多租户环境,或反之亦然。
Description
背景技术
一些领先的技术组织正投资于出售“软件即服务”的建设技术。此类服务向客户端或订户提供对共享存储(例如,数据库系统)和/或计算资源的访问。在多层电子商务系统内,可以将不同的资源分配给订户和/或来自整个机器的订户应用、CPU、存储器、网络带宽和I/O能力。
客户端应用与数据库服务器之间的交互通常包括读取操作(只读查询)、写入操作(用来存储数据)和可以使用读取-修改-写入的工作流进行概念化的更新操作。
实施多租户环境的数据库服务通常跨多个存储节点对数据进行分区,并且并置代表不同的客户一起维护(例如,在相同的存储节点上和/或在相同的数据库实例中)的表。实施单租户环境的数据库服务使其代表不同的客户端维护的表彼此隔离(例如,在不同的存储节点上和/或在不同的数据库实例中维护这些表)。
附图说明
图1是图示用于在多租户环境和单租户环境中创建数据库实例和数据库表的方法的一个实施方案的流程图。
图2是图示将各种基于Web的服务提供给客户端的系统的一个实施方案的方框图。
图3是图示被配置成实施基于Web服务的数据存储服务的系统架构的一个实施方案的方框图。
图4A至图4C是图示根据一个实施方案的Web服务平台的各种组件的方框图。
图5是图示根据一个实施方案的将各种基于Web的服务提供给客户端的系统的子系统的方框图。
图6是图示用于在提供多租户环境中的数据库实例和单租户环境中的数据库实例的系统中创建表的方法的一个实施方案的流程图。
图7是图示用于在单租户环境中的数据库实例中创建和访问表的方法的一个实施方案的流程图。
图8是图示方法的一个实施方案的流程图,其用于图示在多租户环境中的数据库实例中创建和访问表的方法的一个实施方案。
图9是图示用于在多租户环境中创建表并且将其移动到单租户环境的方法的一个实施方案的流程图。
图10是图示用于在单租户环境中创建表并且将其移动到多租户环境的方法的一个实施方案的流程图。
图11图示计算机系统的一个实施方案,其实施用于在多租户和单租户环境中提供数据库服务的本文中描述的技术中的一个或多个。
尽管本文描述的技术容许各种修改和替代形式,但是其具体实施方案在附图中通过示例示出并且将在本文中详细地加以描述。然而,应理解附图和其详细描述并不旨在将本公开限于所公开的特定形式,而是相反,其意图是覆盖落在由所附权利要求书定义的本公开的精神和范围内的所有修改、等效物和替代物。
具体实施方式
如上所述,实施多租户环境的数据库服务通常将跨多个存储节点对数据进行分区,并且并置代表不同的客户一起维护(例如,在相同的存储节点上和/或在相同的数据库实例中)的表。多租户数据库服务通常将处理安全、服务质量合规、服务水平协议施行、服务请求计量和/或针对不同的客户端共同托管的表的其他表管理活动。这种多租户模型倾向于至少总体上减少客户的数据库服务的成本。然而,如果客户端想要在非常大规模使用的情况下(例如,在客户端需要每秒100万读取和/或每秒100万写入的吞吐量的情况下)接收数据库服务,则单租户模型可能比多租户环境对客户端更符合成本效益。例如,包括支持多租户和提供系统中的安全、合规/施行和/或计量操作所需的功能性可能会限制(例如,减少)系统可能能够为个别存储节点实现的吞吐量的数量。
在一些实施方案中,将数据库服务提供给客户端的计算系统可以提供可以代表客户端创建、维护和/或管理表的多租户和单租户环境两者。如本文更详细描述的,数据库服务(或基本计算系统)可以在这些类型的环境的任一个或两个中创建数据库实例和表(例如,默认地或根据在创建实例或表的请求中所指定的各种参数值)。在一些实施方案中,在接收和服务针对托管在单租户环境中的表的请求时,系统可以省略将在服务针对托管在多租户环境中的表的请求时执行的管理操作中的至少一些(例如,一些认证和/或计量操作)。例如,由于实施单租户环境的数据库服务可以使其代表不同的客户端维护的表彼此隔离(例如,在不同的存储节点上和/或在不同的数据库实例中维护这些表),所以可能不需要一些或所有这些操作以便安全和有效地管理表以及为针对表的请求服务。
如本文更详细描述的,在一些实施方案中,表可以由系统自动地(例如,根据观测的、预期的或所需的吞吐量)或响应于从客户端这样做(例如,以便增加吞吐量或降低成本)的显式请求而从单租户环境被移动到多租户环境,或反之亦然。
在一些实施方案中,数据库服务可以为客户端(其可以包括客户端应用、用户和/或数据库服务订户)提供能力来提供单租户环境中的一个或多个数据库实例并且创建那些实例中的多个表,以及提供多租户环境中的一个或多个数据库实例(并且创建那些实例中的表)。基本系统可以使用不同的基本数据库类型来创建不同类型的环境的那些数据库实例,而针对在两种类型的环境中创建的表向客户端暴露相同的功能性和/或接口。例如,在一个实施方案中,在多租户环境中创建的数据库实例可以实施为非关系数据库,而在单租户环境中创建的数据库实例可以实施为关系数据库,但用于与这些数据库实例和/或托管在其中的表进行交互的应用编程接口和/或图形用户接口可能会向客户端暴露相同的功能性。在一些实施方案中,客户端对于托管在任一个环境中的数据库实例中的表可能会经历相同的可预测性和可扩展性(包括例如自动定标)。
在图1中通过流程图图示用于在多租户环境和单租户环境中创建数据库实例和数据库表的方法的一个实施方案。如在110所示,在这个示例中,方法可以包括接收在多租户环境和单租户环境中提供数据库服务的系统中创建数据库实例的请求。在一些实施方案中,请求可以指定环境类型(例如,多租户或单租户)。在其他实施方案中,用于创建请求的数据库实例的环境类型的选择可以基于预先确定的政策,该政策指定在数据库系统中创建的数据库实例的默认或初始选择。如图1中所示,响应于请求,方法可以包括数据库系统(或其模块)创建指定类型的环境中的数据库实例,如在120中。方法还可以包括系统接收创建另一数据库实例的请求,其中这个另一请求指定另一环境类型(例如,多租户或单租户),如在130中。响应于请求,数据库系统(或其模块)可以创建另一类型的环境中的数据库实例,如在140中。
在一些实施方案中,方法可以包括数据库系统接收创建指定类型的环境中的表的请求以及创建相应的数据库实例中的表,如在150中。方法可以包括数据库系统接收和服务一个或多个请求,所述请求使用指定环境类型的协议来执行将表作为目标的数据库操作(例如,用于存储和/或检索表中的项目的操作),如在160中。在一些实施方案中,方法可以包括数据库系统接收将创建的表移动到另一类型的环境的请求,并且响应于这个请求,系统可以将表移动到另一类型的环境中的数据库实例,如在170中。随后,方法可以包括系统接收和服务使用另一环境类型的协议来执行将表作为目标的数据库操作的一个或多个额外的请求,如在180中。
在一些实施方案中,创建任一个租户环境类型中的数据库实例可以包括创建存储节点的群集(例如,三个存储节点的群集),并且客户端可以能够请求(或以其他方式启动)创建不同类型的多个数据库实例。在一些实施方案中,客户端可以能够创建和访问单租户环境中的多个表(例如,用于执行各种数据库操作),并且系统可以允许客户端根据需要超过服务请求的预先确定的、预期的或协商的吞吐率(例如,依据每秒读取和写入)。换句话说,在客户端的表被托管在专用于客户端的数据库实例上时,系统可能允许客户端突发(至少在临时的基础上)。相比之下,对于代表客户端在多租户数据库实例中创建的表,系统可能只允许(和/或保证)在创建表时被请求、指定和/或协商的吞吐量的数量。因此,在支持多租户模型和单租户模式的数据库系统中,客户端可以能够在等待时间、可预测性和吞吐量之间做出权衡。
本文描述的各种技术可以用于本地或远程计算系统,包括通过互联网或通过其他公用或专用网络(诸如虚拟专用云(VPC)环境中的服务的虚拟专用网络和连接)将服务提供给用户(例如,订户)的系统。图2图示根据一个实施方案的将各种基于Web的服务提供给客户端的系统的方框图。在这个示例中,系统200包括一个或多个客户端205。在这个示例中,客户端205可以被配置成经由通信网络215与Web服务器235进行交互。
如这个示例中所示,Web服务器235可以被配置成处理来自客户端205的针对各种服务(诸如Web服务A(225)、Web服务B(245)和Web服务C(255))的请求,以及将结果返回给客户端205。web服务中的每个可以为客户端提供以下项中的一个或多个:计算资源、数据库服务、数据存储服务(例如,代表客户端在一个或多个表中维护数据)或任何其他类型的服务或共享资源。
在图3中图示被配置成实施基于Web服务的数据存储服务(诸如本文中所述)的系统架构的一个实施方案。应注意,在给定组件的一个或多个实例可能存在的情况下,下文中引用的该组件可能是单数或复数。然而,任一种形式的使用并不旨在排除另一形式。在各种实施方案中,图3中所示的组件可以直接在计算机硬件内实施、实施可为由计算机硬件(例如,微处理器或计算机系统)直接或间接执行的指令,或使用这些技术的组合来实施。例如,图3的组件可以由包括许多计算节点(或简称节点)的分布式系统来实施,诸如在图11中所示并且在下文中描述的示例计算机系统。在各种实施方案中,给定存储服务系统组件的功能性可以由特定计算节点来实施或可以跨几个计算节点分布。在一些实施方案中,给定计算节点可以实施多于一个的存储服务系统组件的功能性。
一般来说,存储服务客户端310a-310n可以包含任何类型的客户端,其被配置成经由网络320向Web服务平台330提交web服务请求。例如,给定存储服务客户端310可以包括合适的版本的web浏览器,或插件模块或其他类型的代码模块,其被配置成执行为扩展到由web浏览器提供的执行环境或在所述执行环境内扩展,以对由Web服务平台330提供的服务提供数据库或数据存储服务客户端(例如,客户端应用、用户和/或订户)访问。或者,存储服务客户端310可以包含应用,诸如数据库应用、媒体应用、办公应用或可以利用持久性存储资源的任何其他应用。在一些实施方案中,这种应用可以包括足够的协议支持(例如,对于合适的版本的超文本传送协议(HTTP))以用于产生和处理web服务请求,而没有必要实施对于所有类型的基于web的数据的完整的浏览器支持。即,存储服务客户端310可以是被配置成直接与Web服务平台330进行交互的应用。在各种实施方案中,存储服务客户端310可以被配置成根据表述性状态转移(REST)式web服务架构、基于文件或消息的web服务架构或另一合适的web服务架构产生web服务请求。
在一些实施方案中,存储服务客户端310可以被配置成以对其他应用透明的方式将对基于web服务的存储的访问提供给那些应用。例如,存储服务客户端310可以被配置成与操作系统或文件系统整合在一起以根据本文所述的存储模型的合适的变体提供存储。然而,操作系统或文件系统可以将不同的存储接口提供给应用,诸如文件、目录和/或文件夹的常规的文件系统层次。在这个实施方案中,应用可能不需要被修改以利用本文所述的存储系统服务模型。替代地,对接到Web服务平台330的细节可以由存储服务客户端310和代表在操作系统环境内执行的应用的操作系统或文件系统来协调。
存储服务客户端310可以经由网络320将web服务请求传送到Web服务平台330,并且从Web服务平台330接收响应。在各种实施方案中,网络320可以包含在客户端310与平台330之间建立基于web的通信所必需的网络硬件和协议的任何合适的组合。例如,网络320可以一般包含共同实施互联网的各种电信网络和服务提供商。网络320还可以包括专用网络,诸如局域网(LAN)或广域网(WAN),以及公用或专用无线网络。例如,给定客户端310和Web服务平台330两者可以分别提供在具有自己的内部网络的企业内。在这个实施方案中,网络320可以包括在给定客户端310与互联网之间以及在互联网与Web服务平台330之间建立网络链接所必需的硬件(例如,调制解调器、路由器、交换机、负载平衡器、代理服务器等)和软件(例如,协议栈、会计软件、防火墙/安全软件等)。应注意,在一些实施方案中,存储服务客户端310可以使用专用网络而不是公用互联网与Web服务平台330通信。例如,客户端310可以提供在与本文所述的数据存储服务(和/或基本系统)相同的企业内。在这种情况下,客户端310可以完全通过专用网络320(例如,可以使用基于互联网的通信协议但不能公开访问的LAN或WAN)与平台330通信。
一般来说,Web服务平台330可以被配置成实施一个或多个服务端点,所述服务端点被配置成接收和处理web服务请求,诸如访问由数据库服务或数据存储服务代表客户端/用户维护的表和/或存储在那些表中的项目和属性的请求。例如,Web服务平台330可以包括硬件和/或软件,其被配置成实施各种服务端点以及正确接收和处理针对那些端点的基于HTTP的web服务请求。在一个实施方案中,Web服务平台330可以实施为服务器系统,其被配置成从客户端310接收web服务请求以及将这些请求转发给共同实施数据存储系统的各种组件进行处理。在其他实施方案中,Web服务平台330可以被配置为实施负载平衡和其他请求管理特征的许多不同的系统(例如,在群集拓扑中),这些特征被配置成动态管理大规模的web服务请求处理负载。
如图3中所示,Web服务平台330可以包括前端模块340(其可以被配置成接收、验证、解析、调节和/或调度服务请求等等)、一个或多个管理组件或自动管理实例350(其可以被配置成提供各种可见性和/或控制功能,如本文更详细描述的)以及多个存储节点实例(示出为360a-360n),每个存储节点实例可以代表客户端/用户或代表数据存储服务(和其基本系统)本身维护和管理一个或多个表。根据各种实施方案,本文更详细地描述由这些类型的组件中的每个提供的一些功能性。应注意,在一些实施方案中,Web服务平台330可以包括用于提供创建、访问和/或管理在单租户环境内的数据库实例中维护的表的功能性的图3中所示的一些组件,其具有与用于提供创建、访问和/或管理在多租户环境内的数据库实例中维护的表的功能性的那些组件不同的版本。在其他实施方案中,用于支持多租户和单租户环境两者的功能性可以被包括在图3中所示的任何或所有的组件中。还应注意,在各种实施方案中,一个或多个数据库实例可以实施在存储节点360a-360n中的每个上,并且每个存储节点360a-360n可以代表客户端存储表。这些数据库实例中的一些可以犹如处于多租户环境一样进行操作,而其他可以犹如处于单租户环境一样进行操作。在一些实施方案中,操作在多租户环境中的数据库实例可以实施在与操作在单租户环境中的数据库实例不同的计算节点上(或执行在单个计算节点上的不同的虚拟机上)。
在各种实施方案中,Web服务平台330可以被配置成支持不同类型的web服务请求。例如,在一些实施方案中,平台330可以被配置成实施特定web服务应用编程接口(API),其支持对由数据存储服务系统代表客户端/用户维护并管理的表(和/或存储在那些表中的数据)的各种操作。本文更详细地描述由这种API支持的操作的示例。
除充当客户端的web服务请求的可寻址端点之外,在一些实施方案中,Web服务平台330还可以实施各种客户端管理特征。例如,平台330可以协调web服务(包括存储资源)的客户端使用的计量和记帐,诸如通过跟踪请求的客户端310的身份、客户端请求的数量和/或频率、代表客户端310存储或检索的表和/或项目的大小、客户端310使用的整体存储带宽、客户端310请求的存储级别和/或任何其他可测量的客户端使用参数。平台330还可以实施财务会计和计费系统,或可以维护使用数据的数据库,所述使用数据可以由外部系统查询和处理以进行客户端使用活动的报告和计费。在一些实施方案中,平台330可以包括封锁管理程序和/或引导配置(未示出)。
在各种实施方案中,数据库服务或数据存储服务可以实施在被配置成执行本文所述的功能性的一个或多个计算节点上。在一些实施方案中,服务可以由多个计算节点组成的Web服务平台(诸如图3中的Web服务平台330)来实施,每个计算节点可以执行本文所述的一个或多个功能。计算节点的各种集合可以被配置成提供以下功能性:自动管理群集、专用于数据存储服务的资源的群集以及外部资源的集合(在一些实施方案中,其可以与其他Web服务或应用共享)。
在一些实施方案中,与系统进行交互以提供本文所述的功能性的外部资源可以包括外部工作流组件,图3中示为外部工作流组件370。外部工作流组件370可以提供框架,其他组件通过框架与外部工作流系统进行交互。在一些实施方案中,Web服务平台330可以包括建立在该框架(未示出)上方的访问API。这个接口可以允许系统实施适合于预期由数据存储服务经历的使用模式的API。在一些实施方案中,使用外部工作流组件370的系统的组件或模块可以包括这些接口,而不是直接对接到由外部工作流组件370提供的接口。在一些实施方案中,除外部工作流组件370之外,Web服务平台330还可以依赖于一个或多个外部资源(诸如外部存储服务380),和/或其他外部(并且在一些情况下共享)外部资源。在一些实施方案中,外部工作流组件370可以用于执行分布式操作,诸如延伸超出特定分区复制组的那些操作。
在一些实施方案中,本文所述的数据库系统可以支持“完全无共享”型架构中的用户表的无缝扩展。例如,在一些实施方案中,每个数据库分区可以实施为完全独立的并行计算单元。在此类实施方案中,系统可能不提供跨分区的分布式协调或支持批量“放置”操作和/或多语句事务。在一些实施方案中,只要工作量分布跨分区充分展开,分区数量的增加就可以造成服务请求的可用表大小较大和/或吞吐量容量增加。如本文中所述,在一些实施方案中,现场再分区(无论是否以编程方式/自动或显式启动)可以用来适应工作量变化。换句话说,在一些实施方案中,当继续接收并处理针对受影响的分区的服务请求(即,未使源分区离线)时可以执行再分区(包括分区移动、分区拆分和其他再分区操作)。
在一些实施方案中,服务(和/或基本系统)可以支持各种服务供应和/或吞吐量模型。在一些实施方案中,服务可以支持已承诺工作吞吐量供应和/或尽力而为服务供应。在一些实施方案中,已承诺工作吞吐量水平可以用规范化的逻辑工作单元(或逻辑服务请求单元)随时间的量度来指定,并且可以代表由系统保证的工作吞吐量水平。例如,在提供数据库或数据存储服务的系统中(例如,在代表客户端维护的表中),存储服务客户端(例如,访问服务的客户端应用、用户或订户)可以根据各种商业模型、订购类型和/或支付模型在由服务提供的多个吞吐量选项之间指定优选。例如,在一些实施方案中,客户端/用户可以通过创建表的请求的参数指示特定表的优选吞吐量模型。在其他实施方案中,客户端/用户可以为由数据存储服务代表客户端/用户创建并维护的所有表指定默认吞吐量模型。通过支持已承诺吞吐量模型和尽力而为服务吞吐量模型(不保证吞吐量),系统可以允许客户端/用户根据其要求和/或预算在性能和成本之间做出权衡。其他类型的服务可以支持已承诺工作吞吐量模型和/或其他吞吐量模型。
提供已承诺吞吐量供应的数据存储服务(和基本系统)可以被配置成响应于针对代表客户端/用户维护的表的通信量而为所述表的创建、扩大和管理预分配容量和/或资源,并且不会超量预定上面维护表的存储节点的资源和/或容量。在一些实施方案中,在已承诺吞吐量模型下由服务(和基本系统)维护的表可以维护在更快(并且通常更昂贵)的存储资源(诸如高性能介质(例如,闪速存储器或固态驱动器,或SSD、介质))中,以在为来自客户端/用户的请求服务时提供极低等待时间。例如,系统可以将快速/本地存储器的高比率提供给(和专用于)主(例如,磁盘)存储器以维护那些表(和其各个分区)。尽管在已承诺吞吐量模型下分配到给定表的存储资源在一些情况下可能未充分利用(至少某些时刻),但是客户端/用户可以估价由已承诺吞吐量模型提供的可预测性能超过专用多于该表可能总是需要的资源的额外(并且在一些情况下浪费)成本。类似地,预分配给其他类型的服务以支持已承诺工作吞吐量模型的资源在一些情况下可能未充分利用(至少某些时刻),但可以为客户端/用户提供可预测水平的性能(例如,在可用性和/或响应性方面)。
如本文中所述,在一些实施方案中,本文中所述的系统可以支持多租户模型和单租户模型。在这样的一些实施方案中,客户端/用户可以通过创建表的请求的参数指示特定表的这些租户模型中的优选模型。在其他实施方案中,客户端/用户可以为由数据存储服务代表客户端/用户创建并维护的所有表指定默认或初始租户模型。
图4A至图4C图示根据一个实施方案的可以被包括在Web服务平台330的每个类型的组件中的各种元件或模块。如图4A中所示,前端模块340可以包括一个或多个模块,其被配置成执行服务请求的解析和/或调节(示出为410)、服务请求的认证和/或计量(示出为415)、调度服务请求(示出为425)和/或维护分区映射缓存(示出为430)。除这些组件特定的模块之外,前端模块340还可以包括与共同实施Web服务平台330的多种类型的计算节点共用的组件,诸如消息总线(示出为435)和/或动态配置模块(示出为440)。在其他实施方案中,更多、更少或不同的元件可以被包括在前端模块340中,或图示为被包括在前端模块340中的任何元件可以被包括在Web服务平台330的另一组件中,或在被配置成与Web服务平台330进行交互以提供本文中所述的数据存储服务的组件中。
如图4B中所示,自动管理实例350可以包括一个或多个模块,其被配置成向系统管理员提供可见性和控制(示出为445)、或执行热平衡(示出为450)和/或异常控制(示出为455)、资源分配(示出为460)。自动管理实例350还可以包括管理控制台465,系统管理员可以通过管理控制台465与数据存储服务(和/或基本系统)进行交互。在一些实施方案中,管理控制台465可以是对于数据存储服务(例如,对于系统管理员进行的配置或重新配置)的可见性和控制的主要点。例如,管理控制台465可以实施为相对瘦的客户端,其向系统管理员和/或其他特权用户提供显示和控制功能性,并且可以通过这个客户端来观察和/或更新系统状态指示、元数据和/或操作参数。除这些组件特定的模块之外,自动管理实例350还可以包括与共同实施Web服务平台330的不同类型的计算节点共用的组件,诸如消息总线(示出为435)和/或动态配置模块(示出为440)。在其他实施方案中,更多、更少或不同的元件可以被包括在自动管理实例350中,或图示为被包括在自动管理实例350中的任何元件可以被包括在Web服务平台330的另一组件中,或在被配置成与Web服务平台330进行交互以提供本文中所述的数据存储服务的组件中。
如图4C中所示,存储节点实例360可以包括一个或多个模块,其被配置成提供分区管理(示出为470)、实施复制和故障转移过程(示出为475)和/或将应用编程接口(API)提供给基本存储装置(示出为480)。如这个示例中所示,每个存储节点实例360可以包括存储引擎485,其可以被配置成代表一个或多个客户端/用户将一个或多个表(和相关联的表数据)维护(即,存储和管理)在存储装置480(在一些实施方案中,其可以是非关系数据库)中。除这些组件特定的模块之外,存储节点实例360还可以包括与共同实施Web服务平台330的不同类型的计算节点共用的组件,诸如消息总线(示出为435)和/或动态配置模块(示出为440)。在其他实施方案中,更多、更少或不同的元件可以被包括在存储节点实例360中,或图示为被包括在存储节点实例360中的任何元件可以被包括在Web服务平台330的另一组件中,或在被配置成与Web服务平台330进行交互以提供本文中所述的数据存储服务的组件中。
应注意,在一些实施方案中,对于操作在单租户环境中的表可能不需要执行一些或所有的调节、认证和/或计量操作,这些操作通常将由多租户环境中的前端模块340来提供。例如,系统可以被配置成在为针对单租户环境中的表的请求服务时省略这些操作,但在为针对多租户环境中的表的请求服务时执行这些操作。类似地,在一些实施方案中,图示为由自动管理实例350执行的一些操作(例如,热平衡和/或资源分配)可以或可以不施加到管理单租户环境中的表。然而,图示为由自动管理实例350(或其各种模块)执行的其他操作可以施加到创建和/或管理多租户和单租户环境中的表。
以本文中描述的数据库或数据存储服务为基础的系统可以代表存储服务客户端(例如,客户端应用、用户和/或订户)将数据存储在包括具有一个或多个属性的项目的表中。在一些实施方案中,数据存储服务可以给客户端/用户呈现数据模型,在数据模型中代表客户端/用户维护的每个表包括一个或多个项目,并且每个项目包括属性的集合。项目的属性可以是按任何次序的名称-值对的集合。在一些实施方案中,项目中的每个属性可以具有名称、类型和值。一些属性可以是单值,使得属性名称被映射到单值,而其他属性可以是多值,使得属性名称被映射到两个或更多个值。在一些实施方案中,属性名称可以总是字符串,但是其值可以是字符串、数字、字符串集或数集。以下是属性的所有示例:"ImageID"=1、"Title"="flower"、"Tags"={"flower"、"jasmine"、"white"}、"Ratings"={3,4,2}。项目可以通过给每个项目指派主键值(其可以包括一个或多个属性值)来管理,并且这个主键值也可以用来唯一识别所述项目。在一些实施方案中,可以在表中的项目上定义大量属性,但是每个项目可以包括这些属性的稀疏集(其中指定用于一个项目的特定属性与相同表中的另一项目的属性无关),并且可以选用除了主键属性以外的所有属性。换句话说,不同于传统的数据库,由数据库或数据存储服务(和基本存储系统)维护的表除了其依赖于主键以外可以不具有预定义纲目。应注意,在一些实施方案中,如果属性被包括在项目中,则其值不能是空值或不能为空(例如,属性名称和值不能是空的字符串),以及,并且在单个项目内,其属性名称可以是唯一的。
在一些实施方案中,本文中描述的系统可以使用稍微受限的索引和/或查询模型以为用户/订户或客户端应用提供大量(即,几乎无限制的)扩展、可预测性和简易性。例如,在一些实施方案中,可以仅由主键索引并分区数据(例如,在基本数据库中进行分区)。在此类实施方案中,用于索引用户表中的数据的主键可以在代表用户创建表时由用户指定。此后,用户的数据的分区可以由系统处理,并且从用户提取出来。在一些实施方案中,用于索引数据的主键可以由单个属性散列键组成。在其他实施方案中,用于索引和/或分区数据的主键可以是包括散列键组件和另一组件(有时在本文中称作范围键组件)的组合键。在各种实施方案中,可以支持对索引的属性进行查询,并且可以提供全表扫描功能(例如,支持故障排除)。在一些实施方案中,用户可以基于除了主键的属性以外的一个或多个属性定义表的次级索引,并且然后可以使用用户定义的索引查询项目。例如,在一些实施方案中,系统可以支持(例如,使用createIndexAPI)实时创建次级索引的创建,并且这些次级索引可以基于存储要求(例如,增加或降低数据量)和/或读/写通信量而自动地扩展。在一些实施方案中,这些次级索引可以随着更新表中的项目而异步地更新。
在各种实施方案中,服务(和/或基本系统)可以对表名称、项目、属性值、主键值和/或属性名称施行预定大小限制。例如,在一些实施方案中,可以限制所有属性名称的总大小和项目中的值(即,行大小)。
本文中描述的数据库和数据存储服务(和/或基本系统)可以提供应用编程接口(API),其用于请求将代表存储服务客户端维护的表、项目和/或属性作为目标的各种操作。在一些实施方案中,服务(和/或基本系统)可以提供控制平面API和数据平面API。由数据存储服务(和/或基本系统)提供的控制平面API可以用来操控表级条目,诸如表和索引。(当与数据平面API相比时)可以相对较不频繁地调用这些API。在一些实施方案中,由服务提供的控制平面API可以用来创建表、删除表和/或描述表。在一些实施方案中,对表级条目执行更新的控制平面API可以调用异步工作流以执行所请求的操作。(例如,经由describeTablesAPI)请求“描述”信息的方法可以简单地返回由服务代表客户端/用户维护的表的当前已知状态。由数据存储服务(和/或基本系统)提供的数据平面API可以用来执行项目级操作,诸如存储、删除、检索和/或更新项目和/或其属性,或跨表中的多个项目执行基于索引的搜索式操作,诸如查询和扫描。
在不同的实施方案中,由本文中描述的服务提供的API可以支持以一个或多个行业标准或专有的数据交换格式编码的请求和响应参数。例如,在各种实施方案中,请求和响应可以遵循人类可读的(例如,基于文本的)数据交换标准(例如,JavaScript对象符号或JSON),或可以使用二进制编码来表示(在一些情况下,其可能比基于文本的表示法更加紧凑)。在各种实施方案中,系统可以为本文中描述的API的输入参数中的一个或多个供应默认值(例如,全系统默认值、用户专用默认值或帐户专用默认值)。
如上所述,由服务支持的控制平面API可以包括对表执行更新的API(例如,CreateTableAPI和/或DeleteTableAPI)。在各种实施方案中,这些API可以调用异步工作流以执行所请求的操作。另外,服务可以支持返回当前已知状态(例如,DescribeTablesAPI)的方法。在一些实施方案中,常用模型可以使客户端(例如,使用CreateTableAPI)请求进行动作,且然后经由相应描述API(例如,DescribeTables)轮询其完成。
在系统将数据库或数据存储服务提供给客户端的一些实施方案中,系统可以提供应用编程接口(API),其包括支持对由服务代表存储服务客户端维护在表中的数据的一些或所有的以下操作:放置(或存储)项目、获得(或检索)具有指定的主键的一个或多个项目、删除项目、更新单个项目中的属性、使用索引查询项目以及对整个表扫描(例如,列表项),任选地过滤返回的项目。例如,本文中描述的数据存储服务(和/或基本系统)可以提供各种数据平面API,其用于执行项目级操作(诸如PutItemAPI、GetItem(或GetItems)API、DeleteItemAPI和/或UpdateItemAPI),以及对表中的多个项目的一个或多个基于索引的寻找/遍历操作(诸如查询API和/或扫描API)。应注意,满足指定这些操作的服务请求所需的工作量可能根据指定的特定操作和/或在存储系统与客户端之间访问和/或传送以满足请求的数据量而不同。
在一些实施方案中,本文中描述的系统可以被配置成在专用硬件上(例如,在专用存储设备上)或在系统中的存储节点的特定节点上创建和执行单租户环境中的数据库实例。在其他实施方案中,单租户环境中的数据库实例可能在存储节点中被创建并执行于与在相同的存储节点上创建并执行的其他数据库实例不同的虚拟机上。在一些实施方案中,用于实施执行将两种类型的环境中的表作为目标的数据库操作(例如,用于存储、检索或删除数据的操作)的功能性的基本软件和/或硬件可以是相同的(或大体上类似的)。然而,由于客户端可能能够直接连接到单租户环境中的数据库实例(和/或其中的表),所以可能没有必要为系统提供中间层来提供支持多租户所需的安全或其他实用程序。替代地,可以跳过认证检查,并且客户端可以将执行对这些表操作的请求直接提交给基本存储节点,例如,在低等待时间的路径上。
例如,在一些实施方案中,客户端可以提交创建数据库实例的请求(例如,使用CreateDatabaseInstanceAPI),并且可以提交对数据库实例描述的请求(例如,使用DescribeDatabaseInstanceAPI),响应于此,系统可以返回IP地址的列表,客户端可以在IP地址的列表下直接连接到数据库实例(或其中的表)以执行各种操作(例如,创建表、放置项目、获得项目等)。一般而言,多租户环境中的数据库实例可以为多个不同的客户存储都在相同的数据库实例内运行的表。因此,系统可能需要使用各种安全和认证方案来阻止客户端能够访问彼此的表。然而,在一些实施方案中,使用单租户环境中的专用数据库实例,客户端可能被给予特定数据库实例的特定IP地址,之后客户端可以配置防火墙组或另一种类型的安全组来限制能够连接到该实例和/或创建其自己与表的网络连接(例如,符合各种开源协议中的一个的TCP连接)的客户端。
图5是图示根据一些实施方案的将各种基于Web的服务提供给客户端的计算系统500的方框图。例如,在一些实施方案中,计算系统500可以实施Web服务器,诸如图3中所示的Web服务平台330。在各种实施方案中,计算机系统500可以被配置成将各种资源(其可以包括例如下游服务、数据库连接、输入/输出通道、计算资源、执行线程、系统存储器、磁盘存储器或其他持久存储资源的一部分或任何其他限制资源)从一个或多个资源池分配给由计算系统500接收的服务请求,以便提供由各种客户端请求的服务。例如,为了满足针对数据存储系统的服务请求,数据存储系统可以为满足请求所需的每个标准化、逻辑工作单元或逻辑服务请求单元分配一个或多个数据库连接、输入/输出通道、存储资源部分和/或其他资源。如这个示例中所示,计算系统500可以包括Web服务接口505、用于多租户环境的许可控制子系统510、用于管理针对多租户环境中的表的请求的服务请求子系统530以及用于管理针对单租户环境中的表的请求的服务请求子系统535。
在这个示例中,Web服务接口505可以被配置成从各种客户端接收服务请求,以及与许可控制子系统510通信以促进代表客户端的那些服务的执行。例如,在一些实施方案中,许可控制子系统510可以被配置成确定从各种客户端接受哪些和/或多少针对多租户环境中的表的服务请求,并且可以与服务请求子系统530通信以接受和/或服务一个或多个接收的服务请求。在一些实施方案中,许可控制子系统510可以被配置成根据系统和/或特定客户端的最大请求速率、应用、目标、请求类型或操作来确定接受哪些和/或多少服务请求。如本文所述,可以根据当前工作吞吐率和/或目标或已承诺工作吞吐率来动态地调整最大请求速率。在其他实施方案中,可以使用基于工作的令牌来管理服务请求。在各种实施方案中,许可控制子系统510可以实施一个或多个许可控制机制,包括适合于管理具有非均匀工作量的服务请求的任何许可控制机制。
在一些实施方案中,如果服务请求被接受用于由许可控制子系统510服务,则服务请求子系统530可以相应地被配置成分配(或启动分配)对那些请求执行请求的服务所需的一个或多个资源,和/或经由Web服务接口505将结果返回给客户端。例如,在系统提供数据存储服务的实施方案中,响应于由许可控制子系统510接受的查询请求,服务请求子系统530可以访问查询所针对的表并且可以经由Web服务接口505将查询结果返回给客户端。在一些实施方案中,许可控制子系统510可以被配置成调节并以其他方式管理具有非均匀工作量的服务请求(例如,根据当前工作吞吐率来调整最大请求速率)。在其他实施方案中,这个功能性可以由系统的另一组件提供,这个组件可以将最大请求速率提供给许可控制子系统用于调节服务请求。在一些实施方案中,许可控制子系统510可以实施基于“漏桶”的许可控制器。在一些实施方案中,Web服务接口505可以利用预定义的指令或通信,诸如经由定义的应用协议接口(API),以代表客户端与许可控制子系统510和/或计算系统500的其他组件通信。
在这个示例中,服务请求子系统535可以被配置成分配(或启动分配)执行针对单租户环境中的表的请求的服务所需的一个或多个资源,和/或经由Web服务接口505将结果返回给客户端,而不执行上文描述的由许可控制子系统510执行的所有操作。例如,在系统为单租户环境中的表提供数据库或数据存储服务的实施方案中,响应于查询请求,服务请求子系统535可以访问查询所针对的表,并且可以经由Web服务接口505将查询结果返回给客户端。
应注意,在各种实施方案中,图4A至图4C和/或图5中所示的组件可以直接在计算机硬件内实施、实施为可由计算机硬件(例如,微处理器或计算机系统)直接或间接执行的指令,或实施为这些技术的组合。例如,计算系统500的组件可以由包括任何数量的计算节点(或简称节点)的分布式系统来实施。在各种实施方案中,给定组件的功能性可以由特定节点来实施或分布在几个节点上。在一些实施方案中,给定节点可以实施图4A至图4C和/或图5中所示的多于一个的组件的功能性。
根据不同的实施方案,下文更详细地描述可以由Web服务器(或许可控制子系统或其其他组件)实施的各种技术。一般而言,本文中描述的用于管理代表客户端处理服务请求的任何或所有技术可以由许可控制模块(其是Web服务器的组件)执行和/或实施在所述许可控制模块中。尽管本文中描述的几个示例针对通过互联网提供服务的系统,但是在其他实施方案中,这些技术可以由许可控制模块或另一类型的系统的类似组件执行和/或实施在所述许可控制模块或另一类型的系统的类似组件中,所述另一类型的系统将服务提供给客户端,并且被配置成代表那些客户端接收、接受和/或服务请求。
如前所述,在一些实施方案中,数据库系统支持多租户模型和单租户模型可以允许客户选择其想要用哪种方式设置表。另外,在一些实施方案中,如果最初在多租户环境中设置表(例如,试图保持低成本),如果客户端以后需要(或想要)所有(或一部分)的表的更高的吞吐量,则表(或其热部)可以被移动到单租户环境,其可以提供更高的吞吐量。例如,当表中的数据被以高速率访问(或预期被以高速率访问)时,客户端可以请求(或系统可以自动执行)创建表(或被以高速率访问的表的一部分)数据的快照,并且将该表(或表的一部分)移动到单租户环境。在这个示例中,如果在未来的某个时刻,表(或被移动的表的部分)不再被以高速率访问,则客户端可以请求(或系统自动执行)将表移回到多租户环境。一般而言,在本文中描述的系统中创建的表可以根据需要(例如,根据工作量、所需的吞吐量、成本、各种系统策略或服务协议,或其他因素)在多租户环境与单租户环境之间的任一方向上被移动。
应注意,尽管单个客户端可以将表中的数据的一些部分存储在多租户环境中并且将表中的数据的其他部分存储在单租户环境中,但是在一些实施方案中,客户端可能只能够在每个表的基础上在这两个租户模型之间拆分它们的数据。换句话说,客户端可能能够将一些表存储在多租户环境中并且将其他表存储在单租户环境中,但是可能不能够在这两个环境之间拆分表,除非这个表本身首先被分为多个表,每个表将在这些环境模型中的一个下被存储。在一个示例中,如果在单租户环境中的数据库实例的容量为100千兆字节(例如,如果这是可以在单租户模型中被支持的最大尺寸数据库实例)并且客户端希望创建存储120千兆字节的数据,则客户端可以修掉100千兆字节并且将其放置在单租户环境中的表中,并且可以将剩余的20千兆字节放置(或留)在多租户环境中的表中。
在图6中用流程图图示用于在提供多租户环境中的数据库实例和单租户环境中的数据库实例的系统中创建表的方法的一个实施方案。如在610所示,在这个示例中,方法可以包括在多租户环境和单租户环境中提供数据库服务的系统接收创建表的请求,并且请求可以指定环境类型(例如,多租户或单租户)。如果请求指定应在多租户环境中创建表(示出为从620正退出),则方法可以包括数据库系统在多租户环境的数据库实例中创建表,如在630中。然后,系统可以开始为随后被接收并且将表作为目标的传入的服务请求的至少一部分服务,如在635中。
如果请求不指定应在多租户环境中创建表(示出为从620负退出),则方法可以包括数据库系统在单租户环境中的数据库实例中创建表,如在640中。然后,系统可以开始为随后被接收并且将表作为目标的传入的服务请求的至少一部分服务,如在645中。如果接收创建表的更多请求(示出为从650正退出),则方法可以包括对于每个额外的请求重复图6中所示的操作(示出为从650至610负退出的反馈)。
如前所述,数据库系统可以被配置成在为执行将单租户环境中的表作为目标的数据库操作的请求服务时比在为执行将多租户环境中的表作为目标的数据库操作的请求服务时执行不同的操作。在图7中通过流程图图示在单租户环境中的数据库实例中创建和访问表的方法的一个实施方案。如这个示例中所示,方法可以包括在多租户环境和单租户环境中提供数据库服务的系统(例如,从客户端)接收在单租户环境中创建表的请求,如在710中。作为响应,数据库系统可以在单租户环境中创建表,如在720中。在一些实施方案中,创建表可以包括为单租户环境中的数据库实例中的表供应资源(包括例如一个或多个存储节点的部分),并且也可以包括根据被包括在请求中的配置参数值来配置表和/或用作为创建表的请求的部分所接收的表数据填充表。如这个示例中所示,方法可以包括数据库系统接收在单租户环境中的表的请求和/或表的数据库实例信息(例如,将允许客户端建立与在上面托管表的存储节点或节点上的表的直接连接的信息),以及将该信息提供给请求者,如在730中。例如,在一些实施方案中,响应于这个请求,数据库系统可以将表的IP地址返回给客户端。
如这个示例中所示,方法可以包括请求者(客户端)建立与将表托管在单租户环境中的数据库实例的存储节点的直接连接,如在740中。随后,请求者(客户端)可以将执行将表作为目标的数据库操作的请求定向到在单租户环境中托管表用于服务的数据库实例的存储节点(通过已建立的直接连接),如在750中。如这个示例中所示,用于对托管在单租户环境中的表执行数据库操作的服务请求可以包括省略系统中的认证和/或计量机制中的至少一些(例如,在服务针对托管在多租户环境中的表的请求时可能执行的认证和/或计量机制),如在750中。例如,由于(至少在一些实施方案中)没有代表其他客户端被托管在与托管在单租户环境中的表相同的数据库实例中的表,并且在不同客户端的表之间不共享数据库资源,并且由于代表其将表托管在单租户环境中的客户端可以通过直接连接与表通信,所以可能没有必要执行施行客户端表之间的隔离或施行对访问多租户环境中的表的预定限制的一些认证和/或计量操作。
在图8中通过流程图图示方法的一个实施方案,其用于图示在多租户环境中的数据库实例中创建和访问表的方法的一个实施方案。如在810所示,在这个示例中,方法可以包括在多租户环境和单租户环境中提供数据库服务的系统接收在多租户环境中创建表的请求。响应于请求,数据库系统可以在多租户环境中创建表,如在820中。在一些实施方案中,创建表可以包括为多租户环境中的数据库实例中的表供应资源(包括例如一个或多个存储节点的部分),并且也可以包括根据被包括在请求中的配置参数值来配置表和/或用作为创建表的请求的部分所接收的表数据填充表。如前所述,代表客户端托管在多租户环境中的表可以被托管在也代表其他客户端托管一个或多个表的数据库实例中。
如图8中所示,方法可以包括数据库系统接收执行将表作为目标的数据库操作的请求,如在830中。作为响应,系统可以施加一个或多个认证和/或计量机制来确定是否为请求服务,如在840中。如果请求是要被服务(示出为从850正退出),则方法可以包括系统为请求服务,如在860中。否则(示出为从850负退出),系统可以拒绝请求(如在870中)。例如,如果请求不能被验证或如果客户端已超过预先确定的吞吐量限制,则请求可以被拒绝。
如前所述,在一些情况下,可能需要(例如,从性能或成本观点看)将表从单租户环境移动到多租户环境。在一些实施方案中,将表移动到不同的环境可能包括不仅涉及将基本存储节点移动到不同的环境。例如,为了移动处于多租户环境的表,客户端(或系统)可以访问特定多租户存储节点的一个或多个数据文件(每个节点可以存储表的一部分)、给数据文件拍快照(例如,到键值存储系统)、创建专用数据库实例(例如,单租户环境中的数据库实例)以及将数据文件从快照复制到新创建的专用数据库实例(这可能实际上类似于将表从快照“恢复”到新的数据库实例)。类似地,将表从单租户环境移动到多租户环境可以包括拍摄表的快照(例如,到键值存储系统),且然后将表从快照“恢复”到多租户环境中的数据库实例(其可以包括在多租户环境中创建数据库实例(如果尚不存在))。
在更具体的示例中,代表客户端托管订单数据的数据库服务可以被配置成将最新的订单数据(例如,每周的数据的价值)存储在单租户数据库实例中的单独的表中,且随后(例如,一旦表中的订单数据超过一周),将该表移动到多租户环境。因为较旧的订单数据与最近的订单数据相比不太可能被访问(因此高吞吐量专用实例可能不是必需的),所以将表存储在多租户环境中可能更具成本效益。在一些实施方案中,更旧的数据(例如,几个月或几年的数据)可以从数据库服务的存储节点完全被删除,此时数据可能被存档。在另一示例中,未预期被频繁访问的数据可以存储在多租户环境中。然而,如果访问数据尖峰,则可以将数据移动到单租户环境至少达吞吐量的需求增加的持续时间。
如上所述,在一些实施方案中,数据库系统可以被配置成最初在多租户环境或单租户环境中默认地创建所有表,但是随后可以支持将表移动到其他类型的环境。在图9中通过流程图图示用于在多租户环境中创建表并且将其移动到单租户环境的方法的一个实施方案。如在910所示,在这个示例中,方法可以包括在多租户环境和单租户环境中提供数据库服务的系统接收创建表的请求。在这个示例中,响应于请求,数据库系统可以在多租户环境中创建表(例如,默认地),如在920中。如在930所示,方法可以包括数据库系统接收和服务执行将表作为目标的数据库操作的一个或多个请求中的至少一些,这些操作可以包括将一个或多个认证和/或计量机制施加到请求,如上所述。
在这个示例中,如果(在未来的任何点)确定由多租户环境中的表提供的吞吐量足以处理将表作为目标的请求(示出为从940负退出),则方法可以包括继续将表托管在多租户环境中,以及根据多租户环境的协议来接收和服务针对表的请求。这在图9中通过从940至930负退出的反馈来图示。在另一方面,如果确定将表作为目标的请求需要(或想要)更高的吞吐量(示出为从940正退出),则方法可以包括数据库系统拍摄表的快照、在单租户环境中创建数据库实例(如果不存在)以及将表从快照“恢复”为单租户环境中的数据库实例中的新表,如在950中。例如,在一些实施方案中,数据库系统可以被配置成基于针对表(和/或托管在相同的数据库实例中的其他表)的观测工作量和/或表所经历的观测吞吐量,确定应将表移动到单租户环境以提高性能(例如,根据各种系统策略和/或适用的服务水平协议)。在其他实施方案中,希望通过增加针对表的服务请求的吞吐量来提高其应用的性能的客户端可能会显式地请求将表移动到单租户环境(例如,使用通过使用图形用户接口传达给系统的请求消息,或通过以如由API定义的编程方式调用移动)。如这个示例中所示,继移动之后,方法可以包括数据库系统接收和服务执行将表作为目标的数据库操作的一个或多个额外的请求中的至少一些,但是系统可能省略将施加到托管在多租户环境中的表的一个或多个认证和/或计量机制中的至少一些的应用(如在960中)。
在图10中通过流程图图示用于在单租户环境中创建表并且将其移动到多租户环境的方法的一个实施方案。如在1010所示,在这个示例中,方法可以包括在多租户环境和单租户环境中提供数据库服务的系统接收创建表的请求。在这个示例中,响应于请求,数据库系统可以在单租户环境中创建表(例如,默认地),如在1020中。如在1030所示,方法可以包括数据库系统接收和服务执行将表作为目标的数据库操作的一个或多个请求中的至少一些,在此期间系统可能省略将一个或多个认证和/或计量机制施加到请求的服务,如上所述。
在这个示例中,如果(在未来的任何点)确定在将表托管在多租户环境中时提供的更低的吞吐量将足以处理将表作为目标的请求(示出为从1040正退出),则方法可以包括数据库系统拍摄表的快照、在多租户环境中创建数据库实例(如果不存在)以及将表从快照“恢复”为多租户环境中的数据库实例中的新表,如在1050中。例如,在一些实施方案中,数据库系统可以被配置成基于针对表的观测的、预期的和/或所需的工作量和/或表所经历的观测吞吐量,确定应将表移动到多租户环境以降低成本(例如,根据各种系统策略和/或适用的服务水平协议)。在其他实施方案中,希望通过接受用于针对表的服务请求的减小的吞吐量来降低管理表的成本客户端可能会显式地请求将表移动到多租户环境(例如,使用通过使用图形用户接口传达给系统的请求消息,或通过以如由API定义的编程方式调用移动)。如这个示例中所示,继移动之后,方法可以包括数据库系统接收和服务执行将表作为目标的数据库操作的一个或多个额外的请求中的至少一些,这些操作可以包括执行在为针对托管在单租户环境中的表的请求服务时省略的一个或多个认证和/或计量机制中的至少一些(如在1060中)。
在另一方面,如果确定由多租户环境中的表提供的吞吐量不足以处理将表作为目标的请求(示出为从1040负退出),则方法可以包括继续将表托管在单租户环境中,以及根据单租户环境的协议接收和服务针对表的请求。这在图10中通过从1040至1030负退出的反馈来图示。
应注意,在一些实施方案中,正如在多租户环境中创建的数据库实例一样,在单租户环境中创建的数据库实例可以自动地向上和向下扩展(使用根据需要存储表的副本的更多或更少的基本存储节点和/或数据库实例)。换句话说,随着客户端增加更多的数据,数据库实例自动地扩展。应注意,在一些实施方案中,在特定数据库实例与用于实施其的一个或多个存储节点之间可能没有固定的关系。还应注意,由特定客户端在单租户环境中创建的数据库实例可能以使其对应于三个基本数据库实例的方式被拆除(例如,用于维护托管在该实例中的数据的三个副本)。
在各种实施方案中,上文描述的技术可以适用于托管表和管理针对各种系统中的那些表的服务请求,这些系统将服务提供给客户端。例如,这些技术可能适合于托管表和管理经历广泛的工作量行为的系统中的服务请求,这些工作量行为包括相对较高的工作吞吐率和/或动态变化的工作吞吐率。在一些实施方案中,单租户环境中的数据库表比多租户环境中的类似容量的数据库表可能会有不同的定价模型。例如,在单租户模型下定价可能以每个实例为基础,而在多租户模型下定价可能基于吞吐量。
预期在一些实施方案中,本文中描述的任何方法、技术或组件可以实施为能够经由计算机可访问介质存储或传送的指令和数据。此类方法或技术可以包括(例如但不限于)如本文中描述的在多租户和单租户环境中提供数据库服务的各种方法。此类指令可以被执行以执行根据具体目的定制的具体计算功能(例如,处理经由Web服务接口接收的请求,或返回为各种请求服务的反馈和/或结果),以及高级功能,诸如操作系统功能性、虚拟化功能性、网络通信功能性、应用功能性、存储系统功能性和/或任何其他合适的功能性。
在图11中图示计算机系统的一个实施方案,其实施用于在多租户和单租户环境中提供数据库服务的本文中描述的技术中的一个或多个。在不同的实施方案中,本文中描述的任何各种模块或方法的功能性可以由计算机系统1100的一个或几个实例来实施。特别是,应注意,本文中描述的系统的不同的元件可以由不同的计算机系统1100来实施。例如,在不同的实施方案中,支持本文中描述的用于管理服务请求的功能性的计算机系统可以实施在客户端(客户或订户可以通过客户端访问系统)在上面执行的相同的计算机系统1100上,或另一计算机系统1100上。在另一示例中,不同的子系统(例如,Web服务接口、许可控制子系统和服务请求子系统;和/或一个或多个Web服务器或其他组件)可以实施在计算节点的多个节点上或跨多个节点来实施,并且每个计算节点可以类似于计算机系统1100。
在说明性实施方案中,计算机系统1100包括一个或多个处理器1110,其经由输入/输出(I/O)接口1130耦合到系统存储器1120。计算机系统1100还包括耦合到I/O接口1130的网络接口1140。在各种实施方案中,计算机系统1100可以是包括一个处理器1110的单处理器系统,或包括几个处理器1110(例如,二个、四个、八个或另一合适数量)的多处理器系统。处理器1110可以是能够执行指令的任何合适的处理器。例如,在各种实施方案中,处理器1110可以是实施任何各种指令集架构(ISA)(诸如x86、PowerPCTM、SPARCTM或MIPSTMISA或任何其他合适的ISA)的通用或嵌入式处理器。在多处理器系统中,每个处理器1110可以通常但不一定实施相同的ISA。
系统存储器1120可以被配置成存储由处理器1110可访问的指令(例如,代码1125)和数据(例如,在数据存储区1122中)。在各种实施方案中,可以使用任何合适的存储器技术(诸如静态随机存取存储器(SRAM)、同步动态RAM(SDRAM)、非易失性/闪速型存储器或任何其他类型的存储器)来实施系统存储器1120。在说明性实施方案中,实施所需的功能、方法或技术(诸如使用本文中描述的任何或所有机制在多租户和单租户环境中提供数据库服务的功能性)的指令和数据被示出为在系统存储器1120内存储为代码1125。应注意,在一些实施方案中,代码1125可以包括实施所需的功能的指令和数据,这些功能不由处理器1110直接执行但以可转换为由处理器1110直接执行的指令的抽象的形式来表示或编码。例如,代码1125可以包括在ISA中指定的指令,其可以由处理器1110或在处理器1110上可执行的其他代码1125来模拟。或者,代码1125可以包括以可以在执行的过程中编译或解释的抽象的编程语言实施的指令、程序或语句。作为非限制性示例,代码1125可以包括在程序或面向对象的编程语言(诸如C或C++)、脚本语言(诸如perl)、标记语言(诸如HTML或XML)或任何其他合适的语言中指定的代码。
在一些实施方案中,在系统存储器1120内的数据存储区1122可以存储用于在多租户和单租户环境中提供数据库服务的默认、系统侧、客户端特定或类型特定的可配置参数的值;观测、取样、测量和/或聚合(例如,平均)性能信息(包括但不限于:实际工作吞吐率、最大请求速率、实际请求速率和/或拒绝率和/或目标或已承诺工作吞吐率);配置数据(例如,令牌桶容量限制、默认令牌产生率、默认令牌扣除值、服务水平协议参数值、许可控制策略数据和/或客户端特定参数值);和/或适合于实施本文描述的技术的各种数据结构中的其他数据。
在一个实施方案中,I/O接口1130可以被配置成在处理器1110、系统存储器1120和设备中的任何外围设备(包括网络接口1140或其他外围接口)之间协调I/O通信量。在一些实施方案中,I/O接口1130可以执行任何必要的协议、时序或其他数据转换以将数据信号从一个组件(例如,系统存储器1120)转变成适合于由另一组件(例如,处理器1110)使用的格式。在一些实施方案中,I/O接口1130可以包括对通过各种类型的外围总线(例如,诸如外围组件互连(PCI)总线标准或通用串行总线(USB)标准的变体)附接的设备的支持。在一些实施方案中,I/O接口1130的功能可以被分成两个或更多个单独的组件,例如北桥和南桥。此外,在一些实施方案中,I/O接口1130(诸如系统存储器1120的接口)的一些或所有功能性可以直接并入处理器1110中。
网络接口1140可以被配置成允许在计算机系统1100与附接到网络的其他设备(例如其他计算机系统)之间交换数据。在各种实施方案中,网络接口1140可以支持经由有线或无线通用数据网络(例如,诸如任何合适类型的以太网);经由电信/电话网络(诸如模拟语音网络或数字光纤通信网络);经由存储区域网络(诸如光纤通道SAN);或经由任何其他合适类型的网络和/或协议进行通信。
在一些实施方案中,系统存储器1120可以包括非暂时性计算机可读存储介质,其被配置成存储上文描述的指令和数据。然而,在其他实施方案中,指令和/或数据可以被接收、发送或存储在不同类型的计算机可访问存储介质上。一般来说,非暂时性计算机可读存储介质可以包括存储介质或存储器介质,诸如磁性或光学介质,例如,经由I/O接口1130耦合到计算机系统1100的磁盘或CD/DVD-ROM。非暂时性计算机可读存储介质还可以包括可以作为系统存储器1120或另一类型的存储器被包括在计算机系统1100的一些实施方案中的任何易失性或非易失性存储介质,诸如RAM(例如,SDRAM、DDRSDRAM、RDRAM、SRAM等)、ROM等。计算机可访问存储介质一般可以经由传输介质或信号(诸如电、电磁或数字信号)可访问、经由通信介质(诸如网络和/或无线链路)进行传送(诸如可以经由网络接口1140来实施)。
鉴于以下条款,上述内容可以被更好地理解:
1.一种系统,其包括:
一个或多个处理器;
存储器,其耦合到所述一个或多个处理器;以及
一个或多个存储节点;
其中所述存储器存储程序指令,其在由所述一个或多个处理器执行时使所述一个或多个处理器实施数据库服务,使得将多租户环境和单租户环境中的数据库服务提供给一个或多个数据库服务客户端,其中多租户环境包括将多个客户端的数据库表共同托管在单个数据库实例中的环境,并且其中单租户环境包括将不同的客户端的数据库表托管在不同的数据库实例中的环境;
其中所述数据库服务被配置成:
从客户端接收创建数据库实例的请求,其中所述请求指定将在多租户环境中创建所述数据库实例;
供应所述一个或多个存储节点中的一个或多个以代表所述请求的客户端在多租户环境中创建数据库实例;
从客户端接收创建另一数据库实例的请求,其中所述请求指定将在单租户环境中创建另一数据库实例;
供应所述一个或多个存储节点中的一个或多个以代表所述请求的客户端在单租户环境中创建数据库实例;
从客户端接收创建表的请求,其中所述请求指定将在多租户环境还是单租户环境中的数据库实例中创建所述表;以及
在所述指定环境中的数据库实例中创建表。
2.根据条款1所述的系统,其中所述数据库服务还被配置成:
根据所述指定环境的协议接收和服务执行将所述表作为目标的数据库操作的一个或多个请求;
将所述表移动到除所述指定环境之外的环境中的数据库实例;以及
根据另一环境的协议接收和服务执行将所述表作为目标的数据库操作的一个或多个请求。
3.根据条款1所述的系统,其中在多租户环境中创建数据库实例的所述请求来自的所述客户端和在单租户环境中创建数据库实例的所述请求来自的所述客户端是相同的客户端。
4.根据条款1所述的系统,其中所述数据库服务还被配置成:
从所述客户端接收创建另一表的请求,其中所述请求指定将在除所述指定环境之外的环境中的数据库实例中创建所述另一表;以及
在另一环境中的数据库实例中创建另一表。
5.根据条款1所述的系统,
其中为了在多租户环境中创建数据库实例,所述数据库服务被配置成创建非关系数据库的实例;以及
其中为了在单租户环境中创建数据库实例,所述数据库服务被配置成创建关系数据库的实例。
6.一种方法,其包括:
通过一个或多个计算机执行:
接收创建表的请求;
响应于所述接收,在以下给定一个环境中的数据库实例中创建表:多租户环境或单租户环境;
接收和服务执行将所述表作为目标的数据库操作的一个或多个请求;以及
继所述接收和服务之后:
将所述表移动到以下另一个环境中的数据库实例:多租户环境或单租户环境;以及
接收和服务执行将所述表作为目标的数据库操作的一个或多个额外的请求。
7.根据条款6所述的方法,
其中所述方法还包括接收将所述表移动到另一环境中的数据库实例的请求;以及
其中响应于接收移动所述表的所述请求来执行所述移动。
8.根据条款6所述的方法,
其中所述方法还包括根据用于接收和服务执行将所述表作为目标的数据库操作的请求的观测或所需的吞吐量,确定移动所述表;以及
其中响应于所述确定来执行所述移动。
9.根据条款6所述的方法,其中所述移动包括:
在另一环境中的数据库实例中创建表;
拍摄指定环境中的所述表的快照;以及
将所述快照复制到所述另一环境中的所述数据库实例中的所述表。
10.根据条款9所述的方法,
其中所述拍摄快照包括将所述快照存储在键值存储系统中;以及
其中所述将所述快照复制到所述表包括从所述键值存储系统中检索所述快照。
11.根据条款6所述的方法,
其中创建表的所述请求指定将在多租户环境中的数据库实例中创建所述表;以及
其中创建表的所述请求还指定用于接收或服务执行将所述表作为目标的数据库操作的请求的所需的吞吐量。
12.根据条款6所述的方法,
其中创建表的所述请求指定将在多租户环境中的数据库实例中创建所述表;以及
其中所述接收和服务一个或多个请求包括施加一个或多个认证或计量机制以确定是否为所述一个或多个请求中的每个服务。
13.根据条款6所述的方法,
其中创建表的所述请求指定将在单租户环境中的数据库实例中创建所述表;以及
其中所述接收和服务一个或多个请求包括省略施加到多租户环境中的一个或多个认证或计量机制的所述应用。
14.根据条款6所述的方法,
其中创建表的所述请求指定将在单租户环境中的数据库实例中创建所述表;以及
其中所述接收和服务一个或多个请求包括接受和服务超过所述表的预先确定的吞吐量限制的至少一些请求。
15.根据条款6所述的方法,
其中所述接收创建表的请求包括接收代表数据库服务客户端创建表的所述请求,已在所述给定环境中代表所述客户端创建了一个或多个其他表;以及
其中所述移动包括移动所述表以及不移动所述一个或多个其他表。
16.根据条款6所述的方法,
其中创建表的所述请求指定将在单租户环境中的数据库实例中创建所述表;以及
其中所述方法还包括:
接收所述单租户环境中的所述数据库实例或所述表的连接信息的请求;以及
返回IP地址,可以通过所述IP地址建立与所述表的连接。
17.根据条款16所述的方法,其中所述接收和服务一个或多个请求包括通过在客户端与所述返回的IP地址之间建立的直接连接接收请求并返回响应。
18.根据条款16所述的方法,其还包括响应于所述表的存储容量或吞吐量的需求的变化,在响应表中向上或向下扩展所述表。
19.一种存储程序指令的非暂时性计算机可读存储介质,所述程序指令在被执行于一个或多个计算机上时使所述一个或多个计算机执行:
接收创建数据库表的请求;
响应于所述接收,在单租户环境中的数据库实例中创建数据库表;
接收和服务访问所述数据库表的一个或多个请求;
根据接收或服务请求的观测的、预期的或所需的吞吐量,确定应将所述数据库表移动到多租户环境中的数据库实例;
响应于所述确定,将所述数据库表移动到多租户环境中的数据库实例。
20.根据条款19所述的非暂时性计算机可读存储介质,
其中所述接收创建表的请求包括接收由应用编程接口定义的请求消息;以及
其中所述应用编程接口定义请求消息,其调用在多租户环境中的数据库实例与单租户环境中的数据库实例之间共同的功能性。
21.根据条款19所述的非暂时性计算机可读存储介质,
其中所述接收创建表的请求包括通过图形用户接口接收请求消息;以及
其中所述图形用户接口暴露在多租户环境中的数据库实例与单租户环境中的数据库实例之间共同的功能性。
22.一种系统,其包括:
一个或多个计算机;以及
存储器,其存储程序指令,所述程序指令在被执行于所述一个或多个计算机上时使所述一个或多个计算机执行:
接收创建数据库表的请求;
响应于所述接收,在多租户环境中的数据库实例中创建数据库表;
接收和服务访问所述数据库表的一个或多个请求;
根据接收或服务请求的观测的、预期的或所需的吞吐量,确定应将所述数据库表的至少部分移动到单租户环境中的数据库实例;
响应于所述确定,将所述数据库表的所述至少部分移动到单租户环境中的数据库实例。
23.根据条款22所述的系统,
其中所述确定包括确定所述数据库表的所述至少部分已经历或预期经历比可以支持所述多租户环境中的所述数据库表更高的吞吐量;以及
其中所述移动所述数据库表的所述至少部分包括:
拍摄所述数据库表的所述至少部分的快照;以及
在单租户环境中的数据库实例中创建所述数据库表的所述至少部分的新表。
24.根据条款22所述的系统,其中在被执行于所述一个或多个计算机上时,所述程序指令还使所述一个或多个计算机执行:
继所述移动之后,响应于用于接收或服务将所述新表作为目标的请求的观测的、预期的或所需的吞吐量的变化,将所述新表移动到多租户环境中的数据库实例。
尽管相当详细地描述了上文的实施方案,但是一旦上述公开被充分了解,许多变化和修改对于本领域技术人员将变得明显。其意图在于以下权利要求书被解释为包含所有这些变化和修改。
Claims (15)
1.一种系统,其包括:
一个或多个处理器;
存储器,其耦合到所述一个或多个处理器;以及
一个或多个存储节点;
其中所述存储器存储程序指令,所述程序指令在由所述一个或多个处理器执行时使所述一个或多个处理器实施数据库服务,使得将多租户环境和单租户环境中的数据库服务提供给一个或多个数据库服务客户端,其中多租户环境包括将多个客户端的数据库表共同托管在单个数据库实例中的环境,并且其中单租户环境包括将不同的客户端的数据库表托管在不同的数据库实例中的环境;
其中所述数据库服务被配置成:
从客户端接收创建数据库实例的请求,其中所述请求指定将在多租户环境中创建所述数据库实例;
供应所述一个或多个存储节点中的一个或多个以代表所述请求的客户端在多租户环境中创建数据库实例;
从客户端接收创建另一数据库实例的请求,其中所述请求指定将在单租户环境中创建另一数据库实例;
供应所述一个或多个存储节点中的一个或多个以代表所述请求的客户端在单租户环境中创建数据库实例;
从客户端接收创建表的请求,其中所述请求指定将在多租户环境还是单租户环境中的数据库实例中创建所述表;以及
在所述指定环境中的数据库实例中创建表。
2.根据权利要求1所述的系统,其中所述数据库服务还被配置成:
根据所述指定环境的协议接收和服务执行将所述表作为目标的数据库操作的一个或多个请求;
将所述表移动到除所述指定环境之外的环境中的数据库实例;以及
根据另一环境的协议接收和服务执行将所述表作为目标的数据库操作的一个或多个请求。
3.根据权利要求1所述的系统,其中在多租户环境中创建数据库实例的所述请求来自的所述客户端和在单租户环境中创建数据库实例的所述请求来自的所述客户端是相同的客户端。
4.根据权利要求1所述的系统,其中所述数据库服务还被配置成:
从所述客户端接收创建另一表的请求,其中所述请求指定将在除所述指定环境之外的环境中的数据库实例中创建所述另一表;以及
在另一环境中的数据库实例中创建另一表。
5.根据权利要求1所述的系统,
其中为了在多租户环境中创建数据库实例,所述数据库服务被配置成创建非关系数据库的实例;以及
其中为了在单租户环境中创建数据库实例,所述数据库服务被配置成创建关系数据库的实例。
6.一种方法,其包括:
通过一个或多个计算机执行:
接收创建表的请求;
响应于所述接收,在以下给定一个环境中的数据库实例中创建表:多租户环境或单租户环境;
接收和服务执行将所述表作为目标的数据库操作的一个或多个请求;以及
继所述接收和服务之后:
将所述表移动到以下另一个环境中的数据库实例:多租户环境或单租户环境;以及
接收和服务执行将所述表作为目标的数据库操作的一个或多个额外的请求。
7.根据权利要求6所述的方法,
其中所述方法还包括接收将所述表移动到另一环境中的数据库实例的请求;以及
其中响应于接收移动所述表的所述请求来执行所述移动。
8.根据权利要求6所述的方法,
其中所述方法还包括根据用于接收和服务执行将所述表作为目标的数据库操作的请求的观测或所需的吞吐量,确定移动所述表;以及
其中响应于所述确定来执行所述移动。
9.根据权利要求6所述的方法,
其中创建表的所述请求指定将在多租户环境中的数据库实例中创建所述表;以及
其中创建表的所述请求还指定用于接收或服务执行将所述表作为目标的数据库操作的请求的所需的吞吐量。
10.根据权利要求6所述的方法,
其中创建表的所述请求指定将在单租户环境中的数据库实例中创建所述表;以及
其中所述接收和服务一个或多个请求包括接受和服务超过所述表的预先确定的吞吐量限制的至少一些请求。
11.根据权利要求6所述的方法,
其中创建表的所述请求指定将在单租户环境中的数据库实例中创建所述表;以及
其中所述方法还包括:
接收所述单租户环境中的所述数据库实例或所述表的连接信息的请求;以及
返回IP地址,可以通过所述IP地址建立与所述表的连接。
12.根据权利要求6所述的方法,其还包括响应于所述表的存储容量或吞吐量的需求的变化,在响应表中向上或向下扩展所述表。
13.一种系统,其包括:
一个或多个计算机;以及
存储器,其存储程序指令,所述程序指令在被执行于所述一个或多个计算机上时使所述一个或多个计算机执行:
接收创建数据库表的请求;
响应于所述接收,在多租户环境中的数据库实例中创建数据库表;
接收和服务访问所述数据库表的一个或多个请求;
根据接收或服务请求的观测的、预期的或所需的吞吐量,确定应将所述数据库表的至少部分移动到单租户环境中的数据库实例;
响应于所述确定,将所述数据库表的所述至少部分移动到单租户环境中的数据库实例。
14.根据权利要求13所述的系统,
其中所述确定包括确定所述数据库表的所述至少部分已经历或预期经历比可以支持所述多租户环境中的所述数据库表更高的吞吐量;以及
其中所述移动所述数据库表的所述至少部分包括:
拍摄所述数据库表的所述至少部分的快照;以及
在单租户环境中的数据库实例中创建所述数据库表的所述至少部分的新表。
15.根据权利要求13所述的系统,其中在被执行于所述一个或多个计算机上时,所述程序指令还使所述一个或多个计算机执行:
继所述移动之后,响应于用于接收或服务将所述新表作为目标的请求的观测的、预期的或所需的吞吐量的变化,将所述新表移动到多租户环境中的数据库实例。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/780,077 US10706025B2 (en) | 2013-02-28 | 2013-02-28 | Database system providing single-tenant and multi-tenant environments |
US13/780,077 | 2013-02-28 | ||
PCT/US2014/019448 WO2014134464A2 (en) | 2013-02-28 | 2014-02-28 | Database system providing single-tenant and multi-tenant environments |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105074702A true CN105074702A (zh) | 2015-11-18 |
CN105074702B CN105074702B (zh) | 2019-01-11 |
Family
ID=51389248
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480018651.1A Active CN105074702B (zh) | 2013-02-28 | 2014-02-28 | 提供单租户和多租户环境的数据库系统 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10706025B2 (zh) |
EP (1) | EP2962225B1 (zh) |
JP (2) | JP6521324B2 (zh) |
CN (1) | CN105074702B (zh) |
CA (1) | CA2902955C (zh) |
WO (1) | WO2014134464A2 (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105635465A (zh) * | 2015-12-30 | 2016-06-01 | 中科创达软件股份有限公司 | 数据隔离方法、数据隔离装置及终端 |
WO2018103356A1 (zh) * | 2016-12-06 | 2018-06-14 | 华为技术有限公司 | 一种数据库服务提供方法及服务器 |
CN108475215A (zh) * | 2016-08-03 | 2018-08-31 | 甲骨文国际公司 | 用于在多租户数据库环境中提供租户的动态重新定位的系统和方法 |
CN108881111A (zh) * | 2017-05-10 | 2018-11-23 | 中兴通讯股份有限公司 | 一种实现多租户系统的方法及装置 |
CN109412878A (zh) * | 2019-01-16 | 2019-03-01 | 紫光云数科技有限公司 | 多租户业务接入实现方法、装置及电子设备 |
CN109947767A (zh) * | 2017-10-26 | 2019-06-28 | Sap欧洲公司 | 多重租赁数据库系统中的系统共享类型 |
CN110036382A (zh) * | 2016-09-30 | 2019-07-19 | 易享信息技术有限公司 | 多租户非关系型平台对象 |
CN110709819A (zh) * | 2017-10-27 | 2020-01-17 | 谷歌有限责任公司 | 管理多单租户SaaS服务 |
CN110799948A (zh) * | 2017-06-27 | 2020-02-14 | 易享信息技术有限公司 | 针对时间点恢复数据库的数据集的系统和方法 |
CN113342775A (zh) * | 2020-03-03 | 2021-09-03 | Sap欧洲公司 | 基于云的计算环境中的集中式多租户即服务 |
CN113360476A (zh) * | 2021-06-21 | 2021-09-07 | 上海上讯信息技术股份有限公司 | 一种程序数据库虚拟化插拔的方法及设备 |
Families Citing this family (94)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9559900B1 (en) * | 2013-06-13 | 2017-01-31 | Amazon Technologies, Inc. | Dedicated endpoints for network-accessible services |
US9106642B1 (en) * | 2013-09-11 | 2015-08-11 | Amazon Technologies, Inc. | Synchronizing authentication sessions between applications |
US9396338B2 (en) | 2013-10-15 | 2016-07-19 | Intuit Inc. | Method and system for providing a secure secrets proxy |
US9467477B2 (en) | 2013-11-06 | 2016-10-11 | Intuit Inc. | Method and system for automatically managing secrets in multiple data security jurisdiction zones |
US9444818B2 (en) | 2013-11-01 | 2016-09-13 | Intuit Inc. | Method and system for automatically managing secure communications in multiple communications jurisdiction zones |
US9894069B2 (en) | 2013-11-01 | 2018-02-13 | Intuit Inc. | Method and system for automatically managing secret application and maintenance |
US9807119B2 (en) * | 2014-01-21 | 2017-10-31 | Oracle International Corporation | System and method for supporting web services in a multitenant application server environment |
JP6461167B2 (ja) | 2014-01-21 | 2019-01-30 | オラクル・インターナショナル・コーポレイション | アプリケーションサーバ、クラウドまたは他の環境においてマルチテナンシをサポートするためのシステムおよび方法 |
US20150379096A1 (en) * | 2014-06-26 | 2015-12-31 | Kpmg Llp | System and method for automatically connecting multiple, distinct tables of a data repository |
US9836339B1 (en) * | 2014-09-24 | 2017-12-05 | Amazon Technologies, Inc. | Application programming interface as a service |
US9405530B2 (en) | 2014-09-24 | 2016-08-02 | Oracle International Corporation | System and method for supporting patching in a multitenant application server environment |
US10318280B2 (en) | 2014-09-24 | 2019-06-11 | Oracle International Corporation | System and method for supporting patching in a multitenant application server environment |
US9853873B2 (en) | 2015-01-10 | 2017-12-26 | Cisco Technology, Inc. | Diagnosis and throughput measurement of fibre channel ports in a storage area network environment |
US10250512B2 (en) | 2015-01-21 | 2019-04-02 | Oracle International Corporation | System and method for traffic director support in a multitenant application server environment |
US9900250B2 (en) | 2015-03-26 | 2018-02-20 | Cisco Technology, Inc. | Scalable handling of BGP route information in VXLAN with EVPN control plane |
US10222986B2 (en) * | 2015-05-15 | 2019-03-05 | Cisco Technology, Inc. | Tenant-level sharding of disks with tenant-specific storage modules to enable policies per tenant in a distributed storage system |
US11588783B2 (en) | 2015-06-10 | 2023-02-21 | Cisco Technology, Inc. | Techniques for implementing IPV6-based distributed storage space |
US9813500B2 (en) * | 2015-06-12 | 2017-11-07 | Cisco Technology, Inc. | Allocating cloud storage based on storage attributes |
US10778765B2 (en) | 2015-07-15 | 2020-09-15 | Cisco Technology, Inc. | Bid/ask protocol in scale-out NVMe storage |
US9495421B1 (en) * | 2015-10-15 | 2016-11-15 | Atlassian Pty Ltd | Bidirectional data portability |
US9892075B2 (en) | 2015-12-10 | 2018-02-13 | Cisco Technology, Inc. | Policy driven storage in a microserver computing environment |
US10270465B2 (en) | 2015-12-31 | 2019-04-23 | International Business Machines Corporation | Data compression in storage clients |
US10015274B2 (en) * | 2015-12-31 | 2018-07-03 | International Business Machines Corporation | Enhanced storage clients |
US10140172B2 (en) | 2016-05-18 | 2018-11-27 | Cisco Technology, Inc. | Network-aware storage repairs |
US20170351639A1 (en) | 2016-06-06 | 2017-12-07 | Cisco Technology, Inc. | Remote memory access using memory mapped addressing among multiple compute nodes |
US10664169B2 (en) | 2016-06-24 | 2020-05-26 | Cisco Technology, Inc. | Performance of object storage system by reconfiguring storage devices based on latency that includes identifying a number of fragments that has a particular storage device as its primary storage device and another number of fragments that has said particular storage device as its replica storage device |
US11563695B2 (en) | 2016-08-29 | 2023-01-24 | Cisco Technology, Inc. | Queue protection using a shared global memory reserve |
US10984044B1 (en) | 2016-09-26 | 2021-04-20 | Splunk Inc. | Identifying buckets for query execution using a catalog of buckets stored in a remote shared storage system |
US11314753B2 (en) | 2016-09-26 | 2022-04-26 | Splunk Inc. | Execution of a query received from a data intake and query system |
US11550847B1 (en) | 2016-09-26 | 2023-01-10 | Splunk Inc. | Hashing bucket identifiers to identify search nodes for efficient query execution |
US11232100B2 (en) | 2016-09-26 | 2022-01-25 | Splunk Inc. | Resource allocation for multiple datasets |
US11269939B1 (en) | 2016-09-26 | 2022-03-08 | Splunk Inc. | Iterative message-based data processing including streaming analytics |
US11586627B2 (en) | 2016-09-26 | 2023-02-21 | Splunk Inc. | Partitioning and reducing records at ingest of a worker node |
US11604795B2 (en) | 2016-09-26 | 2023-03-14 | Splunk Inc. | Distributing partial results from an external data system between worker nodes |
US10956415B2 (en) | 2016-09-26 | 2021-03-23 | Splunk Inc. | Generating a subquery for an external data system using a configuration file |
US11663227B2 (en) | 2016-09-26 | 2023-05-30 | Splunk Inc. | Generating a subquery for a distinct data intake and query system |
US11461334B2 (en) | 2016-09-26 | 2022-10-04 | Splunk Inc. | Data conditioning for dataset destination |
US10977260B2 (en) | 2016-09-26 | 2021-04-13 | Splunk Inc. | Task distribution in an execution node of a distributed execution environment |
US12013895B2 (en) | 2016-09-26 | 2024-06-18 | Splunk Inc. | Processing data using containerized nodes in a containerized scalable environment |
US11222066B1 (en) | 2016-09-26 | 2022-01-11 | Splunk Inc. | Processing data using containerized state-free indexing nodes in a containerized scalable environment |
US11294941B1 (en) | 2016-09-26 | 2022-04-05 | Splunk Inc. | Message-based data ingestion to a data intake and query system |
US11126632B2 (en) | 2016-09-26 | 2021-09-21 | Splunk Inc. | Subquery generation based on search configuration data from an external data system |
US11593377B2 (en) | 2016-09-26 | 2023-02-28 | Splunk Inc. | Assigning processing tasks in a data intake and query system |
US11874691B1 (en) | 2016-09-26 | 2024-01-16 | Splunk Inc. | Managing efficient query execution including mapping of buckets to search nodes |
US11615104B2 (en) | 2016-09-26 | 2023-03-28 | Splunk Inc. | Subquery generation based on a data ingest estimate of an external data system |
US11620336B1 (en) | 2016-09-26 | 2023-04-04 | Splunk Inc. | Managing and storing buckets to a remote shared storage system based on a collective bucket size |
US11599541B2 (en) | 2016-09-26 | 2023-03-07 | Splunk Inc. | Determining records generated by a processing task of a query |
US10353965B2 (en) | 2016-09-26 | 2019-07-16 | Splunk Inc. | Data fabric service system architecture |
US11023463B2 (en) | 2016-09-26 | 2021-06-01 | Splunk Inc. | Converting and modifying a subquery for an external data system |
US11321321B2 (en) | 2016-09-26 | 2022-05-03 | Splunk Inc. | Record expansion and reduction based on a processing task in a data intake and query system |
US20180089324A1 (en) | 2016-09-26 | 2018-03-29 | Splunk Inc. | Dynamic resource allocation for real-time search |
US11250056B1 (en) | 2016-09-26 | 2022-02-15 | Splunk Inc. | Updating a location marker of an ingestion buffer based on storing buckets in a shared storage system |
US11580107B2 (en) | 2016-09-26 | 2023-02-14 | Splunk Inc. | Bucket data distribution for exporting data to worker nodes |
US11442935B2 (en) | 2016-09-26 | 2022-09-13 | Splunk Inc. | Determining a record generation estimate of a processing task |
US11416528B2 (en) | 2016-09-26 | 2022-08-16 | Splunk Inc. | Query acceleration data store |
US11860940B1 (en) | 2016-09-26 | 2024-01-02 | Splunk Inc. | Identifying buckets for query execution using a catalog of buckets |
US11163758B2 (en) | 2016-09-26 | 2021-11-02 | Splunk Inc. | External dataset capability compensation |
US11562023B1 (en) | 2016-09-26 | 2023-01-24 | Splunk Inc. | Merging buckets in a data intake and query system |
US11281706B2 (en) | 2016-09-26 | 2022-03-22 | Splunk Inc. | Multi-layer partition allocation for query execution |
US11567993B1 (en) | 2016-09-26 | 2023-01-31 | Splunk Inc. | Copying buckets from a remote shared storage system to memory associated with a search node for query execution |
US11243963B2 (en) | 2016-09-26 | 2022-02-08 | Splunk Inc. | Distributing partial results to worker nodes from an external data system |
US11106734B1 (en) | 2016-09-26 | 2021-08-31 | Splunk Inc. | Query execution using containerized state-free search nodes in a containerized scalable environment |
US11003714B1 (en) | 2016-09-26 | 2021-05-11 | Splunk Inc. | Search node and bucket identification using a search node catalog and a data store catalog |
US10545914B2 (en) | 2017-01-17 | 2020-01-28 | Cisco Technology, Inc. | Distributed object storage |
US10243823B1 (en) | 2017-02-24 | 2019-03-26 | Cisco Technology, Inc. | Techniques for using frame deep loopback capabilities for extended link diagnostics in fibre channel storage area networks |
US10713203B2 (en) | 2017-02-28 | 2020-07-14 | Cisco Technology, Inc. | Dynamic partition of PCIe disk arrays based on software configuration / policy distribution |
US10254991B2 (en) | 2017-03-06 | 2019-04-09 | Cisco Technology, Inc. | Storage area network based extended I/O metrics computation for deep insight into application performance |
US10936711B2 (en) * | 2017-04-18 | 2021-03-02 | Intuit Inc. | Systems and mechanism to control the lifetime of an access token dynamically based on access token use |
US10303534B2 (en) | 2017-07-20 | 2019-05-28 | Cisco Technology, Inc. | System and method for self-healing of application centric infrastructure fabric memory |
US11921672B2 (en) | 2017-07-31 | 2024-03-05 | Splunk Inc. | Query execution at a remote heterogeneous data store of a data fabric service |
US11989194B2 (en) | 2017-07-31 | 2024-05-21 | Splunk Inc. | Addressing memory limits for partition tracking among worker nodes |
US10592293B2 (en) | 2017-08-31 | 2020-03-17 | Cisco Technology, Inc. | Tenant-specific policy generation and enforcement within containers |
US10896182B2 (en) | 2017-09-25 | 2021-01-19 | Splunk Inc. | Multi-partitioning determination for combination operations |
US10853124B2 (en) * | 2017-09-25 | 2020-12-01 | Splunk Inc. | Managing user data in a multitenant deployment |
US11151137B2 (en) | 2017-09-25 | 2021-10-19 | Splunk Inc. | Multi-partition operation in combination operations |
US10404596B2 (en) | 2017-10-03 | 2019-09-03 | Cisco Technology, Inc. | Dynamic route profile storage in a hardware trie routing table |
US10942666B2 (en) | 2017-10-13 | 2021-03-09 | Cisco Technology, Inc. | Using network device replication in distributed storage clusters |
US10635829B1 (en) | 2017-11-28 | 2020-04-28 | Intuit Inc. | Method and system for granting permissions to parties within an organization |
US11323315B1 (en) | 2017-11-29 | 2022-05-03 | Amazon Technologies, Inc. | Automated host management service |
US10768834B2 (en) * | 2018-04-27 | 2020-09-08 | Netapp, Inc. | Methods for managing group objects with different service level objectives for an application and devices thereof |
US11334543B1 (en) | 2018-04-30 | 2022-05-17 | Splunk Inc. | Scalable bucket merging for a data intake and query system |
US10997208B2 (en) | 2019-02-13 | 2021-05-04 | Sap Se | In-memory database-managed container volume replication |
US11422973B2 (en) | 2019-03-06 | 2022-08-23 | Sap Se | Peer-to-peer delta image dispatch system |
US11403320B2 (en) * | 2019-03-06 | 2022-08-02 | Sap Se | Elastic in-memory database provisioning on database-as-a-service |
WO2020220216A1 (en) | 2019-04-29 | 2020-11-05 | Splunk Inc. | Search time estimate in data intake and query system |
US11715051B1 (en) | 2019-04-30 | 2023-08-01 | Splunk Inc. | Service provider instance recommendations using machine-learned classifications and reconciliation |
US11494380B2 (en) | 2019-10-18 | 2022-11-08 | Splunk Inc. | Management of distributed computing framework components in a data fabric service system |
US11922222B1 (en) | 2020-01-30 | 2024-03-05 | Splunk Inc. | Generating a modified component for a data intake and query system using an isolated execution environment image |
US10938780B1 (en) * | 2020-03-04 | 2021-03-02 | Snowflake Inc. | Secure message exchange between deployments |
US11704313B1 (en) | 2020-10-19 | 2023-07-18 | Splunk Inc. | Parallel branch operation using intermediary nodes |
US12072939B1 (en) | 2021-07-30 | 2024-08-27 | Splunk Inc. | Federated data enrichment objects |
US11698914B1 (en) * | 2021-12-10 | 2023-07-11 | Amazon Technologies, Inc. | Serverless managed bulk import on a global NoSQL database with selective back pressure |
US12093272B1 (en) | 2022-04-29 | 2024-09-17 | Splunk Inc. | Retrieving data identifiers from queue for search of external data system |
US12052146B2 (en) | 2022-12-05 | 2024-07-30 | Bank Of America Corporation | Machine learning-based multitenant server application dependency mapping system |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101124578A (zh) * | 2005-01-14 | 2008-02-13 | 国际商业机器公司 | 包括增值和请求式数据传送的可共享多租户参考数据实用工具和储存库以及运行方法 |
US20120173589A1 (en) * | 2010-12-29 | 2012-07-05 | Yong Sik Kwon | In-Memory Database For Multi-Tenancy |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060235831A1 (en) * | 2005-01-14 | 2006-10-19 | Adinolfi Ronald E | Multi-source multi-tenant entitlement enforcing data repository and method of operation |
US8122055B2 (en) | 2007-04-26 | 2012-02-21 | Microsoft Corporation | Hosted multi-tenant application with per-tenant unshared private databases |
WO2010025554A1 (en) * | 2008-09-05 | 2010-03-11 | Alocet Incorporated | A method and system of synchronizing accounting objects between a client and server |
US8713060B2 (en) | 2009-03-31 | 2014-04-29 | Amazon Technologies, Inc. | Control service for relational data management |
US8930332B2 (en) | 2010-03-12 | 2015-01-06 | Salesforce.Com, Inc. | Method and system for partitioning search indexes |
US8447754B2 (en) | 2010-04-19 | 2013-05-21 | Salesforce.Com, Inc. | Methods and systems for optimizing queries in a multi-tenant store |
US8762340B2 (en) * | 2010-05-14 | 2014-06-24 | Salesforce.Com, Inc. | Methods and systems for backing up a search index in a multi-tenant database environment |
US8386431B2 (en) * | 2010-06-14 | 2013-02-26 | Sap Ag | Method and system for determining database object associated with tenant-independent or tenant-specific data, configured to store data partition, current version of the respective convertor |
US8386501B2 (en) | 2010-10-20 | 2013-02-26 | Microsoft Corporation | Dynamically splitting multi-tenant databases |
US8706772B2 (en) | 2010-12-30 | 2014-04-22 | Sap Ag | Strict tenant isolation in multi-tenant enabled systems |
CN102737020B (zh) | 2011-03-31 | 2014-08-27 | 国际商业机器公司 | 一种初始化多租户数据库的方法和装置 |
US8924542B1 (en) * | 2011-05-31 | 2014-12-30 | Amazon Technologies, Inc. | Methods and apparatus for scalable private services |
US20130081109A1 (en) | 2011-09-23 | 2013-03-28 | Corent Technology, Inc. | Multi-Tenant Agile Database Connector |
-
2013
- 2013-02-28 US US13/780,077 patent/US10706025B2/en active Active
-
2014
- 2014-02-28 CA CA2902955A patent/CA2902955C/en active Active
- 2014-02-28 WO PCT/US2014/019448 patent/WO2014134464A2/en active Application Filing
- 2014-02-28 EP EP14756916.4A patent/EP2962225B1/en active Active
- 2014-02-28 JP JP2015560353A patent/JP6521324B2/ja active Active
- 2014-02-28 CN CN201480018651.1A patent/CN105074702B/zh active Active
-
2018
- 2018-03-07 JP JP2018040535A patent/JP2018088293A/ja not_active Withdrawn
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101124578A (zh) * | 2005-01-14 | 2008-02-13 | 国际商业机器公司 | 包括增值和请求式数据传送的可共享多租户参考数据实用工具和储存库以及运行方法 |
US20120173589A1 (en) * | 2010-12-29 | 2012-07-05 | Yong Sik Kwon | In-Memory Database For Multi-Tenancy |
Non-Patent Citations (1)
Title |
---|
CHONG F.等: "Multi-Tenant Data Architecture", 《THE JOURNAL OF PHARMACOLOGY AND EXPERIMENTAL THERAPEUTICS》 * |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105635465A (zh) * | 2015-12-30 | 2016-06-01 | 中科创达软件股份有限公司 | 数据隔离方法、数据隔离装置及终端 |
CN108475215A (zh) * | 2016-08-03 | 2018-08-31 | 甲骨文国际公司 | 用于在多租户数据库环境中提供租户的动态重新定位的系统和方法 |
CN110036382B (zh) * | 2016-09-30 | 2024-04-02 | 硕动力公司 | 多租户非关系型平台对象 |
CN110036382A (zh) * | 2016-09-30 | 2019-07-19 | 易享信息技术有限公司 | 多租户非关系型平台对象 |
WO2018103356A1 (zh) * | 2016-12-06 | 2018-06-14 | 华为技术有限公司 | 一种数据库服务提供方法及服务器 |
CN108881111B (zh) * | 2017-05-10 | 2022-07-12 | 中兴通讯股份有限公司 | 一种实现多租户系统的方法及装置 |
CN108881111A (zh) * | 2017-05-10 | 2018-11-23 | 中兴通讯股份有限公司 | 一种实现多租户系统的方法及装置 |
CN110799948B (zh) * | 2017-06-27 | 2024-03-26 | 硕动力公司 | 针对时间点恢复数据库的数据集的系统和方法 |
CN110799948A (zh) * | 2017-06-27 | 2020-02-14 | 易享信息技术有限公司 | 针对时间点恢复数据库的数据集的系统和方法 |
CN109947767A (zh) * | 2017-10-26 | 2019-06-28 | Sap欧洲公司 | 多重租赁数据库系统中的系统共享类型 |
CN109947767B (zh) * | 2017-10-26 | 2024-03-08 | Sap欧洲公司 | 多重租赁数据库系统中的系统共享类型 |
CN110709819B (zh) * | 2017-10-27 | 2023-09-19 | 谷歌有限责任公司 | 管理多单租户SaaS服务 |
CN110709819A (zh) * | 2017-10-27 | 2020-01-17 | 谷歌有限责任公司 | 管理多单租户SaaS服务 |
CN109412878A (zh) * | 2019-01-16 | 2019-03-01 | 紫光云数科技有限公司 | 多租户业务接入实现方法、装置及电子设备 |
CN113342775A (zh) * | 2020-03-03 | 2021-09-03 | Sap欧洲公司 | 基于云的计算环境中的集中式多租户即服务 |
CN113342775B (zh) * | 2020-03-03 | 2024-05-28 | Sap欧洲公司 | 基于云的计算环境中的集中式多租户即服务 |
CN113360476A (zh) * | 2021-06-21 | 2021-09-07 | 上海上讯信息技术股份有限公司 | 一种程序数据库虚拟化插拔的方法及设备 |
CN113360476B (zh) * | 2021-06-21 | 2023-11-21 | 上海上讯信息技术股份有限公司 | 一种程序数据库虚拟化插拔的方法及设备 |
Also Published As
Publication number | Publication date |
---|---|
US10706025B2 (en) | 2020-07-07 |
US20140244585A1 (en) | 2014-08-28 |
EP2962225A4 (en) | 2017-01-11 |
EP2962225B1 (en) | 2023-12-20 |
JP6521324B2 (ja) | 2019-05-29 |
WO2014134464A3 (en) | 2014-11-06 |
JP2018088293A (ja) | 2018-06-07 |
CA2902955A1 (en) | 2014-09-04 |
EP2962225A2 (en) | 2016-01-06 |
JP2016514311A (ja) | 2016-05-19 |
CN105074702B (zh) | 2019-01-11 |
CA2902955C (en) | 2019-01-15 |
WO2014134464A2 (en) | 2014-09-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105074702A (zh) | 提供单租户和多租户环境的数据库系统 | |
US12003571B2 (en) | Client-directed placement of remotely-configured service instances | |
US11397744B2 (en) | Systems and methods for data storage and processing | |
JP6732798B2 (ja) | コンピュートクラスタ内のリソースインスタンスグループの自動スケーリング | |
CN109643312B (zh) | 托管查询服务 | |
US10152577B2 (en) | Cross tenant data access | |
US8914469B2 (en) | Negotiating agreements within a cloud computing environment | |
JP5767646B2 (ja) | クラウド・サービス・カタログを用いたサービスの供給 | |
US20190317949A1 (en) | Analytics platform for scalable distributed computations | |
CN108965468A (zh) | 区块链网络服务平台及其链码安装方法、存储介质 | |
US9800650B2 (en) | Resource management for multiple desktop configurations for supporting virtual desktops of different user classes | |
US11411921B2 (en) | Enabling access across private networks for a managed blockchain service | |
CN105531688B (zh) | 提供作为其它服务的资源的服务 | |
US9141637B2 (en) | Predictive data management in a networked computing environment | |
CN104160381A (zh) | 多租户环境中租户特定数据集的管理 | |
CN104246741A (zh) | 编制混合云服务 | |
KR20140103870A (ko) | 클라우드 컴퓨팅 기반의 네트워크 접속 스토리지 관리 | |
Gundu et al. | Hybrid IT and multi cloud an emerging trend and improved performance in cloud computing | |
US20200252475A1 (en) | Providing cloud services associated with unused hardware resources of private cloud providers | |
CN111638941B (zh) | 基于数据资源分布的跨域方舱计算系统及方法 | |
KR20130049791A (ko) | 데이터통합 및 개방형의 클라우드컴퓨팅 전자정부플랫폼시스템 | |
Jakóbczyk et al. | Introducing Oracle Cloud Infrastructure | |
Srivastava | A detailed literature review on cloud computing | |
Kaur | Cloud computing | |
Bai et al. | Cloud Computing (3) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |