本发明专利技术涉及一种使用实体Nuget包实现多租户跨数据库类型按需自动初始化和升级的方法,包括业务微服务模块、运营管理系统模块和租户数据库模块,包含用于数据库初始化和升级的微服务模块和共享实体Nuget包模块,将数据库实体程序集独立成Nuget包放入共享实体Nuget包模块中,数据库初始化和升级的微服务模块供运营管理系统模块调用,用于数据库初始化和升级微服务模块和业务微服务模块均引用共享实体Nuget包模块中相同版本的实体Nuget包,在实现一致性、可靠性和完备性的同时,使用最简化的接口提供给运营管理系统模块调用,满足多租户数据库模块初始化和升级的实际需求。数据库模块初始化和升级的实际需求。数据库模块初始化和升级的实际需求。
【技术实现步骤摘要】
使用实体Nuget包实现多租户跨数据库类型按需自动初始化和升级的方法
[0001]本专利技术所涉及
包括数据库、ORM(对象关系映射工具)、Nuget(.NET平台的包管理工具)、Entity Framework(.NET平台的ORM工具)、微服务等,具体是一种使用实体Nuget包实现多租户跨数据库类型按需自动初始化和升级的方法
技术介绍
[0002]传统方案中,对于数据库初始化、升级以及多租户方案,常常需要编写大量的脚本来实现。如果管理工作较大,就需要使用脚本管理工具来进行管理,而多租户的数据库初始化和升级,则需要通过配置文件来进行脚本映射管理。然而,这种方案存在以下几个主要缺点:
[0003]1.编写数据库初始化和升级脚本的工作量巨大。特别是需要适应任意类型的数据库时,需要编写不同类型的数据库脚本。此外,为了保证幂等性,需要编写的脚本数量更加巨大,从而增加了编写脚本的工作量。
[0004]2.很难保证脚本与实际程序版本的一致性。即使引入了脚本管理工具,多租户采用配置文件进行脚本映射管理,也很难保证人工上不会出问题。
[0005]3.使用脚本管理工具和配置文件进行脚本映射管理,无法满足多租户的数据库初始化和升级需求。无法在需求、设计和用户体验上做到完全可定制化。
[0006]4.使用脚本管理工具和配置文件进行脚本映射管理,很难做到与业务紧密结合。比如,在人员和权限的管理上,无法做到统一;记录的日志内容也无法与业务系统一样全面,管理上太过于技术化。
[0007]因此,需要更加有效和可定制的方式来实现数据库初始化、升级以及多租户方案,以满足不断变化的需求和提高业务系统的可用性和可维护性。
技术实现思路
[0008]为了解决上述问题,本专利技术提供了一种通过将数据库实体程序集独立成Nuget包进行管理,并使用实体Nuget包实现多租户跨数据库类型按需自动初始化和升级的方法。
[0009]为了达到上述目的,本专利技术设计的一种使用实体Nuget包实现多租户跨数据库类型按需自动初始化和升级的方法,包括业务微服务模块、运营管理系统模块和租户数据库模块,包含用于数据库初始化和升级的微服务模块和共享实体Nuget包模块,将数据库实体程序集独立成Nuget包放入共享实体Nuget包模块中,数据库初始化和升级的微服务模块供运营管理系统模块调用,用于数据库初始化和升级微服务模块和业务微服务模块均引用共享实体Nuget包模块中相同版本的实体Nuget包。
[0010]其中所述的用于数据库初始化和升级的微服务模块包括实体Nuget包版本号查询接口、初始化和升级预览接口以及初始化和升级执行接口。
[0011]当需要实现初始化或升级预览功能时,运营管理系统模块传入每个租户的实际参
数,初始化和升级预览接口按照以下步骤完成要实现的功能:
[0012]S11)按接口指定的多个Nuget包名称组合实体Nuget包生成实体模型;
[0013]S12)和历史记录表中的最新实体模型比较不同生成差异操作内容;
[0014]S13)根据差异操作内容通过ORM(对象关系映射工具)生成对应数据库类型的升级脚本;
[0015]S14)返回差异操作内容的SQL只读升级脚本,供运营管理系统模块预览。
[0016]当需要直接实现初始化或升级功能时,运营管理系统模块传入每个租户的实际参数,初始化和升级执行接口按照以下步骤完成要实现的功能:
[0017]S21)按接口指定的多个Nuget包名称组合实体Nuget包生成实体模型;
[0018]S22)和历史记录表中的最新实体模型比较不同生成差异操作内容;
[0019]S23)根据升级策略过滤差异操作内容(比如只增不删策略);
[0020]S24)根据过滤后的差异操作内容通过ORM生成对应数据库类型的升级脚本;
[0021]S25)根据指定租户的数据库连接字符串执行差异升级脚本;
[0022]S26)如果执行升级脚本出错则回滚所有已执行的SQL脚本并返回失败原因和给出修正建议;
[0023]S27)如果执行成功则将实体模型和所有元数据信息插入历史记录表用于下次对比;
[0024]S28)通过接口返回升级结果和所有升级相关信息给运营管理系统模块;
[0025]S29)运营管理系统模块根据接口返回结果记录详细的操作日志。
[0026]运营管理系统模块运行时,对于生成的差异操作内容中包含执行删除的脚本进行凸显显示;升级完毕后运行管理系统模块记录详细的操作日志内容包括执行时包含的实体Nuget包名和版本号、执行时自动生成的SQL脚本、执行时的升级策略、最终执行结果、错误信息和修正建议、责任人和操作时间。
[0027]为了对应的不同微服务程序以及总体的管理功能,所述的共享实体Nuget包模块中包括CRM实体Nuget包、公共实体Nuget包、子系统一实体Nuget包和子系统二实体Nuget包
……
子系统N实体Nuget包,其中所述的N是的自然数。上述实体Nuget包可根据租户的服务任意进行组合以适应各种不同的使用需要。
[0028]本专利技术所设计的使用实体Nuget包实现多租户跨数据库类型按需自动初始化和升级的方法,通过将数据库实体程序集独立成Nuget包进行管理,同时开发专门用于数据库初始化和升级的微服务模块,供运营管理系统模块调用,数据库初始化升级微服务和业务微服务模块引用的是相同版本的实体Nuget包。能够保证业务微服务模块引用的实体Nuget包就是数据库初始化和升级微服务要实现完全一致性的升级目标,而且该升级目标通过程序自动化就能够实现,无需人工编写和维护脚本;在此基础上,灰度发布时为了保证旧版程序能够正常运行,在提供升级预览功能的同时,在实际升级时可以根据需要提供只增不删策略等升级策略;数据库初始化和升级微服务专注在数据库初始化和升级的技术层面,实现一致性、可靠性和完备性的同时,使用最简化的接口提供给运营管理系统模块调用,满足多租户数据库模块初始化和升级的实际需求;运营管理系统模块从产品设计的角度,在满足运营管理人员的实际业务所需并提供便捷的交互体验的同时,记录完备的日志保障可追溯性和安全性。
附图说明
[0029]图1是实施例1所使用的方法的系统框图。
具体实施方式
[0030]以下结合附图对本专利技术的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本专利技术,并不用于限定本专利技术。
[0031]实施例1。
[0032]如图1所示,本实施例描述的使用实体Nuget包实现多租户跨数据库类型按需自动初始化和升级的方法,包括:
[0033]共享实体Nuget包
[0034]将数据库实体打成Nuget包进行统一管理;
[0035]实体Nuget包一般包括:CRM实体Nuget包、公共实体Nuget包、子系统Nuget包(1..n),可以根据签约服务,任意进本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种使用实体Nuget包实现多租户跨数据库类型按需自动初始化和升级的方法,包括业务微服务模块、运营管理系统模块和租户数据库模块,其特征是,包含用于数据库初始化和升级的微服务模块和共享实体Nuget包模块,将数据库实体程序集独立成Nuget包放入共享实体Nuget包模块中,数据库初始化和升级的微服务模块供运营管理系统模块调用,用于数据库初始化和升级微服务模块和业务微服务模块均引用共享实体Nuget包模块中相同版本的实体Nuget包。2.根据权利要求1所述的使用实体Nuget包实现多租户跨数据库类型按需自动初始化和升级的方法,其特征是所述的用于数据库初始化和升级的微服务模块包括实体Nuget包版本号查询接口、初始化和升级预览接口以及初始化和升级执行接口。3.根据权利要求2所述的使用实体Nuget包实现多租户跨数据库类型按需自动初始化和升级的方法,其特征是,运营管理系统模块传入每个租户的实际参数,初始化和升级预览接口按照以下步骤完成要实现的功能:S11)按接口指定的多个Nuget包名称组合实体Nuget包生成实体模型;S12)和历史记录表中的最新实体模型比较不同生成差异操作内容;S13)根据差异操作内容通过ORM生成对应数据库类型的升级脚本;S14)返回差异操作内容的SQL只读升级脚本,供运营管理系统模块预览。4.根据权利要求2所述的使用实体Nuget包实现多租户跨数据库类型按需自动初始化和升级的方法,其特征是,运营管理系统模块传入每个租户的实际参数,初始化和升级执行接口按照以下步骤完成要...
【专利技术属性】
技术研发人员:孔钧,简刚,唐武斌,
申请(专利权)人:宁波市科技园区明天医网科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。