提供单租户和多租户环境的数据库系统的制作方法
【专利说明】
【背景技术】
[0001]—些领先的技术组织正投资于出售“软件即服务”的建设技术。此类服务向客户端或订户提供对共享存储(例如,数据库系统)和/或计算资源的访问。在多层电子商务系统内,可以将不同的资源分配给订户和/或来自整个机器的订户应用、CPU、存储器、网络带宽和I/o能力。
[0002]客户端应用与数据库服务器之间的交互通常包括读取操作(只读查询)、写入操作(用来存储数据)和可以使用读取-修改-写入的工作流进行概念化的更新操作。
[0003]实施多租户环境的数据库服务通常跨多个存储节点对数据进行分区,并且并置代表不同的客户一起维护(例如,在相同的存储节点上和/或在相同的数据库实例中)的表。实施单租户环境的数据库服务使其代表不同的客户端维护的表彼此隔离(例如,在不同的存储节点上和/或在不同的数据库实例中维护这些表)。
【附图说明】
[0004]图1是图示用于在多租户环境和单租户环境中创建数据库实例和数据库表的方法的一个实施方案的流程图。
[0005]图2是图示将各种基于Web的服务提供给客户端的系统的一个实施方案的方框图。
[0006]图3是图示被配置成实施基于Web服务的数据存储服务的系统架构的一个实施方案的方框图。
[0007]图4A至图4C是图示根据一个实施方案的Web服务平台的各种组件的方框图。
[0008]图5是图示根据一个实施方案的将各种基于Web的服务提供给客户端的系统的子系统的方框图。
[0009]图6是图示用于在提供多租户环境中的数据库实例和单租户环境中的数据库实例的系统中创建表的方法的一个实施方案的流程图。
[0010]图7是图示用于在单租户环境中的数据库实例中创建和访问表的方法的一个实施方案的流程图。
[0011]图8是图示方法的一个实施方案的流程图,其用于图示在多租户环境中的数据库实例中创建和访问表的方法的一个实施方案。
[0012]图9是图示用于在多租户环境中创建表并且将其移动到单租户环境的方法的一个实施方案的流程图。
[0013]图10是图示用于在单租户环境中创建表并且将其移动到多租户环境的方法的一个实施方案的流程图。
[0014]图11图示计算机系统的一个实施方案,其实施用于在多租户和单租户环境中提供数据库服务的本文中描述的技术中的一个或多个。
[0015]尽管本文描述的技术容许各种修改和替代形式,但是其具体实施方案在附图中通过示例示出并且将在本文中详细地加以描述。然而,应理解附图和其详细描述并不旨在将本公开限于所公开的特定形式,而是相反,其意图是覆盖落在由所附权利要求书定义的本公开的精神和范围内的所有修改、等效物和替代物。
【具体实施方式】
[0016]如上所述,实施多租户环境的数据库服务通常将跨多个存储节点对数据进行分区,并且并置代表不同的客户一起维护(例如,在相同的存储节点上和/或在相同的数据库实例中)的表。多租户数据库服务通常将处理安全、服务质量合规、服务水平协议施行、月艮务请求计量和/或针对不同的客户端共同托管的表的其他表管理活动。这种多租户模型倾向于至少总体上减少客户的数据库服务的成本。然而,如果客户端想要在非常大规模使用的情况下(例如,在客户端需要每秒100万读取和/或每秒100万写入的吞吐量的情况下)接收数据库服务,则单租户模型可能比多租户环境对客户端更符合成本效益。例如,包括支持多租户和提供系统中的安全、合规/施行和/或计量操作所需的功能性可能会限制(例如,减少)系统可能能够为个别存储节点实现的吞吐量的数量。
[0017]在一些实施方案中,将数据库服务提供给客户端的计算系统可以提供可以代表客户端创建、维护和/或管理表的多租户和单租户环境两者。如本文更详细描述的,数据库服务(或基本计算系统)可以在这些类型的环境的任一个或两个中创建数据库实例和表(例如,默认地或根据在创建实例或表的请求中所指定的各种参数值)。在一些实施方案中,在接收和服务针对托管在单租户环境中的表的请求时,系统可以省略将在服务针对托管在多租户环境中的表的请求时执行的管理操作中的至少一些(例如,一些认证和/或计量操作)。例如,由于实施单租户环境的数据库服务可以使其代表不同的客户端维护的表彼此隔离(例如,在不同的存储节点上和/或在不同的数据库实例中维护这些表),所以可能不需要一些或所有这些操作以便安全和有效地管理表以及为针对表的请求服务。
[0018]如本文更详细描述的,在一些实施方案中,表可以由系统自动地(例如,根据观测的、预期的或所需的吞吐量)或响应于从客户端这样做(例如,以便增加吞吐量或降低成本)的显式请求而从单租户环境被移动到多租户环境,或反之亦然。
[0019]在一些实施方案中,数据库服务可以为客户端(其可以包括客户端应用、用户和/或数据库服务订户)提供能力来提供单租户环境中的一个或多个数据库实例并且创建那些实例中的多个表,以及提供多租户环境中的一个或多个数据库实例(并且创建那些实例中的表)。基本系统可以使用不同的基本数据库类型来创建不同类型的环境的那些数据库实例,而针对在两种类型的环境中创建的表向客户端暴露相同的功能性和/或接口。例如,在一个实施方案中,在多租户环境中创建的数据库实例可以实施为非关系数据库,而在单租户环境中创建的数据库实例可以实施为关系数据库,但用于与这些数据库实例和/或托管在其中的表进行交互的应用编程接口和/或图形用户接口可能会向客户端暴露相同的功能性。在一些实施方案中,客户端对于托管在任一个环境中的数据库实例中的表可能会经历相同的可预测性和可扩展性(包括例如自动定标)。
[0020]在图1中通过流程图图示用于在多租户环境和单租户环境中创建数据库实例和数据库表的方法的一个实施方案。如在I1所示,在这个示例中,方法可以包括接收在多租户环境和单租户环境中提供数据库服务的系统中创建数据库实例的请求。在一些实施方案中,请求可以指定环境类型(例如,多租户或单租户)。在其他实施方案中,用于创建请求的数据库实例的环境类型的选择可以基于预先确定的政策,该政策指定在数据库系统中创建的数据库实例的默认或初始选择。如图1中所示,响应于请求,方法可以包括数据库系统(或其模块)创建指定类型的环境中的数据库实例,如在120中。方法还可以包括系统接收创建另一数据库实例的请求,其中这个另一请求指定另一环境类型(例如,多租户或单租户),如在130中。响应于请求,数据库系统(或其模块)可以创建另一类型的环境中的数据库实例,如在140中。
[0021]在一些实施方案中,方法可以包括数据库系统接收创建指定类型的环境中的表的请求以及创建相应的数据库实例中的表,如在150中。方法可以包括数据库系统接收和服务一个或多个请求,所述请求使用指定环境类型的协议来执行将表作为目标的数据库操作(例如,用于存储和/或检索表中的项目的操作),如在160中。在一些实施方案中,方法可以包括数据库系统接收将创建的表移动到另一类型的环境的请求,并且响应于这个请求,系统可以将表移动到另一类型的环境中的数据库实例,如在170中。随后,方法可以包括系统接收和服务使用另一环境类型的协议来执行将表作为目标的数据库操作的一个或多个额外的请求,如在180中。
[0022]在一些实施方案中,创建任一个租户环境类型中的数据库实例可以包括创建存储节点的群集(例如,三个存储节点的群集),并且客户端可以能够请求(或以其他方式启动)创建不同类型的多个数据库实例。在一些实施方案中,客户端可以能够创建和访问单租户环境中的多个表(例如,用于执行各种数据库操作),并且系统可以允许客户端根据需要超过服务请求的预先确定的、预期的或协商的吞吐率(例如,依据每秒读取和写入)。换句话说,在客户端的表被托管在专用于客户端的数据库实例上时,系统可能允许客户端突发(至少在临时的基础上)。相比之下,对于代表客户端在多租户数据库实例中创建的表,系统可能只允许(和/或保证)在创建表时被请求、指定和/或协商的吞吐量的数量。因此,在支持多租户模型和单租户模式的数据库系统中,客户端可以能够在等待时间、可预测性和吞吐量之间做出权衡。
[0023]本文描述的各种技术可以用于本地或远程计算系统,包括通过互联网或通过其他公用或专用网络(诸如虚拟专用云(VPC)环境中的服务的虚拟专用网络和连接)将服务提供给用户(例如,订户)的系统。图2图示根据一个实施方案的将各种基于Web的服务提供给客户端的系统的方框图。在这个示例中,系统200包括一个或多个客户端205。在这个示例中,客户端205可以被配置成经由通信网络215与Web服务器235进行交互。
[0024]如这个示例中所示,Web服务器235可以被配置成处理来自客户端205的针对各种服务(诸如Web服务A (225)、Web服务B (245)和Web服务C (255))的请求,以及将结果返回给客户端205。web服务中的每个可以为客户端提供以下项中的一个或多个:计算资源、数据库服务、数据存储服务(例如,代表客户端在一个或多个表中维护数据)或任何其他类型的服务或共享资源。
[0025]在图3中图示被配置成实施基于Web服务的数据存储服务(诸如本文中所述)的系统架构的一个实施方案。应注意,在给定组件的一个或多个实例可能存在的情况下,下文中引用的该组件可能是单数或复数。然而,任一种形式的使用并不旨在排除另一形式。在各种实施方案中,图3中所示的组件可以直接在计算机硬件内实施、实施可为由计算机硬件(例如,微处理器或计算机系统)直接或间接执行的指令,或使用这些技术的组合来实施。例如,图3的组件可以由包括许多计算节点(或简称节点)的分布式系统来实施,诸如在图11中所示并且在下文中描述的示例计算机系统。在各种实施方案中,给定存储服务系统组件的功能性可以由特定计算节点来实施或可以跨几个计算节点分布。在一些实施方案中,给定计算节点可以实施多于一个的存储服务系统组件的功能性。
[0026]—般来说,存储服务客户端310a_310n可以包含任何类型的客户端,其被配置成经由网络320向Web服务平台330提交web服务请求。例如,给定存储服务客户端310可以包括合适的版本的web浏览器,或插件模块或其他类型的代码模块,其被配置成执行为扩展到由web浏览器提供的执行环境或在所述执行环境内扩展,以对由Web服务平台330提供的服务提供数据库或数据存储服务客户端(例如,客户端应用、用户和/或订户)访问。或者,存储服务客户端310可以包含应用,诸如数据库应用、媒体应用、办公应用或可以利用持久性存储资源的任何其他应用。在一些实施方案中,这种应用可以包括足够的协议支持(例如,对于合适的版本的超文本传送协议(HTTP))以用于产生和处理web服务请求,而没有必要实施对于所有类型的基于web的数据的完整的浏览器支持。即,存储服务客户端310可以是被配置成直接与Web服务平台330进行交互的应用。在各种实施方案中,存储服务客户端310可以被配置成根据表述性状态转移(REST)式web服务架构、基于文件或消息的web服务架构或另一合适的web服务架构产生web服务请求。
[0027]在一些实施方案中,存储服务客户端310可以被配置成以对其他应用透明的方式将对基于web服务的存储的访问提供给那些应用。例如,存储服务客户端310可以被配置成与操作系统或文件系统整合在一起以根据本文所述的存储模型的合适的变体提供存储。然而,操作系统或文件系统可以将不同的存储接口提供给应用,诸如文件、目录和/或文件夹的常规的文件系统层次。在这个实施方案中,应用可能不需要被修改以利用本文所述的存储系统服务模型。替代地,对接到Web服务平台330的细节可以由存储服务客户端310和代表在操作系统环境内执行的应用的操作系统或文件系统来协调。
[0028]存储服务客户端310可以经由网络320将web服务请求传送到Web服务平台330,并且从Web服务平台330接收响应。在各种实施方案中,网络320可以包含在客户端310与平台330之间建立基于web的通信所必需的网络硬件和协议的任何合适的组合。例如,网络320可以一般包含共同实施互联网的各种电信网络和服务提供商。网络320还可以包括专用网络,诸如局域网(LAN)或广域网(WAN),以及公用或专用无线网络。例如,给定客户端310和Web服务平台330两者可以分别提供在具有自己的内部网络的企业内。在这个实施