本发明专利技术公开了一种工业软件多租户数据隔离的实现方法,利用过滤器技术获取用户访问数据的原始SQL语句,判断其是否是要操作需要隔离的数据库表,若是,则通过自定义的规则修改SQL语句并执行,从而实现了自动对多租户数据添加标签的目的,大幅度提高了给数据贴标签的效率,并确保了准确度。本方法灵活高效,仅需要少量的配置工作就可以实现自动对SQL脚本添加租户标签,实现了工业软件多租户数据的高效隔离。
【技术实现步骤摘要】
一种工业软件多租户数据隔离的实现方法
本专利技术涉及数据处理领域,尤其涉及一种工业软件多租户数据隔离的实现方法。
技术介绍
多租户技术(multi-tenancytechnology)或称多重租赁技术在当今时代使用越来越广,在工业的一些场景中,多租户技术是必须要使用的。多租户技术是一种软件架构技术,它是在探讨和实现如何在多用户的环境下共用相同的系统或程序组件,并仍可确保各用户间数据的隔离性。简单的说多个租户(互相没有关联的用户)在使用同一个系统中,各自实现自己的操作并且互不影响。在实现多租户技术的过程中,数据的存储是重中之重,主要的解决方案有以下三种:(1)各自独立数据库该方案是给每个租户都分配一个单独的数据库,使得每个租户的数据进行隔离。该方案的隔离级别是最高的,安全性最好,但随之而来的服务器成本、运维成本、升级成本等方面也是最高的。(2)共享数据库,各自独立的schema数据结构该方案是每个租户的数据都在一个数据库中,但给每个租户都分配一个schema,用来实现的数据隔离。该方案的隔离级别是比第一种方案要低的,安全性也会降低,但服务器成本、运维成功、升级成本也会降低。(3)共享数据库,共享schema和数据库表该方案是租户共享同一个数据库,同一个schema,而是通过给数据库中的数据添加与用户一对一绑定的TenantId进行区分标识,该方案是共享程度最高,隔离级别最低,但同时也是服务器成本、运维成功、升级成本最低的。综上所述,这三种方案各有优缺点,总的来说,第一种方案是隔离最高,但成本也是最高,第三种是隔离最低,但成本也是最低的,第二种隔离和成本都是居中。从工业软件的实际情况考虑,第一种方案的成本较高,很多企业是承受不起的,第三种是成本最低,企业也更偏向于该方案,同时只要做好有效的数据隔离措施,该方案也是很有实用价值的。在实际的工业软件中,第三种方案广泛使用,这就要求TenantId的使用必须有着极为严格的管控,以确保不同用户之间的数据的有效隔离。但在实际开发过程中,对于每次数据库的访问手动添加TenantId,是需要耗费很大的人工成本,同时存在遗漏或者添加错误的潜在风险。这样对于安全高效灵活的自动添加TenantId的改进势在必行,同时它的实现会大幅度提高软件的安全性和降低人工成本。
技术实现思路
本专利技术所要解决的技术问题是:提供一种工业软件多租户数据隔离的实现方法。为解决上述技术问题,本专利技术所采用的技术方案是:一种工业软件多租户数据隔离的实现方法,包括:。S1、初始化,指定需要进行数据隔离的数据库表名,获得目标数据库表向量T[i];设定schema,在T[i]中所包含的数据库表中设置一个与TenantId对应的字段tenant_id;获取登录用户对应的TenantId;S2、拦截登录用户对数据库进行操作的原始SQL脚本,从中解析得到内含的数据库表名Tx;S3、判断Tx是否包含在T[i]中,若是,则在原始SQL脚本中包含的数据中添加与登录用户对应的tenant_id,生成修改后的SQL脚本;否则直接执行下一步;S4、执行SQL脚本,对数据库进行操作。与现有技术相比,本专利技术具有如下技术效果:利用本方法,在主程序前添加少量的代码就可以实现所有用户的tenant_id的自动添加,大幅度提高了共享数据库、共享schema和数据库表模式下,对数据的打标工作的效率,而且确保了打标工作的准确率。本专利技术既解决了手动添加TenantId所带来的工作量问题和错加漏加少加等问题,又只增加了少量的配置工作,实现了通过灵活高效的配置的方式进行各种情况的适用。这样只需简单的配置规则,就可以实现自动对SQL脚本添加租户标签,即TenantId标签,以保证工业软件多租户数据隔离的高效实现。在上述技术方案的基础上,本专利技术还可以做如下改进。优选地,所述S2中利用现有的过滤器技术拦截登录用户对数据库进行操作的原始SQL脚本。采用上述进一步方案的有益效果是实现方法简单,降低开发人员的使用门槛和对应的学习成本。优选地,将登录用户的TenantId及T[i]加载到系统缓存中。采用上述进一步方案的有益效果是避免多次请求数据库的时间,减少对系统和数据库的访问负载。优选地,S2中获取SQL脚本中数据库表名Tx的步骤如下:S2-1、以“空格”为分割符,将原始SQL脚本分割为若干分段;S2-2、查找原始SQL脚本中下一个“FROM”关键字的位置;S2-3、判断“FROM”后面第一段SQL脚本是否为“(”,若是,执行步骤S2-5;否则跳至步骤S2-4;S2-4、判断“FROM”后面的第二段SQL脚本是否为“as”,若是,则“FROM”后面第三段SQL脚本为待查找的数据库表名;否则,执行步骤S2-5;S2-5、判定是否已经查找了SQL脚本的所有分段,若不是,返回步骤S2-2,否则结束。采用上述进一步方案的有益效果是利用SQL语句的语法规则,自动获取SQL脚本中要处理的数据库表名。附图说明图1为本专利技术的工业软件多租户数据隔离的实现方法的流程图;图2为本专利技术中从SQL脚本中获取数据库表名的流程图。具体实施方式以下结合附图对本专利技术的原理和特征进行描述,所举实例只用于解释本专利技术,并非用于限定本专利技术的范围。请参照图1所示,其为本专利技术的工业软件多租户数据隔离的实现方法的结构示意图。所述工业软件多租户数据隔离的实现方法包括:S1、初始化,指定需要进行数据隔离的数据库表名,获得目标数据库表向量T[i];设定schema,在T[i]中所包含的数据库表中设置一个与TenantId对应的字段tenant_id;获取登录用户对应的TenantId;将登录用户的TenantId及T[i]加载到系统缓存中可以提高访问速度,并且降低对系统和数据库的访问负载;S2、拦截登录用户对数据库进行操作的原始SQL脚本,从中解析得到内含的数据库表名Tx;所述S2中利用现有的过滤器技术拦截登录用户对数据库进行操作的原始SQL脚本;S3、判断Tx是否包含在T[i]中,若是,则在原始SQL脚本中包含的数据中添加与登录用户对应的tenant_id,生成修改后的SQL脚本;否则直接执行下一步;S4、执行SQL脚本,对数据库进行操作。上述步骤中:S2中获取SQL脚本中数据库表名Tx的步骤如下:S2-1、以“空格”为分割符,将原始SQL脚本分割为若干分段;S2-2、查找原始SQL脚本中下一个“FROM”关键字的位置;S2-3、判断“FROM”后面第一段SQL脚本是否为“(”,若是,执行步骤S2-5;否则跳至步骤S2-4;S2-4、判断“FROM”后面的第二段SQL脚本是否为“as”,若是,则“FROM”后面第三段SQL脚本为待查找的数据库表名;否本文档来自技高网...
【技术保护点】
1.一种工业软件多租户数据隔离的实现方法,其特征在于,包括以下步骤:/nS1、初始化,指定需要进行数据隔离的数据库表名,获得目标数据库表向量T[i];设定schema,在T[i]中所包含的数据库表中设置一个与TenantId对应的字段tenant_id;获取登录用户对应的TenantId;/nS2、拦截登录用户对数据库进行操作的原始SQL脚本,从中解析得到内含的数据库表名Tx;/nS3、判断Tx是否包含在T[i]中,若是,则在原始SQL脚本中包含的数据中添加与登录用户对应的tenant_id,生成修改后的SQL脚本;否则直接执行下一步;/nS4、执行SQL脚本,对数据库进行操作。/n
【技术特征摘要】
1.一种工业软件多租户数据隔离的实现方法,其特征在于,包括以下步骤:
S1、初始化,指定需要进行数据隔离的数据库表名,获得目标数据库表向量T[i];设定schema,在T[i]中所包含的数据库表中设置一个与TenantId对应的字段tenant_id;获取登录用户对应的TenantId;
S2、拦截登录用户对数据库进行操作的原始SQL脚本,从中解析得到内含的数据库表名Tx;
S3、判断Tx是否包含在T[i]中,若是,则在原始SQL脚本中包含的数据中添加与登录用户对应的tenant_id,生成修改后的SQL脚本;否则直接执行下一步;
S4、执行SQL脚本,对数据库进行操作。
2.根据权利要求1所述的工业软件多租户数据隔离的实现方法,其特征在于,所述S2中利用现有的过滤器技术拦截登录用户对数据库进行操作的原始SQL脚本。
...
【专利技术属性】
技术研发人员:张永文,杨磊,季东滨,李红勇,
申请(专利权)人:山东恒远智能科技有限公司,
类型:发明
国别省市:山东;37
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。