提供单租户和多租户环境的数据库系统的制作方法_4

文档序号:9355196阅读:来源:国知局
组件可以由包括任何数量的计算节点(或简称节点)的分布式系统来实施。在各种实施方案中,给定组件的功能性可以由特定节点来实施或分布在几个节点上。在一些实施方案中,给定节点可以实施图4A至图4C和/或图5中所示的多于一个的组件的功能性。
[0057]根据不同的实施方案,下文更详细地描述可以由Web服务器(或许可控制子系统或其其他组件)实施的各种技术。一般而言,本文中描述的用于管理代表客户端处理服务请求的任何或所有技术可以由许可控制模块(其是Web服务器的组件)执行和/或实施在所述许可控制模块中。尽管本文中描述的几个示例针对通过互联网提供服务的系统,但是在其他实施方案中,这些技术可以由许可控制模块或另一类型的系统的类似组件执行和/或实施在所述许可控制模块或另一类型的系统的类似组件中,所述另一类型的系统将服务提供给客户端,并且被配置成代表那些客户端接收、接受和/或服务请求。
[0058]如前所述,在一些实施方案中,数据库系统支持多租户模型和单租户模型可以允许客户选择其想要用哪种方式设置表。另外,在一些实施方案中,如果最初在多租户环境中设置表(例如,试图保持低成本),如果客户端以后需要(或想要)所有(或一部分)的表的更高的吞吐量,则表(或其热部)可以被移动到单租户环境,其可以提供更高的吞吐量。例如,当表中的数据被以高速率访问(或预期被以高速率访问)时,客户端可以请求(或系统可以自动执行)创建表(或被以高速率访问的表的一部分)数据的快照,并且将该表(或表的一部分)移动到单租户环境。在这个不例中,如果在未来的某个时刻,表(或被移动的表的部分)不再被以高速率访问,则客户端可以请求(或系统自动执行)将表移回到多租户环境。一般而言,在本文中描述的系统中创建的表可以根据需要(例如,根据工作量、所需的吞吐量、成本、各种系统策略或服务协议,或其他因素)在多租户环境与单租户环境之间的任一方向上被移动。
[0059]应注意,尽管单个客户端可以将表中的数据的一些部分存储在多租户环境中并且将表中的数据的其他部分存储在单租户环境中,但是在一些实施方案中,客户端可能只能够在每个表的基础上在这两个租户模型之间拆分它们的数据。换句话说,客户端可能能够将一些表存储在多租户环境中并且将其他表存储在单租户环境中,但是可能不能够在这两个环境之间拆分表,除非这个表本身首先被分为多个表,每个表将在这些环境模型中的一个下被存储。在一个示例中,如果在单租户环境中的数据库实例的容量为100千兆字节(例如,如果这是可以在单租户模型中被支持的最大尺寸数据库实例)并且客户端希望创建存储120千兆字节的数据,则客户端可以修掉100千兆字节并且将其放置在单租户环境中的表中,并且可以将剩余的20千兆字节放置(或留)在多租户环境中的表中。
[0060]在图6中用流程图图示用于在提供多租户环境中的数据库实例和单租户环境中的数据库实例的系统中创建表的方法的一个实施方案。如在610所示,在这个示例中,方法可以包括在多租户环境和单租户环境中提供数据库服务的系统接收创建表的请求,并且请求可以指定环境类型(例如,多租户或单租户)。如果请求指定应在多租户环境中创建表(示出为从620正退出),则方法可以包括数据库系统在多租户环境的数据库实例中创建表,如在630中。然后,系统可以开始为随后被接收并且将表作为目标的传入的服务请求的至少一部分服务,如在635中。
[0061]如果请求不指定应在多租户环境中创建表(示出为从620负退出),则方法可以包括数据库系统在单租户环境中的数据库实例中创建表,如在640中。然后,系统可以开始为随后被接收并且将表作为目标的传入的服务请求的至少一部分服务,如在645中。如果接收创建表的更多请求(示出为从650正退出),则方法可以包括对于每个额外的请求重复图6中所示的操作(示出为从650至610负退出的反馈)。
[0062]如前所述,数据库系统可以被配置成在为执行将单租户环境中的表作为目标的数据库操作的请求服务时比在为执行将多租户环境中的表作为目标的数据库操作的请求服务时执行不同的操作。在图7中通过流程图图示在单租户环境中的数据库实例中创建和访问表的方法的一个实施方案。如这个示例中所示,方法可以包括在多租户环境和单租户环境中提供数据库服务的系统(例如,从客户端)接收在单租户环境中创建表的请求,如在710中。作为响应,数据库系统可以在单租户环境中创建表,如在720中。在一些实施方案中,创建表可以包括为单租户环境中的数据库实例中的表供应资源(包括例如一个或多个存储节点的部分),并且也可以包括根据被包括在请求中的配置参数值来配置表和/或用作为创建表的请求的部分所接收的表数据填充表。如这个示例中所示,方法可以包括数据库系统接收在单租户环境中的表的请求和/或表的数据库实例信息(例如,将允许客户端建立与在上面托管表的存储节点或节点上的表的直接连接的信息),以及将该信息提供给请求者,如在730中。例如,在一些实施方案中,响应于这个请求,数据库系统可以将表的IP地址返回给客户端。
[0063]如这个示例中所示,方法可以包括请求者(客户端)建立与将表托管在单租户环境中的数据库实例的存储节点的直接连接,如在740中。随后,请求者(客户端)可以将执行将表作为目标的数据库操作的请求定向到在单租户环境中托管表用于服务的数据库实例的存储节点(通过已建立的直接连接),如在750中。如这个示例中所示,用于对托管在单租户环境中的表执行数据库操作的服务请求可以包括省略系统中的认证和/或计量机制中的至少一些(例如,在服务针对托管在多租户环境中的表的请求时可能执行的认证和/或计量机制),如在750中。例如,由于(至少在一些实施方案中)没有代表其他客户端被托管在与托管在单租户环境中的表相同的数据库实例中的表,并且在不同客户端的表之间不共享数据库资源,并且由于代表其将表托管在单租户环境中的客户端可以通过直接连接与表通信,所以可能没有必要执行施行客户端表之间的隔离或施行对访问多租户环境中的表的预定限制的一些认证和/或计量操作。
[0064]在图8中通过流程图图示方法的一个实施方案,其用于图示在多租户环境中的数据库实例中创建和访问表的方法的一个实施方案。如在810所示,在这个示例中,方法可以包括在多租户环境和单租户环境中提供数据库服务的系统接收在多租户环境中创建表的请求。响应于请求,数据库系统可以在多租户环境中创建表,如在820中。在一些实施方案中,创建表可以包括为多租户环境中的数据库实例中的表供应资源(包括例如一个或多个存储节点的部分),并且也可以包括根据被包括在请求中的配置参数值来配置表和/或用作为创建表的请求的部分所接收的表数据填充表。如前所述,代表客户端托管在多租户环境中的表可以被托管在也代表其他客户端托管一个或多个表的数据库实例中。
[0065]如图8中所示,方法可以包括数据库系统接收执行将表作为目标的数据库操作的请求,如在830中。作为响应,系统可以施加一个或多个认证和/或计量机制来确定是否为请求服务,如在840中。如果请求是要被服务(示出为从850正退出),则方法可以包括系统为请求服务,如在860中。否则(示出为从850负退出),系统可以拒绝请求(如在870中)。例如,如果请求不能被验证或如果客户端已超过预先确定的吞吐量限制,则请求可以被拒绝。
[0066]如前所述,在一些情况下,可能需要(例如,从性能或成本观点看)将表从单租户环境移动到多租户环境。在一些实施方案中,将表移动到不同的环境可能包括不仅涉及将基本存储节点移动到不同的环境。例如,为了移动处于多租户环境的表,客户端(或系统)可以访问特定多租户存储节点的一个或多个数据文件(每个节点可以存储表的一部分)、给数据文件拍快照(例如,到键值存储系统)、创建专用数据库实例(例如,单租户环境中的数据库实例)以及将数据文件从快照复制到新创建的专用数据库实例(这可能实际上类似于将表从快照“恢复”到新的数据库实例)。类似地,将表从单租户环境移动到多租户环境可以包括拍摄表的快照(例如,到键值存储系统),且然后将表从快照“恢复”到多租户环境中的数据库实例(其可以包括在多租户环境中创建数据库实例(如果尚不存在))。
[0067]在更具体的示例中,代表客户端托管订单数据的数据库服务可以被配置成将最新的订单数据(例如,每周的数据的价值)存储在单租户数据库实例中的单独的表中,且随后(例如,一旦表中的订单数据超过一周),将该表移动到多租户环境。因为较旧的订单数据与最近的订单数据相比不太可能被访问(因此高吞吐量专用实例可能不是必需的),所以将表存储在多租户环境中可能更具成本效益。在一些实施方案中,更旧的数据(例如,几个月或几年的数据)可以从数据库服务的存储节点完全被删除,此时数据可能被存档。在另一示例中,未预期被频繁访问的数据可以存储在多租户环境中。然而,如果访问数据尖峰,则可以将数据移动到单租户环境至少达吞吐量的需求增加的持续时间。
[0068]如上所述,在一些实施方案中,数据库系统可以被配置成最初在多租户环境或单租户环境中默认地创建所有表,但是随后可以支持将表移动到其他类型的环境。在图9中通过流程图图示用于在多租户环境中创建表并且将其移动到单租户环境的方法的一个实施方案。如在910所示,在这个示例中,方法可以包括在多租户环境和单租户环境中提供数据库服务的系统接收创建表的请求。在这个示例中,响应于请求,数据库系统可以在多租户环境中创建表(例如,默认地),如在920中。如在930所示,方法可以包括数据库系统接收和服务执行将表作为目标的数据库操作的一个或多个请求中的至少一些,这些操作可以包括将一个或多个认证和/或计量机制施加到请求,如上所述。
[0069]在这个示例中,如果(在未来的任何点)确定由多租户环境中的表提供的吞吐量足以处理将表作为目标的请求(示出为从940负退出),则方法可以包括继续将表托管在多租户环境中,以及根据多租户环境的协议来接收和服务针对表的请求。这在图9中通过从940至930负退出的反馈来图示。在另一方面,如果确定将表作为目标的请求需要(或想要)更高的吞吐量(示出为从940正退出),则方法可以包括数据库系统拍摄表的快照、在单租户环境中创建数据库实例(如果不存在)以及将表从快照“恢复”为单租户环境中的数据库实例中的新表,如在950中。例如,在一些实施方案中,数据库系统可以被配置成基于针对表(和/或托管在相同的数据库实例中的其他表)的观测工作量和/或表所经历的观测吞吐量,确定应将表移动到单租户环境以提高性能(例如,根据各种系统策略和/或适用的服务水平协议)。在其他实施方案中,希望通过增加针对表的服务请求的吞吐量来提高其应用的性能的客户端可能会显式地请求将表移动到单租户环境(例如,使用通过使用图形用户接口传达给系统的请求消息,或通过以如由API定义的编程方式调用移动)。如这个示例中所示,继移动之后,方法可以包括数据库系统接收和服务执行将表作为目标的数据库操作的一个或多个额外的请求中的至少一些,但是系统可能省略将施加到托管在多租户环境中的表的一个或多个认证和/或计量机制中的至少一些的应用(如在960中)。
[0070]在图10中通过流程图图示用于在单租户环境中创建表并且将其移动到多租户环境的方法的一个实施方案。如在1010所示,在这个示例中,方法可以包括在多租户环境和单租户环境中提供数据库服务的系统接收创建表的请求。在这个示例中,响应于请求,数据库系统可以在单租户环境中创建表(例如,默认地),如在1020中。如在1030所示,方法可以包括数据库系统接收和服务执行将表作为目标的数据库操作的一个或多个请求中的至少一些,在此期间系统可能省略将一个或多个认证和/或计量机制施加到请求的服务,如上所述。
[0071]在这个示例中,如果(在未来的任何点)确定在将表托管在多租户环境中时提供的更低的吞吐量将足以处理将表作为目标的请求(示出为从1040正退出),则方法可以包括数据库系统拍摄表的快照、在多租户环境中创建数据库实例(如果不存在)以及将表从快照“恢复”为多租户环境中的数据库实例中的新表,如在1050中。例如,在一些实施方案中,数据库系统可以被配置成基于针对表的观测的、预期的和/或所需的工作量和/或表所经历的观测吞吐量,确定应将表移动到多租户环境以降低成本(例如,根据各种系统策略和/或适用的服务水平协议)。在其他实施方案中,希望通过接受用于针对表的服务请求的减小的吞吐量来降低管理表的成本客户端可能会显式地请求将表移动到多租户环境(例如,使用通过使用图形用户接口传达给系统的请求消息,或通过以如由API定义的编程方式调用移动)。
当前第4页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1