多租户数据存储和访问方法和装置制造方法及图纸

技术编号:4191047 阅读:229 留言:0更新日期:2012-04-11 18:40
提供了一种用于存储和访问多租户数据的方法,该方法包括:在一个或多个数据库中建立多个表组,其中每个表组用于存储多个租户中的一组租户的数据;以及响应于接收到来自租户的数据访问请求,访问相应的表组中的租户数据。

【技术实现步骤摘要】

本专利技术涉及数据处理领域,具体涉及多租户技术,更具体涉及一种多 租户数据存储和访问方法和装置。
技术介绍
多租户(imilti-tenancy)技术,作为一种近年来日益引起人们更大兴 趣的技术,是指在服务提供商的服务器上运行软件的单个实例,由该单个 实例为多个客户组织(即租户)尤其是中小企业提供服务。图1示出了多 租户应用的体系结构的示意图。在大目的多租户应用场景中,可能有大 量的(例如超过100万个)中小企业租户同时访问托管平台上的应用实例。 随着租户数量的大量增加,多租户应用面临着如下挑战 一是继续保持较 低和稳定的每租户资源使用成本,并同时保持可接受的每租户性能水平; 二是保持较低的诸如租户间操作、租户注册等管理操作的复杂性。现有的多租户技术使用如图2所示的三种典型的物理数据存储或共享 模式第一种是单独数据库模式,即每个租户拥有自己单独的数据库。这种 模式存在着如下缺点以当前主流数据库关系系统为例,每新构建一个数 据库至少需要大约80M的缺省硬盘空间,这样,如果需要300个数据库, 则需要24G的硬盘空间;如果需要500个数据库,则需要40G的硬盘空间。 在运行时,数据库耗用的内存空间较大,比如300个数据库本身至少需要 2.4G的内存空间,而500个数据库本身至少需要3G的内存空间。此外, 随着租户数量的增加,即使增加的租户数量并不大,整体系统数据访问性 能水平已经急剧降低。由于有以上缺点,这种单独数据库模式在仅适用于租户数量很少且为大型租户的场景。第二种模式是共享数据库及共享表模式,在这种模式中,所有租户共享同一个数据库中的同一个表组(即用于特定应用的一组表),这样就需要在表组的每个表中增加一个新的租户ID字段,以便将不同租户的数 据记录区分开来。这种模式的优点包括由于仅有一个表组,因此易于进 行跨租户的管理操作;构建一个数据库仅需要约80M的缺省硬盘空间;在 运行时,数据库本身所耗用的缺省内存空间约为600-700M。然而,这种 模式的缺点是,随着租户数量增加到一个很大的数量(例如,超过IOOO), 会出现多租户数据间互相严重干扰,整体系统数据访问性能急剧降低的断 点(break point)。第三种才莫式是共享数据库及单独表模式,在这种才莫式中,所有租户共 享同一个数据库,但每个租户拥有自己单独的表组。这种模式的优点在于 即使租户的数量增加到很大的数量,也不会出现整体系统数据访问性能急 剧降低的断点;构建一个数据库只需要大约80M的缺省硬盘空间;在运行 时,数据库本身的内存空间消耗缺省约为600-700M。然而,这种才莫式的 缺点是由于表组数量等于租户数量,因而随着租户数量增加,表组数量 会变得太大,这样租户注册、跨租户等管理操作会异常复杂。图3示出了在上述三种模式下一示例多租户应用的整体系统数据访问 性能随着租户数的增加而变化的情况。从图中可见,共享数据库且单独表 模式下的性能较高且相对于租户数的增加较为稳定。而共享数据库且共享 表模式下的性能低一些,且随着租户数增加到如1000个左右出现整体系统 数据访问性能较快下降的断点。单独数据库模式下的整体系统数据访问性 能随着租户数的增加而急剧下降。显然,本领域中需要一种既能够随着租户数的大量增加而保持整体系 统数据访问性能的稳定性、又可降低管理成本的多租户数据存储方案。
技术实现思路
根据本专利技术的一个方面,提供了 一种用于存储和访问多租户数据的方表组,其中每个表組用于 存储所述多个租户中的一组租户的数据;以及响应于接收到来自租户的数据访问请求,访问相应的表組中的租户数据。根据本专利技术的另一个方面,提供了一种用于存储和访问多租户数据的装置,包括建立模块,被配置为在一个或多个数据库中建立多个表组, 其中每个表组用于存储所述多个租户中的一组租户的数据;以及多租户数 据路由器,被配置为响应于接收到来自租户的数据访问请求,访问相应的 表组中的租户数据。本专利技术的优点是在租户数很大的情况下既保证了较高的性能,又保证 了较低的管理成本。具体地说,由于与共享数据库且单独表组模式相比, 表组数减少了,因此提高了资源使用效率,并且跨租户操作等的管理成本 减少了。此外,在一定的表共享率(即每个表组所对应的租户数量)下, 即使租户数量增加到很大数量(例如超过4000个租户),整体系统数据访问性能也保持接近于共享数据库且单独表模式下的性能水平。此外,提供 了在部署多租户应用部署时可预测的适当数据共享方案。附图说明所附权利要求中阐述了被认为是本专利技术的特点的创造性特征。但是, 通过参照附图阅读下面对说明性实施例的详细说明可更好地理解专利技术本身以及其优选使用模式、另外的目标、特征以及优点,在附图中 图l示出了多租户应用的体系结构示意图;图2示出了现有的多租户技术使用的三种典型的物理数据存储或共享 模式;图3示出了在三种共享模式下一示例多租户应用的性能随着租户数的 增加而变化的情况;图4示出了根据本专利技术的实施例的用于存储和访问多租户数据的方法; 图5示出了根据本专利技术的实施例根据最小表组数策略创建和分配共享组和表组的具体步骤;图6示出了根据本专利技术的实施例根据最大性能策略创建和分配共享组 和表组的具体步骤;图7示出了根据本专利技术的实施例的用于获得在数据库中存储多租户应 用的多租户数据的共享方案的方法;图8例示了根据本专利技术的实施例的用于获得在数据库中存储多租户应 用的多租户数据的共享方案的方法的具体步骤;以及图9示出了根据本专利技术的实施例的用于存储和访问多租户数据的装置。具体实施方式下面参照附图来说明本专利技术的实施例。在下面的说明中,阐述了许多 具体细节以便更全面地了解本专利技术。但是,对于本
内的技术人员 很明显,本专利技术的实现可不具有这些具体细节。此外,应当理解的是,本 专利技术并不限于所介绍的特定实施例。相反,可以考虑用下面的特征和元素 的任意组合来实施和实践本专利技术。而无论它们是否涉及不同的实施例。因 此,下面的方面、特征、实施例和优点仅作说明之用而不应被看作是所附 权利要求的要素或限定,除非权利要求中明确提出。下面参照附图4描述根据本专利技术的实施例的用于存储和访问多租户数 据的方法。如图所示,在可选步骤401,确定多租户应用的一个或多个数据库中 的每个数据库中的最大表组数和最大表共享率。表共享率是指每个表组中 所包含的租户的数量。可以使用多种方法来确定所述最大表组数和最大表 共享率,例如由用户根据经验来确定,或者使用下文中参照图7所述的仿 真方法来确定。在步骤402,在所述一个或多个数据库中建立多个表组,其中每个表 組用于存储所述多个租户中的一组租户的数据。所述一组租户称为共享组, 该共享组所包含的租户的数量即为表共享率。在本专利技术的不同实施例中,表共享率可以不同,例如可以是500、 100、 25、 IO等等。属于同一共享组中的租户的数据在同一表组中可使用租户ID区分开来。用于存储不同共享组的租户数据的不同表组可位于相同或不同的数据 库中。在本专利技术的实施例中,所述在一个或多个数据库中建立多个表组是根 据所确定的每个数据库中的最大表组数以及每个表组的最大表共享率进行 的。也就是说,在每个数据库中所建立的表组的数量不超过所确定的最大 表组数,且每个表组所对应的共享组中租户的数量不超过本文档来自技高网
...

【技术保护点】
一种用于存储和访问多租户数据的方法,包括: 在一个或多个数据库中建立多个表组,其中每个表组用于存储所述多个租户中的一组租户的数据;以及 响应于接收到来自租户的数据访问请求,访问相应的表组中的租户数据。

【技术特征摘要】
1.一种用于存储和访问多租户数据的方法,包括在一个或多个数据库中建立多个表组,其中每个表组用于存储所述多个租户中的一组租户的数据;以及响应于接收到来自租户的数据访问请求,访问相应的表组中的租户数据。2. 根据权利要求1的方法,还包括将租户与表组之间的对应 关系记录在多租户元数据库中,且所述响应于接收到来自租户的 数据访问请求,访问相应的表组中的租户数据包括响应于接收到 来自租户的数据访问请求,通过查询所述多租户元数据库来找到 相应的表组,并访问相应的表组中的租户数据。3. 根据权利要求1的方法,其中,所述数据访问请求包含用 于数据访问的SQL语句,且所述响应于接收到来自租户的数据访 问请求,访问相应的表组中的租户数据包括响应于接收到来自租 户的数据访问请求,提取并分析该数据访问请求中包含的SQL语 句,将该SQL语句〗奮改为用于访问相应的表组中该租户的相应数 据的相应的SQL语句,并将该修改后的SQL语句发送给相应的 数据库。4. 根据权利要求1的方法,还包括确定每个数据库中的最大 表组数和最大表共享率,且其中,在所述一个或多个数据库中建 立多个表组是根据所确定的每个数据库中的最大表组数以及最大 表共享率进行的。5. 根据权利要求4的方法,其中在所述一个或多个数据库中 建立多个表組包括响应于新租户注册,如果判断当前数据库中存在未达到所述 最大表共享率的表组,则将新租户分配给该表组;如果判断当前数据库中不存在未达到所述最大表共享率的表组,并且判断当前数据库中的表组数没有达到所述最大表组数,则建立一个新表组,并将所述新租户分配给所述新表组;以及否则针对下一个数据库执行以上操作,直到所述一个或多个 数据库中的每一个数据库都包含了所述最大表组数,且每一个表 组都达到了所述最大表共享率。6. 根据权利要求4的方法,其中在所述一个或多个数据库中 建立多个表組包括响应于新租户注册,如果判断当前数据库中的表组数未达到 所述最大表组数,则创建新表组,并将新租户分配给该新表组, 直到当前数据库中的表组数达到最大表组数;如果判断当前数据库中的表组数已达到所述最大表组数,则 将新租户分配给当前数据库中租户数最少的表组,直到当前数据库中的所有表组均达到所述最大表共享率;以及然后针对下一个数据库重复执行以上操作,直到所述一个或 多个数据库中的每一个数据库都达到了所述最大表组数,且每一 个表组都达到了所述最大表共享率。7. 根据权利要求4的方法,其中所述确定每个数据库中的最 大表组数和最大表共享率包括建立反映所述多租户应用的使用的仿真用例; 针对所迷多租户应用以及该数据库运行所述仿真用例,从而 获得所述多租户应用在多个表共享率中的每个表共享率和多个租 户总数量水平中的每个租户总数量水平下的总性能值;以及根据所述总性能值以及对于每个租户的所要求性能值得出所 述最大表共享率和最大租户总数量水平,并进而得出该数据库中 的最大表组数,其中所述得出最大表共享率和最大租户总数量水 平还根据所述多租户应用的提供方所能容忍的、在对于每个租户 的所要求性能值不变的情况下随着表共享率的增加而造成的租户 总数量水平降低的百分比。8. 根据权利要求7的方法,其中所述得出最大表共享率和租 户总数量水平包括根据表共享率为1时各租户总数量水平下的总性能值以及对 于每个租户的所要求性能值得出表共享率为1时满足对于每个租 户的所要求性能值的租户总数量水平;根据所述表共享率为1时满足对于每个租户的所要求性能值 的租户总数量水平以及所述多租户应用的提供方所能容忍的所述 租户数量降低的百分比得出所述提供方所能接受的最大租户总数 量水平',以及通过比较所述多租户应用在多个表共享率和该最大租户总数 量水平下的总性能值与在该最大租户总数量水平下满足对于每个 租户的所要求性能值的总性能值来得出所述最大表共享率。9. 一种用于存储和访问多租户数据的装置,包括 建立模块,被配置...

【专利技术属性】
技术研发人员:王芝虎高波郭常杰孙伟苏中安文豪张真
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1