多租户数据库隔离方法、系统、电子设备及计算机存储介质与流程

文档序号:19880042发布日期:2020-02-08 06:55阅读:200来源:国知局
多租户数据库隔离方法、系统、电子设备及计算机存储介质与流程

本发明涉及计算机技术领域,尤其涉及一种多租户数据库隔离方法、系统、电子设备及计算机存储介质。



背景技术:

在大型企业或者公司中,随着业务量的不断扩大,许多租户开始会出现个性化或者特殊化的业务需求。传统的采用单个数据库进行数据存储和管理的模式已经很难满足实际使用上的需要。

为了适应业务的发展,现有提供了一些对单个数据库进行切分和隔离,分配给不同的租户的技术方案。其可以利用多租户sql解析器,在sql语句中加入预先为每个租户分配的租户id来实现多租户数据隔离的效果。

但是,这样的数据库隔离和切分方式存在着许多的不足和缺陷。其并没有真正的对数据库进行切分,所有的数据均维持在同一个库,同一个表上,只是利用了租户id来实现隔离,数据之间不存在真正的隔离,具有安全性的风险。

另外,随着数据量的不断增大,会令数据库查询和修改的效率不断降低,水平扩展性有限,使用上存在着数据量瓶颈。

因此,迫切需要提供一种新的用于实现多租户的数据库隔离方法来解决以上的一个或者多个问题。



技术实现要素:

本发明的实施例提供了一种多租户数据库隔离方法、系统、电子设备及计算机存储介质,用于解决现有多租户的数据隔离方法存在的一种或者多种问题。

本发明实施例的第一方面提供了一种多租户数据库隔离方法。该方法包括:

根据用户的租用请求,生成对应的租户信息;设置多个不同的数据库,每一个所述数据库与一个租户对应,用于存储对应租户的数据;

确定业务请求对应的租户信息,并提供至中间件;由所述中间件管理所述多个数据库之间的逻辑关系;所述数据库通过数据下标区分。

可选地,根据用户的租用请求,生成对应的租户信息,具体包括:根据注册请求,确定租户的租户信息以及域名;记录所述租户信息与所述域名之间的对应关系。

可选地,设置多个不同的数据库,具体包括:当有新租户注册时,为所述新租户增设新的数据库实例。

可选地,确定业务请求对应的租户信息,具体包括:接收租户发送的业务请求;根据业务请求的域名,确定对应的租户信息;将所述租户信息添加到业务请求中;发送添加有租户信息的业务请求到所述中间件。

可选地,将所述租户信息添加到业务请求中,具体包括:

拦截获取携带有租户信息的业务请求;将所述租户信息与所述业务请求的sql语句拼接,改写所述sql语句。

可选地,由所述中间件管理多个所述数据库之间的逻辑关系,具体包括:

通过中间件解析所述改写后的sql语句;根据所述解析结果,发送至对应的数据库执行;由所述中间件接收所述数据库的执行结果并返回至发出所述业务请求的请求方。

可选地,所述中间件为mycat中间件;所述sql语句的改写由mybatis拦截器执行。

本发明实施例的第二方面提供了一种多租户的数据库系统。其中,所述数据库系统包括:

租户管理模块,用于根据用户的租用请求,生成和管理对应的租户信息;数据库,用于存储和管理对应租户的数据;每一个所述数据库与一个租户对应;业务请求拦截模块,用于确定业务请求对应的租户信息,并提供至中间件;中间件,用于管理所述多个数据库之间的逻辑关系;所述数据库通过数据下标区分。

本发明实施例的第三方面提供了一种用于数据恢复的电子设备。该电子设备包括处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;

所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如上所述的多租户数据库隔离方法的步骤。

本发明实施例第四方面提供了一种计算机存储介质,所述计算机存储介质中存储有计算机程序指令,所述计算机程序指令使处理器执行上述的多租户数据库隔离方法的步骤。

本发明的实施例提供的多租户数据库隔离方法,通过中间件实现对多个独立的数据库实例之间的逻辑关系进行管理,真正实现了对数据库的切分。每一个租户都拥有独立存储数据的数据库,不同租户之间的数据完全隔离,具有较高的数据安全性,有效的提升了数据库的操作效率和扩展性。

上述说明仅是本发明实施例技术方案的概述,为了能够更清楚了解本发明实施例的技术手段,而可依照说明书的内容予以实施,并且为了让本发明实施例的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的多租户数据库隔离方法的流程图;

图2是本发明实施例提供的中间件与数据库的架构示意图;

图3是本发明实施例提供的业务请求的实际执行过程的示意图;

图4是本发明实施例提供的多租户数据库系统的功能框图;

图5是本发明实施例提供的电子设备的结构框图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。

图1示出了本发明实施例提供的多租户数据库隔离方法的流程图。该方法可以应用于数据库,实现不同租户之间的数据隔离,满足不同租户特殊化的业务需求和对于数据安全的要求。

如图1所示,该方法可以包括如下步骤:

步骤110:根据用户的租用请求,生成对应的租户信息。

该租户信息是用于标识和区分不同租户的一系列相关数据信息。其可以根据实际情况的需要,选择使用相应类型的信息。步骤110是属于租户信息管理时,新建租户的步骤。根据实际情况的需要,还可以添加或者减省一个或者多个步骤,以满足系统对于租户管理的需求。

具体的,所述步骤110可以包括:首先,根据注册请求,确定租户的租户信息以及域名。然后,记录所述租户信息与所述域名之间的对应关系。该租户信息可以是一个特定的id或者编号,用于标记所属的租户。

步骤120:设置多个不同的数据库,每一个所述数据库与一个租户对应,用于存储对应租户的数据。

在本实施例中,与传统的仅使用一个库和一张表的方式所不同的是,通过对数据库的切分,提供多个不同的数据库给租户使用。每一个租户都可以享有一个独立的数据库,用于存储和管理数据。

具体的,每当有新增租户时,可以为新的租户增设一个新的数据库实例,并且将该数据库实例与租户绑定,记录其两者之间的对应关系。

步骤130:确定业务请求对应的租户信息,并提供至中间件。

业务请求是租户在实际使用过程中,请求对数据库进行操作的请求,例如查询操作或者数据编辑操作。在接收到业务请求后,可以确定发出该业务请求对应的租户信息从而使其能够指向正确的数据库进行操作。

在一些实施例中,步骤130进一步可以包括如下步骤:

首先,根据业务请求的域名,确定对应的租户信息。如上步骤所记载的,租户信息具有与租户域名的对应关系。因此,可以通过拦截读取业务请求的域名来确定本次业务请求的发送者。

然后,将所述租户信息添加到业务请求中。业务请求通常是一个完整的sql语句,为方便传递可以直接将对应的租户信息添加到该sql语句中。具体的,可以通过mybatis拦截器拦截获取携带有租户信息的业务请求,并将得到的租户信息拼接到sql语句中。

最后,发送添加有租户信息的业务请求到所述中间件。拼接完成后的业务请求会带上租户信息,使得中间件可以分析确定其所指向的数据库。

步骤140:由所述中间件管理所述多个数据库之间的逻辑关系,所述数据库通过数据下标区分。

“中间件”是一个介于数据库与前端应用之间的,用于提供数据处理和交互的中间服务的功能模块。在本实施例中,存在有多个不同的数据库实例,利用中间件的方式,有序的管理这些数据库之间的逻辑关系。

管理数据库之间的逻辑关系包括请求的分发以及操作结果的返回等。具体的,中间件可以解析所述改写后的sql语句,然后根据所述解析结果,发送至对应的数据库执行。数据库执行业务请求后得到的结果也可以被所述中间件接收并经过分析处理后,返回至发出所述业务请求的请求方,完成完整的数据库操作流程。

在本实施例中,这些不同的数据库(逻辑库schema)可以通过数据下标进行标识和区分。当然也可以根据实际情况选择使用其他合适的区分方式。

图2为本发明实施例提供的基于中间件的数据库结构示意图。如图2所示,通过中间件20可以令前端的应用10集中在业务处理上,将其他数据聚合,数据源切换等等的一系列工作均交由中间件20完成,实现对多个数据库30的有序管理。具体的,可以选择使用被称为mycat的中间件来实现对所述多个数据库的管理。

通过中间件的设置,为不同租户配置有不同的数据库实例,可以实现数据的完全隔离,安全性好。另外,新增租户只需新增一套根据租户id生成的数据库实例,具有更好的扩展性,数据库操作效率更高。

图3为本发明实施例提供的业务请求执行过程的示意图。如图3所示,该业务请求(查询sql)的具体过程包括:

步骤310:属于某个租户的用户发送业务请求。

步骤320:该业务请求首先被web拦截器拦截。web拦截器可以根据域名,向租户信息管理中心查询对应的租户信息。

步骤330:租户信息管理中心向web拦截器返回租户索引信息。

步骤340:携带租户索引信息的业务请求被mybatis拦截器拦截。

步骤350:mybatis拦截器根据其带有租户索引信息的业务请求,在执行sql查询前改写sql语句,在其中添加租户索引信息,发送中间件。

步骤360:mycat作为多租户分库中间件,解析sql语句后,在对应的mysql数据库中执行该查询sql语句以查询数据。

步骤370:查询结果依次经过中间件、mybatis拦截器以及web拦截器等,形成请求结果返回给用户。

图4示出了本发明实施例提供的多租户数据库系统的结构示意图。如图4所示,该多租户数据库系统可以包括:租户管理模块410、数据库420、业务请求拦截模块430以及中间件440。

其中,租户管理模块410用于根据用户的租用请求,生成和管理对应的租户信息。数据库420用于存储和管理对应租户的数据;每一个所述数据库与一个租户对应。业务请求拦截模块430用于确定业务请求对应的租户信息,并提供至中间件。中间件440用于管理所述多个数据库之间的逻辑关系;所述数据库通过数据下标区分。该数据库可以是一个逻辑库(schema),每个数据库根据其后缀标记的租户信息分别单独用于存储对应租户的数据。

通过本发明实施例提供多租户数据库系统,每一个租户都拥有独立存储数据的数据库,不同租户之间的数据完全隔离,具有较高的数据安全性。而且,在新增租户时,只需要配套增加一个新的数据库实例,可以有效的提升数据库的操作效率和扩展性。

本发明实施例提供了一种非易失性计算机存储介质,所述计算机存储介质存储有至少一可执行指令,该计算机可执行指令可执行上述任意方法实施例中的多租户数据库隔离方法。

可执行指令具体可以用于使得处理器执行以下操作:根据用户的租用请求,生成对应的租户信息;设置多个不同的数据库,每一个所述数据库与一个租户对应,用于存储对应租户的数据;确定业务请求对应的租户信息,并提供至中间件;由所述中间件管理所述多个数据库之间的逻辑关系;所述数据库通过数据下标区分。

图5示出了本发明实施例提供的电子设备实施例的结构示意图,本发明具体实施例并不对电子设备的具体实现做限定。

如图5所示,该电子设备可以包括:处理器(processor)502、通信接口(communicationsinterface)504、存储器(memory)506、以及通信总线508。

其中,处理器502、通信接口504、以及存储器506通过通信总线508完成相互间的通信。通信接口504,用于与其它设备比如客户端或其它服务器等的网元通信。处理器502,用于执行程序510,具体可以执行上述多租户数据库隔离方法实施例中的相关步骤。

具体地,程序510可以包括程序代码,该程序代码包括计算机操作指令。

处理器502可能是中央处理器cpu,或者是特定集成电路asic(applicationspecificintegratedcircuit),或者是被配置成实施本发明实施例的一个或多个集成电路。电子设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个cpu;也可以是不同类型的处理器,如一个或多个cpu以及一个或多个asic。

存储器506,用于存放程序510。存储器506可能包含高速ram存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。

程序510具体可以用于使得处理器502执行以下操作:根据用户的租用请求,生成对应的租户信息;设置多个不同的数据库,每一个所述数据库与一个租户对应,用于存储对应租户的数据;确定业务请求对应的租户信息,并提供至中间件;由所述中间件管理所述多个数据库之间的逻辑关系;所述数据库通过数据下标区分。

在此提供的算法或显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明实施例也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本发明并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明实施例的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。

本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1