CN118170528A - 租户级资源隔离的工作负载类 - Google Patents

租户级资源隔离的工作负载类 Download PDF

Info

Publication number
CN118170528A
CN118170528A CN202310731329.4A CN202310731329A CN118170528A CN 118170528 A CN118170528 A CN 118170528A CN 202310731329 A CN202310731329 A CN 202310731329A CN 118170528 A CN118170528 A CN 118170528A
Authority
CN
China
Prior art keywords
tenant
database
session
workload
class
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.)
Pending
Application number
CN202310731329.4A
Other languages
English (en)
Inventor
R·卡尔
N·梅
J·崔
H·郑
T·朔伊尔
R·乔伊
P·伏尔克
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.)
SAP SE
Original Assignee
SAP SE
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 SAP SE filed Critical SAP SE
Publication of CN118170528A publication Critical patent/CN118170528A/zh
Pending legal-status Critical Current

Links

Classifications

    • 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/5009Determining service level performance parameters or violations of service level contracts, e.g. violations of agreed response time or mean time between failures [MTBF]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • H04L63/1416Event detection, e.g. attack signature detection
    • 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/21Design, administration or maintenance of databases
    • G06F16/217Database tuning
    • 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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/504Resource capping
    • 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/0803Configuration setting
    • H04L41/0806Configuration setting for initial configuration or provisioning, e.g. plug-and-play

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

***和方法包括建立与第一数据库用户的第一数据库会话;确定与该第一数据库会话相关联的第一会话变量值,该第一会话变量值包括第一租户值;基于第一租户值和零个或多个其他第一会话变量值确定第一工作负载类,该第一工作负载类包括指定第一资源消耗限制的第一参数值;以及,基于第一参数值管理第一数据库会话的资源消耗。

Description

租户级资源隔离的工作负载类
背景技术
多租户是一种软件架构模式,其有助于在截然不同的用户组之间共享计算资源。例如,单个多租户应用程序(例如,软件即服务(SaaS)应用程序)可以在单个软件实例中为多个终端用户组(即客户)提供服务。与为每个客户提供一个软件实例所需的计算资源足迹相比,这样的软件实例使用的计算资源足迹要小得多。因此,多租户可以提供可观的成本效益。
多租户架构中每个客户的数据通常被映射到底层数据层中的相应租户。该映射允许在数据层内对数据进行逻辑分离,并促进多租户应用程序对其进行访问。在一些多租户架构中,每个租户的数据由在同一计算***(例如,机架服务器)中执行的不同数据库实例进行管理。在一些多租户架构中,每个租户的数据由在同一计算***(例如,机架服务器)中执行的不同数据库实例进行管理。这些架构提供了租户数据的出色分离,但在某些情况下要求每个租户都有一个完整的数据库实例可能会成本效率低下。例如,最小的数据库实例可能会消耗32Gb的内存,这可能表示比小型租户应该需要的计算资源要多得多。
其他多租户架构使用单个数据库实例来管理多个租户的数据。由于此类架构中的数据在物理上并未分离,因此多租户应用程序负责以租户感知的方式跟踪和管理数据。例如,数据库***可以为所有租户使用单个实例的一个模式,其中每个租户的数据通过区分列进行分区。多租户应用程序使用区分列的值来识别属于特定租户的数据。在另一个示例中,多租户应用程序将专用模式分配给每个租户。在任何一种情况下,数据库***都不知道多个租户的存在,并就好像以与单租户应用程序访问相同的方式运行。
使用单个数据库实例来管理多个租户的数据的多租户架构允许在租户之间共享资源(例如,处理器周期、内存),同时保持租户特定的数据隔离。共享相同的资源可能会导致“嘈杂邻居”效应,其中一个租户或几个租户使用大部分可用资源并导致其他租户无法预测的性能下降。需要用于有效地管理数据库租户之间的资源共享的***。
附图说明
图1是根据一些实施例的提供本地多租户和租户级资源隔离的数据库***的框图。
图2是根据一些实施例的工作负载类映射的表格表示。
图3示出了根据一些实施例的工作负载类的参数值。
图4是根据一些实施例的工作负载类映射的表格表示。
图5示出了根据一些实施例的工作负载类的层次结构的参数值。
图6是根据一些实施例确定租户特定工作负载类的过程的流程图。
图7是示出根据一些实施例确定租户特定数据库会话的一个或多个工作负载类的框图。
图8根据一些实施例的数据库用户到租户映射的表格表示。
图9是根据一些实施例确定租户特定工作负载类的过程的流程图。
图10是示出根据一些实施例确定租户特定数据库会话的一个或多个工作负载类的框图。
图11是示出根据一些实施例确定租户特定数据库会话的一个或多个工作负载类的框图。
图12是根据一些实施例管理租户特定资源限制的架构的框图。
图13是根据一些实施例的用于监视租户资源消耗的视图的表格表示。
图14是根据一些实施例管理租户特定资源限制的过程的流程图。
图15是根据一些实施例的基于云的数据库架构的框图。
具体实施方式
提供以下描述以使本领域的任何人能够编写和使用所描述的实施例。然而,各种修改对于本领域的技术人员来说将是显而易见的。
实施例为每个租户提供可配置和可执行的资源限制。这些特征确保每个租户的可预测性能并解决“嘈杂邻居”效应。一些实施例允许定义语句特定的资源限制和适用于与租户关联的所有已执行语句的全局资源限制。
工作负载类定义数据库客户端可用的资源。工作负载类可以为各种资源(例如,线程、内存、网络I/O、磁盘I/O、磁盘大小)指定限制。工作负载映射将不同的会话变量值集映射到相应的工作负载类。当数据库客户端连接到数据库时,工作负载映射用于根据连接的会话变量值确定工作负载类。然后执行数据库客户端提交的所有语句,以符合确定的工作负载类的资源限制。
根据一些实施例,标识租户的会话变量(例如,“TENANT_NAME”)用于确定数据库会话的工作负载类。租户映射到的工作负载类定义了代表租户执行的所有语句的资源限制。实施例还可以定义工作负载类的层次结构,包括继承由父工作负载类指定的资源限制的子工作负载类。因此,父工作负载类可以映射到租户并为租户定义总资源限制(例如,total_statement_memory_limit、total_statement_thread_limit),而父工作负载类的子工作负载类可以添加相应的语句特定的资源限制(例如,statement_memory_limit、statement_thread_limit)和/或其他语句特定的资源限制(例如,查询超时、优先级)以在租户下执行的每个语句上强制执行。
根据一些实施例,本地多租户数据库***包括数据库级租户对象(例如,数据库目录对象),其有助于在应用层上实现多租户架构。租户对象是数据的逻辑集合以及已分配给租户的元数据工件。租户可以作为第一类的数据库对象公开(即,具有独立于任何其他数据库实体的身份)。
分配给租户对象(即,特定租户)的特定实例化的数据库工件可以包括但不限于一个或多个模式、表和分区的数据,以及定义租户表、虚拟表、远程源和数据库用户的视图的元数据。有利的是,租户的生命周期可以与其分配的数据库工件的生命周期分离。然而,在一些实施例中,从数据库实例中删除租户会导致分配给它的工件的丢弃,只要那些工件没有被分配给数据库实例的另一个租户。
本地多租户数据库***可以包括一个或多个数据库实例、所有租户的数据以及用于处理数据的引擎。单一***还包括所有租户数据的单一持久性。通过允许多个独立的租户或客户托管在单个实例上并共享计算资源,将新租户部署到数据库实例的边际成本几乎为零。后者是以降低不同租户之间的隔离为代价的。此外,实施例通过具有比提供单独的数据库实例所需的粒度更细的粒度来实现按使用付费模型。
图1是根据一些实施例的***100的框图。可以使用计算硬件和/或已知或变得已知的处理器可执行程序代码的任何适当组合来实现***100和本文描述的所有其他架构的所示元件。这样的组合可以包括一个或多个可编程处理器(微处理器、中央处理单元、微处理器内核、执行线程)、一个或多个非暂时性电子存储介质和处理器可执行程序代码。在一些实施例中,***100的两个或更多个元件由单个计算设备实现,和/或***100的两个或更多个元件位于同一地点。***100的一个或多个元件可以实现为使用基于云的资源的云服务(例如,软件即服务、平台即服务)和/或根据需求、需要、价格和/或任何其他指标来弹性分配计算资源的其他***。
根据一些实施例,数据库实例110提供本地多租户。数据库实例110可以在任何合适的硬件和软件组合上提供,包括一个或多个计算机服务器或虚拟机。在一些实施例中,数据库实例110包括在软件容器内执行的容器化应用程序。此类容器可由本领域已知的集群(例如,Kubernetes集群)的一个或多个节点来实现。
数据库实例110包括用于基于存储在易失性(例如,随机存取)存储器115中的数据和元数据响应客户端查询的执行引擎111。存储器115包括分配给数据库实例110的所有租户的数据1151和元数据1152。数据1151可以包括行存储表、列存储表和***表。如本领域已知的,行存储表的每一行的数据存储在存储器115的连续存储位置中,并且列存储表的列的数据存储在存储器115的连续存储位置中。***表可以存储定义数据库目录、用户等的元数据。存储器115还存储程序代码和堆栈,以及临时计算和数据库管理所需的内存。
***100的每个租户将被描述为对应于客户,其中客户可以是公司、部门、工作组或任何其他用户组。租户可以对应于给定客户的特定云资源/服务订阅。在这方面,客户可能与不止一个订阅相关联,因此可能与不止一个租户相关联。
存储器115包括租户“A”的租户实例1153和租户“B”的租户实例1154。每个租户实例1153和1154是在元数据1152中定义的租户对象的实例。租户实例1153和1154可以存储在数据1151内,但为了便于理解而与其分开描绘。
每个租户实例1153和1154是数据库工件的集合。分配给每个租户实例1153和1154的工件存储在数据1151和元数据1152中。因此,分配给租户实例1153的工件A 1155和分配给租户实例1154的工件B 1156使用虚线表示,以表示对数据1151和元数据1152的数据库工件的引用。分配给租户实例的数据库工件可以包括,例如,一个或多个模式、表和分区。数据库工件还可能包括定义租户表、虚拟表和远程源上的视图的元数据。
存储器115还包括类映射1157和工作负载类1158。类映射1157中的每一个将一个或多个会话变量值的集合与工作负载类1158相关联。类映射1157中的每一个的会话变量值可以包括例如,会话变量Tenant、Application、ApplicationUser和/或ApplicationComponent的值。可以使用本领域已知的其他会话变量。
类映射1157可用于确定与特定会话变量值相关联的给定数据库会话的工作负载类。如下所述,数据库会话的资源消耗将基于所确定的工作负载类被监视和控制。在一些实施例中,识别映射1157,其包括匹配当前数据库会话的会话变量值的最大数量的会话变量值。然后将指定映射的工作负载类确定为数据库会话的工作负载类。
图2示出了根据一些实施例的类映射200的表格表示。类映射200包括两行,每一行代表一个类映射。两个类映射中的每一个都指定单个会话变量(即租户)的值。实施例不限于此。第一行类映射200将与会话变量Tenant=Tenant_1关联的数据库会话映射到工作负载类“1”,而第二行类映射200将与会话变量Tenant=Tenant_2关联的数据库会话映射到工作负载类“2”。
每个工作负载类1158指定与资源消耗有关的参数。图3包括根据一些实施例的工作负载类300和工作负载类350的表示。工作负载类300对应于映射200的类1,工作负载类350对应于映射200的类2。
工作负载类300和350中的每一个包括与数据库会话的资源消耗相关联的参数、值对。TotalStatementMemoryLimit和TotalStatementConcurrencyLimit参数的值将针对租户的数据库会话的所有同时执行的语句强制执行。正如下面将进一步描述的,工作负载类300和350是“父”工作负载类,因为它们只定义聚合,而不是每个语句的限制。父工作负载类也可以定义语句优先级。可以使用本领域已知的其他参数,包括但不限于语句特定的参数,例如StatementThreadLimit、StatementMemoryLimit、StatementTimeout和WriteTransactionLifetime。
如果如上所述为数据库会话确定工作负载类1158,则数据库实例110执行与数据库会话相关联的语句,使得由此消耗的资源符合工作负载类1158的参数。在一个示例中,所确定的工作负载类1158的参数用于设置会话上下文中或会话语句的语句上下文中相应的资源相关变量的值。资源管理器112可以读取这些与资源相关的变量并管理执行引擎111以遵守这些变量,这将在下面更详细地描述。
例如,假设数据库实例的数据库会话的会话上下文包括会话变量Tenant=Tenantl。数据库实例110的会话层可以使用映射200来基于该会话上下文确定工作负载类1并将工作负载类300的参数值添加到会话上下文。资源管理器112从会话上下文中读取参数值并基于参数值管理与该数据库会话相关联的所有语句的执行。具体地,资源管理器112可以确保数据库会话的并发执行语句消耗的总内存不超过30Gb,并且所有并发执行的语句总共不使用超过八个线程。此外,数据库会话的每个语句都被分配了执行优先级3(例如,分配给与优先级3关联的作业队列)。
在另一个示例中,数据库实例的数据库会话的会话上下文包括会话变量Tenant=Tenant2。数据库实例110的会话层因此可以使用映射200来基于该会话上下文确定工作负载类2,以将工作负载类350的参数值添加到会话上下文。资源管理器112读取这些参数值并进行操作以确保数据库会话并发执行的语句消耗的总内存不超过50Gb,所有并发执行的语句使用的线程不超过十二个,并且数据库会话的每条语句都被分配了执行优先级2。
图4示出了根据一些实施例的类映射400。类映射400如上所述将工作负载类1和2映射到会话变量值并且还包括到工作负载类1a和1b的映射。类1a和1b是类1的后代类,在本例中,映射到与类1相同的会话变量值以及其他会话变量值。当使用类映射400基于数据库会话的会话变量值来确定工作负载类时,所确定的工作负载类是与匹配数据库会话的会话变量的最多会话变量值相关联的类。在本示例中,如果数据库会话的会话变量值包括Tenant=Tenant_1并且没有ApplicationComponentName值,则确定工作负载类1。如果数据库会话的会话变量值包括Tenant=Tenant_1和ApplicationComponentName=SCM,则确定工作负载类1a。如果数据库会话的会话变量值包括Tenant=Tenant_1和ApplicationComponentName=CRM,则确定工作负载类1b。一些会话变量可以被分配比其他会话变量更高的优先级,以便在确定工作负载类期间解决平局(tie)。
根据一些实施例,子工作负载类继承其祖先工作负载类的与总语句限制相关的那些参数值。图5示出了分别对应于映射400的工作负载类1、1a和1b的工作负载类510、512和514的层次结构500。工作负载类512和514的斜体参数、值对描述了从工作负载类510继承的参数、值对。
在一些实施例中,确定给定数据库会话的工作负载类512的会话层将工作负载类512和工作负载类510的参数值添加到数据库会话的会话上下文。上述安排特别适用于建立租户范围内的总资源限制(例如,在父工作负载类中)和租户内的语句特定资源限制(例如,在子工作负载类中)。实施例不限于诸如层次结构500的两级层次结构。例如,工作负载类512的子工作负载类可以为在会话上下文中定义的特定应用程序用户建立资源限制。
返回图1,数据库实例110还包括持久性116,用于持久保存所有分配租户的数据1151和元数据1152。持久性116可以使用已知或变得已知的任何持久性数据存储***来实现,包括但不限于分布式数据存储***。本领域已知的,持久性116可以保留事务日志和其他数据库工件。
数据库实例110由此提供包括数据库实例的所有租户的数据和元数据的单个数据服务器、用于处理数据的引擎、以及数据和元数据的单个持久性。在这样一个数据库实例上托管多个独立租户有助于以接近零的边际成本共享计算资源。
应用程序120和125可以包括SaaS应用程序,但实施例不限于此。应用程序120和125可以在相同或不同的一个或多个计算机服务器或虚拟机上提供,并且可以包括在软件容器内执行的容器化应用程序。应用程序120和125可以基于分别从客户130和140的用户135和145接收到的输入向数据库实例110发出查询(例如,SQL、MDX)。
假设客户A 130对应于数据库实例110的租户A 1153,并且客户B140对应于数据库实例110的租户B 1154。在接收到来自客户A 130的用户135的输入后,应用程序120可以向数据库实例110发送一个查询,该查询指示与租户A 1153的关联。类似地,在接收到来自客户B 140的用户145的输入时,应用程序125可以向数据库实例110发送一个查询以及该查询与租户B 1154相关联的指示。在接收到查询后,数据库实例110使用执行引擎111、资源管理器112和分配给与查询相关联的租户的工件来处理查询。
图6包括根据一些实施例实现租户级资源隔离的过程600的流程图。过程600和本文提及的所有其他过程可以包含在可由一个或多个处理单元(例如,处理器、处理器内核、处理器线程)执行并从一个或多个非暂时性计算机可读介质读取,例如,硬盘驱动器、易失性或非易失性随机存取存储器、DVD-ROM、闪存驱动器和磁带,然后以压缩、未编译和/或加密格式存储。在一些实施例中,硬连线电路可以用来代替或结合程序代码来实现根据一些实施例的过程。因此,实施例不限于硬件和软件的任何特定组合。
假定在过程600之前在数据库实例中提供租户。根据一些实施例,租户的提供包括在租户管理器用户帐户下创建租户对象实例(即,租户)。租户对象实例与表示租户的租户ID相关联。通常,随后会创建一个数据库用户帐户并将其与租户相关联。多个数据库用户帐户可能与单个租户相关联。
数据库工件被分配给租户。一些实施例可以使用部署基础设施来定义数据库工件以分配给租户。部署基础设施可以提供声明性方法来使用容器定义数据库对象(例如,作为设计时工件)。例如,服务代理可以创建一个容器,该容器对应于数据库模式和附加元数据(例如,用户、角色、特权),然后可以将其分配给租户实例。这些容器可以通过模式级访问权限相互隔离。
在S610中,与数据库用户建立认证的数据库会话。数据库用户可以包括应用程序、个人或任何其他能够在数据库实例中定义的数据库用户帐户下向数据库进行身份验证的实体。可以使用任何合适的身份验证协议(例如,多因素身份验证)执行身份验证。
图7示出了用于描述过程600的实现的架构700。最初,假定用户操作桌面应用程序(其可以包括在Web浏览器内执行的Web应用程序)以在数据库用户帐户db_userA下与数据库实例710建立经验证的数据库会话。
接下来,在S620中,确定与数据库会话相关联的会话变量值。在一些示例中,包括零个或多个会话变量的客户端上下文在数据库会话的建立期间被传递到数据库实例710。会话变量值可以包括但不限于Application、ApplicationUser和/或ApplicationComponentName的值。
在S630中,确定与数据库用户相关联的租户。如上所述,一个或多个数据库用户可以被分配给数据库实例710内的租户。数据库用户到租户的分配可以存储在数据库实例710的租户元数据712中。
图8是根据一些实施例的租户元数据800的一部分的表格表示。租户元数据800将租户映射到一个或多个数据库用户名。因此,在S630中,用户到租户映射器711使用元数据712来确定当前数据库会话的数据库用户映射到的租户。在本示例中,用户到租户映射器711基于元数据712确定租户Tenant_1。用户到租户映射器711可以包括数据库实例710的会话层的组件。
用户到租户映射器711在S640中将确定的租户添加到会话上下文。例如,如图8所示,用户到租户映射器711可以将具有值Tenant_1的会话变量Tenant添加到会话上下文713。使用用户到租户映射器可能是有利的,因为用户是针对数据库进行认证的,因此是可信的信息。与大多数会话变量一样,tenant_name会话变量可能不会受到如此保护。因此,恶意用户可以为tenant_name会话变量设置任何所需的值。
接下来,在S650中,确定与当前会话上下文的最大数量的会话变量值相关联的工作负载类。该确定可以由会话变量到工作负载类映射器715基于如上所述的类映射716来执行,其中一个或多个工作负载类717中的每一个与相应的一组会话变量值相关联。图7的会话工作负载类718是根据本示例确定的工作负载等级。
S660包括确定所确定的工作负载类是否与任何祖先工作负载类相关联,如上文关于工作负载类层次结构500所描述的。如果不相关联,则在S670中,数据库会话中使用的计算资源基于所确定的工作负载类的参数值进行管理。参数值可以指定会话特定的资源限制、语句特定的资源限制或其他已知或变得已知的资源限制。如果所确定的工作负载类与任何祖先工作负载类相关联,则在S680中基于所确定的工作负载类的参数值和祖先工作负载类的参数值来管理数据库会话中使用的计算资源。根据一些实施例,参数值在S670或S680中被添加到会话上下文以帮助计算资源的预期管理。
图7还描绘了移动应用程序730,其在不同的数据库用户名(即,db_userB)下建立与数据库实例710的认证会话。过程600可以响应于如上所述的该认证而被执行,以便基于租户元数据712确定数据库用户db_userB对应于Tenant_2,并且基于会话上下文714、类映射716和工作负载类717的会话变量值确定会话工作负载类719。
图9是根据一些实施例提供租户特定资源管理的过程900的流程图。如上所述,在S910中,与数据库用户建立认证的数据库会话。数据库用户可以包括应用程序、个人或任何其他实体,并且身份验证与数据库实例中定义的数据库用户帐户相关联。
图10示出了用于描述过程900的实现的架构1000。多租户应用程序1020可以包括SaaS应用程序,但实施例不限于此。多租户应用程序1020可以在一个或多个计算机服务器或虚拟机上提供并且可以包括在软件容器内执行的容器化应用程序。多租户应用程序1020基于分别从客户1030和1040的用户1035和1045接收到的输入向数据库实例1010发出查询(例如,SQL、MDX)。
假设客户A 1030对应于数据库实例1010的第一租户(即,Tenant_1)并且客户B1040对应于数据库实例1010的第二租户(即,Tenant_2)。多租户应用1020能够确定对应于接收到输入的用户的租户。例如,每个用户可以使用租户特定的订阅登录到多租户应用程序1020。多租户应用程序1020因此将用户与用户已经登录的订阅的租户相关联。在另一个示例中,用户和多租户应用程序1020之间的通信可以包括租户识别令牌。
多租户应用程序1020还知道哪些租户被放置在哪些数据库实例上。在这点上,多租户应用程序1020可以请求提供数据库实例并在提供的数据库实例上创建租户。在接收到来自与给定租户相关联的用户的输入后,多租户应用程序1020能够确定包括给定租户的数据库实例并且相应的查询因此应当被定向到该数据库实例。
在接收到来自客户A 1030的用户1035的输入后,多租户应用程序1020可以与数据库实例1010通信以与其建立经验证的会话,例如在数据库用户帐户dbuser_A下。类似地,在接收到来自客户B 1040的用户1045的输入后,多租户应用程序1020可以与数据库实例1010通信以在数据库用户帐户dbuser_B下建立单独的认证会话。
在S920中,从客户端上下文确定与数据库会话相关联的会话变量值。例如,多租户应用程序1020可以在建立数据库会话期间将包括零个或多个会话变量的客户端上下文传递给数据库实例1010。不同于图7的示例,多租户应用程序1020传递的客户端上下文的会话变量值包括租户会话变量的值。根据一些实施例,会话上下文1013包括在客户端上下文中从多租户应用程序1020接收的会话变量Tenant=Tenant_1。由于租户会话变量的值是直接从多租户应用程序1020接收的,数据库实例1010的会话层不需要使用数据库用户到租户的映射来确定数据库会话的租户。与上面讨论的实施例相反,该实施例需要可信和安全的方式来设置tenant_name会话变量。
接下来,在S930中,确定与当前会话上下文的最大数量的会话变量值相关联的工作负载类。类映射1016可以将一个或多个工作负载类1017中的每一个与相应的一组会话变量值相关联。因此,在S930中的确定可以由会话变量到工作负载类映射器1015基于类映射1016执行。在本示例中,会话工作负载类1018在S930中确定。在与客户B 1040相关联的数据库会话的会话上下文1014的情况下,可以基于会话上下文1014、类映射1016和工作负载类1017的会话变量值来确定会话工作负载类1019。
在S940中,确定所确定的工作负载类的任何祖先工作负载类是否存在。如果不存在,则在S950中基于所确定的工作负载类的参数值来管理数据库会话中使用的计算资源。如上所述,参数值可以指定会话特定的资源限制、语句特定的资源限制或已知或变得已知的其他资源限制。如果确定的工作负载类与任何祖先工作负载类相关联,则在S960中基于所确定的工作负载类的参数值和每个祖先工作负载类的参数值来管理数据库会话中使用的计算资源。可以在S950或S960中将参数值添加到会话上下文以促进计算资源的管理。
图11是图10的架构1000的框图。图10中多租户应用程序1120包括客户关系管理(CRM)组件1122和供应链管理(SCM)组件1124。假设客户A 1030的用户1035操作CRM组件1122以从数据库实例1010请求数据,而客户B 1040的用户操作SCM组件1124以从数据库实例1010请求数据。
结果,对于两个数据库会话中的每一个,多租户应用程序1120将客户端上下文传递给数据库实例1010,其包括会话变量Tenant和ApplicationComponentName的会话变量值。这些会话变量值被添加到数据库会话的相应会话上下文中。如图11所示,对应于与客户A 1030的用户1035的数据库会话的会话上下文1113包括会话变量值Tenant=Tenant_1和ApplicationComponentName(即,App Comp)=CRM。会话上下文1114对应于与客户B 1040的用户1045的数据库会话,并且包括会话变量值Tenant=Tenant_2和ApplicationComponentName(即,App Comp)=SCM。
会话工作负载类1118和1119分别基于上下文1113和1114、类映射1016和工作负载类1017来确定。取决于会话上下文是否包括ApplicationComponentName=CRM或ApplicationComponentName=SCM,类映射1016可以将会话上下文的相同租户会话变量值映射到不同的工作负载类1017,如图4所示。
图12是架构100的框图,示出了图1中未示出的数据库实例110的一些组件。尤其是图12的数据库实例110包括作业调度器1211、内存管理器1212、资源使用1213和资源限制1214。数据库实例110的这些组件可以在一些实施例中用于管理与工作负载类相关联的资源限制。
资源限制1214指定资源限制的参数值以应用于由数据库实例110托管的数据库会话。因此,资源限制1214可以包括由如上所述的工作负载类指定的资源相关会话变量值。对于每个正在执行的数据库会话,资源限制1214可以指示并发限制、内存限制(总和/或每个语句)、优先级等。
资源使用1213记录数据库实例110内的当前资源使用。根据一些实施例,资源使用1213可以按租户跟踪资源使用数据,以便于执行租户级资源限制。图13是资源使用数据1213的示例的部分1300的表格表示。如图所示,部分1300为数据库实例的每个租户指定为与该租户相关联的数据库会话确定的工作负载类、当前用于执行与该租户关联的语句的内存总量、以及用于执行与租户关联的语句的执行线程总数。尽管部分1300反映了租户和工作负载类之间的一对一关系,但应该注意,与给定租户相关联的数据库会话可以根据数据库会话的其他会话变量值映射到多个工作负载类之一。
为了执行从诸如应用程序A 120和应用程序B 125的客户端接收的语句,执行引擎111向作业调度器1211呈现相关联的任务(即,作业)。作业调度器1211将任务放置在作业队列和排队的任务上,由数据库实例110的线程池执行。根据一些实施例,作业调度器1211基于资源限制1214和资源使用1213的数据将任务放置在作业队列上。
例如,假定特定数据库会话与包括总语句并发限制的工作负载类相关联。如果作业调度器1211接收到数据库会话的新语句的任务,并且作业调度器1211基于资源使用1213确定任务的执行将导致超过总语句并发限制,则作业调度器1211等待以将任务添加到作业队列,直到至少一个当前正在执行的语句完成。
在另一个示例中,数据库会话与包括语句线程限制的工作负载类相关联。如果作业调度器1211基于资源使用1213确定执行与语句关联的任务将导致超过语句的线程限制,则作业调度器1211等待以将任务添加到作业队列,直到至少一个与该语句关联的线程被释放。
作业调度器1211还可以考虑在资源限制1214中指定的优先级值。作业调度器1211在其上放置任务的作业队列可以与不同的相应执行优先级相关联。因此,当将数据库会话的语句的任务放置在作业队列上时,作业调度器1211可以在资源限制1214中确定与数据库会话相关联的语句优先级值并且将任务放置在对应的作业队列上。
语句执行消耗数据库实例110的内存。执行引擎111可以从内存管理器1212请求内存以用于语句执行。内存管理器1212如本领域已知的那样分配请求的存储器作为响应。然而,根据一些实施例,内存管理器1212首先确定所请求内存的分配是否会违反资源限制1214中指定的数据库会话的资源限制。这样的资源限制可以包括对给定租户的并发语句所消耗的总内存的限制(如部分1300所示)和每个语句的内存限制。在所请求的存储器分配将违反适用的资源限制的情况下,内存管理器1212可以向存储器请求者(例如,执行引擎111)返回错误。
图14是根据一些实施例管理租户特定资源限制的过程1400的流程图。过程1400开始于S1410,在该处接收用于执行的语句。该语句从数据库客户端接收并与数据库会话相关联。将假定与数据库会话相关联的工作负载类已经如上所述预先确定。因此,所确定的工作负载类(及其任何祖先工作负载类)的资源限制与S1410之前的数据库会话相关联,并且可以存储在例如资源限制1214中。
在S1420确定与数据库会话相关联的总资源限制。在一个示例中,作业调度器1211和内存管理器1212从资源限制1214读取数据库会话的总资源限制。这些总资源限制可以应用于数据库会话的所有同时执行的语句。假设数据库会话与单个租户相关联,则总资源限制可被视为租户级资源限制。
在S1430中,确定与数据库会话相关联的每语句资源限制。每语句资源限制也可以根据资源限制1214或会话上下文来确定,并且可以包括每语句存储器限制和/或每语句线程限制。每个语句可以与语句上下文相关联,包括指定适用的语句级限制的上下文变量值。如上所述,数据库会话可以映射到定义每语句资源限制的工作负载类并且是指定租户级资源限制的工作负载类的后代。
在S1440中,确定数据库会话当前消耗的总资源。如上所述,可以在资源使用1213内跟踪这些总数。在S1440中还确定执行在S1410接收到的语句所需的资源。根据当前消耗的总资源、S1420中确定的总资源限制以及语句执行所需的资源,确定语句是否可以按照总资源限制执行。例如,可以确定总资源限制与当前消耗的总资源之间的差值是否大于执行该语句所需的资源。
在S1450中的确定可以由数据库实例的不同组件根据所考虑的资源类型来执行。例如,作业调度器1211可以评估对与语句并发性和线程相关的总限制和每个语句限制的遵从性,而内存管理器1212可以评估对与内存相关的总限制和每个语句限制的遵从性。
如果确定语句可以按照与数据库会话相关联的资源限制来执行,则流程进行到S1460。在S1460中,数据库实例执行语句,例如使用作业调度器1211和内存管理器1212。如果在S1450中确定语句不能按照与数据库会话相关联的资源限制来执行,则在S1470中返回错误。
在一些实施例中,仅当不能按照与存储器相关的资源限制来执行语句时才返回错误。如果该语句不能按照并发或线程相关的资源限制执行,则流程可能会在S1450暂停,直到确定(由于语句执行完成或释放线程)该语句可以按照符合执行并发或线程相关的资源限制。此时,流程进行到S1460以执行该语句。
图15示出了根据一些实施例的基于云的数据库部署1500。用户设备1510可以包括可由用户操作以访问基于云的应用程序的任何合适的计算***。用户设备1510可以存储和执行网页浏览器的程序代码以访问与这种应用程序的登录页面相关联的统一资源定位符(URL)。网页浏览器可以下载并执行应用程序的客户端组件的程序代码,如本领域已知的那样。
根据一些实施例,应用服务器节点1520、1522和1524可以托管应用。该应用程序可以包括多租户应用程序。因此,数据库节点1530、1532和1534可以托管多租户应用程序可访问的一个或多个数据库实例并提供如本文所述的本机多租户。部署1500的每个节点可以包括单独的物理机或虚拟机。此类虚拟机可由提供自助服务和即时供应、自动缩放、安全性、合规性和身份管理功能的云提供商分配。
上述附图表示用于描述根据一些实施例的过程的逻辑架构,并且实际实现可以包括以其他方式布置的更多或不同的组件。可以结合其他实施例使用其他拓扑。此外,本文描述的每个组件或设备可以由经由任意数量的其他公共和/或专用网络进行通信的任意数量的设备来实现。两个或多个这样的计算设备可以彼此远离并且可以经由任何已知的网络方式和/或专用连接彼此通信。每个组件或设备可以包括任何数量的硬件和/或软件元件,适合于提供这里描述的功能以及任何其他功能。例如,任何计算设备可包括可编程处理器以执行程序代码,使得计算设备如本文所述操作。
本文讨论的所有***和过程可以体现在存储在一个或多个非暂时性计算机可读介质上的程序代码中。这样的介质可以包括例如DVD-ROM、闪存驱动器、磁带和固态随机存取存储器(RAM)或只读存储器(ROM)存储单元。因此,实施例不限于硬件和软件的任何特定组合。
本文描述为相互通信的元件能够直接或间接地通过任何数量的不同***进行通信以传输数据,包括但不限于共享存储器通信、局域网、广域网、电话网络、蜂窝网络、光纤网络、卫星网络、红外网络、射频网络以及可用于在设备之间传输信息的任何其他类型的网络。此外,***之间的通信可以通过已知或变得已知的任何一种或多种传输协议进行,例如异步传输模式(ATM)、互联网协议(IP)、超文本传输协议(HTTP)和无线应用协议(WAP)。
此处描述的实施例仅用于说明的目的。本领域的技术人员将认识到可以通过对上述实施例的修改和变更来实践其他实施例。

Claims (7)

1.一种计算机实现的方法,包括:
建立与第一数据库用户的第一数据库会话;
确定与所述第一数据库会话相关联的第一会话变量值,所述第一会话变量值包括第一租户值;
基于所述第一租户值和零个或多个其他第一会话变量值确定第一工作负载类,所述第一工作负载类包括指定第一资源消耗限制的第一参数值;以及
基于所述第一参数值管理所述第一数据库会话的资源消耗。
2.根据权利要求1所述的方法,还包括:
建立与第二数据库用户的第二数据库会话;
确定与所述第二数据库会话相关联的第二会话变量值,所述第二会话变量值包括第二租户值;
基于所述第二租户值和零个或多个其他第二会话变量值确定第二工作负载类,所述第二工作负载类包括指定第二资源消耗限制的第二参数值;以及
基于所述第二参数值管理所述第二数据库会话的资源消耗,
其中,所述第一数据库会话和所述第二数据库会话是并发的。
3.根据权利要求1所述的***,其中,所述第一参数值指定第一租户级资源消耗限制,并且
其中,确定所述第一工作负载类包括:
基于所述第一租户值确定所述第一工作负载类并基于所述第一租户值和一个或多个其他所述第一会话变量值确定第二工作负载类,所述第二工作负载类包括指定第二语句级资源消耗限制的第二参数值;以及
基于所述第一参数值和所述第二参数值管理所述第一数据库会话的资源消耗。
4.根据权利要求3所述的***,其中,所述第一租户级资源消耗限制包括每个租户的内存限制,并且
其中,所述第二语句级资源消耗限制包括每个语句的内存限制。
5.根据权利要求4所述的***,其中,所述第一租户级资源消耗限制包括每个租户的并发语句限制,并且
其中,所述第二语句级资源消耗限制包括每个语句的线程限制。
6.根据权利要求1所述的***,其中,所述第一租户级资源消耗限制包括每个租户的内存限制。
7.根据权利要求1所述的***,其中,所述第一租户级资源消耗限制包括每个租户的并发语句限制。
CN202310731329.4A 2022-12-08 2023-06-20 租户级资源隔离的工作负载类 Pending CN118170528A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US18/063,433 2022-12-08
US18/063,433 US11882008B1 (en) 2022-12-08 2022-12-08 Workload classes for tenant-level resource isolation

Publications (1)

Publication Number Publication Date
CN118170528A true CN118170528A (zh) 2024-06-11

Family

ID=86942054

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310731329.4A Pending CN118170528A (zh) 2022-12-08 2023-06-20 租户级资源隔离的工作负载类

Country Status (3)

Country Link
US (1) US11882008B1 (zh)
EP (1) EP4383087A1 (zh)
CN (1) CN118170528A (zh)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7475419B1 (en) * 2003-09-19 2009-01-06 Hewlett-Packard Development Company, L.P. System and method for controlling access in an interactive grid environment
US10021042B2 (en) * 2013-03-07 2018-07-10 Microsoft Technology Licensing, Llc Service-based load-balancing management of processes on remote hosts
US10467241B2 (en) * 2017-03-24 2019-11-05 Ca, Inc. Dynamically provisioning instances of a single-tenant application for multi-tenant use
WO2019155268A1 (en) * 2018-02-06 2019-08-15 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for managing cloud services using smart contracts and blockchains
US11388054B2 (en) * 2019-04-30 2022-07-12 Intel Corporation Modular I/O configurations for edge computing using disaggregated chiplets
US20230095756A1 (en) * 2021-09-29 2023-03-30 Salesforce.Com, Inc. Dynamically reconfiguring a database system of a tenant based on risk profile(s) of the tenant

Also Published As

Publication number Publication date
EP4383087A1 (en) 2024-06-12
US11882008B1 (en) 2024-01-23

Similar Documents

Publication Publication Date Title
US11314551B2 (en) Resource allocation and scheduling for batch jobs
US9921775B2 (en) Memory management in a decentralized control plane of a computing system
US10127086B2 (en) Dynamic management of data stream processing
US11119813B1 (en) Mapreduce implementation using an on-demand network code execution system
US9253053B2 (en) Transparently enforcing policies in hadoop-style processing infrastructures
US11275622B2 (en) Utilizing accelerators to accelerate data analytic workloads in disaggregated systems
CN112753019A (zh) 按需代码执行***中执行环境的有效状态维持
US9563426B1 (en) Partitioned key-value store with atomic memory operations
US10860604B1 (en) Scalable tracking for database udpates according to a secondary index
US20130232164A1 (en) Methods and Apparatus for Job State Tracking in Cluster Computing
US11599397B2 (en) Collaboration service to support cross-process coordination between active instances of a microservice
US10102230B1 (en) Rate-limiting secondary index creation for an online table
US9910881B1 (en) Maintaining versions of control plane data for a network-based service control plane
US10262024B1 (en) Providing consistent access to data objects transcending storage limitations in a non-relational data store
US20200117589A1 (en) Techniques and devices for cloud memory sizing
US11405328B2 (en) Providing on-demand production of graph-based relationships in a cloud computing environment
US20190018709A1 (en) Scheduling of Micro-Service Instances
CN110971700A (zh) 分布式锁的实现方法及装置
US11144359B1 (en) Managing sandbox reuse in an on-demand code execution system
WO2023196042A1 (en) Data flow control in distributed computing systems
US10348814B1 (en) Efficient storage reclamation for system components managing storage
US9898614B1 (en) Implicit prioritization to rate-limit secondary index creation for an online table
US10944814B1 (en) Independent resource scheduling for distributed data processing programs
US11861386B1 (en) Application gateways in an on-demand network code execution system
US10812408B1 (en) Preventing concentrated selection of resource hosts for placing resources

Legal Events

Date Code Title Description
PB01 Publication
SE01 Entry into force of request for substantive examination