CN117932645A - 一种分布式数据库的租户管理方法、装置及可读存储介质 - Google Patents
一种分布式数据库的租户管理方法、装置及可读存储介质 Download PDFInfo
- Publication number
- CN117932645A CN117932645A CN202410193354.6A CN202410193354A CN117932645A CN 117932645 A CN117932645 A CN 117932645A CN 202410193354 A CN202410193354 A CN 202410193354A CN 117932645 A CN117932645 A CN 117932645A
- Authority
- CN
- China
- Prior art keywords
- tenant
- original
- execution operation
- access request
- isolation
- 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
Links
- 238000007726 management method Methods 0.000 title claims abstract description 37
- 238000002955 isolation Methods 0.000 claims abstract description 104
- 238000000034 method Methods 0.000 claims description 31
- 238000001914 filtration Methods 0.000 claims description 11
- 238000012986 modification Methods 0.000 claims description 10
- 230000004048 modification Effects 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 8
- 238000012217 deletion Methods 0.000 claims description 5
- 230000037430 deletion Effects 0.000 claims description 5
- 238000004458 analytical method Methods 0.000 abstract description 2
- 238000012545 processing Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000000586 desensitisation Methods 0.000 description 1
- 239000007943 implant Substances 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种分布式数据库的租户管理方法、装置及可读存储介质,包括:通过预设认证过滤器和租户过滤器,实现了对用户访问请求的自动拦截和解析,确定用户身份信息和对应的隔离策略。在获取原始执行操作后,基于租户过滤器对原始执行操作进行拦截,并根据租户身份信息和隔离策略对原始执行操作进行修改,生成带有隔离条件的目标执行操作,如此设计,实现了高效、安全且具有扩展性的多租户数据管理和隔离。
Description
技术领域
本发明涉及数据库管理技术领域,具体而言,涉及一种分布式数据库的租户管理方法、装置及可读存储介质。
背景技术
分布式数据库在大规模数据处理和高并发访问场景中有着广泛的应用。然而,当多个租户(用户或者用户组)共享同一个分布式数据库时,如何保证每个租户的数据隔离性、安全性和访问效率,就成为了一个重要问题。传统的租户管理方法主要是通过在应用层面实现数据隔离,但这种方式可能会带来数据冗余、维护困难以及难以满足个性化需求等问题。
发明内容
本发明的目的在于提供一种分布式数据库的租户管理方法、装置及可读存储介质。
第一方面,本发明实施例提供一种分布式数据库的租户管理方法,包括:
获取针对分布式数据库的用户访问请求;
基于预设认证过滤器对所述用户访问请求进行拦截,并解析所述用户访问请求,确定所述用户访问请求包括的租户身份信息以及所述用户访问请求对应的隔离策略;
获取所述用户访问请求对应的原始执行操作;
基于预设租户过滤器对所述原始执行操作进行拦截,并根据所述租户身份信息和所述隔离策略对所述原始执行操作进行修改,得到添加隔离条件的目标执行操作;
执行所述目标执行操作。
在一种可能的实施方式中,所述获取所述用户访问请求对应的原始执行操作,包括:
获取所述用户访问请求对应的原始SQL操作或原始ORM对象。
在一种可能的实施方式中,所述基于预设租户过滤器对所述原始执行操作进行拦截,并根据所述租户身份信息和所述隔离策略对所述原始执行操作进行修改,得到添加隔离条件的目标执行操作,包括:
基于所述预设租户过滤器对所述原始SQL操作或所述原始ORM对象进行拦截;
解析所述原始SQL操作或所述原始ORM对象,得到所述原始SQL操作或所述原始ORM对象对应的请求类型;
根据所述请求类型,结合所述租户身份信息和所述隔离策略对所述原始SQL操作或所述原始ORM对象进行修改,得到添加隔离条件的目标SQL执行操作。
在一种可能的实施方式中,所述根据所述请求类型,结合所述租户身份信息和所述隔离策略对所述原始SQL操作或所述原始ORM对象进行修改,得到添加隔离条件的目标SQL执行操作,包括:
当所述请求类型为添加对象时,结合所述租户身份信息和所述隔离策略,增加租户身份标识的字段至所述分布式数据库,得到所述目标SQL执行操作;
当所述请求类型为查询、修改或者删除时,基于所述租户身份信息和所述隔离策略,确定所述租户身份标识对应的过滤条件,得到所述目标SQL执行操作。
在一种可能的实施方式中,在所述获取所述用户访问请求对应的原始执行操作之后,所述方法还包括:
判断所述原始执行操作涉及的操作数据是否为敏感数据;
若是,则对所述操作数据进行脱敏处理;
若否,则执行所述基于预设租户过滤器对所述原始执行操作进行拦截,并根据所述租户身份信息和所述隔离策略对所述原始执行操作进行修改,得到添加隔离条件的目标执行操作的步骤。
在一种可能的实施方式中,所述执行所述目标执行操作,包括:
将所述目标执行操作划分为多个目标执行操作;
并行执行所述多个目标执行操作。
在一种可能的实施方式中,在所述执行所述目标执行操作之后,所述方法还包括:
将所述目标执行操作存入预设缓存区域;
当检测到相同的所述用户访问请求时,从所述预设缓存区域提取所述目标执行操作。
第二方面,本发明实施例提供一种分布式数据库的租户管理装置,包括:
获取模块,用于获取针对分布式数据库的用户访问请求;
管理模块,用于基于预设认证过滤器对所述用户访问请求进行拦截,并解析所述用户访问请求,确定所述用户访问请求包括的租户身份信息以及所述用户访问请求对应的隔离策略;获取所述用户访问请求对应的原始执行操作;基于预设租户过滤器对所述原始执行操作进行拦截,并根据所述租户身份信息和所述隔离策略对所述原始执行操作进行修改,得到添加隔离条件的目标执行操作;执行所述目标执行操作。
第三方面,本发明实施例提供一种计算机设备,所述计算机设备包括处理器及存储有计算机指令的非易失性存储器,所述计算机指令被所述处理器执行时,所述计算机设备执行第一方面至少一种可能的实施方式中所述的分布式数据库的租户管理方法。
第四方面,本发明实施例提供一种可读存储介质,所述可读存储介质包括计算机程序,所述计算机程序运行时控制所述可读存储介质所在计算机设备执行第一方面至少一种可能的实施方式中所述的分布式数据库的租户管理方法。
相比现有技术,本发明提供的有益效果包括:采用本发明公开的一种分布式数据库的租户管理方法、装置及可读存储介质,通过预设认证过滤器和租户过滤器,实现了对用户访问请求的自动拦截和解析,确定用户身份信息和对应的隔离策略。在获取原始执行操作后,基于租户过滤器对原始执行操作进行拦截,并根据租户身份信息和隔离策略对原始执行操作进行修改,生成带有隔离条件的目标执行操作,如此设计,实现了高效、安全且具有扩展性的多租户数据管理和隔离。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍。应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定。对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明实施例提供的分布式数据库的租户管理方法的步骤流程示意图;
图2为本发明实施例提供的分布式数据库的租户管理装置的结构示意框图;
图3为本发明实施例提供的计算机设备的结构示意框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
下面结合附图,对本发明的具体实施方式进行详细说明。
为了解决前述背景技术中的技术问题,图1为本公开实施例提供的分布式数据库的租户管理方法的流程示意图,下面对该分布式数据库的租户管理方法进行详细介绍。
步骤S201,获取针对分布式数据库的用户访问请求;
步骤S202,基于预设认证过滤器对所述用户访问请求进行拦截,并解析所述用户访问请求,确定所述用户访问请求包括的租户身份信息以及所述用户访问请求对应的隔离策略;
步骤S203,获取所述用户访问请求对应的原始执行操作;
步骤S204,基于预设租户过滤器对所述原始执行操作进行拦截,并根据所述租户身份信息和所述隔离策略对所述原始执行操作进行修改,得到添加隔离条件的目标执行操作;
步骤S205,执行所述目标执行操作。
在本发明实施例中,示例性的,当多个租户共用一个数据库表的分布式数据库系统运行时,服务器会接收到来自不同租户的用户访问请求。例如,租户A的用户想要查询其存储在共享表中的特定数据,于是服务器接收到了这个查询请求。在接收到用户访问请求后,服务器首先会利用预设的认证过滤器对该请求进行拦截和解析。这个过程中,服务器会检查请求中的认证信息,如租户的身份标识(Tenant ID)等,以确保请求来自合法的租户。同时,服务器还会确定该租户所对应的隔离策略,例如,某些租户可能只允许访问其自己的数据,而不能访问其他租户的数据。一旦通过认证并确定了租户身份信息和隔离策略,服务器会进一步分析用户访问请求,以获取其对应的原始执行操作。以查询操作为例,租户A的用户发出的查询请求对应的原始执行操作可能是从共享表中检索所有数据的SQL查询语句。在执行原始操作之前,服务器会使用预设的租户过滤器再次进行拦截。这一步是为了确保原始操作符合租户的隔离策略。对于租户A的用户来说,即使原始查询语句是检索所有数据,服务器也会根据租户A的身份信息和隔离策略修改这个查询语句,添加相应的隔离条件,如只检索租户A的数据。修改后的查询语句就是目标执行操作。最后,服务器会执行修改后的目标执行操作。在这个例子中,服务器将执行修改后的查询语句,只检索并返回租户A的数据,确保数据的隔离性和安全性。这样,即使多个租户的数据存储在同一个数据库表中,每个租户也只能访问其自己的数据。。
在本发明实施例的另一种实施方式中,在一个大型企业中,有多个部门使用同一个分布式数据库来存储和访问数据。例如,人力资源部门需要访问数据库以查看员工信息,销售部门需要访问数据库以更新销售记录,财务部门需要访问数据库以处理账目等。每当任何一个部门的员工想要访问数据库时,他们会发送一个访问请求。一旦数据库接收到用户的访问请求,预设的认证过滤器会拦截该请求,并解析其中的信息。假设某个员工发送了一个访问请求,认证过滤器会检查该员工的身份是否合法,并将身份信息提取出来供后续步骤使用。通过解析用户访问请求,系统可以确定请求中包含的租户身份信息。租户身份信息可能指示了该员工所属的部门或角色,以便在后续步骤中根据其权限来限制对数据库的访问。此外,还会确定用户访问请求对应的隔离策略。隔离策略可以是一组规则或参数,用于限制用户能够执行的操作范围。例如,某些员工可能只能查看数据而不能进行修改,而其他员工可能具有更高级别的权限,可以修改和删除数据。在确定了用户的身份信息和隔离策略后,系统会获取与用户访问请求相关联的原始执行操作。这些原始操作可能包括从数据库中检索数据、插入新的记录、更新现有记录等。在执行原始操作之前,预设的租户过滤器会拦截这些操作,并根据该用户的身份信息和隔离策略对原始操作进行修改。例如,如果某个用户的隔离策略仅允许其查看销售记录,但原始操作是更新销售记录,那么过滤器可能会将该操作修改为只读操作,以符合该用户的权限。通过修改原始操作,过滤器添加了隔离条件,确保在执行操作之前对其进行了适当的控制和限制。最后,系统会基于经过修改的原始操作执行目标执行操作。这意味着执行经过过滤器修改后的操作,确保了用户的访问请求在符合其身份和隔离策略的前提下得到正确处理。根据不同的操作类型和用户权限,可能会对数据库进行读取、写入或其他相应的操作。
如此设计,通过以上步骤,分布式数据库的租户管理方法可以根据用户的身份和隔离策略来限制其对数据库的访问和操作,从而提高数据安全性和系统可控性。
在本发明实施例中,前述步骤S203可以通过以下示例执行实施。
(1)获取所述用户访问请求对应的原始SQL操作或原始ORM对象。
在本发明实施例中,示例性的,在这个场景示例中,假设我们正在开发一个在线购物网站的后端系统。用户可以登录并浏览商品目录、添加商品到购物车、下订单等操作。我们需要获取用户发送的访问请求以及该请求所对应的原始执行操作。具体来说,在数据库层面上,可能会有一张名为"UserAccessLog"的表,用于记录用户的访问请求。每当用户进行一次操作,比如浏览商品目录或下订单,就会生成一条访问日志。例如,用户A登录到购物网站并浏览了商品目录,系统会接收到一个访问请求,并将其记录在"UserAccessLog"表中。这条记录包含了用户A的访问时间、请求类型(浏览)、请求路径等信息。我们需要从步骤1中获得的访问请求中提取出原始SQL操作或原始ORM(对象关系映射)对象。这些操作可以直接用于与数据库进行交互,以执行相应的操作。继续以上面的示例,假设用户A在浏览商品目录时,系统根据该请求生成了一个原始SQL操作。这个SQL操作可能是类似于以下的语句:SELECT*FROM Products
或者,系统也可以使用ORM框架来处理数据库交互,那么该步骤可能会生成一个原始ORM对象,例如:
python
from sqlalchemy import Column,Integer,String
class Product(Base):
__tablename__='products'
id=Column(Integer,primary_key=True)
name=Column(String)
description=Column(String)
price=Column(Integer)
在这个场景中,获取到的原始SQL操作或原始ORM对象可以直接用于执行与商品相关的数据库查询操作。
在本发明实施例的另一种实施方式中,假设有一个在线购物网站,用户在搜索框中输入了关键字来查找商品。当用户点击搜索按钮时,系统会收到一个用户访问请求。该请求需要经过一系列处理才能得到最终的搜索结果。在这个过程中,系统首先会将用户的搜索关键字转化为SQL查询语句,例如:
sql
SELECT*FROM products WHERE name LIKE'%keyword%';
这个SQL查询语句就是获取用户访问请求对应的原始SQL操作。
假设有一个社交媒体应用程序,用户可以发布和查看帖子。当用户浏览帖子时,系统会接收到一个用户访问请求。为了展示帖子内容,系统需要从数据库中获取相应的数据。在这种情况下,系统可能使用ORM(对象关系映射)技术来与数据库进行交互。当系统接收到用户访问请求后,它会根据请求中的信息创建一个ORM对象,例如:
python
post=Post.objects.get(id=post_id)
在这里,Post.objects.get()操作是通过ORM技术获取用户访问请求对应的原始ORM对象。
总之,上述步骤是指在根据前述的方法中,获取用户访问请求对应的原始执行操作(如SQL操作或ORM对象)。具体场景取决于应用程序的需求和采用的技术。以上示例提供了两个常见的场景,分别涉及到SQL操作和ORM对象的获取。
在本发明实施例中,前述步骤S204可以通过以下示例执行实施。
(1)基于所述预设租户过滤器对所述原始SQL操作或所述原始ORM对象进行拦截;
(2)解析所述原始SQL操作或所述原始ORM对象,得到所述原始SQL操作或所述原始ORM对象对应的请求类型;
(3)根据所述请求类型,结合所述租户身份信息和所述隔离策略对所述原始SQL操作或所述原始ORM对象进行修改,得到添加隔离条件的目标SQL执行操作。
在本发明实施例中,示例性的,假设有一个多租户的软件系统,其中包含了多个租户的数据库。在执行任何数据库操作之前,系统会先检查当前操作的租户身份信息。预设租户过滤器会根据配置的规则和条件,拦截并验证这些数据库操作是否符合当前租户的访问权限。例如,某公司使用一个在线销售平台来管理其产品和订单。不同的商店作为独立的租户使用该平台,每个商店都有自己的数据库。当商店A的管理员尝试执行一条SQL查询语句时,预设租户过滤器会拦截该操作,并检查该管理员是否具有足够的权限来执行该操作。如果权限验证通过,则可以继续执行下一步操作。在前面的步骤中,预设租户过滤器已经拦截了原始的SQL操作或ORM对象。接下来,系统需要解析这些操作,以确定它们对应的请求类型。请求类型可以分为读取操作(如SELECT查询)和写入操作(如INSERT、UPDATE、DELETE等)。以在线销售平台为例,当商店A的管理员执行一条SQL查询语句时,系统会解析该查询语句,并确定它是属于读取操作。同样地,如果管理员尝试对商店A的数据库执行更新操作(如INSERT、UPDATE或DELETE),系统也能正确识别这些请求类型。根据前面的步骤中确定的请求类型,在此步骤中,系统会根据租户的身份信息和预设的隔离策略对原始的SQL操作或ORM对象进行修改,以添加适当的隔离条件。这些隔离条件可以确保不同租户之间的数据隔离和安全性。继续以在线销售平台为例,假设商店A和商店B都是该平台上的独立租户。商店A的管理员执行了一条SQL查询语句来获取产品库存信息。在这一步,系统会根据商店A的身份信息和隔离策略,修改原始的查询语句,以确保只返回属于商店A的产品库存数据,而不包含商店B的数据。通过这些步骤,系统可以根据预设租户过滤器、租户身份信息和隔离策略,拦截并修改原始的数据库操作,从而确保每个租户只能访问其自己的数据,并且满足数据隔离的要求。
在本发明实施例的另一种实施方式中,假设有一个多租户的在线商城平台,不同的商家使用相同的数据库来存储他们的商品信息。当一个商家执行一个更新商品价格的SQL操作时,该操作首先会被拦截。拦截操作可以使用预设租户过滤器,检查商家身份并验证其权限。解析操作可以根据所执行的SQL语句或ORM对象的属性,确定请求的类型。例如,当商家执行一个查询商品库存量的SQL操作时,解析操作可以确定该操作是一个查询请求,并且需要特定的隔离条件来限制结果的范围。根据不同的请求类型,结合租户身份信息和隔离策略,可以对原始SQL操作或ORM对象进行修改以添加隔离条件。例如,当商家执行一个查询商品库存量的SQL操作时,可以根据商家的身份信息和隔离策略,添加额外的条件来保证该商家只能查询自己的商品库存量,而不能访问其他商家的库存信息。通过以上三个步骤,系统可以根据预设租户过滤器对原始执行操作进行拦截,并根据租户身份信息和隔离策略对原始执行操作进行修改,从而得到添加隔离条件的目标执行操作。这样可以确保在多租户环境下,每个租户只能访问其所拥有的数据,增强了系统的安全性和数据隔离性。
在本发明实施例中,前述根据所述请求类型,结合所述租户身份信息和所述隔离策略对所述原始SQL操作或所述原始ORM对象进行修改,得到添加隔离条件的目标SQL执行操作的步骤,可以通过以下示例执行实施。
(1)当所述请求类型为添加对象时,结合所述租户身份信息和所述隔离策略,增加租户身份标识的字段至所述分布式数据库,得到所述目标SQL执行操作;
(2)当所述请求类型为查询、修改或者删除时,基于所述租户身份信息和所述隔离策略,确定所述租户身份标识对应的过滤条件,得到所述目标SQL执行操作。
在本发明实施例中,示例性的,假设有一个分布式数据库系统,其中存储了多个租户的数据。每个租户都有自己独立的身份信息和隔离策略。当某个租户通过应用程序向数据库添加新的对象时,根据前述的方法,系统会结合该租户的身份信息和隔离策略来修改原始的SQL操作或ORM(对象关系映射)对象。在这个场景中,系统会增加一个表示租户身份标识的字段到分布式数据库中,以便将新对象与特定租户关联起来。通过这样的修改,系统生成了一个目标SQL执行操作,该操作包括添加了租户身份标识字段的SQL语句。假设应用程序中的某个租户想要执行查询、修改或删除操作,该操作需要受到租户身份信息和隔离策略的限制。系统根据前述的方法,在执行这些操作之前,会基于租户身份信息和隔离策略确定租户身份标识所对应的过滤条件。例如,如果某个租户只能访问自己创建的数据,系统会根据租户身份信息和隔离策略生成一个包含了过滤条件的目标SQL执行操作,以确保只返回该租户所拥有的数据。这样,系统可以通过应用过滤条件来限制查询、修改或删除的范围,保证了数据的隔离性。通过结合请求类型、租户身份信息和隔离策略对原始SQL操作或ORM对象进行修改,得到添加隔离条件的目标SQL执行操作。这些场景展示了如何根据不同的请求类型,在分布式数据库中实现对数据的动态操作和访问控制,从而保证了租户之间的数据隔离和安全性。
在本发明实施例的另一种实施方式中,假设有一个分布式数据库,其中存储着不同租户的数据。当某个租户使用应用程序添加一个新的对象到数据库中时,根据请求类型为"添加对象",系统会根据该租户的身份信息和隔离策略,在原始的SQL操作或ORM对象上进行修改。这样,系统会为新添加的对象增加一个租户身份标识的字段(例如,租户ID)以确保该对象与该租户相关联。得到的目标SQL执行操作就是将包含租户身份标识字段的SQL语句发送到分布式数据库。假设某个租户想要查询、修改或删除数据库中的某些数据。在这种情况下,根据请求类型为"查询"、"修改"或"删除",系统会结合租户身份信息和隔离策略来确定该租户身份标识所对应的过滤条件。系统会使用这些过滤条件来进行目标SQL执行操作,以确保只返回、修改或删除属于该租户的数据。如此设计,根据请求类型(添加对象、查询、修改或删除)、租户身份信息和隔离策略来对原始SQL操作或原始ORM对象进行修改,得到添加隔离条件的目标SQL执行操作。具体场景举例说明了在不同请求类型下如何结合租户身份信息和隔离策略来进行修改以实现数据隔离的功能。
在本发明实施例中,在执行步骤S203之后,本发明实施例还提供以下实施方式。
(1)判断所述原始执行操作涉及的操作数据是否为敏感数据;
(2)若是,则对所述操作数据进行脱敏处理;
(3)若否,则执行所述基于预设租户过滤器对所述原始执行操作进行拦截,并根据所述租户身份信息和所述隔离策略对所述原始执行操作进行修改,得到添加隔离条件的目标执行操作的步骤。
在本发明实施例中,示例性的,用户通过应用程序向云服务器提交了一个访问请求,该请求包含了一系列操作数据,例如读取或修改某个文件的内容。在获取到该访问请求后,系统首先判断这些操作数据是否属于敏感数据。敏感数据可能包括用户的隐私信息、机密文档等。系统通过对数据进行检查,确定操作数据是否属于敏感数据。如果被判断为敏感数据,系统需要对这些操作数据进行脱敏处理。脱敏处理是一种保护敏感数据的方法,通常会将数据中的关键信息替换成模糊的、不可识别的形式,以防止未经授权的访问。如果被判断为非敏感数据,系统需要执行基于预设租户过滤器的拦截操作。租户是指访问系统的用户或组织,预设租户过滤器是一种事先设定的筛选规则,用于确定是否允许该租户进行特定操作。在执行拦截操作时,系统根据租户身份信息和隔离策略对原始执行操作进行修改。租户身份信息可以包括用户ID、角色等,而隔离策略是一种定义了资源隔离级别和权限控制的规则集。最终,经过修改后的原始执行操作将得到添加了隔离条件的目标执行操作。这意味着系统在处理用户访问请求时,根据特定的租户身份和隔离策略对操作进行了限制或变更,确保了数据的安全性和合规性。
在本发明实施例中,前述步骤S205可以通过以下示例执行实施。
(1)将所述目标执行操作划分为多个目标执行操作;
(2)并行执行所述多个目标执行操作。
在本发明实施例中,示例性的,假设有一个分布式数据库系统,采用了该租户管理方法。现在考虑一个具体的用户访问请求,该请求需要执行一个复杂的查询操作。下面是该场景的详细步骤:用户发起一个数据库查询请求。该请求被拦截并解析,确定该用户具有租户身份信息,并且该请求需要按照特定的隔离策略进行处理。原始的查询操作被获取。根据租户身份信息和隔离策略,原始查询操作被修改以添加适当的隔离条件。目标执行操作被划分为多个目标执行子操作,每个子操作都可以并行执行。多个目标执行子操作同时在分布式数据库中执行,以提高整体性能和并发性。执行结果被收集和汇总,最终返回给用户。
在本发明实施例中,在执行步骤S205之后,本发明实施例还提供以下实施方式。
(1)将所述目标执行操作存入预设缓存区域;
(2)当检测到相同的所述用户访问请求时,从所述预设缓存区域提取所述目标执行操作。
在本发明实施例中,示例性的,用户发起一个数据库查询请求,与前面的场景相同。该请求被拦截并解析,确定用户的租户身份信息和隔离策略。原始的查询操作被获取,并修改为添加隔离条件的目标执行操作。目标执行操作被执行,并且执行结果被存储在预设的缓存区域中。再次检测到相同的用户访问请求,这可能是由于用户再次执行了相同的查询操作。在这种情况下,从预设的缓存区域提取之前执行的目标执行操作,而不需要再次执行整个操作。从缓存中获取的执行结果直接返回给用户,以节省时间和资源。通过将目标执行操作存储在缓存区域中,并在检测到相同请求时重新使用缓存结果,可以提高系统的响应速度和效率,尤其对于频繁重复的查询操作来说非常有用。
下面提供本发明实施例的一种整体实施流程。
当一个用户(比如一个公司)发起请求时,系统首先会通过认证过滤器拦截这个请求,并从中获取出用户是哪一个公司的信息,也就是租户信息。
用户的请求开始执行。这个请求可能包含了一些SQL语句或者ORM对象,用来操作数据库。此时,租户过滤器会拦截到这些SQL语句或ORM对象。
租户过滤器接着会解析这些SQL语句或ORM对象,了解它们要做什么,为下一步做准备。
接下来,租户过滤器会根据前面获取的租户信息,对这些SQL语句或ORM对象进行修改。比如,如果原来的SQL语句是“SELECT*FROM employees”,租户过滤器就会自动将其修改为“SELECT*FROM employees WHERE tenant_id=:current_tenant_id”。这样,只有属于当前公司的员工信息才会被查询出来。
修改后的SQL语句或ORM对象会被执行。由于已经添加了租户过滤条件,所以执行结果自然会符合多租户的需求,实现了各个公司数据之间的隔离。
最后,系统返回执行的结果。这个结果已经自动实现了公司间数据的隔离,用户无需关心任何与数据隔离相关的逻辑。
下面提供本发明实施例的另一整体实施流程。
当用户发起请求时,系统首先通过认证过滤器拦截此请求,并从中提取出租户信息和隔离策略,然后存入上下文。
当系统通过ORM框架执行SQL语句时,租户过滤器会拦截到这些SQL语句或ORM对象。
租户过滤器接着解析被拦截的SQL语句或ORM对象,为下一步的处理做好准备。
结合租户隔离策略,租户过滤器会对SQL语句或ORM对象进行修改,增加租户过滤逻辑。这里包括两种情况:
对于添加对象的操作,系统会自动添加租户ID字段(从当前用户登录上下文获取),并在对象持久化到数据库后填入租户ID值,以此标记对象的租户归属。
对于查询、修改或删除对象的操作,系统会自动添加租户ID过滤条件,从而在执行SQL语句时根据租户ID进行过滤,实现了租户间的数据隔离。
执行经修改的SQL语句。由于第四步已经将租户隔离逻辑植入到SQL语句中,因此,在执行这些SQL语句时,系统能自然地实现租户隔离。
返回执行结果。由于前面各步骤已经确保了数据操作的正确性和租户间的隔离,因此返回的结果也自然地符合多租户系统的需求。
总的来说,这种非侵入式的多租户实现方法通过在ORM框架中自动植入多租户处理逻辑,让业务代码无需处理与多租户相关的逻辑,从而提升了软件系统的效率和可维护性。
请结合参阅图2,图2为本发明实施例提供的一种分布式数据库的租户管理装置110,包括:
获取模块1101,用于获取针对分布式数据库的用户访问请求;
管理模块1102,用于基于预设认证过滤器对所述用户访问请求进行拦截,并解析所述用户访问请求,确定所述用户访问请求包括的租户身份信息以及所述用户访问请求对应的隔离策略;获取所述用户访问请求对应的原始执行操作;基于预设租户过滤器对所述原始执行操作进行拦截,并根据所述租户身份信息和所述隔离策略对所述原始执行操作进行修改,得到添加隔离条件的目标执行操作;执行所述目标执行操作。
需要说明的是,前述分布式数据库的租户管理装置110的实现原理可以参考前述分布式数据库的租户管理方法的实现原理,在此不再赘述。应理解以上装置的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块通过处理元件调用软件的形式实现,部分模块通过硬件的形式实现。例如,分布式数据库的租户管理装置110可以为单独设立的处理元件,也可以集成在上述装置的某一个芯片中实现,此外,也可以以程序代码的形式存储于上述装置的存储器中,由上述装置的某一个处理元件调用并执行以上分布式数据库的租户管理装置110的功能。其它模块的实现与之类似。此外这些模块全部或部分可以集成在一起,也可以独立实现。这里所描述的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
例如,以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(application specific integrated circuit,ASIC),或,一个或多个微处理器(digital signal processor,DSP),或,一个或者多个现场可编程门阵列(fieldprogrammable gate array,FPGA)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(centralprocessingunit,CPU)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(system-on-a-chip,SOC)的形式实现。
本发明实施例提供一种计算机设备100,计算机设备100包括处理器及存储有计算机指令的非易失性存储器,计算机指令被处理器执行时,计算机设备100执行前述的分布式数据库的租户管理装置110。如图3所示,图3为本发明实施例提供的计算机设备100的结构框图。计算机设备100包括分布式数据库的租户管理装置110、存储器111、处理器112及通信单元113。
为实现数据的传输或交互,存储器111、处理器112以及通信单元113各元件相互之间直接或间接地电性连接。例如,可通过一条或多条通讯总线或信号线实现这些元件相互之间电性连接。分布式数据库的租户管理装置110包括至少一个可以软件或固件(firmware)的形式存储于存储器111中或固化在计算机设备100的操作系统(operatingsystem,OS)中的软件功能模块。处理器112用于执行存储器111中存储的分布式数据库的租户管理装置110,例如分布式数据库的租户管理装置110所包括的软件功能模块及计算机程序等。
本发明实施例提供一种可读存储介质,可读存储介质包括计算机程序,计算机程序运行时控制可读存储介质所在计算机设备执行前述的分布式数据库的租户管理方法。
出于说明目的,前面的描述是参考具体实施例而进行的。但是,上述说明性论述并不打算穷举或将本公开局限于所公开的精确形式。根据上述教导,众多修改和变化都是可行的。选择并描述这些实施例是为了最佳地说明本公开的原理及其实际应用,从而使本领域技术人员最佳地利用本公开,并利用具有不同修改的各种实施例以适于预期的特定应用。
Claims (10)
1.一种分布式数据库的租户管理方法,其特征在于,包括:
获取针对分布式数据库的用户访问请求;
基于预设认证过滤器对所述用户访问请求进行拦截,并解析所述用户访问请求,确定所述用户访问请求包括的租户身份信息以及所述用户访问请求对应的隔离策略;
获取所述用户访问请求对应的原始执行操作;
基于预设租户过滤器对所述原始执行操作进行拦截,并根据所述租户身份信息和所述隔离策略对所述原始执行操作进行修改,得到添加隔离条件的目标执行操作;
执行所述目标执行操作。
2.根据权利要求1所述的方法,其特征在于,所述获取所述用户访问请求对应的原始执行操作,包括:
获取所述用户访问请求对应的原始SQL操作或原始ORM对象。
3.根据权利要求2所述的方法,其特征在于,所述基于预设租户过滤器对所述原始执行操作进行拦截,并根据所述租户身份信息和所述隔离策略对所述原始执行操作进行修改,得到添加隔离条件的目标执行操作,包括:
基于所述预设租户过滤器对所述原始SQL操作或所述原始ORM对象进行拦截;
解析所述原始SQL操作或所述原始ORM对象,得到所述原始SQL操作或所述原始ORM对象对应的请求类型;
根据所述请求类型,结合所述租户身份信息和所述隔离策略对所述原始SQL操作或所述原始ORM对象进行修改,得到添加隔离条件的目标SQL执行操作。
4.根据权利要求3所述的方法,其特征在于,所述根据所述请求类型,结合所述租户身份信息和所述隔离策略对所述原始SQL操作或所述原始ORM对象进行修改,得到添加隔离条件的目标SQL执行操作,包括:
当所述请求类型为添加对象时,结合所述租户身份信息和所述隔离策略,增加租户身份标识的字段至所述分布式数据库,得到所述目标SQL执行操作;
当所述请求类型为查询、修改或者删除时,基于所述租户身份信息和所述隔离策略,确定所述租户身份标识对应的过滤条件,得到所述目标SQL执行操作。
5.根据权利要求1所述的方法,其特征在于,在所述获取所述用户访问请求对应的原始执行操作之后,所述方法还包括:
判断所述原始执行操作涉及的操作数据是否为敏感数据;
若是,则对所述操作数据进行脱敏处理;
若否,则执行所述基于预设租户过滤器对所述原始执行操作进行拦截,并根据所述租户身份信息和所述隔离策略对所述原始执行操作进行修改,得到添加隔离条件的目标执行操作的步骤。
6.根据权利要求1所述的方法,其特征在于,所述执行所述目标执行操作,包括:
将所述目标执行操作划分为多个目标执行操作;
并行执行所述多个目标执行操作。
7.根据权利要求1所述的方法,其特征在于,在所述执行所述目标执行操作之后,所述方法还包括:
将所述目标执行操作存入预设缓存区域;
当检测到相同的所述用户访问请求时,从所述预设缓存区域提取所述目标执行操作。
8.一种分布式数据库的租户管理装置,其特征在于,包括:
获取模块,用于获取针对分布式数据库的用户访问请求;
管理模块,用于基于预设认证过滤器对所述用户访问请求进行拦截,并解析所述用户访问请求,确定所述用户访问请求包括的租户身份信息以及所述用户访问请求对应的隔离策略;获取所述用户访问请求对应的原始执行操作;基于预设租户过滤器对所述原始执行操作进行拦截,并根据所述租户身份信息和所述隔离策略对所述原始执行操作进行修改,得到添加隔离条件的目标执行操作;执行所述目标执行操作。
9.一种计算机设备,其特征在于,所述计算机设备包括处理器及存储有计算机指令的非易失性存储器,所述计算机指令被所述处理器执行时,所述计算机设备执行权利要求1-7中任意一项所述的分布式数据库的租户管理方法。
10.一种可读存储介质,其特征在于,所述可读存储介质包括计算机程序,所述计算机程序运行时控制所述可读存储介质所在计算机设备执行权利要求1-7中任意一项所述的分布式数据库的租户管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410193354.6A CN117932645A (zh) | 2024-02-21 | 2024-02-21 | 一种分布式数据库的租户管理方法、装置及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410193354.6A CN117932645A (zh) | 2024-02-21 | 2024-02-21 | 一种分布式数据库的租户管理方法、装置及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117932645A true CN117932645A (zh) | 2024-04-26 |
Family
ID=90760762
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410193354.6A Pending CN117932645A (zh) | 2024-02-21 | 2024-02-21 | 一种分布式数据库的租户管理方法、装置及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117932645A (zh) |
-
2024
- 2024-02-21 CN CN202410193354.6A patent/CN117932645A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2019239311B2 (en) | Facilitating queries of encrypted sensitive data via encrypted variant data objects | |
US10210266B2 (en) | Database query processing on encrypted data | |
US10404757B1 (en) | Privacy enforcement in the storage and access of data in computer systems | |
US9418237B2 (en) | System and method for data masking | |
US8914323B1 (en) | Policy-based data-centric access control in a sorted, distributed key-value data store | |
US20220100899A1 (en) | Protecting sensitive data in documents | |
EP3278263B1 (en) | Computing on encrypted data using deferred evaluation | |
US8875302B2 (en) | Classification of an electronic document | |
US20230350870A1 (en) | Online determination of result set sensitivity | |
US20230161904A1 (en) | System and Method for Serving Subject Access Requests | |
US11741258B2 (en) | Dynamic data dissemination under declarative data subject constraints | |
US20120310918A1 (en) | Unique join data caching method | |
CN114424191A (zh) | 基于被访问资源的对数据库的过程语言的细粒度访问控制 | |
CN117932645A (zh) | 一种分布式数据库的租户管理方法、装置及可读存储介质 | |
US11481513B2 (en) | Decentralized storage of personal data | |
US20220405417A1 (en) | Sensitive data classification in non-relational databases | |
US20220050912A1 (en) | Security semantics for database queries | |
US20230334176A1 (en) | Data treatment apparatus and methods | |
Oudejans et al. | QOMPLIANCE: Declarative Data-Centric Policy Compliance | |
Zhezhnych et al. | On restricted set of DML operations in an ERP System’s database | |
CA3156313A1 (en) | Data treatment apparatus and methods | |
CN117828567A (zh) | 一种外部表安全访问控制方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |