1.本发明涉及多租户数据库领域,具体涉及一种多租户数据自动化库部署方法。
背景技术:
::2.多租户是指软件架构支持一个实例服务多个用户,每一个用户被称之为租户,软件给予租户可以对系统进行部分定制的能力,如用户界面颜色或业务规则,但是用户不能定制修改软件的代码。多租户技术或称多重租赁技术,是一种软件架构技术,它是在探讨与实现如何于多用户的环境下共用相同的系统或程序组件,并且仍可确保各用户间数据的隔离性。3.考虑到共享开发和维护成本,多租户是一种经济的解决方案。从维护角度来说,多租户系统维护更加简单,相比于每个用户一个实例的单租户系统,多租户系统提供者在系统变更时仅需更新一次,而单租户则需要针对每个用户进行更新,比如操作系统可以视为单租户系统,电子邮件服务系统则是多租户系统。在云计算领域,由于新的服务模型利用了虚拟化和远程访问,多租户的含义已被扩展。例如软件即服务(saas)提供者,利用运行在一个数据库实例上的应用系统,向多个用户提供web访问服务。在这个场景下,租户之间的数据是隔离的,并且保证每个用户的数据对其他租户不可见。4.多租户技术可以实现多个租户之间共享系统实例,同时又可以实现租户的系统实例的个性化定制。通过使用多租户技术可以保证系统共性的部分被共享,个性的部分被单独隔离。通过在多个租户之间的资源复用,运营管理维护资源,有效节省开发应用的成本。而且,在租户之间共享应用程序的单个实例,可以实现当应用程序升级时,所有租户可以同时升级。同时,因为多个租户共享一份系统的核心代码,因此当系统升级时,只需要升级相同的核心代码即可。5.多租户简单来说是指一个单独的实例可以为多个组织服务。多租户技术为共用的数据中心内如何以单一系统架构与服务提供多数客户端相同甚至可定制化的服务,并且仍然可以保障客户的数据隔离。一个支持多租户技术的系统需要在设计上对它的数据和配置进行虚拟分区,从而使系统的每个租户或称组织都能够使用一个单独的系统实例,并且每个租户都可以根据自己的需求对租用的系统实例进行个性化配置。6.多租户技术可以实现多个租户之间共享系统实例,同时又可以实现租户的系统实例的个性化定制。通过使用多租户技术可以保证系统共性的部分被共享,个性的部分被单独隔离。通过在多个租户之间的资源复用,运营管理维护资源,有效节省开发应用的成本。而且,在租户之间共享应用程序的单个实例,可以实现当应用程序升级时,所有租户可以同时升级。同时,因为多个租户共享一份系统的核心代码,因此当系统升级时,只需要升级相同的核心代码即可。7.目前多租户技术的数据存储上存在三种主要的方案:1.独立数据库一个租户一个数据库,这种方案的用户数据隔离级别最高,安全性最好,但成本也高。这种方案为不同的租户提供独立的数据库,有助于简化数据模型的扩展设计,满足不同租户的独特需求;如果出现故障,恢复数据比较简单。这种方案的缺点是,增大了数据库的安装数量,随之带来维护成本和购置成本的增加,它与传统的一个客户、一套数据、一套部署类似,差别只在于软件统一部署在运营商那里。如果面对的是银行、医院等需要非常高数据隔离级别的租户,可以选择这种模式,提高租用的定价。如果定价低,对于运营商来说是无法承受的;2.共享数据库但是隔离数据架构多个或所有租户共享数据库,但一个租户一个架构。这种方案为安全性要求较高的租户提供了一定程度的逻辑数据隔离,并不是完全隔离;每个数据库可以支持更多的租户数量,但是它的缺点是数据维护困难,如果出现故障,数据恢复比较困难,因为恢复数据库将牵扯到其他租户的数据;还有跨租户统计数据时也比较困难;3.共享数据库和数据架构即租户共享同一个数据库和同一个架构,但在表中通过租户id来区分隔离租户。这是共享程度最高、隔离级别最低的模式,这种方案维护和购置成本最低,允许每个数据库支持的租户数量最多,它可以用最少的服务器为最多的租户提供服务,但是它的隔离级别比较低所以存在安全性相应较低的问题,并且数据备份与恢复也比较麻烦。8.实例是位于用户和操作系统之间的一层数据管理软件,是访问数据库的通道。用户对数据库中的数据做任何的操作,包括数据定义、数据查询、数据维护、数据库运行控制等等都是在数据库实例下进行的,应用程序只有通过数据库实例才能和数据库打交道,例如用的sqlserver数据库,一个实例下可以有多个数据库。现有的多租户数据库架构中往往存在多个实例,在数据库运维过程中,当需要进行修改表结构、修改存储过程或函数、预置表数据等操作时,需要依次在多个实例中操作。数据库实例越多,运维需要的人力、时间成本就越大,且多个实例操作时,数据审计工作难以开展。现在目前主流的云提供商并无相应的多租户统一运维工具。难以做到多实例的数据的维护、表结构的变更、运维审计等工作。技术实现要素:9.为了解决以上的问题,本发明提供一种可以自动化部署多租户数据库的方法,使数据库支持同时连接多个实例。10.本发明提供一种自动化部署多租户数据库的方法,其步骤包括:配置多租户数据库组,一个用户对应一个数据库组,数据库组内按照业务拆分为多个数据库;在数据库组内的每一个表都增加用户id字段,用于识别用户数据;将用用户表与用户业务对应表相匹配,并将配置信息记录在缓存中,用于通过用户信息查找对应业务数据,当接收到用户请求时,通过系统库的用户信息匹配到对应业务表,定向到对应业务数据库;配置跨库请求数据传递方式,用于用户跨库查询等操作;配置服务端与客户端。11.进一步,本自动化部署多租户数据库的方法还包括在租户数据库组之外设置集中数据库存放公用业务信息,对于跨库的数据传递,在微服务端调用feign实现,在后台使用数据同步工具rabbitmq实现。12.进一步,本发明所述配置多租户库组采用自研工具「新建租户库.exe」来复制对象及初始数据,该工具有两个功能:复制表、视图、存储过程及其他对象;根据配置表,复制初始数据到租户库n中(table或sql)。13.进一步,所述自研工具「新建租户库.exe」配置租户库的步骤包括:选择源库或母库的位置;选择目标库(即租户库n)所在的位置;执行初始数据复制。14.进一步,对于服务端配置步骤包括:增加配置表,在配置表中记录对应租户库信息;服务端公开api,每个api都支持单一数据库或多数据库连接;服务端为所有连接建立缓存;执行多数据库连接时,采用多线程技术;服务端记录数据请求的脚本。15.进一步,客户端配置步骤包括:采用数据包加密方式;采用连接登录发放有效期密钥;支持发送查询语句、修改表结构语句等常规操作;支持sql语句中对表、字段的智能提示;支持面对多个产品。16.本发明的有益效果是:通过配置智能的服务端和客户端程序,提升了客户端的美观性和易操作性,方便普通技术人员进行操作;通过分散储存方式隔离用户数据,提高了数据安全性和可维护性,支持同时连接多个实例,减少了维护数据库所需花费的人力与时间成本,提高了多实例数据库的运行效率,同时也减少了数据的重复占用。附图说明17.图1为数据库组的结构示意图;图2为用户业务数据识别与定位示意图;图3为用户业务数据库与公用业务数据库结构示意图;图4为跨库数据交互示意图;图5为自动化部署增加租户库的示意图。具体实施方式18.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。19.本多租户数据自动化库运维系统通过按业务垂直分库、按用户水平分表的多数据库设计,将数据库由单一库优化为多租户库。多租户库的数据存储方案如下:如图1所示,建立数据库组以满足多用户的存储需求。图1示例共有3个数据库组,分别储存三个用户的数据。在每个数据库组内,按业务不同拆成多个数据库,分别保存用户的各个业务数据,如图1所示的售前数据库、售后数据库、客户关怀数据库、二手车数据库和其他数据库。数据库组内每个表都增加了所对应用户的id字段,以保证每个数据库的每个表能够方便的读取到对应用户的各项数据。本自动化库部署运维系统支持扩展多个实例,每个实例中都可以存放多个数据库组。通过这种分散存储的设计,达到用户数据隔离的目的,提高数据安全性,也降低了单一数据库的负载,使数据库维护变得更加灵活。20.图2显示租户业务数据识别与定位方案,通过系统库的用户业务对应关系,匹配连接的字符串。为了避免频繁读取该关系,将配置信息记录到缓存中。当程序或是api接口读取用户相应业务时,通过读取该缓存,可快速定向到指定数据库。图2所示例子,用户a请求读取售前数据,通过读取事先记录在缓存中的用户表用户a的id字符串匹配用户业务对应表,快速定向到用户a数据库组里的售前数据库进行数据读取。用户c请求读取售后数据,通过读取事先记录在缓存中的用户表用户c的id字符串匹配用户业务对应表,快速定向到用户c数据库组里的售后数据库进行数据读取。21.如图3所示,对于公用业务的集中数据库设计,在多租户的数据库组之外,增加设置集中数据库,该集中数据库独立于多租户用户数据库组,其下包括各类业务公用表,例如图3所示集中数据库包括售前业务公用表、售后业务公用表等,以满足用户间交易以及数据统一分析的需要。22.对于跨库的数据请求本发明所述系统通过两种方式进行跨库的数据交互,如图4所示,本发明所述自动化库部署运维系统在微服务间通过feign以调用对应的业务数据;后台通过数据同步工具rabbitmq,进行数据的发送和接收。23.本发明所述自动化部署多租户数据库的流程包括:新增租户数据库组,一个用户对应一个数据库组,数据库组内按照业务拆分为多个数据库,分散保存用户的各个业务数据,起到数据隔离的作用;在数据库组内的每一个表都增加用户id字段,以便读取各用户的数据;将用用户表与用户业务对应表相匹配,并将配置信息记录在缓存中;接收到用户请求时,通过系统库的用户id字符串识别匹配对应业务表的信息,从而定向读取对应业务数据库,为了避免频繁读取该关系,将配置信息记录到缓存中。当程序或是api接口读取用户相应业务时,通过读取该缓存,可快速定向到指定数据库;在租户数据库组之外设置集中数据库存放公用业务信息,以满足用户间交易以及数据统一分析的需要;优选地,本多租户数据自动化库运维系统所述的新增租户库的方法,采用以母库复制的形式增加租户库。如图5所示,从一个数据库母库分别复制新增租户库2、租户库3、租户库4、租户库5和租户库6,其中租户库2、租户库3与数据库母库属于同一个实例,租户库4、租户库5和租户库6属于另一个实例。24.优选地,在复制新增租户库时,本实施例采用了自研工具「新建租户库.exe」,所述自研工具工具有两部分功能:1.复制表、视图、存储过程及其他对象2.根据配置表,复制初始数据到租户库n中(table或sql)《service》《itemsourcetype="table"source="tc_ordertype"target="tc_ordertype"description="订单类型"/》《itemsourcetype="sql"source="selectcreateby,createon,updateby,updateon,ndid,vcompany,vdxwh,vdxwhnamefromtc_spa_ware_house_dx"target="tc_spa_ware_house_dx"description="定向仓库"/》《/service》该工具使用了向导式的操作方式,具体步骤包括:选择源库(或称母库)的位置;选择目标库(即租户库n)所在的位置;执行初始数据复制。25.通过本自研工具,可以达到自动化部署新增租户库的目的。26.优选地,服务端的配置步骤包括:增加配置表,在配置表中记录各租户库的连接字符串,并记录各用户对应租户库的信息;服务端公开api,用于执行客户端发送的sql语句。每个api都支持单一数据库连接、或多数据库连接;服务端为所有连接建立缓存,避免建立多个连接,减少连接池占用;服务端执行多数据库连接时,采用多线程技术,同时在多个实例执行sql语句,节约整体执行时间;数据库驱动支持sqlserver、mysql、oracle目前三个主流数据库;服务端记录每次数据请求的脚本,以适应数据库审计的需要。27.优选地,客户端的配置步骤包括:采用数据包加密方式,避免数据截取;采用连接登录发放有效期密钥,解决数据安全问题;支持发送查询语句、修改表结构语句等所有常规操作;支持sql语句中对表、对字段的智能提示;支持面对多个产品。28.本实施例使用iis来提供webservice服务,使用.netframework4.5平台,采用wpf前端开发客户端,并在客户端提供数据库字段的智能提示功能,提升客户端的美观性和易操作性。29.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域:
:的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。当前第1页12当前第1页12
技术特征:1.一种多租户数据自动化库部署方法,其特征在于,包括以下步骤:配置多租户数据库组,按照用户与业务进行划分;在数据库组内的表里增加用户id字段,用于识别用户数据;配置系统库用户信息与业务表的映射关系,用于通过用户信息查找对应业务数据;配置跨库请求数据传递方式,用于用户跨库查询等操作;配置服务端与客户端。2.根据权利要求1所述的一种多租户数据自动化库部署方法,其特征在于,一个用户对应一个数据库组,按业务拆分数据库。3.根据权利要求1所述的一种多租户数据自动化库部署方法,其特征在于,用户信息与业务表的对应配置信息记录在缓存中。4.根据权利要求1所述的一种多租户数据自动化库部署方法,其特征在于,还要在数据库组之外设置集中数据库存放公用业务信息。5.根据权利要求1所述的一种多租户数据自动化库部署方法,其特征在于,微服务端的跨库的请求通过feign调用实现。6.根据权利要求1所述的一种多租户数据自动化库部署方法,其特征在于,后台端的跨库请求通过数据同步工具rabbitmq实现。7.根据权利要求1所述的一种多租户数据自动化库部署方法,其特征在于,还包括自研的配置租户库组采用的配置工具,该配置工具配置租户库包括以下步骤:选择源库或母库的位置;选择目标库(即租户库n)所在的位置;执行初始数据复制。8.根据权利要求1所述的一种多租户数据自动化库部署方法,其特征在于,服务端配置步骤包括:增加配置表,在配置表中记录对应租户库信息;服务端公开api;服务端为所有连接建立缓存;执行多数据库连接时,采用多线程技术;服务端记录数据请求的脚本。9.根据权利要求1所述的一种多租户数据自动化库部署方法,其特征在于,客户端配置步骤包括:采用数据包加密方式 ;采用连接登录发放有效期密钥;支持发送查询语句、修改表结构语句等常规操作;支持sql语句中对表、字段的智能提示;支持面对多个产品。
技术总结本发明公开了一种多租户数据自动化库部署方法,其中多租户数据库组包括用户数据库组与公用集中数据库。该方法包括:配置数据库组,组内表增加用户ID字段,配置用户与业务映射关系,配置跨库数据传递方式,配置智能客户端和智能服务端。所述多租户数据自动化库运维系统通过分散储存方式隔离用户数据,通过配置用户与业务映射关系实现快速定向数据库,减少了维护数据库所需花费的人力与时间成本,提高了多实例数据库的运行效率,减少数据的重复占用。减少数据的重复占用。减少数据的重复占用。
技术研发人员:吴成贵
受保护的技术使用者:启明信息技术股份有限公司
技术研发日:2022.06.30
技术公布日:2022/11/1