一种面向多租户的数据库引擎及其数据访问方法。本发明专利技术的方法包括:接收租户数据访问请求;确定与该租户相对应的租户实体,其中多个租户实体共享数据库中的一张逻辑表;根据租户实体的配置信息处理租户的数据访问请求。本发明专利技术在数据库中引入了租户实体的概念:多个租户实体共享一张逻辑表,降低了开发和管理的成本;同时每个租户实体都拥有独立的数据库访问账号,解决了数据库访问的安全性问题。当租户请求到来时,将根据租户的账号的权限来处理租户的数据访问请求。由于本发明专利技术引入的租户实体的概念,为使租户的数据在物理上相互分开从而为提高性能和良好的隔离性、可扩展性提供了可能,同时为实现面向租户的服务质量管理提供了可能。
【技术实现步骤摘要】
本专利技术涉及多租户数据库共享,尤其涉及一种面向多租户的数据 库引擎及其数据访问方法。
技术介绍
在多租户系统中,数据库服务提供商将一个数据库实例租给多个中小型(SMB)租户,从而大量中小型租户共享同一个数据库实例。 柚造一个合理的多租户体系结构,要考虑如下技术问题安全性问题由于多个租户共享同一个数据库实例,要防止一个 租户访问其它租户置于该数据库中的数据;应用开发成本必须要考虑在部署这样一个多租户应用的时候开 发者的开发复杂度;管理成本必须考虑操作平台的管理复杂度,这些操作比如包括 租户登录、备份和恢复、运行时操作等等;性能和可扩展性希望随着租户的数量的增加,依然能提供高性能的可扩展性;面向租户的服务级别协议(SLA)管理应当能够根据租户的 SLA,提供相应的服务质量。现有技术中存在两种关于多租户系统的解决方案:共享表方案和单独表方案。在共享表方案中,所有租户共享数据库中的一张表。在该表中有 一个"租户一id"的字段。租户靠该"租户—id"字段来辨别哪条记录属于 哪个租户。在这种情况下,虽然各个租户在接入到UI及业务逻辑时 有区分,但对于数据库来说,所有租户是利用一个共同的代理平台级 数据库(DB )账号来访问数据库的。代理平台级数据库账号拥有对数5据库空间内所有租户数据的访问权。这样, 一个租户的数据实际上能 够被另一个租户所"看见",产生了不安全问题。在单独表方案中,在数据库中为每个租户单独准备一张表。租户 只能访问到数据库中它自己的表,不能访问其它租户的表。在这种情况下,对于数据库来说,租户是利用它独有的DB账号来访问数据库 的。每个租户被分配给一个独有的账号,使其仅拥有对该租户本身的数据的表的访问权。这样,就消除了安全方面的隐患。但是,由于在 数据库中为每个租户单独准备一张表,在租户多的时候管理起来十分困难,极大地加大了管理上的成本。因此,期望一种既能够解决安全性问题,又不会加大管理上的成 本,同时能基于多租户的特性提高数据库整体性能的新的数据库引擎 及方法。图1是现有技术中数据库5'的结构框图。数据库5'包括数据库 引擎522,和数据库存储空间512,。图2是现有技术的数据库访问模式 的示意图。现结合图1和2,说明现有技术的数据库引擎522,的工作 情况。图1中的安全模块501,、访问控制器503,和查询优化器505,可 以由现有技术的数据库引擎522,实现。安全模块501,负责在接收到来 自用户的SQL请求后,判断用户的身份是否合法。访问控制管理器 503,如图2的中间部分所示,包括表模式模块5031,、用户访问权限 表5032,和表配置模块5033,。表模式模块5031,存储着数据库存储空 间512,中所存储的表的表模式。表配置模块5033,存储着数据库存储 空间512,中所存储的表的表配置。用户访问权限表5032,按用户存储 着与用户账号相对应的权限,即与用户账号对应的用户有无访问数据 库的权限。现有技术的访问控制管理器503,当接收到来自用户的SQL 请求后,从该SQL请求得出用户账号,根据用户访问权限表5032,判 断出与该用户账号对应的用户是否有访问数据库的权限。 一旦判断出 与该用户账号对应的用户有访问数据库的权限,查询优化器505根据 一系列算法算出从数据库512的什么位置进行优化查找。
技术实现思路
本专利技术的一个目的是提供一种既能够解决安全性问题,又不会加 大管理上的成本,同时能基于多租户的特性提高数据库整体性能的新 的数据库引擎及方法。本专利技术的另一个目的是能够实现面向租户的服务质量管理。本专利技术提供了一种面向多租户的数据库数据访问方法,包括接 收租户数据访问请求;确定与该租户相对应的租户实体,其中多个租 户实体共享数据库中的一张逻辑表;根据租户实体的配置信息处理租 户的数据访问请求。本专利技术还提供了一种面向多租户的数据库引擎,包括匹配识别 模块,其将租户账号与租户实体进行匹配,识别出与发出请求的租户 的账号相对应的租户实体;访问控制管理器,其维护每一租户实体的相关访问权限,根据匹配识别模板识别出的租户实体,判断出该租户 实体是否有对数据库的访问权限。本专利技术在数据库中引入了 "租户实体,,对象,以"租户实体,,作为访 问数据库的最小单位。"租户实体,,对象具有以下特征它具有与租户 访问账号的对应关系, 一个租户对应于一个独特的租户账号, 一个租 户账号对应着一个租户实体;将数据库存储空间分成多个区,每个区 记录一个租户实体的数据,即一个区对应着一个租户实体,每个租户 实体的记录在物理上相互分开;可以为每个租户实体分配不同的优先 级,从而根据不同的租户实体实行不同的服务质量策略。虽然多个租 户实体共享一张逻辑表,但由于每个租户实体的记录在数据库存储空 间中在物理上相互分开,这样就既能够保证查询优化器在仅有一张逻 辑表的前提下准确地将租户的访问请求定位到数据库存储空间中与 该租户的租户实体相对应的分区,又能够保证该租户"看不见"其它租 户的数据。也就是说,多个租户实体共享一张逻辑表,降低了管理的 成本,并且对于开发人员来说仅需在一张表上进行开发,降低了开发 成本;同时每个租户实体都拥有独立的数据库访问账号,解决了数据库访问的安全性问题。当租户请求到来时,将根据与租户的账号相对 应的租户实体的权限来处理租户的数据访问请求。由于本专利技术引入了 租户实体这个数据库对象,为使租户的数据在物理上相互分开从而为 提高性能和良好的隔离性、可扩展性提供了可能。同时,本专利技术提出 的租户实体对象为对于具有不同服务质量要求的租户提供适合于其特定服务质量要求的服务、实现面向租户的服务质量管理提供了可 能。因为本专利技术存在着租户实体对象,则可以为租户实体指定优先级,并釆用特定的服务质量管理策略来调度具有不同优先级的各个租户 实体的租户所发出的访问请求。另外,通过本专利技术的上述方式,查询优化器先定位到数据库存储 空间内与该租户实体相对应的区,然后在该区内搜索记录,提高了查 找的效率。附图说明图l是现有技术中的数据库的结构框图。图2是现有技术的数据库访问模式的示意图。 图3是本专利技术的包含数据库引擎的数据库的结构框图。 图4示出了本专利技术的匹配识别模块所维护的账号与实体的对应 关系列表的例子。图5是本专利技术的数据库访问模式的示意图。图6示出了一个按与租户实体对应的区在数据库存储空间中访 问记录的示例。图7是面向租户实体的服务质量控制机制的示意图。 图8是图3的数据库引擎工作的一个示例性流程图。 图9是图3中的查询优化器的详细结构框图。 图IO是本专利技术概括后的方法流程图。具体实施例方式现在结合具体实施方式对本专利技术进行更加详细的说明。本专利技术在数据库中引入了"租户实体"对象,以"租户实体,,作为访 问数据库的最小单位。"租户实体"对象具有与租户访问账号的对应关 系, 一个租户账号对应着一个租户实体。将数据库存储空间分成多个 区,每个区记录一个租户实体的数据,即每个租户实体的记录在物理 上相互分开。在本专利技术中,多个租户实体共享一张逻辑表。由于每个 租户实体的记录在数据库存储空间中在物理上相互分开,这样就既能 够保证查询优化器在仅有一张逻辑表的前提下准确地将租户的访问请求定位到数据库存储空间中与该租户的租户实体相对应的分区本文档来自技高网...
【技术保护点】
一种面向多租户的数据库数据访问方法,包括: 接收租户数据访问请求; 确定与该租户相对应的租户实体,其中多个租户实体共享数据库中的一张逻辑表; 根据租户实体的配置信息处理租户的数据访问请求。
【技术特征摘要】
【专利技术属性】
技术研发人员:王芝虎,高波,郭常杰,孙伟,
申请(专利权)人:国际商业机器公司,
类型:发明
国别省市:US[美国]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。