一种SaaS多租户的元数据运行方法、系统、设备及介质转让专利

申请号 : CN202311308627.9

文献号 : CN117076473B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 郑伟波邬柏许世鹏孙鹏郭蕾

申请人 : 浪潮通用软件有限公司

摘要 :

本申请公开了一种SaaS多租户的元数据运行方法、系统、设备及介质,属于SaaS元数据管理的技术领域。方法包括:连接租户数据库和meta标准元数据管理库;根据租户信息表判断租户是否匹配最新的公共标准元数据;在租户没有匹配时,基于meta数据库更新算法更新meta标准元数据管理库和租户数据库;在匹配最新的公共标准元数据时,加载meta标准元数据管理库和租户数据库;在租户需要更新租户数据库时,基于租户数据库更新算法更新租户数据库。本申请通过上述方法减少多租户数据的存储空间,提高多租户数据的更新、加载和利用效率。

权利要求 :

1.一种SaaS多租户的元数据运行方法,其特征在于,所述方法包括:连接租户数据库和meta标准元数据管理库;其中,所述租户数据库包括租户业务数据和租户私有元数据,所述meta标准元数据管理库包括租户信息表、公共标准元数据、元数据描述文件和对象注册表;

根据所述租户信息表判断所述租户是否匹配最新的公共标准元数据;

在所述租户没有匹配最新的公共标准元数据时,基于预设的meta数据库更新算法更新所述meta标准元数据管理库和租户数据库;

在所述租户匹配最新的公共标准元数据时,基于预设的加载算法加载所述meta标准元数据管理库和租户数据库;

在租户需要更新租户数据库时,基于预设的租户数据库更新算法更新所述租户数据库;

在所述租户没有匹配最新的公共标准元数据时,基于预设的meta数据库更新算法更新所述meta标准元数据管理库和租户数据库,具体包括:获取所述meta标准元数据管理库更新包和meta标准元数据管理库的json元数据信息更新包;

将所述json元数据信息更新包解析为所述meta标准元数据管理库的数据存储格式,并将解析后的所述json元数据信息更新包存储于所述meta标准元数据管理库更新包,以获取官方更新包;

添加所述官方更新包至所述meta标准元数据管理库,以更新所述meta标准元数据管理库;

以预设的数据库存储数据的最小key为标准,通过预设的元数据对比工具,基于所述官方更新包匹配所述meta标准元数据管理库和租户数据库,以获取差异化更新包;

获取所述租户数据库中匹配的公共标准元数据的版本号;

插入所述匹配的公共标准元数据的版本号至所述差异化更新包,以获取差异更新数据包;

整合所述差异更新数据包至所述租户数据库,以更新所述租户数据库。

2.根据权利要求1所述的一种SaaS多租户的元数据运行方法,其特征在于,在根据所述租户信息表判断所述租户是否匹配最新的公共标准元数据前,所述方法还包括基于预设的lua脚本查询meta标准元数据管理库中的租户信息表,并在所述租户信息表未过期时,允许所述租户访问,具体包括:连接nginx代理服务器并获取连接所述nginx代理服务器的连接时间;

基于lua脚本查询所述meta标准元数据管理库中的租户信息表;其中,所述租户信息表包括租户名称、租户类型、租户访问域名、租户创建日期、租户过期日期、匹配的公共标准元数据版本;

基于所述连接时间,匹配租户信息表中的租户过期日期,以判断所述租户是否过期;

在所述租户过期时,拒绝所述租户访问,并提醒所述租户已过期;

在所述租户未过期时,允许所述租户访问。

3.根据权利要求1所述的一种SaaS多租户的元数据运行方法,其特征在于,根据所述租户信息表判断所述租户是否匹配最新的公共标准元数据,具体包括:基于所述meta标准元数据管理库的元数据描述文件,获取所述meta标准元数据管理库的公共标准元数据的版本;

基于所述租户信息表中匹配的公共标准元数据的版本,匹配所述meta标准元数据管理库的公共标准元数据的版本,以判断所述租户是否匹配最新的公共标准元数据。

4.根据权利要求1所述的一种SaaS多租户的元数据运行方法,其特征在于,在所述租户匹配最新的公共标准元数据时,基于预设的加载算法加载所述meta标准元数据管理库和租户数据库,具体包括:获取租户发送的加载请求,并构建多个进程;其中,所述进程包括公共通道和私有通道;

基于预设的多进程参数控制算法处理所述加载请求,以判断所述加载请求是否满足预设的要求;

在所述加载请求满足预设的要求时,添加所述meta标准元数据管理库的公共标准元数据至所述进程的公共通道中;

基于所述加载请求获取租户名称,并基于所述租户名称获取所述租户私有元数据;

添加所述租户私有元数据至所述私有通道中,以加载所述meta标准元数据管理库和租户数据库。

5.根据权利要求4所述的一种SaaS多租户的元数据运行方法,其特征在于,基于预设的多进程参数控制算法处理所述加载请求,以判断所述加载请求是否满足预设的要求,具体包括:基于所述加载请求获取对象注册表;

基于所述对象注册表计算所述租户需要的进程数量、进程次数和进程内存;

在所述进程数量、进程次数和进程内存中任一数据超过预设的参数阈值时,重新构建所述加载请求的对象注册表并进行判断,直至所述进程数量、进程次数和进程内存均不超过预设的参数阈值;

在所述进程数量、进程次数和进程内存均小于预设的参数阈值时,所述加载请求满足预设的要求。

6.根据权利要求1所述的一种SaaS多租户的元数据运行方法,其特征在于,在租户需要更新租户数据库时,基于预设的租户数据库更新算法更新所述租户数据库,具体包括:获取租户上传的更新数据;

基于所述更新数据匹配所述租户私有元数据和meta标准元数据管理库,以获取所述更新数据、租户数据库和meta标准元数据管理库的差异元数据;

获取所述租户数据库中匹配的公共标准元数据的版本号;

插入所述匹配的公共标准元数据的版本号至所述差异元数据,以获取更新数据包;

整合所述更新数据包至所述租户数据库,以更新所述租户数据库。

7.一种SaaS多租户的元数据运行系统,其特征在于,所述系统包括:数据连接模块、第一判断模块、第二判断模块、第一更新模块、数据加载模块、第二更新模块;

所述数据连接模块,用于连接租户数据库和meta标准元数据管理库;其中,所述租户数据库包括租户业务数据和租户私有元数据,所述meta标准元数据管理库包括租户信息表、公共标准元数据、元数据描述文件和对象注册表;

所述第一判断模块,用于基于预设的lua脚本查询meta标准元数据管理库中的租户信息表,并基于所述租户信息表判断所述租户是否过期;

所述第二判断模块,根据所述租户信息表判断所述租户是否匹配最新的公共标准元数据;

所述第一更新模块,用于在所述租户没有匹配最新的公共标准元数据时,基于预设的元数据更新算法更新所述meta标准元数据管理库;

所述数据加载模块,用于在所述租户匹配最新的公共标准元数据时,基于预设的加载算法加载所述meta标准元数据管理库和租户数据库;

所述第二更新模块,用于在租户需要更新租户数据库时,基于预设的租户数据库更新算法更新所述租户数据库;

在所述租户没有匹配最新的公共标准元数据时,基于预设的meta数据库更新算法更新所述meta标准元数据管理库和租户数据库,具体包括:获取所述meta标准元数据管理库更新包和meta标准元数据管理库的json元数据信息更新包;

将所述json元数据信息更新包解析为所述meta标准元数据管理库的数据存储格式,并将解析后的所述json元数据信息更新包存储于所述meta标准元数据管理库更新包,以获取官方更新包;

添加所述官方更新包至所述meta标准元数据管理库,以更新所述meta标准元数据管理库;

以预设的数据库存储数据的最小key为标准,通过预设的元数据对比工具,基于所述官方更新包匹配所述meta标准元数据管理库和租户数据库,以获取差异化更新包;

获取所述租户数据库中匹配的公共标准元数据的版本号;

插入所述匹配的公共标准元数据的版本号至所述差异化更新包,以获取差异更新数据包;

整合所述差异更新数据包至所述租户数据库,以更新所述租户数据库。

8.一种SaaS多租户的元数据运行设备,其特征在于,所述设备包括:至少一个处理器;

以及,与所述至少一个处理器通信连接的存储器;

其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:连接租户数据库和meta标准元数据管理库;其中,所述租户数据库包括租户业务数据和租户私有元数据,所述meta标准元数据管理库包括租户信息表、公共标准元数据、元数据描述文件和对象注册表;

根据所述租户信息表判断所述租户是否匹配最新的公共标准元数据;

在所述租户没有匹配最新的公共标准元数据时,基于预设的meta数据库更新算法更新所述meta标准元数据管理库和租户数据库;

在所述租户匹配最新的公共标准元数据时,基于预设的加载算法加载所述meta标准元数据管理库和租户数据库;

在租户需要更新租户数据库时,基于预设的租户数据库更新算法更新所述租户数据库;

在所述租户没有匹配最新的公共标准元数据时,基于预设的meta数据库更新算法更新所述meta标准元数据管理库和租户数据库,具体包括:获取所述meta标准元数据管理库更新包和meta标准元数据管理库的json元数据信息更新包;

将所述json元数据信息更新包解析为所述meta标准元数据管理库的数据存储格式,并将解析后的所述json元数据信息更新包存储于所述meta标准元数据管理库更新包,以获取官方更新包;

添加所述官方更新包至所述meta标准元数据管理库,以更新所述meta标准元数据管理库;

以预设的数据库存储数据的最小key为标准,通过预设的元数据对比工具,基于所述官方更新包匹配所述meta标准元数据管理库和租户数据库,以获取差异化更新包;

获取所述租户数据库中匹配的公共标准元数据的版本号;

插入所述匹配的公共标准元数据的版本号至所述差异化更新包,以获取差异更新数据包;

整合所述差异更新数据包至所述租户数据库,以更新所述租户数据库。

9.一种SaaS多租户的元数据运行的非易失性计算机存储介质,存储有计算机可执行指令,其特征在于,所述计算机可执行指令设置为:连接租户数据库和meta标准元数据管理库;其中,所述租户数据库包括租户业务数据和租户私有元数据,所述meta标准元数据管理库包括租户信息表、公共标准元数据、元数据描述文件和对象注册表;

根据所述租户信息表判断所述租户是否匹配最新的公共标准元数据;

在所述租户没有匹配最新的公共标准元数据时,基于预设的meta数据库更新算法更新所述meta标准元数据管理库和租户数据库;

在所述租户匹配最新的公共标准元数据时,基于预设的加载算法加载所述meta标准元数据管理库和租户数据库;

在租户需要更新租户数据库时,基于预设的租户数据库更新算法更新所述租户数据库;

在所述租户没有匹配最新的公共标准元数据时,基于预设的meta数据库更新算法更新所述meta标准元数据管理库和租户数据库,具体包括:获取所述meta标准元数据管理库更新包和meta标准元数据管理库的json元数据信息更新包;

将所述json元数据信息更新包解析为所述meta标准元数据管理库的数据存储格式,并将解析后的所述json元数据信息更新包存储于所述meta标准元数据管理库更新包,以获取官方更新包;

添加所述官方更新包至所述meta标准元数据管理库,以更新所述meta标准元数据管理库;

以预设的数据库存储数据的最小key为标准,通过预设的元数据对比工具,基于所述官方更新包匹配所述meta标准元数据管理库和租户数据库,以获取差异化更新包;

获取所述租户数据库中匹配的公共标准元数据的版本号;

插入所述匹配的公共标准元数据的版本号至所述差异化更新包,以获取差异更新数据包;

整合所述差异更新数据包至所述租户数据库,以更新所述租户数据库。

说明书 :

一种SaaS多租户的元数据运行方法、系统、设备及介质

技术领域

[0001] 本申请涉及SaaS元数据管理的技术领域,尤其涉及一种SaaS多租户的元数据运行方法、系统、设备及介质。

背景技术

[0002] 软件运营服务(Software as a Service,简称SaaS)是让用户能够通过互联网连接和使用基于云的应用程序。常见示例有电子邮件、日历和办公工具。
[0003] 在现有技术中,数据库的隔离方式包括多数据库实例的隔离方式和同一数据库不同租户id的数据隔离方式两种方式。多数据库实例的隔离方式一般会将元数据信息存储在各自独立的数据库中,这种方式便于多租户数据的隔离管理以及不同租户进行二次开发产生的元数据保存,但是对于SaaS多租户服务的资源占用和元数据更新将会造成极大的困难。将会增加服务器的资源开销以及内存占用,在更新时,每次标准产品的迭代更新都需要对每个租户进行升级操作,从而更新每个租户数据库中的元数据信息,工作量很大,风险较高。同一数据库通过租户id的数据隔离方式,其优点在于多租户的数据存储在同一个数据库内,便于SaaS多租户服务的元数据更新和表结构更新,但是多租户数据没有实现数据库实例级别的隔离,存在数据隔离风险,并且SaaS不同租户定制化开发功能产生的元数据全部存在一个数据库里,对于数据库实例的备份还原无法做到真正的数据隔离,同时也不便于单个租户环境和数据的迁移。
[0004] 因此,如何减少多租户数据的存储空间,提高多租户数据的更新、加载和利用效率是一个亟待解决的问题。

发明内容

[0005] 本申请实施例提供了一种SaaS多租户的元数据运行方法、系统、设备及介质,用以解决如下技术问题:如何减少多租户数据的存储空间,提高多租户数据的更新、加载和利用效率。
[0006] 第一方面,本申请实施例提供了一种SaaS多租户的元数据运行方法,其特征在于,方法包括:连接租户数据库和meta标准元数据管理库;其中,租户数据库包括租户业务数据和租户私有元数据,meta标准元数据管理库包括租户信息表、公共标准元数据、元数据描述文件和对象注册表;根据租户信息表判断租户是否匹配最新的公共标准元数据;在租户没有匹配最新的公共标准元数据时,基于预设的meta数据库更新算法更新meta标准元数据管理库和租户数据库;在租户匹配最新的公共标准元数据时,基于预设的加载算法加载meta标准元数据管理库和租户数据库;在租户需要更新租户数据库时,基于预设的租户数据库更新算法更新租户数据库。
[0007] 在本申请的一种实现方式中,基于预设的lua脚本查询meta标准元数据管理库中的租户信息表,并基于租户信息表判断租户是否过期,具体包括:连接nginx代理服务器并获取连接nginx代理服务器的连接时间;基于lua脚本查询meta标准元数据管理库中的租户信息表;其中,租户信息表包括租户名称、租户类型、租户访问域名、租户创建日期、租户过期日期、匹配的公共标准元数据版本;基于连接时间,匹配租户信息表中的租户过期日期,以判断租户是否过期;在租户过期时,拒绝租户访问,并提醒租户已过期。
[0008] 在本申请的一种实现方式中,在租户信息未过期时,根据租户信息表判断租户是否匹配最新的公共标准元数据,具体包括:基于meta标准元数据管理库的元数据描述文件,获取meta标准元数据管理库的公共标准元数据的版本;基于租户信息表中匹配的公共标准元数据的版本,匹配meta标准元数据管理库的公共标准元数据的版本,以判断租户是否匹配最新的公共标准元数据。
[0009] 在本申请的一种实现方式中,基于预设的meta数据库更新算法更新meta标准元数据管理库和租户数据库,具体包括:获取meta标准元数据管理库更新包和meta标准元数据管理库的json元数据信息更新包;将json元数据信息更新包解析为meta标准元数据管理库的数据存储格式,并将解析后的json元数据信息更新包存储于meta标准元数据管理库更新包,以获取官方更新包;添加官方更新包至meta标准元数据管理库,以更新meta标准元数据管理库;以预设的数据库存储数据的最小key为标准,通过预设的元数据对比工具,基于官方更新包匹配meta标准元数据管理库和租户数据库,以获取差异化更新包;获取租户数据库中匹配的公共标准元数据的版本号;插入匹配的公共标准元数据的版本号至差异化更新包,以获取差异更新数据包;整合差异更新数据包至租户数据库,以更新租户数据库。
[0010] 在本申请的一种实现方式中,在租户未过期且匹配最新的公共标准元数据时,基于预设的加载算法加载meta标准元数据管理库和租户数据库,具体包括:获取租户发送的加载请求,并构建多个进程;其中,进程包括公共通道和私有通道;基于预设的多进程参数控制算法处理加载请求,以判断加载请求是否满足预设的要求;在加载请求满足预设的要求时,添加meta标准元数据管理库的公共标准元数据至进程的公共通道中;基于加载请求获取租户名称,并基于租户名称获取租户私有元数据;添加租户私有元数据至私有通道中,以加载meta标准元数据管理库和租户数据库。
[0011] 在本申请的一种实现方式中,基于预设的多进程参数控制算法处理加载请求,具体包括:基于加载请求获取对象注册表;基于对象注册表计算租户需要的进程数量、进程次数和进程内存;在进程数量、进程次数和进程内存中任一数据超过预设的参数阈值时,重新构建加载请求的对象注册表并进行判断,直至进程数量、进程次数和进程内存均不超过预设的参数阈值;在进程数量、进程次数和进程内存均小于预设的参数阈值时,加载请求满足预设的要求。
[0012] 在本申请的一种实现方式中,在租户需要更新租户数据库时,基于预设的租户数据库更新算法更新租户数据库,具体包括:获取租户上传的更新数据;基于更新数据匹配租户私有元数据和meta标准元数据管理库,以获取更新数据、租户数据库和meta标准元数据管理库的差异元数据;获取租户数据库中匹配的公共标准元数据的版本号;插入匹配的公共标准元数据的版本号至差异元数据,以获取更新数据包;整合更新数据包至租户数据库,以更新租户数据库。
[0013] 第二方面,本申请实施例还提供了一种SaaS多租户的元数据运行系统,其特征在于,系统包括:数据连接模块、第一判断模块、第二判断模块、第一更新模块、数据加载模块、第二更新模块;数据连接模块,用于连接租户数据库和meta标准元数据管理库;其中,租户数据库包括租户业务数据和租户私有元数据,meta标准元数据管理库包括租户信息表、公共标准元数据、元数据描述文件和对象注册表;第一判断模块,用于基于预设的lua脚本查询meta标准元数据管理库中的租户信息表,并基于租户信息表判断租户是否过期;第二判断模块,用于在租户信息未过期时,根据租户信息表判断租户是否匹配最新的公共标准元数据;第一更新模块,用于在租户没有匹配最新的公共标准元数据时,基于预设的元数据更新算法更新meta标准元数据管理库;数据加载模块,用于在租户匹配最新的公共标准元数据时,基于预设的加载算法加载meta标准元数据管理库和租户数据库;第二更新模块,用于在租户需要更新租户数据库时,基于预设的租户数据库更新算法更新租户数据库。
[0014] 第三方面,本申请实施例还提供了一种SaaS多租户的元数据运行设备,其特征在于,设备包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够:连接租户数据库和meta标准元数据管理库;其中,租户数据库包括租户业务数据和租户私有元数据,meta标准元数据管理库包括租户信息表、公共标准元数据、元数据描述文件和对象注册表;根据租户信息表判断租户是否匹配最新的公共标准元数据;在租户没有匹配最新的公共标准元数据时,基于预设的meta数据库更新算法更新meta标准元数据管理库和租户数据库;在租户匹配最新的公共标准元数据时,基于预设的加载算法加载meta标准元数据管理库和租户数据库;在租户需要更新租户数据库时,基于预设的租户数据库更新算法更新租户数据库。
[0015] 第四方面,本申请实施例还提供了一种SaaS多租户的元数据运行的非易失性计算机存储介质,存储有计算机可执行指令,其特征在于,计算机可执行指令设置为:连接租户数据库和meta标准元数据管理库;其中,租户数据库包括租户业务数据和租户私有元数据,meta标准元数据管理库包括租户信息表、公共标准元数据、元数据描述文件和对象注册表;根据租户信息表判断租户是否匹配最新的公共标准元数据;在租户没有匹配最新的公共标准元数据时,基于预设的meta数据库更新算法更新meta标准元数据管理库和租户数据库;
在租户匹配最新的公共标准元数据时,基于预设的加载算法加载meta标准元数据管理库和租户数据库;在租户需要更新租户数据库时,基于预设的租户数据库更新算法更新租户数据库。
[0016] 本申请实施例提供的一种SaaS多租户的元数据运行方法、系统、设备及介质,通过创建meta标准元数据管理库作为SaaS多租户标准产品元数据的管理库,创建多个租户数据库,采用数据库实例级别隔离的方案实现租户私有数据的隔离,可以根据服务器配置大小灵活调整进程数量、单个进程内存大小限制、单个进程请求次数限制,实现了SaaS服务多租户共用一份标准产品元数据,不同租户定制化功能元数据隔离的方案。既能快速地对标准产品元数据进行更新,也保留了不同租户内个性化定制产生的元数据,还可以灵活调整进程参数配置实现对服务器资源的充分利用,从而达到减少多用户数据存的存储空间,提高多用户数据的利用效率的作用。

附图说明

[0017] 此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0018] 图1为本申请实施例提供的一种SaaS多租户的元数据运行方法流程图;
[0019] 图2为本申请实施例提供的一种SaaS多租户的元数据运行系统方框图;
[0020] 图3为本申请实施例提供的一种SaaS多租户的元数据运行设备内部结构示意图。

具体实施方式

[0021] 为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0022] 本申请实施例提供了一种SaaS多租户的元数据运行方法、系统、设备及介质,用以解决如下技术问题:如何减少多租户数据的存储空间,提高多租户数据的更新、加载和利用效率。
[0023] 下面通过附图对本申请实施例提出的技术方案进行详细的说明。
[0024] 在现有技术中,现有的SaaS多租户隔离方式一般采用多数据库实例的隔离方式和同一数据库不同租户id的数据隔离方式这两种方式。
[0025] 在多数据库事例的隔离方式中,每个租户都拥有一个独立的数据库,例如租户a对应数据库a,租户b对应数据库b。这种方式的优点是便于多租户数据的隔离管理以及面对不同租户进行二次开发产生的元数据保存。缺点是多租户服务的资源占用和元数据更新困难,即每个租户在运行时都会拉起一个新的进程,用于当前租户们的逻辑处理,当同时使用SaaS服务的租户数量较少时,SaaS对应的服务器可以支持租户的使用,当同时使用SaaS服务的租户数量较多时,SaaS对应的服务器可能会出现卡顿甚至崩坏的情况,需要说明的是,这里的“较多”“较少”是针对SaaS对应的服务器的能够同时支持的进程数量。且每次标准产品的迭代更新都需要对每个租户都进行升级操作,从而更新每个租户数据库中的元数据信息,每个租户数据库内的重复内容都需要进行更新,这无疑会增加更新的工作量,且多次更新的更显较高。
[0026] 在同一数据库不同租户id的数据隔离方式中,所有租户的数据都存储在同一数据库中,公用的数据所有租户都可进行查阅使用,私有的数据在数据前加入租户的id信息。这种方式的优点是便于SaaS多租户服务的元数据更新和表结构更新,但是在数据库内没有实现多租户数据的隔离,由于所有数据处于同一数据库中,租户的私有数据易被查阅和窃取,例如租户a的私有数据a被竞争对手租户b查阅。且面对不同租户的定制化开发功能产生的元数据全部存储在同一数据库中,对于数据库的备份还原无法做到真正的数据隔离,同时也不便于单个租户的数据迁移。
[0027] 图1为本申请实施例提供的一种SaaS多租户的元数据运行流程图。如图1所示,本申请实施例提供的一种SaaS多租户的元数据运行方法,具体包括以下步骤:
[0028] 步骤1、连接租户数据库和meta标准元数据管理库;其中,租户数据库包括租户业务数据和租户私有元数据,meta标准元数据管理库包括租户信息表、公共标准元数据、元数据描述文件和对象注册表。
[0029] 首先需要创建meta标准元数据管理库,meta标准元数据管理库用来存储多租户信息、数据库信息、标准产品元数据信息、元数据描述文件信息。其中,租户信息由租户信息表记载,租户信息表载有租户名称、租户类型、租户访问域名、创建日期、过期日期、标准元数据版本、是否已适配最新标准产品元数据版本,需要说明的是,租户信息表在租户创建时写入。
[0030] 数据库信息包括数据库名称、对应租户id、数据库连接信息,需要说明的是,数据库信息在租户创建时写入。标准产品元数据信息包括字段元数据表、模型元数据表、视图元数据表、菜单元数据表,每个元数据表上均有元数据版本标识字段。元数据描述文件信息包括文件路径、应用名称、所属模块、所属领域、json元数据内容。
[0031] meta标准元数据管理库的初始数据来源于系统创建数据库的过程,数据库创建会将工程代码中的json元数据描述文件内容读取到数据库的元数据信息表中,并根据模型、字段、视图、菜单等元数据分类分别将数据写入到运行时的元数据表中,这个数据为SaaS系统标准产品的初始元数据,后续进行标准元数据的更新时,只需要对meta标准元数据管理库进行升级操作,即可将最新的json数据和元数据信息读取到meta标准元数据管理库中。
[0032] 租户数据库为租户本身的数据,租户数据库包括租户业务数据和租户私有元数据,租户业务数据为租户所进行的业务的名词定义、名词解释、业务规则、业务指标等信息,租户私有元数据为租户自身为了管理租户业务数据所设置的数据,可以理解的是,每有一个新的租户连接SaaS服务,则创建一个新的租户数据库,新的租户数据库绑定新的租户。
[0033] 在meta标准元数据管理库和租户数据库创建完成后,连接meta标准元数据管理库和租户数据库以获取其中的数据。
[0034] 步骤2、基于预设的lua脚本查询meta标准元数据管理库中的租户信息表,并基于租户信息表判断租户是否过期。
[0035] lua脚本用于查询租户信息表,lua脚本可以很容易地被C/C++代码调用,也可以反过来调用C/C++的函数,这使得lua在应用程序中可以被广泛应用。不仅仅作为扩展脚本,也可以作为普通的配置文件,代替xml、ini等文件格式,并且更容易理解和维护。lua由标准C编写而成,代码简洁,几乎在所有操作系统和平台上都可以编译、运行。一个完整的lua解释器不过200k,在所有脚本引擎中,lua的速度是最快的。所以本实施例将lua脚本作为最优选择,可以理解的是,随着技术的更新,未来会出现比lua脚本更优的脚本,本申请将随之替换。
[0036] 当租户需要使用SaaS服务时,首先需要进入该租户特有的域名,通过该域名使用SaaS服务,可以理解的是,每个租户的域名都是独一无二的。在具体的事例中,存在租户a和租户b,其中租户a的域名为a.erp.com,租户b的域名为b.erp.com。
[0037] 步骤21、连接nginx代理服务器并获取连接nginx代理服务器的连接时间;其中,nginx代理服务器用于存储租户数据库和meta标准元数据管理库。
[0038] nginx代理服务器是一个高性能的HTTP和反向代理web服务器,本SaaS基于nginx代理服务器建立,可以理解的是,也可通过其他代理服务器搭建平台搭建SaaS服务系统。
[0039] 当前时间为租户申请使用nginx代理服务器的事件,用以后续步骤来判断租户是否过期。
[0040] 步骤22、基于lua脚本查询meta标准元数据管理库中的租户信息表;其中,租户信息表包括租户名称、租户类型、租户访问域名、租户创建日期、租户过期日期、匹配的公共标准元数据版本。
[0041] 在具体的事例中,公司a的员工b需要通过邮件发送系统(公司a通过SaaS系统搭建的独属邮件发送系统),员工b登录邮件发送系统的域名,即a.erp.com,当存在用户在访问租户a的域名,nginx代理服务器通过lua脚本查询当前域名对应的租户信息,即租户a对应的租户信息表。
[0042] 步骤23、基于连接时间,匹配租户信息表中的租户过期日期,以判断租户是否过期。
[0043] 通过租户对应的租户信息表可以判断租户是否可以继续使用SaaS系统,即通过租户信息表中的过期时间和当前时间判断租户是否到期。
[0044] 在具体的事例中,公司a的员工b打开域名a.erp.com,当前时间为2023年7月26日15:15:20,公司a对应的租户a的租户信息表中的过期时间为2023年7月25日24:00:00,则员工b无法打开域名a.erp.com,即租户a无法使用SaaS服务。
[0045] 步骤24、在租户过期时,拒绝租户访问,并提醒租户已过期。
[0046] 当租户过期时,拒绝用户访问SaaS服务系统,并提醒租户已过期,提醒方式可以为在域名对应的网页上印上“已过期,请续费使用的字样”。
[0047] 可以理解是,本申请实施例在租户信息表中记载的过期时间前一段时间(时间可人为设置,通常为过期时间前一个月),将会通过域名、电话、短信等方式联系租户对应的使用者,该使用者通常为企业负责SaaS系统的负责人。
[0048] 步骤3、在租户信息未过期时,根据租户信息表判断租户是否匹配最新的公共标准元数据。
[0049] 当租户未过期时,说明租户可以使用SaaS服务,同时在租户信息表上记载有租户是否匹配最新的公共标准元数据,通过meta标准元数据管理库中的公共标准元数据的版本匹配租户信息表中匹配的公共标准元数据的版本判断租户是否匹配最新的公共标准元数据。
[0050] 在具体的事例中,租户a的租户信息表中记载有是否匹配最新的公共标准元数据,为否,则租户a没有匹配最新的公共标准元数据。
[0051] 其中,是否匹配最新的公共标准元数据中的“是”或“否”是由租户使用的公共标准元数据的版本和meta标准元数据管理库中的公共标准元数据的版本来判断的,例如租户a的公共标准元数据的版本为1.027,meta标准元数据管理库中的公共标准元数据的版本为1.028,则租户a的租户信息表中的是否匹配最新的公共标准元数据为“否”,若租户a选择更新公共标准元数据为1.028版本,则租户a的租户信息表中的是否匹配最新的公共标准元数据为“是”,判断过程在meta标准元数据管理库中自动进行。
[0052] 步骤4、在租户没有匹配最新的公共标准元数据时,基于预设的meta数据库更新算法更新meta标准元数据管理库和租户数据库。
[0053] meta标准元数据管理库由SaaS系统的运营商进行统一更新,meta标准元数据管理库需要更新一次,便可对所有租户公有的元数据进行更新,在公有的元数据更新后,将会保留旧版的meta标准元数据管理库以供租户选择。
[0054] 在租户没有匹配最新的公共标准元数据时,可能导致租户无法使用到最新的功能,所以需要提醒租户是否需要进行更新升级,若租户喜欢旧的版本,则租户可以选择不进行更新。其中若租户没有匹配最新的公共标准元数据,有可能导致租户所使用的SaaS系统无法使用,因为公共标准元数据的更新可能是根据服务器的更新而更新的,如果不更新至最新版本则可能导致SaaS服务器无法使用,可以理解的是,当存在系统更新而导致的公共标准元数据更新时,将会提前通知租户。
[0055] 当公共标准元数据需要更新,即meta标准元数据管理库需要更新时,根据meta数据库更新算法更新meta标准元数据管理库和租户数据库,meta数据库更新算法由步骤41至步骤45所示,
[0056] 步骤41、获取meta标准元数据管理库更新包和meta标准元数据管理库的json元数据信息更新包。
[0057] 当meta标准元数据管理库需要更新时,上传meta标准元数据管理库更新包和meta标准元数据管理库的json元数据信息更新包。
[0058] 步骤42、将json元数据信息更新包解析为meta标准元数据管理库的数据存储格式,并将解析后的json元数据信息更新包存储于meta标准元数据管理库更新包,以获取官方更新包。
[0059] 因为json元数据信息可能包括多种格式,所以需要将json元数据信息转换格式并添加至meta标准元数据管理库中,从而获取官方更新包。
[0060] 步骤43、添加官方更新包至meta标准元数据管理库,以更新meta标准元数据管理库。
[0061] 将官方更新包添加至meta标准元数据管理库,即可更新meta标准元数据管理库,该更新技术为现有技术,在此不做赘述。
[0062] 步骤44、以预设的数据库存储数据的最小key为标准,通过预设的元数据对比工具,基于官方更新包匹配meta标准元数据管理库和租户数据库,以获取差异化更新包。
[0063] 将meta库中的标准元数据json信息和每个租户库中的个性化元数据信息进行遍历比对,比对的依据为json描述最小单元中的key,然后会生成一份匹配当前新版本标准元数据的一份租户个性化元数据信息,存储在租户对应的数据库中,获取的差异化更新包为租户需要进行更新的更新包。
[0064] 步骤45、获取租户数据库中匹配的公共标准元数据的版本号。
[0065] 为了匹配租户数据库,需要将差异化更新包与租户数据库的版本匹配,从而更新租户数据库。
[0066] 步骤46、插入匹配的公共标准元数据的版本号至差异化更新包,以获取差异化更新包。
[0067] 在获取版本号后将差异更新数据包添加版本号,即可获得与对应租户数据库匹配的差异化更新包。
[0068] 步骤47、整合差异更新数据包至租户数据库,以更新租户数据库。
[0069] 步骤同步骤43,在此不做赘述。
[0070] 步骤5、在租户匹配最新的公共标准元数据时,基于预设的加载算法加载meta标准元数据管理库和租户数据库。
[0071] 当租户匹配最新的公共标准元数据时,则通过加载算法加载meta标准元数据管理库和租户数据库,以使用SaaS系统。
[0072] 需要说明的是,本申请提供下载服务,即租户可以meta标准元数据管理库和租户数据库下载,后续在不更新的情况下不需再进行加载。即仅在第一次使用SaaS系统和SaaS系统更新时需要加载meta标准元数据管理库和租户数据库。
[0073] 步骤51、获取租户发送的加载请求,并构建多个进程;其中,进程包括公共通道和私有通道。
[0074] 在租户需要使用SaaS服务时,租户发送使用请求,该使用请求即为加载请求。为了满足多位租户的使用,SaaS系统设计了多进程多租户的运行模式,即进行了多进程的设计,用以满足多租户的使用。不同租户可以按需加载到同一个进程中或者不同进程中,以减少单个租户单个进程的资源开销,如果单个进程无法满足租户使用时,也可以通过增加进程数量的方式来提高系统的服务能力。结合nginx负载均衡和lua脚本的路由策略,实现对单个租户及多租户情况下的资源灵活配置和调整。
[0075] 公共通道用于传输公共标准元数据,私有通道用于传输租户私有元数据。
[0076] 步骤52、基于预设的多进程参数控制算法处理加载请求,以判断加载请求是否满足预设的要求。
[0077] 当多租户同时使用SaaS服务时,可能会造成SaaS服务的拥挤,所以需要限制租户使用进程的数量、在进程中占据的内存(进程内存),需要请求进程的次数(进程次数),即预设的要求。
[0078] 此时需要计算租户的加载请求,以获取租户加载请求对应的进程的数量、在进程中占据的内存,需要请求进程的次数,当租户的加载请求满足预设的要求时,给租户加载meta标准元数据管理库和租户数据库。
[0079] 步骤521、基于加载请求获取对象注册表。
[0080] 在获取加请求后,通过加载请求构建对象注册表,其中对象注册表储存在meta标准元数据管理库中。
[0081] 步骤522、基于对象注册表计算租户需要的进程数量、进程次数和进程内存。
[0082] 对象注册表中记录有租户所对应的公共标准元数据和私有元数据,通过公共标准元数据和私有元数据的大小来计算进程数量、进程次数和进程内存。
[0083] 其中,进程数量计算:通过配置进程数量的参数,在服务启动时就会启动对应数量的进程,每个进程都可以接受不同租户的请求,如果某个租户的请求到了某个进程上,而这个进程中没有对应租户的registry对象,则需要通过步骤4将该租户对应的元数据加载起来,构建当前进程上的registry对象,从而为该租户提供服务。
[0084] 进程内存计算:进程内存限制主要是为了解决多进程多租户模式下的内存占用问题,如果服务器资源内存资源有限,可以通过配置内存参数灵活利用内存资源,当进程内存占用达到设定的阈值时,在当前进程的任务处理完成后退出并释放内存资源,然后启动一个新的进程来提供服务。
[0085] 进程请求次数限制:此参数和内存限制参数类似,在当前进程接收的请求次数达到上限时,进程会退出并释放资源,并启动一个新进程。
[0086] 步骤523、在进程数量、进程次数和进程内存中任一数据超过预设的参数阈值时,重新构建加载请求的对象注册表并进行判断,直至进程数量、进程次数和进程内存均不超过预设的参数阈值。
[0087] 在进程数量、进程次数和进程内存中任一数据超过预设的参数阈值时,说明无法通过进程传递meta标准元数据管理库和租户数据库,即需要重新计算进程数量、进程次数和进程内存。
[0088] 步骤524、在进程数量、进程次数和进程内存均小于预设的参数阈值时,加载请求满足预设的要求。
[0089] 当进程数量、进程次数和进程内存均小于预设的参数阈值时,加载meta标准元数据管理库和租户数据库至租户。
[0090] 步骤53、在加载请求满足预设的要求时,添加meta标准元数据管理库的公共标准元数据至进程的公共通道中。
[0091] 步骤54、基于加载请求获取租户名称,并基于租户名称获取租户私有元数据。
[0092] 在加载请求中对应着租户信息表,通过租户信息表即可获取租户名称,从而找到对应的租户数据库。
[0093] 步骤55、添加租户私有元数据至私有通道中,以加载meta标准元数据管理库和租户数据库。
[0094] 为了防止租户数据库的私有元数据因为进程传输至其他租户,所以通过私有通道传输私有元数据。
[0095] 步骤6、在租户需要更新租户数据库时,基于预设的租户数据库更新算法更新租户数据库。
[0096] 当租户的数据库需要更新时,通过租户数据库更新算法更新租户数据库和meta标准元数据管理库。租户数据库更新算法为步骤411至步骤414所示。
[0097] 步骤61、获取租户上传的更新数据。
[0098] 因为租户数据库为租户私有数据,所以需要租户自己上传需要更新的数据。
[0099] 步骤62、基于更新数据匹配租户私有元数据和meta标准元数据管理库,以获取更新数据、租户数据库和meta标准元数据管理库的差异元数据。
[0100] 在租户上传更新数据后,租户的更新数据可能与meta标准元数据管理库和租户数据库存在相同的内容,相同的内容即为差异元数据,差异元数据不需要添加至租户数据库中。从而减少更新时间以及租户数据库的内存占有量。
[0101] 步骤63、获取租户数据库中匹配的公共标准元数据的版本号,插入匹配的公共标准元数据的版本号至差异元数据,以获取更新数据包。
[0102] 当获取差异元数据后,给差异元数据标上版本号以便于更新租户数据库,插入的版本号为与租户数据库中匹配的公共标准元数据版本相同的版本号,插入版本号的差异元数据为更新数据库。
[0103] 步骤64、整合更新数据包至租户数据库,以更新租户数据库。
[0104] 将更新数据库添加至对应的租户数据库,即可根据租户上传的更新数据更新租户数据库。
[0105] 以上为本申请提出的方法实施例。基于同样的发明构思,本申请实施例还提供了一种SaaS多租户的元数据运行系统。
[0106] 图2为本申请的一些实施例提供的对应于图1的一种SaaS多租户的元数据运行系统包括:数据连接模块、第一判断模块、第二判断模块、第一更新模块、数据加载模块、第二更新模块。
[0107] 在本申请的一个实施例中,数据连接模块,连接租户数据库和meta标准元数据管理库;其中,租户数据库包括租户业务数据和租户私有元数据,meta标准元数据管理库包括租户信息表、公共标准元数据、元数据描述文件和对象注册表;第一判断模块,基于预设的lua脚本查询meta标准元数据管理库中的租户信息表,并基于租户信息表判断租户是否过期;第二判断模块,在租户信息未过期时,根据租户信息表判断租户是否匹配最新的公共标准元数据;第一更新模块,在租户没有匹配最新的公共标准元数据时,基于预设的元数据更新算法更新meta标准元数据管理库;数据加载模块,在租户匹配最新的公共标准元数据时,基于预设的加载算法加载meta标准元数据管理库和租户数据库;第二更新模块,在租户需要更新租户数据库时,基于预设的租户数据库更新算法更新租户数据库。
[0108] 图3为本申请实施例提供的一种SaaS多租户的元数据运行设备内部结构示意图。如图3所示,设备包括:
[0109] 至少一个处理器301;
[0110] 以及,与至少一个处理器通信连接的存储器302;
[0111] 其中,存储器302存储有可被至少一个处理器执行的指令,指令被至少一个处理器301执行,以使至少一个处理器301能够:连接租户数据库和meta标准元数据管理库;其中,租户数据库包括租户业务数据和租户私有元数据,meta标准元数据管理库包括租户信息表、公共标准元数据、元数据描述文件和对象注册表;根据租户信息表判断租户是否匹配最新的公共标准元数据;在租户没有匹配最新的公共标准元数据时,基于预设的meta数据库更新算法更新meta标准元数据管理库和租户数据库;在租户匹配最新的公共标准元数据时,基于预设的加载算法加载meta标准元数据管理库和租户数据库;在租户需要更新租户数据库时,基于预设的租户数据库更新算法更新租户数据库。
[0112] 本申请的一些实施例提供的对应于图1的一种SaaS多租户的元数据运行的非易失性计算机存储介质,存储有计算机可执行指令,计算机可执行指令设置为:连接租户数据库和meta标准元数据管理库;其中,租户数据库包括租户业务数据和租户私有元数据,meta标准元数据管理库包括租户信息表、公共标准元数据、元数据描述文件和对象注册表;根据租户信息表判断租户是否匹配最新的公共标准元数据;在租户没有匹配最新的公共标准元数据时,基于预设的meta数据库更新算法更新meta标准元数据管理库和租户数据库;在租户匹配最新的公共标准元数据时,基于预设的加载算法加载meta标准元数据管理库和租户数据库;在租户需要更新租户数据库时,基于预设的租户数据库更新算法更新租户数据库。
[0113] 本申请中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于物联网设备和介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0114] 本申请实施例提供的系统和介质与方法是一一对应的,因此,系统和介质也具有与其对应的方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述系统和介质的有益技术效果。
[0115] 本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD‑ROM、光学存储器等)上实施的计算机程序产品的形式。
[0116] 本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框,以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0117] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0118] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0119] 在一个典型的配置中,计算设备包括一个或多个处理器 (CPU)、输入/输出接口、网络接口和内存。
[0120] 内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器 (RAM) 和/或非易失性内存等形式,如只读存储器 (ROM) 或闪存(flash RAM)。内存是计算机可读介质的示例。
[0121] 计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存 (PRAM)、静态随机存取存储器 (SRAM)、动态随机存取存储器 (DRAM)、其他类型的随机存取存储器 (RAM)、只读存储器 (ROM)、电可擦除可编程只读存储器 (EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器 (CD‑ROM)、数字多功能光盘 (DVD) 或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体 (transitory media),如调制的数据信号和载波。
[0122] 还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
[0123] 以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所做的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。