掌桥专利:专业的专利平台
掌桥专利
首页

一种多租户多数据库匹配方法、装置、设备及介质

文献发布时间:2024-04-18 19:52:40


一种多租户多数据库匹配方法、装置、设备及介质

技术领域

本申请涉及数据处理技术领域,具体而言,涉及一种多租户多数据库匹配方法、装置、设备及介质。

背景技术

目前SAAS MES单应用部署的系统中,因为一个应用启动时只能默认使用一个数据库,所以当多租户的场景下,为了解决每个租户间的数据隔离,需要在每张表中添加一个租户字段,每次查询数据时租户信息作为必要条件进行查询。

因此当租户变多,数据量激增时,一方面会导致系统响应速度非常慢,另一方面在后续变更系统逻辑和修改表结构也会更加困难,导致运营成本和难度也变高。

发明内容

有鉴于此,本申请的目的在于提供一种多租户多数据库匹配方法、装置、设备及介质,能够大幅减少每个租户间的耦合度,减少系统和数据库的运维难度。

第一方面,本申请提供的一种多租户多数据库匹配方法,应用于SAAS MES单应用系统,所述方法包括以下步骤:

响应客户端发送的服务请求,对接收到的所述服务请求进行解析,得到目标租户唯一标识ID和目标请求类型;

根据得到的所述目标租户唯一标识ID确定目标数据源,并基于确定的所述目标数据源连接对应的目标数据库;

根据所述目标请求类型针对所述目标数据源连接的目标数据库执行相应的服务逻辑。

在一种可能的实施方式中,响应客户端发送的注册请求,确定租户信息;其中,所述租户信息包括租户的应用系统的访问URL地址和数据库,所述URL地址包括二级域名,并且将所述二级域名作为租户唯一标识ID;

将所述租户唯一标识ID和所述数据库的数据源以键值对的形式进行缓存。

在一种可能的实施方式中,所述对接收到的所述服务请求进行解析,得到目标租户唯一标识ID和目标请求类型,包括以下步骤:

对接收到的所述服务请求的请求行进行解析,得到目标请求类型;所述目标请求类型包括读数据或者写数据;

对接收到的所述服务请求的请求头进行解析,得到所述客户端的目标访问URL地址,并基于所述目标访问URL地址的二级域名得到目标租户唯一标识ID。

在一种可能的实施方式中,所述根据得到的所述目标租户唯一标识ID确定目标数据源,包括以下步骤:

基于以键值对的形式预存储至缓存中的租户唯一标识ID和数据源,校验所述目标租户唯一标识ID是否存在对应的目标数据源;

若存在所述目标数据源,获取所述目标租户唯一标识ID对应的目标数据源;

若不存在所述目标数据源,校验所述缓存中是否存在所述目标租户唯一标识ID,若不存在所述目标租户唯一标识ID,生成提示新租户注册的信息。

在一种可能的实施方式中,所述校验所述缓存中是否存在所述目标租户唯一标识ID,还包括以下步骤:

若存在所述目标租户唯一标识ID,根据所述目标租户唯一标识ID创建连接目标数据库的目标数据源,且将所述目标数据源与所述目标租户唯一标识ID形成键值对存储至缓存中。

在一种可能的实施方式中,其中,创建的新租户共享一个数据库系统,所述数据库系统被划分为多个数据库,每一个租户与一个所述数据库对应,用于存储对应的租户数据。

在一种可能的实施方式中,所述根据所述目标请求类型针对所述目标数据源连接的目标数据库执行相应的服务逻辑之后,还包括以下步骤:

根据所述目标请求类型针对所述目标数据源连接的目标数据库执行相应的服务逻辑,并生成执行结果;

将生成的所述执行结果返回至所述客户端。

第二方面,本申请提供的一种多租户多数据库匹配装置,应用于SAAS MES单应用系统,所述装置包括:

响应模块,用于响应客户端发送的服务请求,对接收到的所述服务请求进行解析,得到目标租户唯一标识ID和目标请求类型;

确定模块,用于根据得到的所述目标租户唯一标识ID确定目标数据源,并基于确定的所述目标数据源连接对应的目标数据库;

执行模块,用于根据所述目标请求类型针对所述目标数据源连接的目标数据库执行相应的服务逻辑。

第三方面,本申请提供的一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如第一方面所述的多租户多数据库匹配方法的步骤。

第四方面,本申请提供的一种计算机可读存储介质,该计算机可读存储介质上存储计算机程序,该计算机程序被处理器运行时执行如第一方面所述的多租户多数据库匹配方法的步骤。

本实施例提供的一种多租户多数据库匹配方法、装置、设备及介质,响应客户端发送的服务请求,对接收到的所述服务请求进行解析,得到目标租户唯一标识ID和目标请求类型,其中,将应用系统的访问URL地址中的二级域名预设为租户唯一标识ID,并将创建的数据源与租户唯一标识ID以键值对的形式进行缓存,从而能够根据得到的所述目标租户唯一标识ID确定目标数据源,并基于确定的所述目标数据源连接对应的目标数据库;根据所述目标请求类型针对所述目标数据源连接的目标数据库执行相应的服务逻辑。从而分离了系统实例和业务实例,并且在业务实例上根据每个租户分离了实例,所以满足每个租户之间的数据隔离,降低了系统修改和运维难度。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本申请一实施例中所述多租户多数据库匹配方法的流程示意图;

图2为本申请一实施例中所述多租户共享一个数据库系统的结构示意图;

图3为本申请一实施例中注册租户的流程图;

图4为本申请一实施例中所述对接收到的服务请求进行解析的流程图;

图5为本申请一实施例中所述多租户多数据库匹配装置的结构框图;

图6为本申请一实施例中所述的电子设备的结构框图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,应当理解,本申请中附图仅起到说明和描述的目的,并不用于限定本申请的保护范围。另外,应当理解,示意性的附图并未按实物比例绘制。本申请中使用的流程图示出了根据本申请的一些实施例实现的操作。应该理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。此外,本领域技术人员在本申请内容的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。

另外,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和标出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。

需要说明的是,本申请实施例中将会用到术语“包括”,用于指出其后所声明的特征的存在,但并不排除增加其它的特征。

鉴于背景技术所提出的技术问题,本申请提供一种多租户多数据库匹配方法、装置、设备及介质,能够大幅减少每个租户间的耦合度,减少系统和数据库的运维难度。

参见说明书附图1,在一实施例中,本申请提供的一种多租户多数据库匹配方法,应用于SAAS MES单应用系统,所述方法包括以下步骤:

S1、响应客户端发送的服务请求,对接收到的所述服务请求进行解析,得到目标租户唯一标识ID和目标请求类型;

在本申请实施例中,为了清楚地了解本发明实施例的技术方案,可以先对应用场景进行示例性说明。在本申请中,MES(Manufacturing Execution System,制造企业生产过程执行系统)是一套面向制造企业车间执行层的生产信息化管理系统,可以为企业提供一个扎实、可靠、全面、可行的制造协同管理平台,SAAS(Software As A Service,软件即服务)是基于云计算的一种服务模式,将应用软件统一部署在自己的服务器上,客户可以根据工作实际需求,通过互联网向厂商定购所需的应用软件服务。可见,传统MES是一个相对封闭的制造执行管理系统,它只是适用于工厂内部使用,导致整个工厂都是由一个个信息孤岛组成,整体运营效率低。而由MES和SAAS结合的SAAS MES单应用系统能够通过云端进行数据、储存、运行,提供云端实时监控,用户通过PC端、手机端随时随地监控工厂,线下线上互联互通,真正实现企业生产数字化。

另外,需要说明的是,在执行步骤S1之前,还需要为新租户分配对应的数据库,用于存储对应的租户数据。在本申请中,注册的所有租户同享一个应用系统,应用系统后端至只连接一个数据系统,即所有租户共享这个数据库系统,每个租户在数据库系统中拥有一个独立的表空间,表空间中的数据表结构都是一样的,在mysql中其实就是分多个数据库,其结构可以参见说明书附图2。现有技术中,为了能够查询出每个租户对应的租户数据,需要在每张表中添加一个租户字段,每次查询数据时租户信息作为必要条件进行查询。因此会存在背景技术所述的在租户变多,数据量激增时,导致系统响应速度非常慢、出现故障情况时数据恢复比较复杂的问题。所以,在本申请中,参见说明书附图3,通过如下方式注册新租户:

P1、响应客户端发送的注册请求,确定租户信息;其中,所述租户信息包括租户的应用系统的访问URL地址和数据库,所述URL地址包括二级域名,并且将所述二级域名作为租户唯一标识ID;

P2、将所述租户唯一标识ID和所述数据库的数据源以键值对的形式进行缓存。

在步骤P1-步骤P2中,所述客户端发送的注册请求可以是基于用户点击客户端界面中“注册新租户”按钮生成的,在接收到客户端发送的注册请求之后,生成新租户添加界面,以进行新租户信息设置,其中,新租户信息包括新租户访问应用系统的URL地址、登录账号和密码、以及要访问的数据库等信息。尤为关键的,在本申请中,访问应用系统的URL地址包括二级域名,并且将所述二级域名作为租户唯一标识ID;所述登录账号和密码可以作为用户身份信息;所述要访问的数据库信息为该租户增设的一个新的数据库实例,同时还包括连接该数据库的数据源;其中,所述二级域名在域名系统中,属于更高一层域的域,如abc.example.com和mail.example.com中,这两个域名是example.com的二级域名。在一实施例中,若设置的URL地址为abc.example.com时,则取abc作为租户唯一标识ID。

进一步的,在为新租户配置好租户唯一标识ID和要访问的数据库信息之后,还将配置的所述租户唯一标识ID和所述数据库的数据源以键值对的形式进行缓存,在本申请中,所述键值对是指key-value的形式,比如描述中提到的数据源和子域名已键值形式表示是,假二级子域名是abc.example.com,数据源地址是127.0.0.1:8080,那么用键值对(key-value)形式表示的话,key为abc.example.com,value为127.0.0.1:8080,展现形式为{key:abc.example.com,value:127.0.0.1:8080}。如果有多个关系存在,会出现多个key,但是key必须是唯一的,不能重复,value允许重复。

在步骤S1中,对接收到的所述服务请求进行解析时,可以参见说明书附图4,包括以下步骤:

S101、对接收到的所述服务请求的请求行进行解析,得到目标请求类型;所述目标请求类型包括读数据或者写数据;

S102、对接收到的所述服务请求的请求头进行解析,得到所述客户端的目标访问URL地址,并基于所述目标访问URL地址的二级域名得到目标租户唯一标识ID。

在步骤S101和步骤S102中,所述客户端发送的服务请求可以是用户通过客户端界面下发的登录信息。在实际使用过程中,不同的租户使用不同的登录地址进行登录,即为不同的租户分别设置的访问应用系统的URL地址。在一实施例中,当某一用户需要登录时,就采用相对应的URL地址进行登录,并通过HTTP协议向WEB服务器发送服务器请求,例如,GEThttps://abc.example.com/content-search.xml HTTP/1.1,在接收到客户端发送的服务请求之后,对该接收到的所述服务请求进行解析,具体的,对接收到的所述服务请求的请求行进行解析,得到目标请求类型,在该实施例中,目标请求类型为“GET”,请求指定的页面信息,即不会导致数据库中的数据修改;在其他实施例中,目标请求类型还可以为“POST”、“DELETE”等,以对数据库中的数据进行修改;在对接收到的所述服务请求的请求行进行解析,得到目标请求类型之后,还进一步对接收到的所述服务请求的请求头进行解析,得到所述客户端的目标访问URL地址,在该实施例中,目标访问URL地址为abc.example.com,其中“abc”是其二级域名,根据设定的将二级域名作为租户唯一标识ID的规则,确定“abc”即为目标租户唯一标识ID。

S2、根据得到的所述目标租户唯一标识ID确定目标数据源,并基于确定的所述目标数据源连接对应的目标数据库;

具体的,在步骤S2中,根据得到的目标租户唯一标识ID确定目标数据源时,先基于以键值对的形式预存储至缓存中的租户唯一标识ID和数据源,校验所述目标租户唯一标识ID是否存在对应的目标数据源,若缓存中存在与目标租户唯一标识ID匹配的目标数据源,则直接从缓冲中获取该目标数据源。

若校验的结果为缓存中存在与目标租户唯一标识ID匹配的目标数据源,则进一步校验是否存在目标租户唯一标识ID对应的租户信息。若校验的结果为存在目标租户唯一标识ID对应的租户信息,则说明在起初新租户注册时,只配置了租户唯一标识ID,而未配置要访问的数据库信息;或者虽然配置了租户唯一标识ID以及要访问的数据库信息,但是未将租户唯一标识ID和数据库的数据源以键值对的形式进行缓存;所以应当重新对该租户配置要访问的数据库信息,并且将该租户的唯一标识ID与其配置的数据库的数据源以键值对的形式进行缓存。若校验的结果为不存在目标租户唯一标识ID对应的租户信息,则需要按照上述步骤P1和步骤P2新注册租户,其注册过程可以参见上述实施例,在此不做赘述。进而,能够从缓存中匹配出与目标租户唯一标识ID相对应的目标数据源,并从缓冲取出该目标数据源。

例如,目标租户唯一标识ID为abc.example.com,从缓存中获取的目标数据源地址为127.0.0.1:8080,则在获取目标数据源地址之后,根据该目标数据源地址连接对应的目标数据库。

S3、根据所述目标请求类型针对所述目标数据源连接的目标数据库执行相应的服务逻辑。

即,在步骤S3中,根据上述解析出的目标请求类型对目标数据库中的数据执行服务逻辑。并且,生成根据所述目标请求类型针对所述目标数据库执行相应服务逻辑的执行结果,同时将生成的执行结果返回至客户端,在该实施例中,是将从目标数据库中查询出的租户数据返回至客户端的界面进行展示。

本申请提供的一种多租户多数据库匹配方法,对租户访问应用系统的URL地址设置二级域名,并且将该二级域名设定为租户的唯一标识ID,并且将连接数据库的数据源与租户的唯一标识ID以键值对的形式进行缓存,即将二级域名与数据源进行绑定,进而能够通过访问应用系统的URL地址就可直接定位对应的数据库,以获取租户对应的数据,相比现有以表字段过滤的方式来查询租户数据的技术,能够大大降低后续变更系统逻辑和修改表结构的成本,同时也能够避免因租户变多、数据量激增导致的响应速度变慢的问题。

基于同一发明构思,本申请实施例中还提供了一种多租户多数据库匹配装置,由于本申请实施例中的装置解决问题的原理与本申请实施例上述一种多租户多数据库匹配方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。

如说明书附图5所示,本申请还提供了一种多租户多数据库匹配装置,应用于SAASMES单应用系统,所述装置包括:

响应模块501,用于响应客户端发送的服务请求,对接收到的所述服务请求进行解析,得到目标租户唯一标识ID和目标请求类型;

确定模块502,用于根据得到的所述目标租户唯一标识ID确定目标数据源,并基于确定的所述目标数据源连接对应的目标数据库;

执行模块503,用于根据所述目标请求类型针对所述目标数据源连接的目标数据库执行相应的服务逻辑。

在一些实施方式中,所述装置还包括注册模块,所述注册模块用于响应客户端发送的注册请求,确定租户信息;其中,所述租户信息包括租户的应用系统的访问URL地址和数据库,所述URL地址包括二级域名,并且将所述二级域名作为租户唯一标识ID;以及用于将所述租户唯一标识ID和所述数据库的数据源以键值对的形式进行缓存;

其中,创建的新租户共享一个数据库系统,所述数据库系统被划分为多个数据库,每一个租户与一个所述数据库对应,用于存储对应的租户数据。

在一些实施方式中,所述响应模块501对接收到的所述服务请求进行解析,得到目标租户唯一标识ID和目标请求类型,包括:

对接收到的所述服务请求的请求行进行解析,得到目标请求类型;所述目标请求类型包括读数据或者写数据;

对接收到的所述服务请求的请求头进行解析,得到所述客户端的目标访问URL地址,并基于所述目标访问URL地址的二级域名得到目标租户唯一标识ID。

在一些实施方式中,所述确定模块502根据得到的所述目标租户唯一标识ID确定目标数据源,包括:

基于以键值对的形式预存储至缓存中的租户唯一标识ID和数据源,校验所述目标租户唯一标识ID是否存在对应的目标数据源;

若存在所述目标数据源,获取所述目标租户唯一标识ID对应的目标数据源;

若不存在所述目标数据源,校验所述缓存中是否存在所述目标租户唯一标识ID,若不存在所述目标租户唯一标识ID,生成提示新租户注册的信息;若存在所述目标租户唯一标识ID,根据所述目标租户唯一标识ID创建连接目标数据库的目标数据源,且将所述目标数据源与所述目标租户唯一标识ID形成键值对存储至缓存中。

在一些实施方式中,所述执行模块503根据所述目标请求类型针对所述目标数据源连接的目标数据库执行相应的服务逻辑之后,还包括:

根据所述目标请求类型针对所述目标数据源连接的目标数据库执行相应的服务逻辑,并生成执行结果;

将生成的所述执行结果返回至所述客户端。

本申请所提供的一种多租户多数据库匹配装置,通过响应模块响应客户端发送的服务请求,对接收到的所述服务请求进行解析,得到目标租户唯一标识ID和目标请求类型,其中,将应用系统的访问URL地址中的二级域名预设为租户唯一标识ID,并将创建的数据源与租户唯一标识ID以键值对的形式进行缓存;通过确定模块根据得到的所述目标租户唯一标识ID确定目标数据源,并基于确定的所述目标数据源连接对应的目标数据库;通过执行模块根据所述目标请求类型针对所述目标数据源连接的目标数据库执行相应的服务逻辑。从而分离了系统实例和业务实例,并且在业务实例上根据每个租户分离了实例,所以满足每个租户之间的数据隔离,降低了系统修改和运维难度。

基于本发明的同一构思,说明书附图6所示,本申请实施例提供的一种电子设备600的结构,该电子设备600包括:至少一个处理器601,至少一个网络接口604或者其他用户接口603,存储器605,至少一个通信总线602。通信总线602用于实现这些组件之间的连接通信。该电子设备600可选的包含用户接口603,包括显示器(例如,触摸屏、LCD、CRT、全息成像(Holographic)或者投影(Projector)等),键盘或者点击设备(例如,鼠标,轨迹球(trackball),触感板或者触摸屏等)。

存储器605可以包括只读存储器和随机存取存储器,并向处理器601提供指令和数据。存储器605的一部分还可以包括非易失性随机存取存储器(NVRAM)。

在一些实施方式中,存储器605存储了如下的元素,可保护模块或者数据结构,或者他们的子集,或者他们的扩展集:

操作系统6051,包含各种系统程序,用于实现各种基础业务以及处理基于硬件的任务;

应用程序模块6052,包含各种应用程序,例如桌面(launcher)、媒体播放器(MediaPlayer)、浏览器(Browser)等,用于实现各种应用业务。

在本申请实施例中,通过调用存储器605存储的程序或指令,处理器601用于执行如一种多租户多数据库匹配方法中的步骤,能够大幅减少每个租户间的耦合度,减少系统和数据库的运维难度。

本申请还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如多租户多数据库匹配方法中的步骤。

具体地,该存储介质能够为通用的存储介质,如移动磁盘、硬盘等,该存储介质上的计算机程序被运行时,能够执行上述多租户多数据库匹配方法。

在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围。都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

相关技术
  • 一种地图地址匹配方法、装置、终端设备及存储介质
  • 一种电力负荷匹配方法、装置、设备及可读存储介质
  • 一种画面匹配方法、装置、设备和存储介质
  • 一种图像匹配方法、装置、电子设备及存储介质
  • 一种连接数据库的方法、装置、系统、设备和存储介质
  • 多租户数据库管理方法、装置、电子设备及存储介质
  • 一种类与数据库表的匹配方法、装置、设备及介质
技术分类

06120116332751