本申请提供了一种数据操作方法、服务器及计算机可读存储介质。该方法包括:接收数据操作请求;从数据操作请求解析出令牌,并根据令牌获取相对应的租户ID;将租户ID放入执行线程的上下文中;基于数据操作请求构建相应的数据库查询语句;获取并解析数据库查询语句,并确认相应的数据库表有租户ID字段;基于数据新增请求从执行线程的上下文中获取租户ID并设置到数据库表的租户ID属性中,或基于数据更新请求或数据读取请求将租户ID字段拼接到数据库查询语句的查询条件之中;调用数据库驱动来执行数据库查询语句。该方法以更低的购置成本、维护成本和开发成本实现了在按租户ID字段区分租户的多租户隔离的数据管理系统进行数据操作。操作。操作。
【技术实现步骤摘要】
数据操作方法、服务器和计算机可读介质
[0001]本申请主要涉及数据库
,尤其涉及一种数据操作方法、服务器及计算机可读存储介质。
技术介绍
[0002]在SaaS业务系统中,在一台或一组服务器上运行的SaaS系统可以为多个租户(客户)提供服务,多个租户在互联网环境下使用同一套程序。租户数据是集中存储的,因此需实现各租户间的数据隔离以保证数据的安全性。
[0003]为每个租户提供独立的数据库是SaaS多租户系统的数据隔离解决方案之一。这种方案的用户数据隔离级别最高,能够满足不同租户的独特需求,安全性最好且技术难度低。但由于该方案增多了数据库的安装数量,维护工作量大,开通租户时间长,且应用程序需要多部署,实现成本最高。
[0004]为每个租户提供独立的表空间是另一种SaaS多租户系统的数据隔离解决方案。这种方案的实现方式是所有租户共享同一个应用,应用后端只连接一个数据库系统,所有租户共享这个数据库系统,每个租户在数据库系统中拥有一个独立的表空间。也就是说,不同租户的数据存储在同一个数据库下,但使用不同的表。这种方案提供了一定程度的逻辑数据隔离,一个数据库系统可支持多个租户,隔离级别较高且技术难度较低。但该方案的维护工作量大,开通租户时间长,且应用程序需要多部署,实现成本较高。
[0005]因此,如何降低多租户隔离的数据管理系统的购置成本、维护成本和开发成本是本领域技术人员亟需解决的问题。
技术实现思路
[0006]本申请要解决的技术问题是提供一种数据操作方法、服务器及计算机可读存储介质,能够降低多租户隔离的数据管理系统的购置成本、维护成本和开发成本。
[0007]为解决上述技术问题,本申请提供了一种数据操作方法,适用于多租户隔离的数据管理系统,所述方法包括:接收客户端发送的数据操作请求,所述数据操作请求为数据新增请求、数据更新请求或数据读取请求,并包含待操作数据和请求者的令牌;从所述数据操作请求解析出所述令牌,并根据所述令牌获取与所述请求者相对应的租户ID;将所述租户ID放入执行线程的上下文中;基于所述数据操作请求构建与所述数据操作请求相对应的数据库查询语句,所述数据库查询语句包含所述待操作数据;获取并解析所述数据库查询语句,并根据所述数据库查询语句确认与所述数据操作请求相对应的数据库表有租户ID字段;当所述数据操作请求为所述数据新增请求时,基于所述数据新增请求从所述执行线程的上下文中获取所述租户ID并将所述租户ID设置到所述数据库表的租户ID属性中;当所述数据操作请求为所述数据更新请求或所述数据读取请求时,基于所述数据更新请求或所述数据读取请求将所述租户ID字段拼接到所述数据库查询语句的查询条件之中;以及调用数据库驱动来执行所述数据库查询语句。
[0008]在本申请的一实施例中,在所述获取并解析所述数据库查询语句的步骤前,该方法还包括:调用预设的执行器;以及所述执行器调用拦截器;所述获取并解析所述数据库查询语句,并根据所述数据库查询语句确认与所述数据操作请求相对应的数据库表有租户ID字段的步骤、以及所述基于所述数据新增请求从所述执行线程的上下文中获取所述租户ID并将所述租户ID设置到所述数据库表的租户ID属性中,或基于所述数据更新请求或所述数据读取请求将所述租户ID字段拼接到所述数据库查询语句的查询条件之中的步骤由所述拦截器执行。
[0009]在本申请的一实施例中,在所述调用预设的执行器的步骤前,该方法还包括:调用ORM框架;所述调用预设的执行器的步骤由所述ORM框架执行;所述执行器和所述拦截器属于所述ORM框架。
[0010]在本申请的一实施例中,所述与所述数据操作请求相对应的数据库表继承自预设的基础对象,所述基础对象适用于基于ORM框架的多租户隔离的数据系统。
[0011]在本申请的一实施例中,所述与所述数据操作请求相对应的数据库表与预设的元数据的映射关系通过预设的对象
‑
关系映射对象记录。
[0012]在本申请的一实施例中,所述根据所述数据库查询语句确认与所述数据操作请求相对应的数据库表有租户ID字段的步骤包括:根据所述数据库查询语句确认所述数据库表的元数据信息有所述租户ID字段。
[0013]在本申请的一实施例中,所述数据库驱动为Java数据库连接;所述调用数据库驱动来执行所述数据库查询语句的步骤包括:所述执行器调用所述Java数据库连接中与所述数据操作请求相对应的方法来执行所述数据库查询语句。
[0014]在本申请的一实施例中,所述调用数据库驱动来执行所述数据库查询语句的步骤还包括:
[0015]所述Java数据库连接在执行所述数据库查询语句后将执行结果返回给所述执行器。
[0016]为解决上述技术问题,本申请提供了一种服务器,用于多租户隔离的数据管理,所述服务器包括:存储器,用于存储可由处理器执行的指令;以及处理器,用于执行所述指令以实现如上所述的方法。
[0017]为解决上述技术问题,本申请提供了一种存储有计算机程序代码的计算机可读介质,所述计算机程序代码在由处理器执行时实现如上所述的方法。
[0018]与现有技术相比,本申请的数据操作方法、服务器及计算机可读存储介质根据令牌获取租户ID,然后通过上下文实现了租户ID的传递,对数据库查询语句进行与租户ID相关的修改,从而以更低的购置成本、维护成本和开发成本实现了在按租户ID字段区分租户的多租户隔离的数据管理系统进行数据操作。
附图说明
[0019]包括附图是为提供对本申请进一步的理解,它们被收录并构成本申请的一部分,附图示出了本申请的实施例,并与本说明书一起起到解释本申请原理的作用。附图中:
[0020]图1是根据本申请一实施例示出的一种多租户隔离的数据管理系统的结构示意图。
[0021]图2是根据本申请一实施例示出的数据新增和更新方法的示意流程图。
[0022]图3是根据本申请一实施例提供的一种公共的对象继承体系示意图。
[0023]图4是根据本申请一实施例提供的一种统一的内存元数据管理示意图。
[0024]图5是根据本申请一实施例示出的服务器的示意框图。
具体实施方式
[0025]为了更清楚地说明本申请的实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本申请的一些示例或实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图将本申请应用于其他类似情景。除非从语言环境中显而易见或另做说明,图中相同标号代表相同结构或操作。
[0026]如本申请和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其他的步骤或元素。
[0027]除非另外具体说明,否则在这些实施例中阐述的部件和本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种数据操作方法,适用于多租户隔离的数据管理系统,所述方法包括:接收客户端发送的数据操作请求,所述数据操作请求为数据新增请求、数据更新请求或数据读取请求,并包含待操作数据和请求者的令牌;从所述数据操作请求解析出所述令牌,并根据所述令牌获取与所述请求者相对应的租户ID;将所述租户ID放入执行线程的上下文中;基于所述数据操作请求构建与所述数据操作请求相对应的数据库查询语句,所述数据库查询语句包含所述待操作数据;获取并解析所述数据库查询语句,并根据所述数据库查询语句确认与所述数据操作请求相对应的数据库表有租户ID字段;当所述数据操作请求为所述数据新增请求时,基于所述数据新增请求从所述执行线程的上下文中获取所述租户ID并将所述租户ID设置到所述数据库表的租户ID属性中;当所述数据操作请求为所述数据更新请求或所述数据读取请求时,基于所述数据更新请求或所述数据读取请求将所述租户ID字段拼接到所述数据库查询语句的查询条件之中;以及调用数据库驱动来执行所述数据库查询语句。2.如权利要求1所述的方法,其特征在于,在所述获取并解析所述数据库查询语句的步骤前,还包括:调用预设的执行器;以及所述执行器调用拦截器;所述获取并解析所述数据库查询语句,并根据所述数据库查询语句确认与所述数据操作请求相对应的数据库表有租户ID字段的步骤、以及所述基于所述数据新增请求从所述执行线程的上下文中获取所述租户ID并将所述租户ID设置到所述数据库表的租户ID属性中,或基于所述数据更新请求或所述数据读取请求将所述租户ID字段拼接到所述数据库查询语句的查询条件之中的步骤由所述拦截器执行。3.如权利要求2所述的方法,其特征在于,在所述调用...
【专利技术属性】
技术研发人员:杨涛,陈诚,
申请(专利权)人:浙江太美医疗科技股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。