用于处理数据库操作请求的方法和装置.pdf

上传人:r7 文档编号:1281104 上传时间:2018-04-12 格式:PDF 页数:15 大小:607.07KB
返回 下载 相关 举报
摘要
申请专利号:

CN200910170957.X

申请日:

2009.08.27

公开号:

CN101996214A

公开日:

2011.03.30

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 17/30申请日:20090827|||公开

IPC分类号:

G06F17/30

主分类号:

G06F17/30

申请人:

国际商业机器公司

发明人:

段宁; 蒋忠波; 张剑鸣; 高波; 唐凯

地址:

美国纽约

优先权:

专利代理机构:

北京市中咨律师事务所 11247

代理人:

于静;张亚非

PDF下载: PDF下载
内容摘要

提供了一种用于处理数据库操作请求的方法和系统,该方法包括:接收来自用户的数据库操作请求;判断该数据库操作请求是否是重负荷请求;如果该数据库操作请求是重负荷请求,则将该数据库操作请求路由到用于处理重负荷请求的重负荷请求数据库分区进行处理,并将该数据库操作请求所影响的数据范围记录在元数据储存库中,其中所述重负荷请求数据库分区在原有的正常数据库分区之外设置的。

权利要求书

1: 一种用于处理数据库操作请求的方法, 包括 : 接收来自用户的数据库操作请求 ; 判断该数据库操作请求是否是重负荷请求 ; 如果该数据库操作请求是重负荷请求, 则将该数据库操作请求路由到用于处理重负荷 请求的重负荷请求数据库分区进行处理, 并将该数据库操作请求所影响的数据范围记录在 元数据储存库中 ; 其中所述重负荷请求数据库分区是在原有的正常数据库分区之外设置的。
2: 根据权利要求 1 的方法, 其中所述正常数据库分区和所述重负荷请求数据库分区具 有相同的表结构, 该表结构包含分区键字段, 所述正常数据库分区和所述重负荷请求数据 库分区具有不同的分区键。
3: 根据权利要求 2 的方法, 其中所述将该数据库操作请求路由到用于处理重负荷请求 的重负荷请求数据库分区进行处理包括 : 向该数据库操作请求添加重负荷请求数据库分区的分区键 ; 将添加了分区键的该数据库操作请求发送到分区数据库管理系统。
4: 根据权利要求 2 的方法, 还包括 : 如果该数据库操作请求不是重负荷请求, 进一步判断该数据库操作请求所涉及的数据 是否属于元数据储存库中记录的受影响的数据范围 ; 如果该数据库操作请求所涉及的数据属于元数据储存库中记录的受影响的数据范围, 将该数据库操作请求发送到分区数据库管理系统而不向该数据库操作请求添加正常数据 库分区和重负荷请求数据库分区的分区键。
5: 根据权利要求 4 的方法, 还包括 : 如果该数据库操作请求所涉及的数据不属于元数据储存库中记录的受影响的数据范 围, 向该数据库操作请求添加正常数据库分区的分区键, 并将添加了分区键的该数据库操 作请求发送到分区数据库管理系统。
6: 根据权利要求 2 的方法, 其中所述将该数据库操作请求路由到用于处理重负荷请求 的重负荷请求数据库分区进行处理包括 : 判断该数据库操作请求是否是数据插入请求 ; 如果该数据库操作请求是数据插入请求, 则向该数据库操作请求添加重负荷请求数据 库分区的分区键 ; 将添加了分区键的该数据库操作请求发送到分区数据库管理系统。
7: 根据权利要求 6 的方法, 进一步包括 : 如果该数据库操作请求不是数据插入请求, 将该数据库操作请求发送到分区数据库管 理系统而不向该数据库操作请求添加正常数据库分区和重负荷请求数据库分区的分区键。
8: 根据权利要求 1 的方法, 包括 : 判断该数据库操作请求是否来自经常发出重负荷请求的特殊用户, 其中特殊用户的数 据被从正常数据库分区复制到重负荷数据库分区 ; 以及 如果该数据库操作请求来自特殊用户, 向该数据库操作请求添加重负荷请求数据库分 区的分区键 ; 将添加了分区键的该数据库操作请求发送到分区数据库管理系统。 2
9: 根据权利要求 1 的方法, 还包括 : 在系统空闲时, 将重负荷请求数据库分区中的数据同步到正常数据库分区中。
10: 一种用于处理数据库操作请求的系统, 包括 : 请求分析器, 用于接收来自用户的数据库操作请求, 判断该数据库操作请求是否是重 负荷请求 ; 以及 请求处理器, 用于如果该数据库操作请求是重负荷请求, 则将该数据库操作请求路由 到重负荷请求数据库分区进行处理, 以及将该数据库操作请求所影响的数据范围记录在元 数据储存库中 ; 其中所述重负荷请求数据库分区是在原有的正常数据库分区之外设置的。
11: 根据权利要求 10 的系统, 其中所述正常数据库分区和所述重负荷请求数据库分区 具有相同的表结构, 该表结构包含分区键字段, 所述正常数据库分区和所述重负荷请求数 据库分区具有不同的分区键。
12: 根据权利要求 11 的系统, 其中, 所述请求处理器包括 : 用于向该数据库操作请求添加重负荷请求数据库分区的分区键的装置 ; 以及 用于将添加了分区键的该数据库操作请求发送到分区数据库管理系统的装置。
13: 根据权利要求 11 的系统, 其中, 所述请求处理器包括 : 用于如果该数据库操作请求不是重负荷请求, 进一步判断该数据库操作请求所涉及的 数据是否属于元数据储存库中记录的受影响的数据范围的装置 ; 用于如果该数据库操作请求所涉及的数据属于元数据储存库中记录的受影响的数据 范围, 将该数据库操作请求发送到分区数据库管理系统而不向该数据库操作请求添加正常 数据库分区和重负荷请求数据库分区的分区键。
14: 根据权利要求 13 的系统, 其中, 所述请求处理器还包括 : 用于如果该数据库操作请求所涉及的数据不属于元数据储存库中记录的受影响的数 据范围, 向该数据库操作请求添加正常数据库分区的分区键, 并将添加了分区键的该数据 库操作请求发送到分区数据库管理系统。
15: 根据权利要求 11 的系统, 其中, 所述请求处理器包括 : 用于判断该数据库操作请求是否是数据插入请求的装置 ; 用于如果该数据库操作请求是数据插入请求, 则向该数据库操作请求添加重负荷请求 数据库分区的分区键的装置 ; 以及 用于将添加了分区键的该数据库操作请求发送到分区数据库管理系统的装置。
16: 根据权利要求 15 的系统, 其中, 所述请求处理器进一步包括 : 用于如果该数据库操作请求不是数据插入请求, 将该数据库操作请求发送到分区数据 库管理系统而不向该数据库操作请求添加正常数据库分区和重负荷请求数据库分区的分 区键的装置。
17: 根据权利要求 10 的系统, 其中, 所述请求分析器还用于判断该数据库操作请求是否来自经常发出重负荷请求的特殊 用户, 其中特殊用户的数据被从正常数据库分区复制到重负荷数据库分区 ; 以及 所述请求处理器还用于如果该数据库操作请求来自特殊用户, 向该数据库操作请求添 加重负荷请求数据库分区的分区键并将添加了分区键的该数据库操作请求发送到分区数 3 据库管理系统。
18: 根据权利要求 10 的系统, 还包括 : 数据同步器, 用于在系统空闲时, 将重负荷请求数据库分区中的数据同步到正常数据 库分区中。

说明书


用于处理数据库操作请求的方法和装置

    【技术领域】
     本发明涉及数据处理领域, 具体涉及软件即服务 (SaaS) 系统。背景技术 SaaS(Software as a Service) 系统的目的是将软件作为一种服务以降低用户的 软件购置和维护成本。在 SaaS 环境中, 大量用户 ( 租户 ) 共享应用实例和数据库。
     然而, 由于在 SaaS 环境中, 数据库系统是在不同租户之间共享的, 因此, 某个租户 的重负荷数据库操作可能会影响其他租户的正常使用。数据库系统中的某些操作, 例如租 户上线 (on-boarding) 和运行期间的数据导入 / 导出、 数据迁移、 数据备份 / 恢复等, 会占 用大量的磁盘 I/O 和 CPU, 从而影响系统处理其他租户请求的性能。 大规模的数据迁移或导 入有可能持续数小时, 在这期间可能会对增加其他租户请求的请求的响应时间, 甚至导致 不能正常访问系统, 这对于其他租户来说是无法接受的。
     传统上, 解决这个问题的最常用的方法是异步处理重负荷请求。该方法寻找空闲 时间来处理重负荷请求以避免影响正常处理。 但从业务要求的角度这种延迟响应的方式是 不可接受的。在 SaaS 环境中, 甚至无法就此与租户达成协议。就是说, 在大多数情况下, 重 负荷事务请求需要实时响应, 而不能离线或异步处理。
     另一种方法是对租户操作进行速率控制, 例如, 限制每个租户能使用的最大资源 量。 然而, 这使得资源利用率不能最大化, 从整个系统的角度看无法利用系统的最大共享能 力。在 SaaS 环境中, 资源利用率是一种关键要素, 使资源利用率最大化通常是需要的。
     因此, 本领域中需要一种更有效的用于隔离 SaaS 应用的租户间应用数据库操作 性能影响的方法和装置。
     发明内容 在本发明的一个方面, 提供了一种用于处理数据库操作请求的方法, 包括 : 接收来 自用户的数据库操作请求 ; 判断该数据库操作请求是否是重负荷请求 ; 如果该数据库操作 请求是重负荷请求, 则将该数据库操作请求路由到用于处理重负荷请求的重负荷请求数据 库分区进行处理, 并将该数据库操作请求所影响的数据范围记录在元数据储存库中, 其中 所述重负荷请求数据库分区是在原有的正常数据库分区之外设置的。
     在本发明的另一个方面, 提供了一种用于处理数据库操作请求的系统, 包括 : 请求 分析器, 用于接收来自用户的数据库操作请求, 判断该数据库操作请求是否是重负荷请求 ; 以及请求处理器, 用于如果该数据库操作请求是重负荷请求, 则将该数据库操作请求路由 到重负荷请求数据库分区进行处理, 以及将该数据库操作请求所影响的数据范围记录在元 数据储存库中, 其中所述重负荷请求数据库分区是在原有的正常数据库分区之外设置的。
     本发明的优点包括 :
     提供了一种隔离租户间的性能影响的有效方法 : 对于没有任何重负荷请求的租户 而言, 其所有请求将被直接路由到正常数据库分区, 而不受重负荷请求数据库分区上的重
     负荷请求处理的任何影响。
     重负荷请求将获得实时响应, 而不是延迟响应。
     提高了整体系统性能, 因为重负荷请求被路由到备用分区, 整体系统性能得到提 高。
     该方法可以容易地与应用集成, 应用可获得性能影响隔离的好处而无需更改或只 需很少更改。 附图说明 所附权利要求中阐述了被认为是本发明的特点的创造性特征。但是, 通过参照附 图阅读下面对说明性实施例的详细说明可更好地理解发明本身以及其优选使用模式、 目 标、 特征以及优点, 在附图中 :
     图 1 示意性地示出了根据本发明的实施例的用于隔离 SaaS 租户间应用数据库操 作性能影响的系统 ;
     图 2 示出了根据本发明的实施例的用于隔离 SaaS 租户间应用数据库操作性能影 响的方法的准备阶段 ;
     图 3 示出了根据本发明的实施例的用于隔离 SaaS 租户间应用数据库操作性能影 响的方法的运行时阶段 ; 以及
     图 4 示出了根据本发明的实施例的用于隔离 SaaS 租户间应用数据库操作性能影 响的方法的离线处理阶段。
     具体实施方式
     下面参照附图来说明本发明的实施例。在下面的说明中, 阐述了许多具体细节以 便更全面地了解本发明。 但是, 对于本技术领域内的技术人员明显的是, 本发明的实现可不 具有这些具体细节中的一些。此外, 应当理解的是, 本发明并不限于所介绍的特定实施例。 相反, 可以考虑用下面的特征和要素的任意组合来实施本发明, 而无论它们是否涉及不同 的实施例。因此, 下面的方面、 特征、 实施例和优点仅作说明之用而不应被看作是所附权利 要求的要素或限定, 除非权利要求中明确提出。
     本发明提出了一种用于隔离租户间的性能影响的方法。本发明的核心思想在于, 通过将数据库分区并将重负荷请求和正常请求路由到不同的分区达到隔离租户间的性能 影响的目的。 在该方法中, 通过将数据库分区得到额外的数据库节点, 用额外的数据库节点 暂时存储由重负荷请求产生的数据, 该数据库节点可称为重负荷请求数据库分区。由正常 数据库分区总是处理正常请求, 就像应用正常运行一样, 而重负荷请求数据库分区专用于 处理重负荷请求。 这样, 正常请求处理与重负荷请求处理相隔离, 从而避免了重负荷请求处 理对正常请求处理的影响。
     现参照图 1, 其示意性地示出了根据本发明的实施例的用于隔离 SaaS 租户间应用 数据库操作性能影响的系统 100。如图所示, 该系统 100 位于 SaaS 应用和分区数据库管理 系统之间, 并优选地至少部分地在数据库驱动器或其包装例如一 JDBC wrapper 中实现。所 述分区数据库系统为本领域中所知的任何分区数据库系统, 且包括一个用于存储正常的租 户数据的正常数据库分区以及一个额外增加的用于存储重负荷请求所产生的租户数据的重负荷请求数据库分区。正常数据库分区和重负荷请求数据库分区具有不同的分区键, 例 如正常数据库分区的分区键 PK = 0, 而重负荷请求数据库分区的分区键 PK = 1。
     如图所示, 该用于隔离 SaaS 租户间应用数据库操作性能影响的系统 100 可包括请 求分析器 110、 请求处理器 120、 元数据储存库 130 以及表转换及数据同步器 140。其中, 请 求处理器 120 进一步可包括正常请求处理器 121、 重负荷请求处理器 122, 可选的包括特殊 租户处理器 123。元数据储存库 130 中可存储有分区键映射表、 受影响数据范围表, 可选的 存储特殊租户列表等。表转换及数据同步器 140 包括表转换器 141、 数据同步器 143, 可选 的包括请求和成本统计器 142。
     请求分析器 110 用于分析来自 SaaS 应用的数据库操作请求, 识别所述请求是正常 请求还是重负荷请求。可选的, 请求分析器 110 还判断所述请求是否是来自特殊租户的请 求。然后, 请求分析器 110 将经过分析和识别、 可选的经过判断的请求发送到相应模块以进 行相应的后续处理, 例如将正常请求发送到正常请求处理器 122 处理, 将重负荷请求发送 到重负荷请求处理器 123 处理, 将来自特殊租户的请求发送到特殊租户处理器 121 处理。 正 常请求是指对数据库管理系统将不会造成较大负荷的请求, 重负荷请求是指将对数据库管 理系统造成较大负荷的请求, 而特殊租户是指频繁进行重负荷请求的租户。 请求分析器 110 可采用多种方法来识别来自 SaaS 应用的数据库操作请求是正常 请求还是重负荷请求。例如, SaaS 应用的开发者可以事先将通常会造成较重的数据库管理 系统处理负荷的重负荷的 SQL 语句注册到元数据储存库 130 中, 这样, 请求分析器 110 可以 通过将当前请求中包含的 SQL 语句与元数据储存库 130 中注册的 SQL 语句进行比较来判断 当前请求是否是重负荷请求。再例如, SaaS 应用的开发者可以通过 AOP( 面向方面的编程 ) 机制或简单编程将应用中的可能造成较重的数据库系统处理负荷的特定事务设置为重负 荷事务, 这样, 请求分析器 110 可以通过读取所述设置判断当前事务是否是重负荷事务, 并 进而确定当前请求是否是重负荷请求。
     可选的, 可以由请求和成本统计器 142 收集关于各租户的数据库访问操作的访问 统计信息, 包括每次访问的租户 ID、 SQL、 影响时间、 数据大小等, 从中识别出经常发起重负 荷请求的租户, 并将这些租户作为特殊租户记录在元数据储存库的特殊租户列表中。 这样, 请求分析器 110 就可以通过将发起当前请求的租户与元数据储存库中的特殊租户列表比 较来判断当前请求是否是来自特殊租户的请求。
     请求分析器 110 可以将非重负荷请求识别为正常请求, 可选的可以将既非重负荷 请求又不是来自特殊租户的请求的所有其他请求识别为正常请求。
     正常请求处理器 121 用于处理由请求分析器 110 发送的来自 SaaS 应用的正常数 据库操作请求。响应于接收到正常请求, 正常请求处理器 121 首先通过读取元数据储存库 中的受影响数据范围表来判断所请求操作的数据是否属于受影响数据范围。 如果判断所请 求操作的数据不属于受影响数据范围, 说明所请求操作的数据仅位于 ( 或将位于 ) 正常数 据库分区中, 则正常请求处理器 121 向请求中的 SQL 语句添加正常数据库分区的分区键, 然 后将请求发送给分区数据库管理系统, 以便由分区数据库管理系统根据分区键自动将请求 路由到正常数据库分区以进行相应的操作。 如果判断所请求操作的数据属于受影响数据范 围, 说明所请求操作的数据至少位于重负荷数据库分区中, 则正常请求处理器 121 不向请 求中的 SQL 语句添加正常数据库分区和重负荷请求数据库分区的分区键, 并将请求发送给
     分区数据库管理系统, 以便由分区数据库管理系统自动将请求路由到正常数据库分区以及 重负荷数据库分区以进行相应的操作。
     重负荷请求处理器 122 用于处理由请求分析器 110 发送来的来自 SaaS 应用的重 负荷数据库操作请求。响应于接收到重负荷请求, 重负荷请求处理器 122 还将请求所影响 的数据范围记录在元数据储存库中。此外, 重负荷请求处理器 122 判断该重负荷请求是否 是数据插入请求。如果该重负荷请求是数据插入请求, 则重负荷请求处理器 122 向请求 中的 SQL 语句添加重负荷请求数据库分区的分区键, 然后将请求发送给分区数据库管理系 统, 以便由分区数据库管理系统根据分区键自动将请求路由到重负荷数据库分区, 以进行 相应的数据插入操作。 如果该重负荷请求不是数据插入请求, 例如是数据读取或更新请求, 则重负荷请求处理器 122 不向请求中的 SQL 语句添加正常数据库分区和重负荷请求数据库 分区的分区键, 并将请求发送给分区数据库管理系统, 以便由分区数据库管理系统自动将 请求路由到重负荷数据库分区以及正常数据库分区, 以分别进行相应的数据更新和读取操 作。
     可选的, 特殊租户处理器 123 用于处理由请求分析器 110 发送来的来自于特殊租 户的数据库操作请求。响应于接收到来自特殊租户的请求, 特殊租户处理器 123 向请求中 的 SQL 语句添加重负荷请求数据库分区的分区键, 然后将请求发送给分区数据库管理系 统, 以便由分区数据库管理系统自动地将请求路由到重负荷数据库分区, 以进行相应的操 作。 元数据储存库 130 中的受影响数据范围表用于记录受重负荷请求影响的数据范 围, 即被存储在重负荷请求数据库分区中的数据的范围。受影响的数据范围可通过 SaaS 应 用中的租户、 数据库表或其他更细粒度的数据库操作或其组合来区分。例如, 图 1 中例示了 一个受影响数据范围表的内容, 其中示出了租户 t1 和数据库表 sales 为一个受影响的数据 范围, 表明租户 t1 的 sales 表中的数据被存储在特殊请求数据库分区中, 类型 “重负荷” 表 明该受影响的数据范围是由重负荷请求产生的, 且时间戳中示出了在重负荷请求数据库分 区中产生相应数据的时间 ; 此外, 示出了租户 t2 和数据库表 sales 为另一个受影响的数据 范围, 表明租户 t2 的 sales 表中的数据被存储在特殊请求数据库分区中, 类型 “特殊” 表明 该受影响的数据范围是根据特殊租户产生的, 且时间戳中示出了在重负荷请求数据库分区 中产生相应数据的时间。
     表转换器 141 用于修改正常数据库分区中的各数据库表, 以向每个数据库表添加 一个分区键字段, 以及将正常数据库分区中的各数据库表的结构复制到重负荷请求数据库 分区。表转换器 141 可以在准备阶段, 例如当 SaaS 应用安装时, 执行上述操作。
     请求和成本统计器 142, 如上所述, 用于通过收集关于各租户的数据库操作请求的 统计信息, 来识别经常发起重负荷请求的特殊租户, 并将所述特殊租户记录在元数据储存 库中的特殊租户列表中。
     数据同步器 143 用于通过修改分区中数据的分区键使得数据自动被迁移到另一 分区。例如, 数据同步器 143 可以在系统空闲时修改重负荷请求数据库分区中的数据的分 区键, 以便使分区数据库管理系统根据修改后的分区键自动将数据同步到正常分区中, 并 且修改元数据储存库中的受影响数据范围表以反映当前的数据状态, 例如删除与已被同步 到正常数据库分区的数据有关的受影响数据范围。经过同步, 未来对相应数据的访问请求
     只需要被路由到正常数据库分区, 而无需路由到重负荷数据库分区, 从而使系统更为高效。
     此外, 数据同步器 143 可以通过修改正常数据库分区中由请求和成本统计器 142 识别出的特殊租户的数据的分区键, 将特殊租户的数据从正常数据库分区迁移到重负荷数 据库分区。
     以上参照附图描述了本发明的实施例。 应指出的是, 以上描述仅为示例性说明, 而 不是对本发明的限制。 本发明的实施例可具有更多、 更少或不同的模块, 且不同模块之间的 包含和连接关系可以与所描述的不同。 例如, 在本发明的一些实施例中, 可以包括两个或两 个以上的重负荷请求数据库分区 ; 在本发明的另一些实施例中, 可以不包括所述特殊租户 处理器 121 及对特殊租户的识别、 处理等功能 ; 等等。 所述这些变化都处于本发明的精神和 范围之内。
     现参照图 2, 其示出了根据本发明的实施例的用于隔离 SaaS 租户间应用数据库操 作性能影响的方法的准备阶段。该准备阶段可以在 SaaS 应用启动之前, 例如在 SaaS 应用 安装时执行。如图所示, 该准备阶段包括以下步骤 :
     在步骤 201, 向 SaaS 应用的用于存储租户数据的各数据库表添加一个分区键字 段。
     在步骤 202, 向 SaaS 应用的分区数据库管理系统添加一个额外的重负荷请求数据 库分区, 使得分区数据库管理系统包括原来的正常数据库分区以及新增加的重负荷请求数 据库分区, 并将正常数据库分区中用于存储租户数据的各数据库表结构复制到重负荷请求 数据库分区中。
     在步骤 203, 为每个数据库分区指定一个不同的分区键, 并在元数据储存库中维护 分区键和数据库分区之间的映射。
     以上步骤可以由前述表转换器 141 执行。
     现参照图 3, 其示出了根据本发明的实施例的用于隔离 SaaS 租户间应用数据库操 作性能影响的方法的运行时阶段。该阶段可以在 SaaS 应用运行时执行。如图所示, 该运行 时阶段包括以下步骤 :
     在步骤 301, 响应于接收到来自租户的请求, 识别发送该请求的租户。
     在可选步骤 302, 通过将识别的租户与元数据储存库中的特殊租户列表进行比较 来判断该请求是否来自于特殊租户。
     响应于该判断为是, 执行可选步骤 303。响应于该判断为否, 执行步骤 305。
     在可选步骤 303, 将该请求发送到特殊租户处理器进行处理。
     在可选步骤 304, 特殊租户处理器通过向请求添加重负荷数据库分区的分区键, 例 如将分区键作为条件子句添加到请求的 SQL 语句中, 由分区数据库管理系统自动将请求发 送到重负荷请求数据库分区进行处理。
     在步骤 305, 判断该请求是否是重负荷请求。 如果该判断否, 则执行步骤 306 ; 如果 该判断为是, 则执行步骤 311。
     在步骤 306, 将请求发送到正常请求处理器。
     在步骤 307, 正常请求处理器读取元数据储存库中的受影响数据范围表。
     在步骤 308, 正常请求处理器根据受影响数据范围表判断该请求涉及的数据是否 属于受影响数据范围。如果该判断为否, 则执行步骤 309 ; 如果该判断为是, 则执行步骤310。 在步骤 309, 由于该请求涉及的数据不属于受影响的数据范围, 说明数据仅存在于 正常数据库分区中, 而不存在于重负荷数据库分区中, 因此, 向请求添加正常数据库分区的 分区键, 例如将分区键作为条件子句添加到请求的 SQL 语句中, 然后将请求发送到分区数 据库管理系统, 以便由分区数据库管理系统根据分区键自动将请求路由到正常数据库分区 进行处理。
     在步骤 310, 由于该请求涉及的数据属于受影响的数据范围, 说明数据至少存在于 重负荷数据库分区中, 因此, 不向请求中的 SQL 语句添加正常数据库分区和重负荷请求数 据库分区的分区键, 而是直接将请求发送到分区数据库管理系统, 以便由分区数据库管理 系统根据自动将请求路由到正常数据库分区以及重负荷数据库分区中进行处理。
     在步骤 311, 将请求发送到重负荷请求处理器。
     在步骤 312, 重负荷请求处理器更新元数据储存库中的受影响数据范围表, 以将当 前请求所影响的数据范围记录在受影响数据范围表中。
     在步骤 313, 重负荷请求处理器判断该请求是否是数据插入请求。如果该判断为 是, 则执行步骤 314。如果该判断为否, 则执行步骤 315。
     在步骤 314, 重负荷请求处理器向请求添加重负荷请求数据库分区的分区键, 例 如将分区键作为条件子句添加到请求的 SQL 语句中, 然后将请求发送给分区数据库管理系 统, 以便由分区数据库管理系统根据分区键自动将请求路由到重负荷数据库分区进行处 理。
     在步骤 315, 重负荷请求处理器不向请求中的 SQL 语句添加正常数据库分区和重 负荷请求数据库分区的分区键, 并将请求发送给分区数据库管理系统, 以便由分区数据库 管理系统自动将请求路由到正常数据库分区以及重负荷数据库分区进行处理、
     在本发明的一些实施例中, 可以不包括上述步骤 313、 315。而是在步骤 312 之后, 执行步骤 314。此外, 在本发明的一些实施例中, 步骤 312 可以在步骤 314 或 315 之后执行。
     现参照图 4, 其示出了根据本发明的实施例的用于隔离 SaaS 租户间应用数据库操 作性能影响的方法的离线处理阶段。如图所示, 该阶段包括以下步骤 :
     在步骤 401, 系统统处于空闲状态。随后, 分别执行步骤 402 和步骤 404。
     在步骤 402, 数据同步器通过将重负荷请求数据库分区中的数据的分区键修改为 正常数据库分区的分区键, 使得分区数据库管理系统自动将重负荷请求数据库分区中的数 据同步到正常数据库分区中。
     在步骤 403, 更新元数据储存库中的受影响数据范围表, 以去除与被同步的数据相 关的受影响数据范围。
     在步骤 404, 请求和成本统计器收集关于所有租户的数据库访问的统计信息, 包括 租户 ID、 SQL 语句、 响应时间、 数据大小等。
     在步骤 405, 请求和成本统计器根据所收集的统计信息识别经常发起重负荷请求 的特殊租户。
     在步骤 406, 将所识别的租户作为特殊租户记录在元数据储存库中的特殊租户列 表中。
     以上描述了根据本发明的实施例的用于隔离 SaaS 租户间应用数据库操作性能影
     响的方法。应指出的是, 以上描述仅为示例, 而不是对本发明的限制。在本发明的其他实 施例中, 该方法可具有更多、 更不或不同的步骤。例如, 在本发明的一些实施例中, 可以没 有判断请求是否来自特殊租户的步骤 302, 以及对特殊租户的相应处理步骤 303、 304 ; 在本 发明一些实施例中, 可以没有将请求发送到正常请求处理器的步骤 306、 将请求发送到重负 荷请求处理器的步骤 311、 和将请求发送到特殊租户处理器的步骤 303, 而是根据对请求的 分析直接对请求进行相应的处理 ; 此外, 可以将上述多个步骤进行合并与概括, 例如上述步 骤 313、 314、 315 可以概括为一个步骤, 在该步骤中, 如果该数据库操作请求是重负荷请求, 则将该数据库操作请求路由到用于处理重负荷请求的重负荷请求数据库分区进行处理, 等 等。所有这些变化都处于本发明的精神和范围之内。
     本发明可以硬件、 软件、 或硬件与软件的结合的方式实现。 本发明可以集中的方式 在一个计算机系统中实现, 或以分布方式实现, 在这种分布方式中, 不同的部件分布在若干 互连的计算机系统中。 适于执行本文中描述的方法的任何计算机系统或其它装置都是合适 的。一种典型的硬件和软件的组合可以是带有计算机程序的通用计算机系统, 当该计算机 程序被加载和执行时, 控制该计算机系统而使其执行本发明的方法, 并构成本发明的装置。
     本发明也可体现在计算机程序产品中, 该程序产品包含使能实现本文中描述的方 法的所有特征, 并且当其被加载到计算机系统中时, 能够执行所述方法。 尽管已参照优选实施例具体示出和说明了本发明, 但是本领域内的那些技术人员 应理解, 可在形式和细节上对其进行各种改变而不会背离本发明的精神和范围。
    

用于处理数据库操作请求的方法和装置.pdf_第1页
第1页 / 共15页
用于处理数据库操作请求的方法和装置.pdf_第2页
第2页 / 共15页
用于处理数据库操作请求的方法和装置.pdf_第3页
第3页 / 共15页
点击查看更多>>
资源描述

《用于处理数据库操作请求的方法和装置.pdf》由会员分享,可在线阅读,更多相关《用于处理数据库操作请求的方法和装置.pdf(15页珍藏版)》请在专利查询网上搜索。

1、10申请公布号CN101996214A43申请公布日20110330CN101996214ACN101996214A21申请号200910170957X22申请日20090827G06F17/3020060171申请人国际商业机器公司地址美国纽约72发明人段宁蒋忠波张剑鸣高波唐凯74专利代理机构北京市中咨律师事务所11247代理人于静张亚非54发明名称用于处理数据库操作请求的方法和装置57摘要提供了一种用于处理数据库操作请求的方法和系统,该方法包括接收来自用户的数据库操作请求;判断该数据库操作请求是否是重负荷请求;如果该数据库操作请求是重负荷请求,则将该数据库操作请求路由到用于处理重负荷请求的。

2、重负荷请求数据库分区进行处理,并将该数据库操作请求所影响的数据范围记录在元数据储存库中,其中所述重负荷请求数据库分区在原有的正常数据库分区之外设置的。51INTCL19中华人民共和国国家知识产权局12发明专利申请权利要求书3页说明书7页附图4页CN101996219A1/3页21一种用于处理数据库操作请求的方法,包括接收来自用户的数据库操作请求;判断该数据库操作请求是否是重负荷请求;如果该数据库操作请求是重负荷请求,则将该数据库操作请求路由到用于处理重负荷请求的重负荷请求数据库分区进行处理,并将该数据库操作请求所影响的数据范围记录在元数据储存库中;其中所述重负荷请求数据库分区是在原有的正常数据。

3、库分区之外设置的。2根据权利要求1的方法,其中所述正常数据库分区和所述重负荷请求数据库分区具有相同的表结构,该表结构包含分区键字段,所述正常数据库分区和所述重负荷请求数据库分区具有不同的分区键。3根据权利要求2的方法,其中所述将该数据库操作请求路由到用于处理重负荷请求的重负荷请求数据库分区进行处理包括向该数据库操作请求添加重负荷请求数据库分区的分区键;将添加了分区键的该数据库操作请求发送到分区数据库管理系统。4根据权利要求2的方法,还包括如果该数据库操作请求不是重负荷请求,进一步判断该数据库操作请求所涉及的数据是否属于元数据储存库中记录的受影响的数据范围;如果该数据库操作请求所涉及的数据属于元。

4、数据储存库中记录的受影响的数据范围,将该数据库操作请求发送到分区数据库管理系统而不向该数据库操作请求添加正常数据库分区和重负荷请求数据库分区的分区键。5根据权利要求4的方法,还包括如果该数据库操作请求所涉及的数据不属于元数据储存库中记录的受影响的数据范围,向该数据库操作请求添加正常数据库分区的分区键,并将添加了分区键的该数据库操作请求发送到分区数据库管理系统。6根据权利要求2的方法,其中所述将该数据库操作请求路由到用于处理重负荷请求的重负荷请求数据库分区进行处理包括判断该数据库操作请求是否是数据插入请求;如果该数据库操作请求是数据插入请求,则向该数据库操作请求添加重负荷请求数据库分区的分区键;。

5、将添加了分区键的该数据库操作请求发送到分区数据库管理系统。7根据权利要求6的方法,进一步包括如果该数据库操作请求不是数据插入请求,将该数据库操作请求发送到分区数据库管理系统而不向该数据库操作请求添加正常数据库分区和重负荷请求数据库分区的分区键。8根据权利要求1的方法,包括判断该数据库操作请求是否来自经常发出重负荷请求的特殊用户,其中特殊用户的数据被从正常数据库分区复制到重负荷数据库分区;以及如果该数据库操作请求来自特殊用户,向该数据库操作请求添加重负荷请求数据库分区的分区键;将添加了分区键的该数据库操作请求发送到分区数据库管理系统。权利要求书CN101996214ACN101996219A2/。

6、3页39根据权利要求1的方法,还包括在系统空闲时,将重负荷请求数据库分区中的数据同步到正常数据库分区中。10一种用于处理数据库操作请求的系统,包括请求分析器,用于接收来自用户的数据库操作请求,判断该数据库操作请求是否是重负荷请求;以及请求处理器,用于如果该数据库操作请求是重负荷请求,则将该数据库操作请求路由到重负荷请求数据库分区进行处理,以及将该数据库操作请求所影响的数据范围记录在元数据储存库中;其中所述重负荷请求数据库分区是在原有的正常数据库分区之外设置的。11根据权利要求10的系统,其中所述正常数据库分区和所述重负荷请求数据库分区具有相同的表结构,该表结构包含分区键字段,所述正常数据库分区。

7、和所述重负荷请求数据库分区具有不同的分区键。12根据权利要求11的系统,其中,所述请求处理器包括用于向该数据库操作请求添加重负荷请求数据库分区的分区键的装置;以及用于将添加了分区键的该数据库操作请求发送到分区数据库管理系统的装置。13根据权利要求11的系统,其中,所述请求处理器包括用于如果该数据库操作请求不是重负荷请求,进一步判断该数据库操作请求所涉及的数据是否属于元数据储存库中记录的受影响的数据范围的装置;用于如果该数据库操作请求所涉及的数据属于元数据储存库中记录的受影响的数据范围,将该数据库操作请求发送到分区数据库管理系统而不向该数据库操作请求添加正常数据库分区和重负荷请求数据库分区的分区。

8、键。14根据权利要求13的系统,其中,所述请求处理器还包括用于如果该数据库操作请求所涉及的数据不属于元数据储存库中记录的受影响的数据范围,向该数据库操作请求添加正常数据库分区的分区键,并将添加了分区键的该数据库操作请求发送到分区数据库管理系统。15根据权利要求11的系统,其中,所述请求处理器包括用于判断该数据库操作请求是否是数据插入请求的装置;用于如果该数据库操作请求是数据插入请求,则向该数据库操作请求添加重负荷请求数据库分区的分区键的装置;以及用于将添加了分区键的该数据库操作请求发送到分区数据库管理系统的装置。16根据权利要求15的系统,其中,所述请求处理器进一步包括用于如果该数据库操作请求。

9、不是数据插入请求,将该数据库操作请求发送到分区数据库管理系统而不向该数据库操作请求添加正常数据库分区和重负荷请求数据库分区的分区键的装置。17根据权利要求10的系统,其中,所述请求分析器还用于判断该数据库操作请求是否来自经常发出重负荷请求的特殊用户,其中特殊用户的数据被从正常数据库分区复制到重负荷数据库分区;以及所述请求处理器还用于如果该数据库操作请求来自特殊用户,向该数据库操作请求添加重负荷请求数据库分区的分区键并将添加了分区键的该数据库操作请求发送到分区数权利要求书CN101996214ACN101996219A3/3页4据库管理系统。18根据权利要求10的系统,还包括数据同步器,用于在系。

10、统空闲时,将重负荷请求数据库分区中的数据同步到正常数据库分区中。权利要求书CN101996214ACN101996219A1/7页5用于处理数据库操作请求的方法和装置技术领域0001本发明涉及数据处理领域,具体涉及软件即服务SAAS系统。背景技术0002SAASSOFTWAREASASERVICE系统的目的是将软件作为一种服务以降低用户的软件购置和维护成本。在SAAS环境中,大量用户租户共享应用实例和数据库。0003然而,由于在SAAS环境中,数据库系统是在不同租户之间共享的,因此,某个租户的重负荷数据库操作可能会影响其他租户的正常使用。数据库系统中的某些操作,例如租户上线ONBOARDING。

11、和运行期间的数据导入/导出、数据迁移、数据备份/恢复等,会占用大量的磁盘I/O和CPU,从而影响系统处理其他租户请求的性能。大规模的数据迁移或导入有可能持续数小时,在这期间可能会对增加其他租户请求的请求的响应时间,甚至导致不能正常访问系统,这对于其他租户来说是无法接受的。0004传统上,解决这个问题的最常用的方法是异步处理重负荷请求。该方法寻找空闲时间来处理重负荷请求以避免影响正常处理。但从业务要求的角度这种延迟响应的方式是不可接受的。在SAAS环境中,甚至无法就此与租户达成协议。就是说,在大多数情况下,重负荷事务请求需要实时响应,而不能离线或异步处理。0005另一种方法是对租户操作进行速率控。

12、制,例如,限制每个租户能使用的最大资源量。然而,这使得资源利用率不能最大化,从整个系统的角度看无法利用系统的最大共享能力。在SAAS环境中,资源利用率是一种关键要素,使资源利用率最大化通常是需要的。0006因此,本领域中需要一种更有效的用于隔离SAAS应用的租户间应用数据库操作性能影响的方法和装置。发明内容0007在本发明的一个方面,提供了一种用于处理数据库操作请求的方法,包括接收来自用户的数据库操作请求;判断该数据库操作请求是否是重负荷请求;如果该数据库操作请求是重负荷请求,则将该数据库操作请求路由到用于处理重负荷请求的重负荷请求数据库分区进行处理,并将该数据库操作请求所影响的数据范围记录在。

13、元数据储存库中,其中所述重负荷请求数据库分区是在原有的正常数据库分区之外设置的。0008在本发明的另一个方面,提供了一种用于处理数据库操作请求的系统,包括请求分析器,用于接收来自用户的数据库操作请求,判断该数据库操作请求是否是重负荷请求;以及请求处理器,用于如果该数据库操作请求是重负荷请求,则将该数据库操作请求路由到重负荷请求数据库分区进行处理,以及将该数据库操作请求所影响的数据范围记录在元数据储存库中,其中所述重负荷请求数据库分区是在原有的正常数据库分区之外设置的。0009本发明的优点包括0010提供了一种隔离租户间的性能影响的有效方法对于没有任何重负荷请求的租户而言,其所有请求将被直接路由。

14、到正常数据库分区,而不受重负荷请求数据库分区上的重说明书CN101996214ACN101996219A2/7页6负荷请求处理的任何影响。0011重负荷请求将获得实时响应,而不是延迟响应。0012提高了整体系统性能,因为重负荷请求被路由到备用分区,整体系统性能得到提高。0013该方法可以容易地与应用集成,应用可获得性能影响隔离的好处而无需更改或只需很少更改。附图说明0014所附权利要求中阐述了被认为是本发明的特点的创造性特征。但是,通过参照附图阅读下面对说明性实施例的详细说明可更好地理解发明本身以及其优选使用模式、目标、特征以及优点,在附图中0015图1示意性地示出了根据本发明的实施例的用于隔。

15、离SAAS租户间应用数据库操作性能影响的系统;0016图2示出了根据本发明的实施例的用于隔离SAAS租户间应用数据库操作性能影响的方法的准备阶段;0017图3示出了根据本发明的实施例的用于隔离SAAS租户间应用数据库操作性能影响的方法的运行时阶段;以及0018图4示出了根据本发明的实施例的用于隔离SAAS租户间应用数据库操作性能影响的方法的离线处理阶段。具体实施方式0019下面参照附图来说明本发明的实施例。在下面的说明中,阐述了许多具体细节以便更全面地了解本发明。但是,对于本技术领域内的技术人员明显的是,本发明的实现可不具有这些具体细节中的一些。此外,应当理解的是,本发明并不限于所介绍的特定实。

16、施例。相反,可以考虑用下面的特征和要素的任意组合来实施本发明,而无论它们是否涉及不同的实施例。因此,下面的方面、特征、实施例和优点仅作说明之用而不应被看作是所附权利要求的要素或限定,除非权利要求中明确提出。0020本发明提出了一种用于隔离租户间的性能影响的方法。本发明的核心思想在于,通过将数据库分区并将重负荷请求和正常请求路由到不同的分区达到隔离租户间的性能影响的目的。在该方法中,通过将数据库分区得到额外的数据库节点,用额外的数据库节点暂时存储由重负荷请求产生的数据,该数据库节点可称为重负荷请求数据库分区。由正常数据库分区总是处理正常请求,就像应用正常运行一样,而重负荷请求数据库分区专用于处理。

17、重负荷请求。这样,正常请求处理与重负荷请求处理相隔离,从而避免了重负荷请求处理对正常请求处理的影响。0021现参照图1,其示意性地示出了根据本发明的实施例的用于隔离SAAS租户间应用数据库操作性能影响的系统100。如图所示,该系统100位于SAAS应用和分区数据库管理系统之间,并优选地至少部分地在数据库驱动器或其包装例如一JDBCWRAPPER中实现。所述分区数据库系统为本领域中所知的任何分区数据库系统,且包括一个用于存储正常的租户数据的正常数据库分区以及一个额外增加的用于存储重负荷请求所产生的租户数据的说明书CN101996214ACN101996219A3/7页7重负荷请求数据库分区。正常。

18、数据库分区和重负荷请求数据库分区具有不同的分区键,例如正常数据库分区的分区键PK0,而重负荷请求数据库分区的分区键PK1。0022如图所示,该用于隔离SAAS租户间应用数据库操作性能影响的系统100可包括请求分析器110、请求处理器120、元数据储存库130以及表转换及数据同步器140。其中,请求处理器120进一步可包括正常请求处理器121、重负荷请求处理器122,可选的包括特殊租户处理器123。元数据储存库130中可存储有分区键映射表、受影响数据范围表,可选的存储特殊租户列表等。表转换及数据同步器140包括表转换器141、数据同步器143,可选的包括请求和成本统计器142。0023请求分析器。

19、110用于分析来自SAAS应用的数据库操作请求,识别所述请求是正常请求还是重负荷请求。可选的,请求分析器110还判断所述请求是否是来自特殊租户的请求。然后,请求分析器110将经过分析和识别、可选的经过判断的请求发送到相应模块以进行相应的后续处理,例如将正常请求发送到正常请求处理器122处理,将重负荷请求发送到重负荷请求处理器123处理,将来自特殊租户的请求发送到特殊租户处理器121处理。正常请求是指对数据库管理系统将不会造成较大负荷的请求,重负荷请求是指将对数据库管理系统造成较大负荷的请求,而特殊租户是指频繁进行重负荷请求的租户。0024请求分析器110可采用多种方法来识别来自SAAS应用的数。

20、据库操作请求是正常请求还是重负荷请求。例如,SAAS应用的开发者可以事先将通常会造成较重的数据库管理系统处理负荷的重负荷的SQL语句注册到元数据储存库130中,这样,请求分析器110可以通过将当前请求中包含的SQL语句与元数据储存库130中注册的SQL语句进行比较来判断当前请求是否是重负荷请求。再例如,SAAS应用的开发者可以通过AOP面向方面的编程机制或简单编程将应用中的可能造成较重的数据库系统处理负荷的特定事务设置为重负荷事务,这样,请求分析器110可以通过读取所述设置判断当前事务是否是重负荷事务,并进而确定当前请求是否是重负荷请求。0025可选的,可以由请求和成本统计器142收集关于各租。

21、户的数据库访问操作的访问统计信息,包括每次访问的租户ID、SQL、影响时间、数据大小等,从中识别出经常发起重负荷请求的租户,并将这些租户作为特殊租户记录在元数据储存库的特殊租户列表中。这样,请求分析器110就可以通过将发起当前请求的租户与元数据储存库中的特殊租户列表比较来判断当前请求是否是来自特殊租户的请求。0026请求分析器110可以将非重负荷请求识别为正常请求,可选的可以将既非重负荷请求又不是来自特殊租户的请求的所有其他请求识别为正常请求。0027正常请求处理器121用于处理由请求分析器110发送的来自SAAS应用的正常数据库操作请求。响应于接收到正常请求,正常请求处理器121首先通过读取。

22、元数据储存库中的受影响数据范围表来判断所请求操作的数据是否属于受影响数据范围。如果判断所请求操作的数据不属于受影响数据范围,说明所请求操作的数据仅位于或将位于正常数据库分区中,则正常请求处理器121向请求中的SQL语句添加正常数据库分区的分区键,然后将请求发送给分区数据库管理系统,以便由分区数据库管理系统根据分区键自动将请求路由到正常数据库分区以进行相应的操作。如果判断所请求操作的数据属于受影响数据范围,说明所请求操作的数据至少位于重负荷数据库分区中,则正常请求处理器121不向请求中的SQL语句添加正常数据库分区和重负荷请求数据库分区的分区键,并将请求发送给说明书CN101996214ACN1。

23、01996219A4/7页8分区数据库管理系统,以便由分区数据库管理系统自动将请求路由到正常数据库分区以及重负荷数据库分区以进行相应的操作。0028重负荷请求处理器122用于处理由请求分析器110发送来的来自SAAS应用的重负荷数据库操作请求。响应于接收到重负荷请求,重负荷请求处理器122还将请求所影响的数据范围记录在元数据储存库中。此外,重负荷请求处理器122判断该重负荷请求是否是数据插入请求。如果该重负荷请求是数据插入请求,则重负荷请求处理器122向请求中的SQL语句添加重负荷请求数据库分区的分区键,然后将请求发送给分区数据库管理系统,以便由分区数据库管理系统根据分区键自动将请求路由到重负。

24、荷数据库分区,以进行相应的数据插入操作。如果该重负荷请求不是数据插入请求,例如是数据读取或更新请求,则重负荷请求处理器122不向请求中的SQL语句添加正常数据库分区和重负荷请求数据库分区的分区键,并将请求发送给分区数据库管理系统,以便由分区数据库管理系统自动将请求路由到重负荷数据库分区以及正常数据库分区,以分别进行相应的数据更新和读取操作。0029可选的,特殊租户处理器123用于处理由请求分析器110发送来的来自于特殊租户的数据库操作请求。响应于接收到来自特殊租户的请求,特殊租户处理器123向请求中的SQL语句添加重负荷请求数据库分区的分区键,然后将请求发送给分区数据库管理系统,以便由分区数据。

25、库管理系统自动地将请求路由到重负荷数据库分区,以进行相应的操作。0030元数据储存库130中的受影响数据范围表用于记录受重负荷请求影响的数据范围,即被存储在重负荷请求数据库分区中的数据的范围。受影响的数据范围可通过SAAS应用中的租户、数据库表或其他更细粒度的数据库操作或其组合来区分。例如,图1中例示了一个受影响数据范围表的内容,其中示出了租户T1和数据库表SALES为一个受影响的数据范围,表明租户T1的SALES表中的数据被存储在特殊请求数据库分区中,类型“重负荷”表明该受影响的数据范围是由重负荷请求产生的,且时间戳中示出了在重负荷请求数据库分区中产生相应数据的时间;此外,示出了租户T2和数。

26、据库表SALES为另一个受影响的数据范围,表明租户T2的SALES表中的数据被存储在特殊请求数据库分区中,类型“特殊”表明该受影响的数据范围是根据特殊租户产生的,且时间戳中示出了在重负荷请求数据库分区中产生相应数据的时间。0031表转换器141用于修改正常数据库分区中的各数据库表,以向每个数据库表添加一个分区键字段,以及将正常数据库分区中的各数据库表的结构复制到重负荷请求数据库分区。表转换器141可以在准备阶段,例如当SAAS应用安装时,执行上述操作。0032请求和成本统计器142,如上所述,用于通过收集关于各租户的数据库操作请求的统计信息,来识别经常发起重负荷请求的特殊租户,并将所述特殊租户。

27、记录在元数据储存库中的特殊租户列表中。0033数据同步器143用于通过修改分区中数据的分区键使得数据自动被迁移到另一分区。例如,数据同步器143可以在系统空闲时修改重负荷请求数据库分区中的数据的分区键,以便使分区数据库管理系统根据修改后的分区键自动将数据同步到正常分区中,并且修改元数据储存库中的受影响数据范围表以反映当前的数据状态,例如删除与已被同步到正常数据库分区的数据有关的受影响数据范围。经过同步,未来对相应数据的访问请求说明书CN101996214ACN101996219A5/7页9只需要被路由到正常数据库分区,而无需路由到重负荷数据库分区,从而使系统更为高效。0034此外,数据同步器1。

28、43可以通过修改正常数据库分区中由请求和成本统计器142识别出的特殊租户的数据的分区键,将特殊租户的数据从正常数据库分区迁移到重负荷数据库分区。0035以上参照附图描述了本发明的实施例。应指出的是,以上描述仅为示例性说明,而不是对本发明的限制。本发明的实施例可具有更多、更少或不同的模块,且不同模块之间的包含和连接关系可以与所描述的不同。例如,在本发明的一些实施例中,可以包括两个或两个以上的重负荷请求数据库分区;在本发明的另一些实施例中,可以不包括所述特殊租户处理器121及对特殊租户的识别、处理等功能;等等。所述这些变化都处于本发明的精神和范围之内。0036现参照图2,其示出了根据本发明的实施例。

29、的用于隔离SAAS租户间应用数据库操作性能影响的方法的准备阶段。该准备阶段可以在SAAS应用启动之前,例如在SAAS应用安装时执行。如图所示,该准备阶段包括以下步骤0037在步骤201,向SAAS应用的用于存储租户数据的各数据库表添加一个分区键字段。0038在步骤202,向SAAS应用的分区数据库管理系统添加一个额外的重负荷请求数据库分区,使得分区数据库管理系统包括原来的正常数据库分区以及新增加的重负荷请求数据库分区,并将正常数据库分区中用于存储租户数据的各数据库表结构复制到重负荷请求数据库分区中。0039在步骤203,为每个数据库分区指定一个不同的分区键,并在元数据储存库中维护分区键和数据库。

30、分区之间的映射。0040以上步骤可以由前述表转换器141执行。0041现参照图3,其示出了根据本发明的实施例的用于隔离SAAS租户间应用数据库操作性能影响的方法的运行时阶段。该阶段可以在SAAS应用运行时执行。如图所示,该运行时阶段包括以下步骤0042在步骤301,响应于接收到来自租户的请求,识别发送该请求的租户。0043在可选步骤302,通过将识别的租户与元数据储存库中的特殊租户列表进行比较来判断该请求是否来自于特殊租户。0044响应于该判断为是,执行可选步骤303。响应于该判断为否,执行步骤305。0045在可选步骤303,将该请求发送到特殊租户处理器进行处理。0046在可选步骤304,特。

31、殊租户处理器通过向请求添加重负荷数据库分区的分区键,例如将分区键作为条件子句添加到请求的SQL语句中,由分区数据库管理系统自动将请求发送到重负荷请求数据库分区进行处理。0047在步骤305,判断该请求是否是重负荷请求。如果该判断否,则执行步骤306;如果该判断为是,则执行步骤311。0048在步骤306,将请求发送到正常请求处理器。0049在步骤307,正常请求处理器读取元数据储存库中的受影响数据范围表。0050在步骤308,正常请求处理器根据受影响数据范围表判断该请求涉及的数据是否属于受影响数据范围。如果该判断为否,则执行步骤309;如果该判断为是,则执行步骤说明书CN101996214AC。

32、N101996219A6/7页10310。0051在步骤309,由于该请求涉及的数据不属于受影响的数据范围,说明数据仅存在于正常数据库分区中,而不存在于重负荷数据库分区中,因此,向请求添加正常数据库分区的分区键,例如将分区键作为条件子句添加到请求的SQL语句中,然后将请求发送到分区数据库管理系统,以便由分区数据库管理系统根据分区键自动将请求路由到正常数据库分区进行处理。0052在步骤310,由于该请求涉及的数据属于受影响的数据范围,说明数据至少存在于重负荷数据库分区中,因此,不向请求中的SQL语句添加正常数据库分区和重负荷请求数据库分区的分区键,而是直接将请求发送到分区数据库管理系统,以便由分。

33、区数据库管理系统根据自动将请求路由到正常数据库分区以及重负荷数据库分区中进行处理。0053在步骤311,将请求发送到重负荷请求处理器。0054在步骤312,重负荷请求处理器更新元数据储存库中的受影响数据范围表,以将当前请求所影响的数据范围记录在受影响数据范围表中。0055在步骤313,重负荷请求处理器判断该请求是否是数据插入请求。如果该判断为是,则执行步骤314。如果该判断为否,则执行步骤315。0056在步骤314,重负荷请求处理器向请求添加重负荷请求数据库分区的分区键,例如将分区键作为条件子句添加到请求的SQL语句中,然后将请求发送给分区数据库管理系统,以便由分区数据库管理系统根据分区键自。

34、动将请求路由到重负荷数据库分区进行处理。0057在步骤315,重负荷请求处理器不向请求中的SQL语句添加正常数据库分区和重负荷请求数据库分区的分区键,并将请求发送给分区数据库管理系统,以便由分区数据库管理系统自动将请求路由到正常数据库分区以及重负荷数据库分区进行处理、0058在本发明的一些实施例中,可以不包括上述步骤313、315。而是在步骤312之后,执行步骤314。此外,在本发明的一些实施例中,步骤312可以在步骤314或315之后执行。0059现参照图4,其示出了根据本发明的实施例的用于隔离SAAS租户间应用数据库操作性能影响的方法的离线处理阶段。如图所示,该阶段包括以下步骤0060在步。

35、骤401,系统统处于空闲状态。随后,分别执行步骤402和步骤404。0061在步骤402,数据同步器通过将重负荷请求数据库分区中的数据的分区键修改为正常数据库分区的分区键,使得分区数据库管理系统自动将重负荷请求数据库分区中的数据同步到正常数据库分区中。0062在步骤403,更新元数据储存库中的受影响数据范围表,以去除与被同步的数据相关的受影响数据范围。0063在步骤404,请求和成本统计器收集关于所有租户的数据库访问的统计信息,包括租户ID、SQL语句、响应时间、数据大小等。0064在步骤405,请求和成本统计器根据所收集的统计信息识别经常发起重负荷请求的特殊租户。0065在步骤406,将所识。

36、别的租户作为特殊租户记录在元数据储存库中的特殊租户列表中。0066以上描述了根据本发明的实施例的用于隔离SAAS租户间应用数据库操作性能影说明书CN101996214ACN101996219A7/7页11响的方法。应指出的是,以上描述仅为示例,而不是对本发明的限制。在本发明的其他实施例中,该方法可具有更多、更不或不同的步骤。例如,在本发明的一些实施例中,可以没有判断请求是否来自特殊租户的步骤302,以及对特殊租户的相应处理步骤303、304;在本发明一些实施例中,可以没有将请求发送到正常请求处理器的步骤306、将请求发送到重负荷请求处理器的步骤311、和将请求发送到特殊租户处理器的步骤303,。

37、而是根据对请求的分析直接对请求进行相应的处理;此外,可以将上述多个步骤进行合并与概括,例如上述步骤313、314、315可以概括为一个步骤,在该步骤中,如果该数据库操作请求是重负荷请求,则将该数据库操作请求路由到用于处理重负荷请求的重负荷请求数据库分区进行处理,等等。所有这些变化都处于本发明的精神和范围之内。0067本发明可以硬件、软件、或硬件与软件的结合的方式实现。本发明可以集中的方式在一个计算机系统中实现,或以分布方式实现,在这种分布方式中,不同的部件分布在若干互连的计算机系统中。适于执行本文中描述的方法的任何计算机系统或其它装置都是合适的。一种典型的硬件和软件的组合可以是带有计算机程序的。

38、通用计算机系统,当该计算机程序被加载和执行时,控制该计算机系统而使其执行本发明的方法,并构成本发明的装置。0068本发明也可体现在计算机程序产品中,该程序产品包含使能实现本文中描述的方法的所有特征,并且当其被加载到计算机系统中时,能够执行所述方法。0069尽管已参照优选实施例具体示出和说明了本发明,但是本领域内的那些技术人员应理解,可在形式和细节上对其进行各种改变而不会背离本发明的精神和范围。说明书CN101996214ACN101996219A1/4页12图1说明书附图CN101996214ACN101996219A2/4页13图2说明书附图CN101996214ACN101996219A3/4页14图3说明书附图CN101996214ACN101996219A4/4页15图4说明书附图CN101996214A。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1