一种用于隔离多租户数据的系统、设备和方法与流程

文档序号:11276435阅读:197来源:国知局
一种用于隔离多租户数据的系统、设备和方法与流程
本申请涉及计算机
技术领域
,尤其涉及用于隔离多租户数据的系统、设备和方法。
背景技术
:在互联网应用中,为了更好地利用资源,更好地维护管理及降低开发成本,人们通常会对底层资源、基础业务逻辑或者一些行业解决方案进行封装而形成一个业务平台,从而以服务的形式提供给各个接入方。在这种情况下,为了数据安全和数据的互不干扰,必需保证每个接入方只能查看和操作自己的数据,因此数据隔离成为这样的平台必需具备的能力。在现有的技术方案中,通常采用在表中添加一个枚举字段来标识数据身份或者事先配置好每个租户标识对应的数据库的方式来对数据进行隔离。然而,这样的数据隔离方式具有安全性差、扩展困难、维护成本高、查询数据效率低等缺点。技术实现要素:本申请的目的在于提供一种用于隔离多租户数据的系统、设备和方法,来解决
背景技术
部分提出的技术问题。在本申请的一个方面,提出了一种用于隔离多租户数据的方法,所述方法包括:接收指示租户与数据库之间的对应关系的映射信息;针对所述映射信息中包括的每个数据库创建数据库连接池;基于所述映射信息建立映射表,所述映射表中的每条记录指示所述映射信息中包括的每个租户与所创建的数据库连接池之间的对应关系;接收租户提出的数据访问请求,并对所述数据访问请求进行解析以获得所述租户的身份标识;根据所述租户的身份标识从所述映射表中获取与所述 租户对应的数据库连接池;以及通过所获取的数据库连接池访问与所述租户对应的数据库。可选地,所述方法还包括接收变更信息并基于所述变更信息更新所述映射表。可选地,所述接收变更信息并基于所述变更信息更新所述映射表包括:在所述变更信息指示要增加新租户的情况下,针对所述变更信息中所指定的目标数据库建立数据库连接池,并且将所述新租户的身份标识和针对所述目标数据库创建的数据库连接池添加到所述映射表中,其中,所述目标数据库为所述变更信息中所指定的所述新租户要访问的数据库。可选地,所述接收变更信息并基于所述变更信息更新所述映射表包括:在所述变更信息指示要删除租户的情况下,关闭对应于所述变更信息中指定的要删除的租户的数据库连接池,并从所述映射表中删除与该租户相关的记录。可选地,所述接收变更信息并基于所述变更信息更新所述映射表包括:在所述变更信息指示要修改租户与数据库之间的对应关系的情况下,将所述映射表中与目标租户有关的记录中的数据库连接池修改为目标数据库连接池,其中,所述目标租户为所述变更信息中所指定的要执行对应关系变更的租户,所述目标数据库连接池为在执行所述变更后所述目标租户将对应的数据库连接池。在本申请的另一方面,提供了一种用于隔离多租户数据的设备,所述设备包括:通信模块,被配置成接收指示租户与数据库之间的对应关系的映射信息;数据源分配模块,被配置成针对所述映射信息中包括的每个数据库创建数据库连接池,并基于所述映射信息建立映射表,其中,所述映射表中的每条记录指示所述映射信息中包括的每个租户与所创建的数据库连接池之间的对应关系;请求解析模块,被配置成接收租户提出的数据访问请求并对所述数据访问请求进行解析以获得所述租户的身份标识,并且根据所述租户的身份标识从所述映射表中获取与该租户对应的数据库连接池;以及数据库访问模块,被配置成通过所述请求解析模块所获取的数据库连接池访问与所述租户对 应的数据库。可选地,所述数据源分配模块进一步被配置成基于来自所述通信模块的变更信息来更新所述映射表。可选地,所述数据源分配模块进一步被配置成:在所述变更信息指示增加新租户时,针对所述变更信息中所指定的目标数据库建立数据库连接池,并且将所述新租户的身份标识和针对所述目标数据库创建的数据库连接池添加到所述映射表中,其中,所述目标数据库为所述变更信息中所指定的所述新租户要访问的数据库。可选地,所述数据源分配模块进一步被配置成:在所述变更信息指示删除租户时,关闭对应于所述变更信息中所指定的要删除的租户的数据库连接池,并且从所述映射表中删除与该租户相关的记录。可选地,所述数据源分配模块进一步被配置成:当所述变更信息指示要修改租户与数据库之间的对应关系时,将所述映射表中与目标租户有关的记录中的数据库连接池修改为目标数据库连接池,其中,所述目标租户为所述变更信息中所指定的要执行对应关系变更的租户,所述目标数据库连接池为在执行所述变更后所述目标租户将对应的数据库连接池。在本申请的又一方面,提供了一种用于隔离多租户数据的系统,所述系统包括:如上所述的用于隔离多租户数据的设备;以及控制模块,被配置成接收用户输入的所述映射信息,并且将所述映射信息传送至所述用于隔离多租户数据的设备。根据本申请的用于隔离多租户数据的系统、设备和方法利用控制模块对于多个租户与对应数据库之间的映射关系进行集中管理,使得租户数据都映射到库,因而开发简单、易于维护。根据本申请的用于隔离多租户数据的系统、设备和方法通过数据源分配模块创建与各租户对应的数据库的数据库连接池,以实现各租户数据的有效隔离。并且,通过数据源分配模块能够方便地增加、删除或修改租户对应的数据库连接池,从而能够通过简单操作来实现数据库的动态伸缩。附图说明通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:图1是本申请可以应用于其中的示例性系统架构图;图2示出了根据本申请实施例的用于隔离多租户数据的设备的示意性框图;图3示出了根据本申请实施例的用于隔离多租户数据的方法的流程图;图4示出了根据本申请实施例的用于隔离多租户数据的方法变型例的流程图;图5示出了根据本申请实施例的用于隔离多租户数据的方法变型例的流程图;图6示出了根据本申请实施例的用于隔离多租户数据的方法变型例的流程图;图7是适于用来实现本申请实施例的用于隔离多租户数据的系统的计算机系统的结构示意图。具体实施方式下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。图1示出了可以应用本申请的用于隔离多租户数据的系统、设备或方法的实施例的示例性系统架构100。如图1所示,系统架构100可以包括控制服务器101,应用服务器1021~102n,数据库服务器1031~103n和网络104~105。网络104~105分别用以在控制服务器101与应用服务器1021~102n以及应用服务器1021~102n与数据库服务器1031~103n之间提供通信链路的介质。网络 104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。控制服务器101用于管理系统100的所有租户与对应数据库之间的映射关系。租户是指使用应用服务器1021~102n的应用程序的客户。控制服务器101设置有控制模块。控制模块被配置成接收数据库管理人员输入的操作指令,并且基于该操作指令中包含的应用服务器的标识信息将该操作指令传送至对应的应用服务器。例如,假设数据库管理人员通过控制模块输入了用于针对应用服务器1021添加租户的操作指令,则将数据库管理人员发出的该指令发送至应用服务器1021。类似地,假设数据库管理人员通过控制模块输入了用于针对应用服务器1022添加租户的操作指令,则将数据库管理人员发出的该指令发送至应用服务器1022。应用服务器1021~102n上可以安装有各种通讯客户端应用,例如网页浏览器应用、购物类应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。在应用服务器1021~102n上执行上述应用时,可以通过网络105访问作为应用服务器1021~102n的数据源的相应数据库服务器1031~103n,并从数据库服务器1031~103n接收作为上述应用的执行结果的数据。控制服务器101、应用服务器1021~102n以及数据库服务器1031~103n可以是支持数据库查询的各种电子设备,包括但不限于台式计算机、平板电脑、膝上型便携计算机等等。需要说明的是,本申请实施例所提供的用于隔离多租户数据的方法一般由应用服务器1021~102n执行,相应地,用于隔离多租户数据的设备一般设置于应用服务器1021~102n中。应该理解,图1中的应用服务器、网络和数据库服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的应用服务器、网络和数据库服务器。以下参照附图2描述根据本申请实施例的用于隔离多租户数据的设备200。在本申请中,为了保证应用服务器各租户的数据之间的有效隔离, 在各应用服务器102中均配置有用以隔离多租户数据的设备200。作为示例,以下仅说明设置于应用服务器1021中的设备200,其它应用服务器中的设备200具有类似的构造,本文不再赘述。如图2所示,设备200包括通信模块201、数据源分配模块202、请求解析模块203和数据库访问模块204。通信模块201接收数据库管理人员所设置的用于指示租户与数据库之间的对应关系的映射信息。通信模块201与控制服务器101的控制模块通信,以将数据库管理人员所设置的关于该通信模块201所在的应用服务器的租户与数据库之间的对应关系的映射信息从控制服务器101拉取到本应用服务器,并提交给数据源分配模块202。数据源分配模块202管理其所在的应用服务器的租户与数据库之间的映射关系。数据源分配模块202针对所接收到的映射信息中包括的每个数据库创建数据库连接池,并基于该映射信息建立映射表。该述映射表中的每条记录指示映射信息中包括的每个租户与所创建的数据库连接池之间的对应关系。数据库连接池的基本原理是在内部对象池中维护一定数量的数据库连接,并对外暴露数据库连接获取和返回方法。数据库连接池负责分配、管理和释放数据库连接,它允许应用系统重复使用一个现有的数据库连接,而不是重建一个数据库连接,从而避免了频繁创建、释放连接引起的大量性能开销。数据库连接池的建立、数据源分配策略的管理以及数据库连接池的关闭属于本领域的技术人员已知的技术,因而此处不再赘述。在本申请的一个实施例中,数据源分配模块202还可以基于从通信模块201接收到的变更信息来更新所建立的映射表。在本申请的一个实施例中,假定数据库管理人员希望针对应用服务器1021增加新租户ua并且与新租户ua对应的数据库为数据库服务器1031中的数据库da。在这种情况下,在接收到数据库管理人员输入的指令之后,数据源分配模块202针对数据库da建立数据库连接池,并且将该新租户ua的身份标识和针对数据库da创建的数据库连接池添加到映射表中。在本申请的另一实施例中,假定数据库管理人员希望删除应用服务器1021的租户ub。在这种情况下,在接收到数据库管理人员输入的指令之后,数据源分配模块202关闭对应于租户ub的数据库连接池,并且从映射表中删除与租户ub相关的记录。在本申请的又一实施例中,假定数据库管理人员希望将与应用服务器1021的租户ua对应的数据库修改为数据库服务器1031中的数据库db。在这种情况下,在接收到数据库管理人员发出的指令之后,数据源分配模块202将映射表中与租户ua有关的记录中的数据库连接池修改为数据库db的数据库连接池。请求解析模块203接收租户提出的数据访问请求,并对所接收到的数据访问请求进行解析,以获得租户的身份标识。然后,请求解析模块203将所获得的租户的身份标识提交给数据源分配模块202。数据源分配模块202根据租户的身份标识从映射表中获取与该租户对应的数据库连接池的信息,并将所获得的数据库连接池信息转交给请求解析模块203。请求解析模块203将所接收到的数据访问请求以及所获得的数据库连接池信息提交给数据库访问模块204。数据库访问模块204通过诸如java数据库连接(javadatabaseconnectivity,jdbc)或开放数据库互连(opendatabaseconnectivity,odbc)的数据库连接或者使用封装有jdbc或odbc数据库连接的持久层框架,将所接收到的数据访问请求以及所获得的数据库连接池信息传递给相应的数据库执行,并将结果返回给租户。下面参照图3说明根据本申请实施例的用于隔离多租户数据的方法。如图3所示,在步骤301中,接收指示租户与数据库之间的对应关系的映射信息。设备200的通信模块201不断从控制服务器101同步该设备200所在的应用服务器102的租户与数据库之间的映射关系,并将所接收到的关于租户与数据库之间的映射关系的映射信息传送至数据源分配模块202。在步骤302中,针对所接收到的映射信息中包括的每个数据库创 建数据库连接池。数据源分配模块202基于所接收到的映射信息创建该映射信息中所指定的所有数据库的数据库连接池。例如,假定数据库管理人员在控制模块中指定了租户ua和租户ub分别访问数据库服务器1031中的数据库da和db,则在步骤302中,数据源分配模块202分别创建数据库da和db的数据库连接池。在步骤303中,基于映射信息建立映射表。数据源分配模块202基于所接收到的映射信息建立映射表,该映射表中的每条记录指示该映射信息中包括的每个租户与步骤302中所创建的数据库连接池之间的对应关系。映射表中的每条记录通常包括租户的身份标识、租户要访问的数据库、关于租户要访问的数据库的数据库连接池的信息(也简称为数据库连接池信息)。例如,在如上所述的数据库管理人员在控制模块中指定了租户ua和租户ub分别访问数据库服务器1031中的数据库da和db的情况下,步骤303中所创建的映射表将如表1所示:租户身份标识(id)租户要访问的数据库标识数据库连接池信息uada连接池aubdb连接池b表1在步骤304中,接收租户提出的数据访问请求,并对接收到的数据访问请求进行解析,以获得该租户的身份标识。请求解析模块203接收租户提出的数据访问请求,并对该数据访问请求进行解析以获得该租户的身份标识。然后,请求解析模块203将所获得的租户的身份标识提交给数据源分配模块202。在步骤305中,根据所获得租户的身份标识从映射表中获取与该租户对应的数据库连接池。在接收到来自请求解析模块203的租户身份标识之后,数据源分配模块202基于所获得的租户身份标识从步骤303中所建立的映射表中查找与该租户对应的数据库连接池的信息,并将该数据库连接池信息提交给数据库访问模块204。在步骤306中,通过所获取的数据库连接池访问与租户对应的数据库。数据库访问模块204通过诸如java数据库连接(javadatabaseconnectivity,jdbc)或开放数据库互连(opendatabaseconnectivity,odbc)的数据库连接或者使用封装有jdbc或odbc数据库连接的持久层框架,将步骤304中接收到的数据访问请求以及步骤305中获得的数据库连接池信息传递给相应的数据库执行,并将结果返回给租户。根据本申请的用于隔离多租户数据的方法通过数据源分配模块建立租户与其要访问的数据库的数据库连接池之间的映射表,并且在接收到租户的数据库访问请求时从所述映射表获取对应的数据库连接池,进而通过所述数据库连接池访问其想要访问的数据库。因此,本申请的用于隔离多租户数据的方法能够更好地实现各租户数据的隔离。此外,相较于传统的数据隔离方法,本申请的用于隔离多租户数据的方法还能够容易地扩展,实现动态伸缩,以下以3个变型例来具体说明。变型例1在该变型例中,数据库管理人员希望针对应用服务器增加新的租户。作为示例,以下参照图4描述针对应用服务器1021增加新租户ua的方法。如图4所示,在步骤401中,通信模块201接收数据库管理人员输入的针对应用服务器1021增加新租户ua的指令,该指令可以包含该新租户ua的身份标识以及其要访问的数据库(以下称为目标数据库)的标识。在步骤402中,数据源分配模块202在接收到来自通信模块201的该指令之后,针对该指令中指定的目标数据库创建数据库连接池,并且在映射表中添加关于该新租户ua和新创建的数据库连接池的记录。在步骤403中,在接收到来自该新租户ua的数据库访问请求时, 请求解析模块203对该访问请求进行解析以获得该新租户的身份标识,并将该身份标识提交给数据源分配模块202,然后,数据源分配模块202从映射表中获得对应于该新租户的数据库连接池信息(在步骤402中所创建的数据库连接池的信息),并通过该数据库连接池访问目标数据库。变型例2在该变型例中,数据库管理人员希望针对应用服务器删除租户。作为示例,以下参照图5描述删除应用服务器1021的租户ua的方法。如图5所示,在步骤501中,通信模块201接收数据库管理人员输入的用于删除应用服务器1021的租户ua的指令,该指令可以包含要删除的租户ua的身份标识。在步骤502中,数据源分配模块202在接收到来自通信模块201的指令之后,关闭映射表中的对应于该指令中指定的要删除的租户ua的数据库连接池,并从映射表中删除与租户ua相关的记录。变型例3在该变型例中,数据库管理人员希望修改租户与数据库之间的对应关系。作为示例,以下参照图6描述修改应用服务器1021的租户ua与数据库服务器1031中的数据库da之间的对应关系的方法。如图6所示,在步骤601中,通信模块201接收到数据库管理人员输入的用于修改应用服务器1021的租户ua与数据库服务器1031中的数据库da之间的对应关系的指令。该指令规定将数据库服务器1031中的数据库db修改为租户ua的数据源,以下将数据库db称作目标数据库。在步骤602中,数据源分配模块202在接收到来自通信模块201的该指令之后,将映射表中与租户ua有关的记录中的数据库连接池修改为目标数据库db的数据库连接池。在步骤603中,在接收到租户ua的数据库访问请求时,通过目标数据库db的数据库连接池访问目标数据库db。下面参考图7,其示出了适于用来实现本申请实施例的用于隔离租户数据的系统的计算机系统700的结构示意图。如图7所示,计算机系统700包括中央处理单元(cpu)701,其可以根据存储在只读存储器(rom)702中的程序或者从存储部分708加载到随机访问存储器(ram)703中的程序而执行各种适当的动作和处理。在ram703中,还存储有系统700操作所需的各种程序和数据。cpu701、rom702以及ram703通过总线704彼此相连。输入/输出(i/o)接口705也连接至总线704。以下部件连接至i/o接口705:包括键盘、鼠标等的输入部分706;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分707;包括硬盘等的存储部分708;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至i/o接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储部分708。特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/或从可拆卸介质711被安装。在该计算机程序被中央处理单元(cpu)701执行时,执行本申请的方法中限定的上述功能。描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括通信模块、数据源分配模块、请求解析模块和数据库访问模块等,其中,这些模块的名称在某种情况下并不构成对该模块本身的限定。作为另一方面,本申请还提供了一种非易失性计算机存储介质,该非易失性计算机存储介质可以是上述实施例中所述装置中所包含的非易失性计算机存储介质;也可以是单独存在,未装配入终端中的非易失性计算机存储介质。上述非易失性计算机存储介质存储有一个或 者多个程序,当所述一个或者多个程序被一个设备执行时,使得所述设备:接收指示租户与数据库之间的对应关系的映射信息;针对所述映射信息中包括的每个数据库创建数据库连接池;基于所述映射信息建立映射表,所述映射表中的每条记录指示所述映射信息中包括的每个租户与所创建的数据库连接池之间的对应关系;接收租户提出的数据访问请求,并对所述数据访问请求进行解析以获得所述租户的身份标识;根据所述租户的身份标识从所述映射表中获取与所述租户对应的数据库连接池;以及通过所获取的数据库连接池访问与所述租户对应的数据库以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1