面向多租户的数据库引擎及其数据访问方法

文档序号:6457868阅读:190来源:国知局
专利名称:面向多租户的数据库引擎及其数据访问方法
技术领域
本发明涉及多租户数据库共享,尤其涉及一种面向多租户的数据 库引擎及其数据访问方法。
背景技术
在多租户系统中,数据库服务提供商将一个数据库实例租给多个
中小型(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是本发明概括后的方法流程图。
具体实施例方式
现在结合具体实施方式
对本发明进行更加详细的说明。本发明在数据库中引入了"租户实体"对象,以"租户实体,,作为访 问数据库的最小单位。"租户实体"对象具有与租户访问账号的对应关 系, 一个租户账号对应着一个租户实体。将数据库存储空间分成多个 区,每个区记录一个租户实体的数据,即每个租户实体的记录在物理 上相互分开。在本发明中,多个租户实体共享一张逻辑表。由于每个 租户实体的记录在数据库存储空间中在物理上相互分开,这样就既能 够保证查询优化器在仅有一张逻辑表的前提下准确地将租户的访问
请求定位到数据库存储空间中与该租户的租户实体相对应的分区,又 能够保证该租户"看不见,,其它租户的数据,从而降低了管理、开发成 本,同时解决了数据库访问的安全性问题。
图3是本发明的包含数据库引擎的数据库的结构框图。图3中的 安全模块501、访问控制器503和查询优化器505与图1中的安全模 块501,、访问控制器503,和查询优化器505,基本相同。与图1相比, 图3中增加了租户实体安全才几制插件502、匹配识别才莫块401、基于 租户实体的权限控制插件504、租户实体与权限映射模块513、租户 实体查询优化器插件507。因此,本发明可通过编程实现这些插件, 然后将这些插件插到现有技术中已有的安全模块501,、访问控制器 503,和查询优化器505,得以实现。其中,租户实体安全机制插件502、 匹配识别模块401插在安全模块501上。基于租户实体的权限控制插 件504、租户实体与权限映射模块513插在访问控制器503上。租户 实体查询优化器插件507插在查询优化器505上。
下面举例说明图3中各部分的工作过程。
假设安全模块501接收到了来自租户A的SQL请求。安全模块 501对租户A的身份进行验证。由于本发明引入了租户实体对象,匹 配识别模块401将租户A的账号a与租户实体进行匹配。匹配识别模 块401存储并维护所有租户的账号与租户实体的对应关系列表。图4 示出了本发明的匹配识别模块所维护的账号与实体的对应关系列表 的例子。在图4中,租户A、 B、 C、 D、 E、 F所分别拥有的账号a、
9b、 c、 d、 e、 f分别对应着租户实体l、 2、 3、 4、 5、 6。通过查找对 应关系列表,匹配识别模块401获知与租户账号a对应的租户实体是 租户实体1。租户实体安全机制插件502对租户实体1进行安全验证。
然后,安全模块S01将租户实体1的租户实体标识连同该访问请 求一同发送给访问控制管理器503。此时,基于租户实体的权限控制 插件504、租户实体与权限映射模块513将工作。加入T基于租户实 体的权限控制插件504、租户实体与权限映射模块513的访问控制管 理器503更形象地看作是图5中间部分的访问控制管理器503。它维 护共同表模式模块5031 、租户实体访问权限表5032、表配置模块5033。
图5中间部分的共同表模式模块5031、租户实体访问权限表 5032、表配置模块5033与图2中间部分的表模式模块5031'、用户访 问权限表5032'、表配置模块5033,的区別在于图2中的表模式模块 5031,、用户访问权限表5032'、表配置模块5033,是面向用户的,图5 中的共同表模式模块5031、租户实体访问权限表5032、表配置模块 5033是面向租户对象的。因此,关于这些部件,本领域技术人员可以 在现有技术的相关部件的基础上通过编程修改实现。共同表模式模块 5031与图2现有技术中的表模式模块5031,类似,它存储着数据库存 储空间512所存储的逻辑表的表模式。租户实体访问权限表5032与 图2现有技术中的用户访问权限表5032,的区别是,用户访问权限表 5032,按用户存储着与用户账号相对应的权限,而租户实体访问权限表 5032则存储着与租户实体相对应的访问权限。表配置模块5033为每 个租户实体维护着数据库存储空间512所存储的逻辑表的配置信息, 该配置信息可以针对某个租户实体进行修改。
当访问控制管理器503接收到租户实体1的租户实体标识时,根 据租户实体访问权限表5032判断出租户实体1有访问数据库存储空 间512的权限,于是将租户实体1的标识发送给查询优化器505。
查询优化器505和租户实体查询优化器插件507协同工作后,其 结构框图相当于图9。查询优化器505和租户实体查询优化器插件507 协同工作后的作用是首先根据租户实体标识信息将租户对数据库的访问请求定位到数据库存储空间内与和租户的账号对应的租户实体 相对应的区(本发明将数据库存储空间分成区,每个区记录一租户实 体租户的数据,不同的租户实体的记录在数据库存储空间上是物理分 隔开的),然后在该区内搜索目标记录。
在现有技术中,查询优化器是以SQL1101、统计信息1110、系 统信息1111作为输入的。现有技术的查询优化器也是根据SQL1101、 统计信息1110、系统信息1111优化定位到数据库存储空间512的一 个区中,再在该区内进行目标记录查询的。现有技术中, 一个表(如 图6中的订单表R、库存表T)整个对应着一个区。查询优化器优化 定位到一个区,实际上是定位到一张表中。在本发明中, 一张逻辑表 中可能有多个租户实体的租户信息,而本发明所优化定位到的区是属 于一个租户实体的,而不是一个表的。因此,本发明的查询优化器(查 询优化器505和租户实体查询优化器插件507协同工作后的查询优化 器)除了采用SQL1101、统计信息1110、系统信息1111作为输入之 外,还采用租户实体信息1102作为输入。这样,本发明的查询优化 器就准确地优化定位到数据库存储空间中与租户实体信息1102所反 映的租户实体所对应的区中。具体的实现过程可以由本领域技术人员 根据此功能编程实现,这一实现对本领域技术人员来说是能够做到 的。
图9中,接收并验证SOL的模块1103接收来自访问控制管理器 503的SQL请求1101和租户实体信息1102作为输入。服务质量(QoS ) 控制模块1104根据特定的服务质量管理策略来调度具有不同优先级 的各个租户实体所发出的SQL请求,这将在下面进一步描述。数据 访问决策模块1105才艮据输入的统计信息1110和系统信息1111进行 数据访问方法决策,即应当如何访问数据库的决策。定位与租户实体 相对应的区的模块1106维护着一张表示各租户实体和与每个租户实 体相对应的区的映射关系的列表。定位与租户实体相对应的区的模块 1106根据该决策结果和租户实体的标识,查找该列表,按照查找出的 映射结果,将SQL请求调度到数据库存储空间中与该租户实体相对应的区。定位到与该租户实体相对应的区之后,开始在区内查询目标 记录。此时,首先判断在区内是否按索引访问。如不按索引访问,则
通过表空间扫描加载物理数据的模块1107通过对整个区进行表空间 扫描搜索目标记录。如按索引访问,则发现租户实体中的索引树的模 块1108在与该租户实体相对应的区中寻找该租户实体内的索引树。 在该区的存储空间存储的表格有专门的字段存储与记录相关联的索 引,所有这些索引构成索引树。通过索引访问加载物理数据的模块 1109按照索引定位到具体的目标记录,访问目标记录的物理数据。
图9中租户实体信息1102、服务质量(QoS)控制模块1104、 数据访问决策模块1105、定位与租户实体相对应的区的模块1106、 发现租户实体中的索引树的模块1108是本发明特有的模块,其可由 本领域技术人员基于上述功能通过软件或硬件实现。其余的模块与现 有技术的查询优化器505相同。
如图5所示,当在租户实体访问权限表5032判断出与租户A的 账号a相对应的租户实体1具有访问数据库的权限后,由查询优化器 505将来自该租户的SQL请求定位到数据库存储空间512中对应于租 户实体1的区1 (具体定位过程已经在上面结合图9清楚示出)。同 理,如果接收到与租户实体2相对应的租户B (其账号为b )的SQL 请求,则将该SQL请求定位到数据库存储空间512中对应于租户实 体2的区2。
如图6所示,通过上面所述的过程,就实现了按租户实体对数据 库存储空间512中的记录的整理。假设在一个实施例中,有两个表 R表代表订单记录,有Rl - R2 - R3 - R4四条记录,其中Rl - R2记 录属于租户实体1, R3 - R4记录属于租户实体2; T表代表库存记录, 有X-Y两条记录,这两条记录都属于租户实体1。图6中间部分的 左边对应着R表的共同表模式模块5031、租户实体访问权限表5032、 表配置模块5033,图6中间部分的右边对应着T表的共同表模式模 块5031、租户实体访问权限表5032、表配置模块5033。当与租户实 体1对应的租户要访问逻辑R表中的Rl - R2记录时,访问控制管理器查询R表的租户实体访问权限表5032,查询结果是租户实体1有 访问权限。于是,相关的查询优化器将其访问请求定位到数据库存储 空间512中对应于租户实体l的区,读出相关的两条记录R1和R2。 当与租户实体2对应的租户要访问逻辑R表中的R3-R4记录时,访 问控制管理器查询R表的租户实体访问权限表5032,查询结果是租 户实体2有访问权限。于是,相关的查询优化器将其访问请求定位到 数据库存储空间512中对应于租户实体2的区,读出相关的两条记录 R3和R4。当与租户实体1对应的租户要访问逻辑T表中的X-Y记 录时,访问控制管理器查询T表的租户实体访问权限表5032,查询 结果是租户实体l有访问权限。于是,相关的查询优化器将其访问请 求定位到数据库存储空间512中对应于租户实体l的区,读出相关的 两条记录X和Y。从上面的过程可以看出,Rl-R2、 R3-R4虽然属 于一张逻辑表,但它们分别存储在数据库存储空间的不同的区中;Rl -R2、 X-Y虽然属于不同的逻辑表,但它们存储在数据库存储空间 的同一区中,因而实现了按租户实体对数据库存储空间512中的记录 的整理。
如图5和6所示,定义了一个特殊的不同于租户实体的实体—— 管理员实体。管理员实体对数据库存储空间中的属于任何租户实体的 记录都有访问权限。例如,在图6中,来自与管理员实体相对应的管 理员的SQL请求既可访问数据库存储空间512中与租户实体1相对 应的区内的记录R1、 R2、 X、 Y,又可访问数据库存储空间512中与 租户实体2相对应的区内的记录R3、 R4。为了适应管理员实体,所 述匹配识别模块(401)也将管理员账号与管理员实体进行匹配。如 图4所示,匹配识别模块(401)所维护的账号与实体的对应关系列 表中也将管理员账号和管理员实体相对应地存储。当匹配识别模块 (401)判断出请求所具有的账号为管理员账号时,识别出该请求与 管理员实体相对应,访问控制管理器(503 )允许管理员实体对数据 库存储空间中的属于任何租户实体的记录进行访问,也就是说此时不 用查询租户实体访问权限表5032,因为它是管理员实体,管理员实体
13对数据库存储空间中的属于任何租户实体的记录都有访问权限。查询
优化器(505)在整个数据库存储空间中搜索定位目标记录,而不用 先定位到某个区中再进行查找,因为其不是租户实体。当查询优化器 505查询到管理员实体所要访问的记录并向与该管理员实体对应的管 理员返回时,在所述记录上加该记录所属的租户实体标识信息,以便 向该管理员识别该记录是来自于哪一租户实体的。通过管理员实体, 可以更好地实现对多租户的平台级的管理和统计。
由于表配置模块5033为每个租户/管理员实体单独维护该租户/ 管理员实体的配置信息,而不是为整个表维护配置信息,因此该配置 信息可以由管理员实体进行修改,从而方便管理员为多租户实现统一 管理。
下面结合图7详细描述图9的QoS控制模块1104的工作过程。 在现有技术中,没有对于SQL请求的QoS策略,这是因为这些请求 具有相关性(例如,更新SQL请求必须要在插入SQL请求插入记 录后才能对记录作处理),所以它们必须按照一定顺序被满足。但 在本发明引入了租户/管理员实体对象之后,就可以考虑到SQL请求 之间的相关性而进行QoS控制。本发明给租户/管理员分配租户/管理 员实体,为每个租户/管理员实体指定一个特定的优先级,并将来自 具有不同的优先级的租户/管理员实体的SQL请求分到放在不同的 优先级队列中。对于同一优先级队列,SQL请求必须按其进入队列 的顺序被处理,因为SQL请求之间有相关性。而对于不同优先级队 歹ij,它们之间的SQL请求是不具有相关性的,因而可以根据它们的 优先级进行调度,从而对不同的租户/管理员实体实现了不同的QoS。 QoS控制才莫块1104包括MT队列管理器11041和MT查询调度 器11043。
MT队列管理器11041接收到来自租户/管理员实体的SQL请求 之后,按租户/管理员实体的优先级将它们分到与不同的优先级对应的 队列(即MT -优先级队列11042中。图7示出了管理员队列(其优 先级最高)、金队列(优先级其次)、银队列(优先级再次)。
14MT查询调度器11043根据特定的服务质量管理策略将管理员队 列(其优先级最高, 一般来说,管理员实体具有最高的优先级)、金 队列(优先级其次)、银队列(优先级再次)整合为一个队列,即 DB SQL队列11044。整合的方法例如是这样的
假设目前管理员队列有三个SQL请求Al (5) 、 A2 (4)、 A3 (2);金队列有三个SQL请求Bl (8 ) 、 B2 ( 5) 、 B3 (3 ); 银队列有两个SQL请求Cl (3) 、 C2 (0) 。 Al (5)表示该SQL 请求是管理员队列中的第1个SQL请求,其等待了 5个时隙。A2(4) 表示该SQL请求是管理员队列中的第2个SQL请求,其等待了 4个 时隙。Bl (8)表示该SQL请求是金队列中的第1个SQL请求,其 等待了 8个时隙。依此类推。
根据一个示例性的服务质量管理策略,管理员队列的优先级为 2,金队列的优先级为l,银队列的优先级为0。
将上述8个请求等待的时隙数与其相应的优先级相加,得到等效 等待时隙数如下
SQL请求等效等待时隙数
Al(5) 7
A2 ( 4 ) 6
A3 ( 2 ) 4
Bl(8) 9
B2 ( 5 ) 6
B3 ( 3) 4
Cl (3) 3
C2 ( 0 ) 0
MT查询调度器11043按照等效等待时隙数,整合出 一个新队列。 该新队列的第 一个SQL请求是Bl ( 8 ),因为其等效等待时隙数最大。 然后依次是A1 (5) -A2 (4) -B2 (5) - A3 ( 2 ) - B3 ( 3 ) - Cl (3) -C2 (0)。其中A2 (4) 、 B2 (5)的等效等待时隙数相同, 但A2 (4)的优先级高于B2 (5),所有此时仍将A2 (4)排在B2(5)的前面,
当DB SQL队列11044形成后,就按该队列顺序满足其中的SQL 请求。Bl (8)最先被满足。Bl (8)被满足后,管理员队列的三个 SQL请求Al ( 5 ) 、 A2 ( 4 ) 、 A3 ( 2 )就变为Al ( 6 ) 、 A2 ( 5 )、 A3 (3),因为其等待时间增加一个时隙。同理,金队列中的SQL请 求B2 (5) 、 B3 (3)变为B2 (6) 、 B3 ( 4 )。在金队列中此时又增 加了一个SQL请求,即B4 (0),其等待时间为0。银队列的两个 SQL请求Cl ( 3 ) 、 C2 ( 0 )变为Cl ( 4 ) 、 C2 (1)。
再次地,将上述8个请求等待的时隙数与其相应的优先级相加, 得到等效等待时隙数如下
SQL请求等效等待时隙数
Al(6) 8
A2 ( 5 ) 7
A3 ( 3 ) 5
B2 ( 6 ) 7
B3 ( 4 ) 5
B4 ( 0) 1
Cl(4) 4
C2 (1 ) 1
MT查询调度器11043按照等效等待时隙数,整合出一个新队列。 该新队列的第一个SQL请求是Al (6),因为其等效等待时隙数最 大。然后依次是A2 (5) -B2 (6) -A3 (3) - B3 ( 4 ) - Cl ( 4 ) - B4 ( 0 ) - C2 (1)。
图8是图3中的数据库引擎工作的一个示例性流程图。 在步骤S1001,安全模块501进行租户/管理员身份是否合法的鉴 权。如果鉴权未通过则在步骤S1002b拒绝租户/管理员访问。如果鉴 权通过,则在步骤S1002a通过匹配识别模块401获得与该租户/管理 员对应的实体信息。在步骤S1003在访问控制管理器503判断与该租 户/管理员对应的是租户实体还是管理员实体。如果该租户/管理员对
16应的是管理员实体,则在步骤S1004a由查询优化器505将对数据库 的访问请求定位到整个数据库空间内,在整个数据库空间内搜索目标 记录,并在步骤S1005将与查询结果所在区对应的相关租户实体标识 信息加入搜索到的目标记录中。如果该租户/管理员对应的是租户实 体,则在步骤S1004b由访问控制管理器查找租户实体访问权限表 5032,且当判断出与该租户相对应的租户实体具有访问权限时,允许 该租户访问,并由定位与租户实体相对应的区的模块1106查询其维
表,获得与同租户相对应的租户实体相对应的区信息。在步骤S1006 由查询优化器505对数据库存储空间上与同租户相对应的租户实体相 对应的区执行查询。在步骤S1007向租户返回查询结果。
图10是本发明概括后的方法流程图。如图10所示,本发明的面 向多租户的数据库管理方法可以概括为如下接收租户数据访问请求 (S1001);确定与该租户相对应的租户实体,其中多个租户实体共 享数据库中的一张逻辑表(如图6中的R表或T表)(S1002 );根 据租户实体的配置信息处理租户的数据访问请求(S1003)。
上面已通过示例性实施例详细示出本发明。应当理解,上述实施 例仅是示例性的,而非限制性的。本领域技术人员可以对上述实施例 进行多种修改、改变和替换,而不脱离由本发明的权利要求所限定的 精神和范围。
权利要求
1. 一种面向多租户的数据库数据访问方法,包括接收租户数据访问请求;确定与该租户相对应的租户实体,其中多个租户实体共享数据库中的一张逻辑表;根据租户实体的配置信息处理租户的数据访问请求。
2. 根据权利要求l的方法,其中接收租户数据访问请求的步骤包括接收多个租户分别采用独立的账号向所述数据库中的 一 张逻辑表发出的数据访问请求。
3. 根据权利要求l的方法,包括存储并维护租户账号与其所对应的租户实体的对应关系,其中确定与该租户相对应的租户实体的步骤包括当接收到租户对数据库的访问请求时,根据租户账号查找所迷对应关系,获知与租户账号所对应的租户实体。
4. 根据权利要求l的方法,包括存储并维护租户实体访问权限,其中根据租户实体的配置信息处理租户请求的步骤包括当接收到租户对数据库的访问请求时,查询租户实体访问权限,当查询出租户实体具有对数据库的访问权限时允许该租户访问数据库,并且只允许该租户操作与其租户实体相对应的数据。
5. 根据权利要求1的方法,还包括将数据库存储空间分成多个区,每个区记录一个租户实体的数据,其中根据租户实体的配置信息处理租户请求的步骤包括将租户请求引导到数据库存储空间内与租户实体对应的区。
6. 根据权利要求l的方法,还包括为每个租户实体指定优先级,其中根据租户实体的配置信息处理租户请求的步骤还包括采用服务质量管理策略来调度具有不同优先级的各个租户实体所发出的访问请求。
7. 根据权利要求l的方法,还包括定义管理员实体,管理员实体对数据库存储空间中的属于任何租户实体的记录都有访问权限。
8. 根据权利要求7的方法,还包括当接收到来自管理员实体的对数据库存储空间的访问请求时,允许管理员实体访问数据库存储空间中属于任何租户实体的记录。
9. 根据权利要求8的方法,还包括在向所述管理员实体返回所访问的记录的同时,在所述记录上加该记录所属于的租户实体的标识信息。
10. 根据权利要求7的方法,还包括管理员实体具有最高的优先级。
11. 根据权利要求l的方法,还包括为每个租户实体和管理员实体单独维护该实体的配置信息。
12. —种面向多租户的数据库引擎,包括匹配识别模块(401),其将租户账号与租户实体进行匹配,识别出与发出请求的租户的账号相对应的租户实体;访问控制管理器(503 ),其维护每一租户实体的相关访问权限,根据匹配识别模板识别出的租户实体,判断出该租户实体是否有对数据库的访问权限。
13. 根据权利要求12的数据库引擎,还包括查询优化器(505),其首先根据识别出的租户实体将租户对数据库的访问请求引导到数据库存储空间内与租户实体对应的区,然后在该区内搜索定位目标记录。
14. 根据权利要求13的数据库引擎,其中定义管理员实体,所述匹配识别模块(401)也将管理员账号与管理员实体进行匹配,当判断出请求所具有的账号为管理员账号时,识别出该请求与管理员实体相对应,访问控制管理器(503 )允许管理员实体对数据库存储空间中的属于任何租户实体的记录进行访问,查询优化器(505)在整个数据库存储空间中搜索定位目标记录。
15. 根据权利要求14的数据库引擎,其特征在于,所述查询优化器(505 )包括服务质量控制模块(1104 ),服务质量控制模块(1104 )采用服务质量管理策略来调度具有不同优先级的租户实体和管理员实体所发出的访问请求。
16. 根据权利要求14的数据库引擎,其特征在于,所述匹配识别模块(401)存储并维护租户/管理员账号与租户/管理员实体的对应关系,当接收到对数据库的带有租户/管理员账号的访问请求时,查找所述对应关系,获知所对应的租户/管理员实体。
17. 根据权利要求14的数据库引擎,其特征在于,在访问控制管理器(503)中为租户/管理员实体单独维护该租户/管理员实体的配置信息。
18. 根据权利要求14的数据库引擎,其特征在于,所述查询优化器(505 )查找到目标记录后,将该目标记录所属的租户实体的标识信息添加到目标记录上后返回。
全文摘要
一种面向多租户的数据库引擎及其数据访问方法。本发明的方法包括接收租户数据访问请求;确定与该租户相对应的租户实体,其中多个租户实体共享数据库中的一张逻辑表;根据租户实体的配置信息处理租户的数据访问请求。本发明在数据库中引入了租户实体的概念多个租户实体共享一张逻辑表,降低了开发和管理的成本;同时每个租户实体都拥有独立的数据库访问账号,解决了数据库访问的安全性问题。当租户请求到来时,将根据租户的账号的权限来处理租户的数据访问请求。由于本发明引入的租户实体的概念,为使租户的数据在物理上相互分开从而为提高性能和良好的隔离性、可扩展性提供了可能,同时为实现面向租户的服务质量管理提供了可能。
文档编号G06F17/30GK101499061SQ20081000447
公开日2009年8月5日 申请日期2008年1月30日 优先权日2008年1月30日
发明者伟 孙, 王芝虎, 郭常杰, 波 高 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1