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

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

Info

Publication number
CN101499061A
CN101499061A CNA2008100044748A CN200810004474A CN101499061A CN 101499061 A CN101499061 A CN 101499061A CN A2008100044748 A CNA2008100044748 A CN A2008100044748A CN 200810004474 A CN200810004474 A CN 200810004474A CN 101499061 A CN101499061 A CN 101499061A
Authority
CN
China
Prior art keywords
entity
tenancy
tenant
database
keeper
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
CNA2008100044748A
Other languages
English (en)
Inventor
王芝虎
高波
郭常杰
孙伟
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to CNA2008100044748A priority Critical patent/CN101499061A/zh
Publication of CN101499061A publication Critical patent/CN101499061A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种面向多租户的数据库引擎及其数据访问方法。本发明的方法包括:接收租户数据访问请求;确定与该租户相对应的租户实体,其中多个租户实体共享数据库中的一张逻辑表;根据租户实体的配置信息处理租户的数据访问请求。本发明在数据库中引入了租户实体的概念:多个租户实体共享一张逻辑表,降低了开发和管理的成本;同时每个租户实体都拥有独立的数据库访问账号,解决了数据库访问的安全性问题。当租户请求到来时,将根据租户的账号的权限来处理租户的数据访问请求。由于本发明引入的租户实体的概念,为使租户的数据在物理上相互分开从而为提高性能和良好的隔离性、可扩展性提供了可能,同时为实现面向租户的服务质量管理提供了可能。

Description

面向多租户的数据库引擎及其数据访问方法
技术领域
本发明涉及多租户数据库共享,尤其涉及一种面向多租户的数据库引擎及其数据访问方法。
背景技术
在多租户系统中,数据库服务提供商将一个数据库实例租给多个中小型(SMB)租户,从而大量中小型租户共享同一个数据库实例。构造一个合理的多租户体系结构,要考虑如下技术问题:
安全性问题:由于多个租户共享同一个数据库实例,要防止一个租户访问其它租户置于该数据库中的数据;
应用开发成本:必须要考虑在部署这样一个多租户应用的时候开发者的开发复杂度;
管理成本:必须考虑操作平台的管理复杂度,这些操作比如包括租户登录、备份和恢复、运行时操作等等;
性能和可扩展性:希望随着租户的数量的增加,依然能提供高性能的可扩展性;
面向租户的服务级别协议(SLA)管理:应当能够根据租户的SLA,提供相应的服务质量。
现有技术中存在两种关于多租户系统的解决方案:共享表方案和单独表方案。
在共享表方案中,所有租户共享数据库中的一张表。在该表中有一个“租户_id”的字段。租户靠该“租户_id”字段来辨别哪条记录属于哪个租户。在这种情况下,虽然各个租户在接入到UI及业务逻辑时有区分,但对于数据库来说,所有租户是利用一个共同的代理平台级数据库(DB)账号来访问数据库的。代理平台级数据库账号拥有对数据库空间内所有租户数据的访问权。这样,一个租户的数据实际上能够被另一个租户所“看见”,产生了不安全问题。
在单独表方案中,在数据库中为每个租户单独准备一张表。租户只能访问到数据库中它自己的表,不能访问其它租户的表。在这种情况下,对于数据库来说,租户是利用它独有的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的什么位置进行优化查找。
发明内容
本发明的一个目的是提供一种既能够解决安全性问题,又不会加大管理上的成本,同时能基于多租户的特性提高数据库整体性能的新的数据库引擎及方法。
本发明的另一个目的是能够实现面向租户的服务质量管理。
本发明提供了一种面向多租户的数据库数据访问方法,包括:接收租户数据访问请求;确定与该租户相对应的租户实体,其中多个租户实体共享数据库中的一张逻辑表;根据租户实体的配置信息处理租户的数据访问请求。
本发明还提供了一种面向多租户的数据库引擎,包括:匹配识别模块,其将租户账号与租户实体进行匹配,识别出与发出请求的租户的账号相对应的租户实体;访问控制管理器,其维护每一租户实体的相关访问权限,根据匹配识别模板识别出的租户实体,判断出该租户实体是否有对数据库的访问权限。
本发明在数据库中引入了“租户实体”对象,以“租户实体”作为访问数据库的最小单位。“租户实体”对象具有以下特征:它具有与租户访问账号的对应关系,一个租户对应于一个独特的租户账号,一个租户账号对应着一个租户实体;将数据库存储空间分成多个区,每个区记录一个租户实体的数据,即一个区对应着一个租户实体,每个租户实体的记录在物理上相互分开;可以为每个租户实体分配不同的优先级,从而根据不同的租户实体实行不同的服务质量策略。虽然多个租户实体共享一张逻辑表,但由于每个租户实体的记录在数据库存储空间中在物理上相互分开,这样就既能够保证查询优化器在仅有一张逻辑表的前提下准确地将租户的访问请求定位到数据库存储空间中与该租户的租户实体相对应的分区,又能够保证该租户“看不见”其它租户的数据。也就是说,多个租户实体共享一张逻辑表,降低了管理的成本,并且对于开发人员来说仅需在一张表上进行开发,降低了开发成本;同时每个租户实体都拥有独立的数据库访问账号,解决了数据库访问的安全性问题。当租户请求到来时,将根据与租户的账号相对应的租户实体的权限来处理租户的数据访问请求。由于本发明引入了租户实体这个数据库对象,为使租户的数据在物理上相互分开从而为提高性能和良好的隔离性、可扩展性提供了可能。同时,本发明提出的租户实体对象为对于具有不同服务质量要求的租户提供适合于其特定服务质量要求的服务、实现面向租户的服务质量管理提供了可能。因为本发明存在着租户实体对象,则可以为租户实体指定优先级,并采用特定的服务质量管理策略来调度具有不同优先级的各个租户实体的租户所发出的访问请求。
另外,通过本发明的上述方式,查询优化器先定位到数据库存储空间内与该租户实体相对应的区,然后在该区内搜索记录,提高了查找的效率。
附图说明
图1是现有技术中的数据库的结构框图。
图2是现有技术的数据库访问模式的示意图。
图3是本发明的包含数据库引擎的数据库的结构框图。
图4示出了本发明的匹配识别模块所维护的账号与实体的对应关系列表的例子。
图5是本发明的数据库访问模式的示意图。
图6示出了一个按与租户实体对应的区在数据库存储空间中访问记录的示例。
图7是面向租户实体的服务质量控制机制的示意图。
图8是图3的数据库引擎工作的一个示例性流程图。
图9是图3中的查询优化器的详细结构框图。
图10是本发明概括后的方法流程图。
具体实施方式
现在结合具体实施方式对本发明进行更加详细的说明。
本发明在数据库中引入了“租户实体”对象,以“租户实体”作为访问数据库的最小单位。“租户实体”对象具有与租户访问账号的对应关系,一个租户账号对应着一个租户实体。将数据库存储空间分成多个区,每个区记录一个租户实体的数据,即每个租户实体的记录在物理上相互分开。在本发明中,多个租户实体共享一张逻辑表。由于每个租户实体的记录在数据库存储空间中在物理上相互分开,这样就既能够保证查询优化器在仅有一张逻辑表的前提下准确地将租户的访问请求定位到数据库存储空间中与该租户的租户实体相对应的分区,又能够保证该租户“看不见”其它租户的数据,从而降低了管理、开发成本,同时解决了数据库访问的安全性问题。
图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、b、c、d、e、f分别对应着租户实体1、2、3、4、5、6。通过查找对应关系列表,匹配识别模块401获知与租户账号a对应的租户实体是租户实体1。租户实体安全机制插件502对租户实体1进行安全验证。
然后,安全模块501将租户实体1的租户实体标识连同该访问请求一同发送给访问控制管理器503。此时,基于租户实体的权限控制插件504、租户实体与权限映射模块513将工作。加入了基于租户实体的权限控制插件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表代表订单记录,有R1-R2-R3-R4四条记录,其中R1-R2记录属于租户实体1,R3-R4记录属于租户实体2;T表代表库存记录,有X-Y两条记录,这两条记录都属于租户实体1。图6中间部分的左边对应着R表的共同表模式模块5031、租户实体访问权限表5032、表配置模块5033,图6中间部分的右边对应着T表的共同表模式模块5031、租户实体访问权限表5032、表配置模块5033。当与租户实体1对应的租户要访问逻辑R表中的R1-R2记录时,访问控制管理器查询R表的租户实体访问权限表5032,查询结果是租户实体1有访问权限。于是,相关的查询优化器将其访问请求定位到数据库存储空间512中对应于租户实体1的区,读出相关的两条记录R1和R2。当与租户实体2对应的租户要访问逻辑R表中的R3-R4记录时,访问控制管理器查询R表的租户实体访问权限表5032,查询结果是租户实体2有访问权限。于是,相关的查询优化器将其访问请求定位到数据库存储空间512中对应于租户实体2的区,读出相关的两条记录R3和R4。当与租户实体1对应的租户要访问逻辑T表中的X-Y记录时,访问控制管理器查询T表的租户实体访问权限表5032,查询结果是租户实体1有访问权限。于是,相关的查询优化器将其访问请求定位到数据库存储空间512中对应于租户实体1的区,读出相关的两条记录X和Y。从上面的过程可以看出,R1-R2、R3-R4虽然属于一张逻辑表,但它们分别存储在数据库存储空间的不同的区中;R1-R2、X-Y虽然属于不同的逻辑表,但它们存储在数据库存储空间的同一区中,因而实现了按租户实体对数据库存储空间512中的记录的整理。
如图5和6所示,定义了一个特殊的不同于租户实体的实体——管理员实体。管理员实体对数据库存储空间中的属于任何租户实体的记录都有访问权限。例如,在图6中,来自与管理员实体相对应的管理员的SQL请求既可访问数据库存储空间512中与租户实体1相对应的区内的记录R1、R2、X、Y,又可访问数据库存储空间512中与租户实体2相对应的区内的记录R3、R4。为了适应管理员实体,所述匹配识别模块(401)也将管理员账号与管理员实体进行匹配。如图4所示,匹配识别模块(401)所维护的账号与实体的对应关系列表中也将管理员账号和管理员实体相对应地存储。当匹配识别模块(401)判断出请求所具有的账号为管理员账号时,识别出该请求与管理员实体相对应,访问控制管理器(503)允许管理员实体对数据库存储空间中的属于任何租户实体的记录进行访问,也就是说此时不用查询租户实体访问权限表5032,因为它是管理员实体,管理员实体对数据库存储空间中的属于任何租户实体的记录都有访问权限。查询优化器(505)在整个数据库存储空间中搜索定位目标记录,而不用先定位到某个区中再进行查找,因为其不是租户实体。当查询优化器505查询到管理员实体所要访问的记录并向与该管理员实体对应的管理员返回时,在所述记录上加该记录所属的租户实体标识信息,以便向该管理员识别该记录是来自于哪一租户实体的。通过管理员实体,可以更好地实现对多租户的平台级的管理和统计。
由于表配置模块5033为每个租户/管理员实体单独维护该租户/管理员实体的配置信息,而不是为整个表维护配置信息,因此该配置信息可以由管理员实体进行修改,从而方便管理员为多租户实现统一管理。
下面结合图7详细描述图9的QoS控制模块1104的工作过程。在现有技术中,没有对于SQL请求的QoS策略,这是因为这些请求具有相关性(例如,更新SQL请求必须要在插入SQL请求插入记录后才能对记录作处理),所以它们必须按照一定顺序被满足。但在本发明引入了租户/管理员实体对象之后,就可以考虑到SQL请求之间的相关性而进行QoS控制。本发明给租户/管理员分配租户/管理员实体,为每个租户/管理员实体指定一个特定的优先级,并将来自具有不同的优先级的租户/管理员实体的SQL请求分到放在不同的优先级队列中。对于同一优先级队列,SQL请求必须按其进入队列的顺序被处理,因为SQL请求之间有相关性。而对于不同优先级队列,它们之间的SQL请求是不具有相关性的,因而可以根据它们的优先级进行调度,从而对不同的租户/管理员实体实现了不同的QoS。
QoS控制模块1104包括MT队列管理器11041和MT查询调度器11043。
MT队列管理器11041接收到来自租户/管理员实体的SQL请求之后,按租户/管理员实体的优先级将它们分到与不同的优先级对应的队列(即MT-优先级队列11042中。图7示出了管理员队列(其优先级最高)、金队列(优先级其次)、银队列(优先级再次)。
MT查询调度器11043根据特定的服务质量管理策略将管理员队列(其优先级最高,一般来说,管理员实体具有最高的优先级)、金队列(优先级其次)、银队列(优先级再次)整合为一个队列,即DB SQL队列11044。整合的方法例如是这样的:
假设目前管理员队列有三个SQL请求:A1(5)、A2(4)、A3(2);金队列有三个SQL请求:B1(8)、B2(5)、B3(3);银队列有两个SQL请求:C1(3)、C2(0)。A1(5)表示该SQL请求是管理员队列中的第1个SQL请求,其等待了5个时隙。A2(4)表示该SQL请求是管理员队列中的第2个SQL请求,其等待了4个时隙。B1(8)表示该SQL请求是金队列中的第1个SQL请求,其等待了8个时隙。依此类推。
根据一个示例性的服务质量管理策略,管理员队列的优先级为2,金队列的优先级为1,银队列的优先级为0。
将上述8个请求等待的时隙数与其相应的优先级相加,得到等效等待时隙数如下:
SQL请求等效等待时隙数
A1(5)    7
A2(4)    6
A3(2)    4
B1(8)    9
B2(5)    6
B3(3)    4
C1(3)    3
C2(0)    0
MT查询调度器11043按照等效等待时隙数,整合出一个新队列。该新队列的第一个SQL请求是B1(8),因为其等效等待时隙数最大。然后依次是A1(5)-A2(4)-B2(5)-A3(2)-B3(3)-C1(3)-C2(0)。其中A2(4)、B2(5)的等效等待时隙数相同,但A2(4)的优先级高于B2(5),所有此时仍将A2(4)排在B2(5)的前面。
当DB SQL队列11044形成后,就按该队列顺序满足其中的SQL请求。B1(8)最先被满足。B1(8)被满足后,管理员队列的三个SQL请求A1(5)、A2(4)、A3(2)就变为A1(6)、A2(5)、A3(3),因为其等待时间增加一个时隙。同理,金队列中的SQL请求B2(5)、B3(3)变为B2(6)、B3(4)。在金队列中此时又增加了一个SQL请求,即B4(0),其等待时间为0。银队列的两个SQL请求C1(3)、C2(0)变为C1(4)、C2(1)。
再次地,将上述8个请求等待的时隙数与其相应的优先级相加,得到等效等待时隙数如下:
SQL请求等效等待时隙数
A1(6)   8
A2(5)   7
A3(3)   5
B2(6)   7
B3(4)   5
B4(0)   1
C1(4)   4
C2(1)   1
MT查询调度器11043按照等效等待时隙数,整合出一个新队列。该新队列的第一个SQL请求是A1(6),因为其等效等待时隙数最大。然后依次是A2(5)-B2(6)-A3(3)-B3(4)-C1(4)-B4(0)-C2(1)。
图8是图3中的数据库引擎工作的一个示例性流程图。
在步骤S1001,安全模块501进行租户/管理员身份是否合法的鉴权。如果鉴权未通过则在步骤S1002b拒绝租户/管理员访问。如果鉴权通过,则在步骤S1002a通过匹配识别模块401获得与该租户/管理员对应的实体信息。在步骤S1003在访问控制管理器503判断与该租户/管理员对应的是租户实体还是管理员实体。如果该租户/管理员对应的是管理员实体,则在步骤S1004a由查询优化器505将对数据库的访问请求定位到整个数据库空间内,在整个数据库空间内搜索目标记录,并在步骤S1005将与查询结果所在区对应的相关租户实体标识信息加入搜索到的目标记录中。如果该租户/管理员对应的是租户实体,则在步骤S1004b由访问控制管理器查找租户实体访问权限表5032,且当判断出与该租户相对应的租户实体具有访问权限时,允许该租户访问,并由定位与租户实体相对应的区的模块1106查询其维护的表示各租户实体和与每个租户实体相对应的区的映射关系的列表,获得与同租户相对应的租户实体相对应的区信息。在步骤S1006由查询优化器505对数据库存储空间上与同租户相对应的租户实体相对应的区执行查询。在步骤S1007向租户返回查询结果。
图10是本发明概括后的方法流程图。如图10所示,本发明的面向多租户的数据库管理方法可以概括为如下:接收租户数据访问请求(S1001);确定与该租户相对应的租户实体,其中多个租户实体共享数据库中的一张逻辑表(如图6中的R表或T表)(S1002);根据租户实体的配置信息处理租户的数据访问请求(S1003)。
上面已通过示例性实施例详细示出本发明。应当理解,上述实施例仅是示例性的,而非限制性的。本领域技术人员可以对上述实施例进行多种修改、改变和替换,而不脱离由本发明的权利要求所限定的精神和范围。

Claims (18)

1.一种面向多租户的数据库数据访问方法,包括:
接收租户数据访问请求;
确定与该租户相对应的租户实体,其中多个租户实体共享数据库中的一张逻辑表;
根据租户实体的配置信息处理租户的数据访问请求。
2.根据权利要求1的方法,其中接收租户数据访问请求的步骤包括:
接收多个租户分别采用独立的账号向所述数据库中的一张逻辑表发出的数据访问请求。
3.根据权利要求1的方法,包括:存储并维护租户账号与其所对应的租户实体的对应关系,
其中确定与该租户相对应的租户实体的步骤包括当接收到租户对数据库的访问请求时,根据租户账号查找所述对应关系,获知与租户账号所对应的租户实体。
4.根据权利要求1的方法,包括:存储并维护租户实体访问权限,
其中根据租户实体的配置信息处理租户请求的步骤包括:当接收到租户对数据库的访问请求时,查询租户实体访问权限,当查询出租户实体具有对数据库的访问权限时允许该租户访问数据库,并且只允许该租户操作与其租户实体相对应的数据。
5.根据权利要求1的方法,还包括:将数据库存储空间分成多个区,每个区记录一个租户实体的数据,
其中根据租户实体的配置信息处理租户请求的步骤包括将租户请求引导到数据库存储空间内与租户实体对应的区。
6.根据权利要求1的方法,还包括:为每个租户实体指定优先级,
其中根据租户实体的配置信息处理租户请求的步骤还包括采用服务质量管理策略来调度具有不同优先级的各个租户实体所发出的访问请求。
7.根据权利要求1的方法,还包括:
定义管理员实体,管理员实体对数据库存储空间中的属于任何租户实体的记录都有访问权限。
8.根据权利要求7的方法,还包括:
当接收到来自管理员实体的对数据库存储空间的访问请求时,允许管理员实体访问数据库存储空间中属于任何租户实体的记录。
9.根据权利要求8的方法,还包括:
在向所述管理员实体返回所访问的记录的同时,在所述记录上加该记录所属于的租户实体的标识信息。
10.根据权利要求7的方法,还包括:
管理员实体具有最高的优先级。
11.根据权利要求1的方法,还包括:
为每个租户实体和管理员实体单独维护该实体的配置信息。
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)查找到目标记录后,将该目标记录所属的租户实体的标识信息添加到目标记录上后返回。
CNA2008100044748A 2008-01-30 2008-01-30 面向多租户的数据库引擎及其数据访问方法 Pending CN101499061A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNA2008100044748A CN101499061A (zh) 2008-01-30 2008-01-30 面向多租户的数据库引擎及其数据访问方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNA2008100044748A CN101499061A (zh) 2008-01-30 2008-01-30 面向多租户的数据库引擎及其数据访问方法

Publications (1)

Publication Number Publication Date
CN101499061A true CN101499061A (zh) 2009-08-05

Family

ID=40946138

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2008100044748A Pending CN101499061A (zh) 2008-01-30 2008-01-30 面向多租户的数据库引擎及其数据访问方法

Country Status (1)

Country Link
CN (1) CN101499061A (zh)

Cited By (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102200977A (zh) * 2010-03-23 2011-09-28 国际商业机器公司 多租户环境下扩展数据库表的方法和系统
CN102340533A (zh) * 2011-06-17 2012-02-01 中兴通讯股份有限公司 多租户系统及多租户系统存取数据的方法
CN102426602A (zh) * 2010-10-28 2012-04-25 微软公司 范围化数据库连接
CN102508872A (zh) * 2011-10-12 2012-06-20 恒生电子股份有限公司 一种基于内存的联机处理系统的数据处理方法及系统
CN102737020A (zh) * 2011-03-31 2012-10-17 国际商业机器公司 一种初始化多租户数据库的方法和装置
CN102999607A (zh) * 2012-11-21 2013-03-27 深圳市捷顺科技实业股份有限公司 一种数据存储方法、数据访问方法以及相关装置
CN103136055A (zh) * 2011-11-25 2013-06-05 国际商业机器公司 用于在数据库服务中控制对计算资源的使用的方法和装置
CN103399942A (zh) * 2013-08-14 2013-11-20 山大地纬软件股份有限公司 一种支持SaaS多租户的数据引擎系统及其工作方法
WO2014026527A1 (en) * 2012-08-17 2014-02-20 Hangzhou H3C Technologies Co., Ltd. Network management with network virtualization based on modular quality of service control (mqc)
CN104063408A (zh) * 2013-03-18 2014-09-24 广达电脑股份有限公司 云端平台及其数据交换方法
CN104246761A (zh) * 2012-07-31 2014-12-24 惠普发展公司,有限责任合伙企业 在联合数据管理系统中支持多租用
CN104424447A (zh) * 2013-09-02 2015-03-18 中国移动通信集团四川有限公司 一种构建数据库防火墙的方法和装置
CN104537317A (zh) * 2015-01-13 2015-04-22 华南师范大学 租户对自定义数据库访问的控制方法、装置和系统
CN104679886A (zh) * 2015-03-17 2015-06-03 浪潮集团有限公司 一种多租户模式下Hive数据隔离的方法和装置
CN104881749A (zh) * 2015-06-01 2015-09-02 北京圆通慧达管理软件开发有限公司 面向多租户的数据管理方法和数据存储系统
CN105069366A (zh) * 2015-07-06 2015-11-18 无锡天脉聚源传媒科技有限公司 一种账户登录和管理方法及装置
CN105827523A (zh) * 2016-06-03 2016-08-03 无锡华云数据技术服务有限公司 一种在云存储环境中对多租户的带宽实现动态调整的虚拟网关
CN106384028A (zh) * 2016-09-12 2017-02-08 浪潮软件股份有限公司 一种支持多租户的统一身份认证服务实现的方法
CN106453247A (zh) * 2016-08-31 2017-02-22 东软集团股份有限公司 用户数据隔离方法、操作方法及各自对应的装置
CN106874371A (zh) * 2016-12-30 2017-06-20 新华三技术有限公司 一种数据处理方法及装置
CN106909309A (zh) * 2015-12-22 2017-06-30 阿里巴巴集团控股有限公司 一种数据信息处理方法以及数据存储系统
CN107079003A (zh) * 2014-09-09 2017-08-18 甲骨文国际公司 在多租户环境中提供用于安全网络通信的集成防火墙的系统和方法
WO2017186124A1 (en) * 2016-04-29 2017-11-02 Huawei Technologies Co., Ltd. System, device and process for dynamic tenant structure adjustment in a distributed resource management system
CN107357930A (zh) * 2017-07-27 2017-11-17 深圳易嘉恩科技有限公司 云账坊平台租户数据表结构
CN107466403A (zh) * 2015-05-28 2017-12-12 谷歌公司 对于数据资源的访问控制
CN108280156A (zh) * 2018-01-12 2018-07-13 阿里巴巴集团控股有限公司 一种在云搜索平台中构建索引和进行搜索的方法和装置
CN108667867A (zh) * 2017-03-29 2018-10-16 华为技术有限公司 数据存储方法及装置
CN109191351A (zh) * 2018-07-23 2019-01-11 武汉网信安全技术股份有限公司 一种基于多租户技术的智能城市管理系统和方法
CN109254847A (zh) * 2018-08-22 2019-01-22 阿里巴巴集团控股有限公司 一种租户映射信息获取方法及装置
CN111478961A (zh) * 2020-04-03 2020-07-31 中国建设银行股份有限公司 多租户的服务调用方法及装置
WO2020173266A1 (en) * 2019-02-26 2020-09-03 Huawei Technologies Co., Ltd. Method for creating and managing permissions for accessing yang data in yang-based datastores.
CN112470141A (zh) * 2019-05-31 2021-03-09 斯诺弗雷克公司 数据库中的数据共享和实例化视图
CN113342775A (zh) * 2020-03-03 2021-09-03 Sap欧洲公司 基于云的计算环境中的集中式多租户即服务
TWI748982B (zh) * 2017-01-24 2021-12-11 香港商阿里巴巴集團服務有限公司 資料訊息處理方法以及資料儲存系統
CN113992736A (zh) * 2021-12-29 2022-01-28 希维科技(广州)有限公司 基于云计算服务平台的结构化数据的互联方法及服务器
CN115242879A (zh) * 2022-06-29 2022-10-25 浪潮通信技术有限公司 数据共享系统及方法

Cited By (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102200977A (zh) * 2010-03-23 2011-09-28 国际商业机器公司 多租户环境下扩展数据库表的方法和系统
CN102426602A (zh) * 2010-10-28 2012-04-25 微软公司 范围化数据库连接
CN102737020A (zh) * 2011-03-31 2012-10-17 国际商业机器公司 一种初始化多租户数据库的方法和装置
CN102737020B (zh) * 2011-03-31 2014-08-27 国际商业机器公司 一种初始化多租户数据库的方法和装置
CN102340533A (zh) * 2011-06-17 2012-02-01 中兴通讯股份有限公司 多租户系统及多租户系统存取数据的方法
CN102340533B (zh) * 2011-06-17 2017-03-15 中兴通讯股份有限公司 多租户系统及多租户系统存取数据的方法
CN102508872A (zh) * 2011-10-12 2012-06-20 恒生电子股份有限公司 一种基于内存的联机处理系统的数据处理方法及系统
CN103136055A (zh) * 2011-11-25 2013-06-05 国际商业机器公司 用于在数据库服务中控制对计算资源的使用的方法和装置
US10970300B2 (en) 2012-07-31 2021-04-06 Micro Focus Llc Supporting multi-tenancy in a federated data management system
CN104246761A (zh) * 2012-07-31 2014-12-24 惠普发展公司,有限责任合伙企业 在联合数据管理系统中支持多租用
WO2014026527A1 (en) * 2012-08-17 2014-02-20 Hangzhou H3C Technologies Co., Ltd. Network management with network virtualization based on modular quality of service control (mqc)
US10819658B2 (en) 2012-08-17 2020-10-27 Hewlett Packard Enterprise Development Lp Network management with network virtualization based on modular quality of service control (MQC)
CN102999607A (zh) * 2012-11-21 2013-03-27 深圳市捷顺科技实业股份有限公司 一种数据存储方法、数据访问方法以及相关装置
CN104063408A (zh) * 2013-03-18 2014-09-24 广达电脑股份有限公司 云端平台及其数据交换方法
CN104063408B (zh) * 2013-03-18 2017-05-10 广达电脑股份有限公司 云端平台及其数据交换方法
CN103399942B (zh) * 2013-08-14 2016-06-29 山大地纬软件股份有限公司 一种支持SaaS多租户的数据引擎系统及其工作方法
CN103399942A (zh) * 2013-08-14 2013-11-20 山大地纬软件股份有限公司 一种支持SaaS多租户的数据引擎系统及其工作方法
CN104424447A (zh) * 2013-09-02 2015-03-18 中国移动通信集团四川有限公司 一种构建数据库防火墙的方法和装置
CN107079003B (zh) * 2014-09-09 2020-07-28 甲骨文国际公司 在多租户环境中提供用于安全网络通信的集成防火墙的系统和方法
CN107079003A (zh) * 2014-09-09 2017-08-18 甲骨文国际公司 在多租户环境中提供用于安全网络通信的集成防火墙的系统和方法
CN104537317A (zh) * 2015-01-13 2015-04-22 华南师范大学 租户对自定义数据库访问的控制方法、装置和系统
CN104537317B (zh) * 2015-01-13 2017-11-07 华南师范大学 租户对自定义数据库访问的控制方法、装置和系统
CN104679886A (zh) * 2015-03-17 2015-06-03 浪潮集团有限公司 一种多租户模式下Hive数据隔离的方法和装置
CN107466403A (zh) * 2015-05-28 2017-12-12 谷歌公司 对于数据资源的访问控制
CN104881749A (zh) * 2015-06-01 2015-09-02 北京圆通慧达管理软件开发有限公司 面向多租户的数据管理方法和数据存储系统
CN105069366A (zh) * 2015-07-06 2015-11-18 无锡天脉聚源传媒科技有限公司 一种账户登录和管理方法及装置
CN105069366B (zh) * 2015-07-06 2018-10-26 无锡天脉聚源传媒科技有限公司 一种账户登录和管理方法及装置
US10977230B2 (en) 2015-12-22 2021-04-13 Alibaba Group Holding Limited Data information processing method and data storage system
CN106909309A (zh) * 2015-12-22 2017-06-30 阿里巴巴集团控股有限公司 一种数据信息处理方法以及数据存储系统
CN106909309B (zh) * 2015-12-22 2019-12-24 阿里巴巴集团控股有限公司 一种数据信息处理方法以及数据存储系统
WO2017186124A1 (en) * 2016-04-29 2017-11-02 Huawei Technologies Co., Ltd. System, device and process for dynamic tenant structure adjustment in a distributed resource management system
US10193977B2 (en) 2016-04-29 2019-01-29 Huawei Technologies Co., Ltd. System, device and process for dynamic tenant structure adjustment in a distributed resource management system
CN105827523A (zh) * 2016-06-03 2016-08-03 无锡华云数据技术服务有限公司 一种在云存储环境中对多租户的带宽实现动态调整的虚拟网关
CN105827523B (zh) * 2016-06-03 2019-04-30 无锡华云数据技术服务有限公司 一种在云存储环境中对多租户的带宽实现动态调整的虚拟网关
CN106453247A (zh) * 2016-08-31 2017-02-22 东软集团股份有限公司 用户数据隔离方法、操作方法及各自对应的装置
CN106384028A (zh) * 2016-09-12 2017-02-08 浪潮软件股份有限公司 一种支持多租户的统一身份认证服务实现的方法
CN106874371A (zh) * 2016-12-30 2017-06-20 新华三技术有限公司 一种数据处理方法及装置
TWI748982B (zh) * 2017-01-24 2021-12-11 香港商阿里巴巴集團服務有限公司 資料訊息處理方法以及資料儲存系統
US10972542B2 (en) 2017-03-29 2021-04-06 Huawei Technologies Co., Ltd. Data storage method and apparatus
US11575748B2 (en) 2017-03-29 2023-02-07 Huawei Technologies Co., Ltd. Data storage method and apparatus for combining different data distribution policies
CN108667867B (zh) * 2017-03-29 2021-05-18 华为技术有限公司 数据存储方法及装置
CN108667867A (zh) * 2017-03-29 2018-10-16 华为技术有限公司 数据存储方法及装置
CN107357930A (zh) * 2017-07-27 2017-11-17 深圳易嘉恩科技有限公司 云账坊平台租户数据表结构
CN108280156A (zh) * 2018-01-12 2018-07-13 阿里巴巴集团控股有限公司 一种在云搜索平台中构建索引和进行搜索的方法和装置
CN109191351A (zh) * 2018-07-23 2019-01-11 武汉网信安全技术股份有限公司 一种基于多租户技术的智能城市管理系统和方法
CN109254847A (zh) * 2018-08-22 2019-01-22 阿里巴巴集团控股有限公司 一种租户映射信息获取方法及装置
CN109254847B (zh) * 2018-08-22 2022-04-19 创新先进技术有限公司 一种租户映射信息获取方法及装置
WO2020173266A1 (en) * 2019-02-26 2020-09-03 Huawei Technologies Co., Ltd. Method for creating and managing permissions for accessing yang data in yang-based datastores.
CN112470141A (zh) * 2019-05-31 2021-03-09 斯诺弗雷克公司 数据库中的数据共享和实例化视图
CN112470141B (zh) * 2019-05-31 2024-03-12 斯诺弗雷克公司 数据库中的数据共享和实例化视图
CN113342775A (zh) * 2020-03-03 2021-09-03 Sap欧洲公司 基于云的计算环境中的集中式多租户即服务
CN113342775B (zh) * 2020-03-03 2024-05-28 Sap欧洲公司 基于云的计算环境中的集中式多租户即服务
CN111478961B (zh) * 2020-04-03 2021-12-17 中国建设银行股份有限公司 多租户的服务调用方法及装置
CN111478961A (zh) * 2020-04-03 2020-07-31 中国建设银行股份有限公司 多租户的服务调用方法及装置
CN113992736A (zh) * 2021-12-29 2022-01-28 希维科技(广州)有限公司 基于云计算服务平台的结构化数据的互联方法及服务器
CN113992736B (zh) * 2021-12-29 2022-03-15 希维科技(广州)有限公司 基于云计算服务平台的结构化数据的互联方法及服务器
CN115242879A (zh) * 2022-06-29 2022-10-25 浪潮通信技术有限公司 数据共享系统及方法
CN115242879B (zh) * 2022-06-29 2024-04-02 浪潮通信技术有限公司 数据共享系统及方法

Similar Documents

Publication Publication Date Title
CN101499061A (zh) 面向多租户的数据库引擎及其数据访问方法
CN100492357C (zh) 最优化行级别数据库安全的系统和方法
US20220067025A1 (en) Ordering transaction requests in a distributed database according to an independently assigned sequence
US7299171B2 (en) Method and system for processing grammar-based legality expressions
US20070143253A1 (en) Database system
RU2373571C2 (ru) Системы и способы осуществляемого посредством доступа на уровне мелких структурных единиц управления данными, хранящимися в реляционных базах данных
CN100498792C (zh) 数据库表行级数据的自主访问控制方法
US6058267A (en) Multiple processor transaction processing system using transaction routing and data management
US7865521B2 (en) Access control for elements in a database object
EP3058554B1 (en) Communication and processing of credential data
CN101615203B (zh) 并发控制方法及装置
US20070016589A1 (en) Method and system for data processing with parallel database systems
CN102197395A (zh) 存储器端存储请求管理
CN104598840A (zh) 基于Http协议的多数据源的数据处理方法及系统
CN113190529A (zh) 一种适用MongoDB数据库的多租户数据共享存储系统
US20200250192A1 (en) Processing queries associated with multiple file formats based on identified partition and data container objects
CN113254451B (zh) 一种数据索引构建方法、装置、电子设备及存储介质
CN111680041A (zh) 面向异构数据的安全高效存取方法
JP2004110219A (ja) データ処理システム及びジョイン処理方法
CN101420773A (zh) 传感器网络操作系统自保护系统
CN112632116B (zh) 一种k-db数据库多节点集群调度的方法、系统、设备及介质
US11789922B1 (en) Admitting for performance ordered operations of atomic transactions across a distributed database
JPH06214863A (ja) 情報資源管理装置
US20040117372A1 (en) System and method for controlling access to system resources
JP2001075854A (ja) データ管理方法、およびデータ管理システム、ならびにデータ管理プログラムを格納した記憶媒体

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
AD01 Patent right deemed abandoned

Effective date of abandoning: 20090805

C20 Patent right or utility model deemed to be abandoned or is abandoned