一种适用MongoDB数据库的多租户数据共享存储系统技术方案

技术编号:29489220 阅读:17 留言:0更新日期:2021-07-30 19:00
本发明专利技术公开了一种适用MongoDB数据库的多租户数据共享存储系统,包括客户端、服务端和网络传输模块;网络传输模块用于在客户端和服务端之间进行数据通信和数据传输;服务端用于根据处理后的数据库服务请求执行对应的数据库操作,并将请求结果返回至客户端;客户端用于提供数据的读写接口,以及将用户的数据库服务请求进行处理,通过网络连接将处理后的数据库服务请求发送至服务端,同时根据相应的数据格式和协议对服务端返回的请求结果进行解析并呈现给用户。本发明专利技术使用元数据管理和命名空间等机制相结合的方式进行实现了多租户对于数据库实例的共享,为了提供多个租户在共享使用同一个数据库实例时的数据隔离,保证了每个租户数据的完整性和安全性。

【技术实现步骤摘要】
一种适用MongoDB数据库的多租户数据共享存储系统
本专利技术涉及数据存储
,尤其涉及一种适用MongoDB数据库的多租户数据共享存储系统。
技术介绍
随着云计算技术的飞速发展和日趋成熟,SaaS服务在日常生产生活中的应用越来越广泛,数据库产品也开始了“上云”的道路。相比于数据库的本地部署,云数据库具有按需使用、高可用性、高扩展性和廉价性等优点,并且通过单实例多租赁的使用方式能够很大程度上降低中小企业和云服务提供商的运营成本,具有广阔的前景。而在数据库“上云”的过程中首先需要解决的就是多租户的共享和隔离问题,即如何保证在多个租户共享使用同一个数据库实例的情况下保证不同租户间数据的隔离。目前对于该问题的解决主要使用虚拟化技术进行云数据库部署,并且目前对于数据库多租户的研究仍然以传统的关系型数据库为主,对于NoSQL数据库多租户技术的研究较少。如申请号为CN202010139178.X的专利申请公开了一种多租户数据共享系统及其管理方法、数据库部署方法,能够实现将多租户的公共属性数据抽取出来,存储在第一数据库实例中的公共数据库中,租户的个性化和定制化数据作为私有数据存储在第二数据库实例中对应该租户的租户数据库中,虽然该方案使得多租户的数据能够有效隔离,但是不能实现多个租户在共享使用同一个数据库实例时的数据隔离,因此需要对存储系统做进一步改进。
技术实现思路
本专利技术的目的在于克服现有技术的不足,提供一种适用MongoDB数据库的多租户数据共享存储系统,基于MongoDB数据库设计并实现了一个支持多租户的数据库系统。本专利技术的目的是通过以下技术方案来实现的:一种适用MongoDB数据库的多租户数据共享存储系统,包括客户端、服务端和网络传输模块。其中,网络传输模块即网络IO,网络IO用于在客户端和服务端之间进行数据通信和数据传输;服务端用于根据处理后的数据库服务请求执行对应的数据库操作,并将请求结果返回至客户端。客户端用于为系统使用者提供数据的读写接口,以及将用户的数据库服务请求进行处理,通过网络连接将处理后的数据库服务请求发送至服务端,同时根据相应的数据格式和协议对服务端返回的请求结果进行解析并呈现给用户。本专利技术中,服务端包括租户管理模块、数据管理模块和服务调度模块。其中,租户管理模块用于为租户提供基本的租户信息访问、管理和修改功能,以及对客户端的连接请求进行权限验证。数据管理模块用于以共享数据库与独立数据模式的方式将每个租户的数据单独存储到每个租户自身的数据库中,并为每个租户提供逻辑独立的数据库服务。服务调度模块用于对客户端发送的多租户数据库服务请求进行解析,并根据解析结果动态调度数据库资源对多租户数据库服务请求进行响应。具体的,数据管理模块进一步划分为数据存储模块、数据访问模块、元数据管理模块、数据分布模块和网络通信模块。其中,数据存储模块负责租户数据隔离存储;数据访问模块负责为上层客户端提供数据库服务;元数据管理模块负责对租户数据进行管理维护;数据分布模块负责维持负载均衡;服务网络通信模块负责与客户端进行高效网络通信。服务调度模块的功能主要包括服务分类、服务暂存、服务调度和服务分发,根据功能可进一步将服务调度模块划分为服务分类子模块、服务暂存子模块、服务调度子模块和服务分发子模块。服务分类子模块用于在接收到客户端发来的各种数据库服务请求之后,对请求类型进行识别,按照数据库服务请求的服务类型和租户类型进行分类;服务暂存子模块将同一类型的数据库服务请求放到一个请求队列(调度队列)中;服务调度子模块根据当前的系统运行状态和请求排队情况,对调度队列中的数据库服务请求调度分配对应的数据库资源服务工作线程,并根据当前工作线程调度分配情况动态调整后续服务的工作线程数量;服务分发子模块用于根据数据库资源服务调度分配结果,将数据库服务请求分发至对应工作线程。本专利技术中,客户端具体包括用于数据库读写的数据库访问接口和用于与服务端进行通信和数据传输的客户网络通信模块。其中,数据库访问接口用于为用户提供MongoDB数据库的使用操作接口、调用接口,以及用户管理和权限管理接口。客户网络通信模块用于与服务端的服务网络通信模块进行交互,将用户的数据库服务请求进行封装,并将数据库服务请求格式按照预设固定格式序列化,然后将序列化后的数据库服务请求发送至服务端;并接收服务端返回的请求结果进行解包分析处理,以及将处理后请求结果返回给调用接口。本专利技术的有益效果:1.深入研究多租户数据库的设计方案和存储模式,根据多租户数据库、多租户数据隔离与共享的需求,提出一种基于元数据的数据存储架构,能够提供数据库多租户共享时的数据隔离,同时降低空间消耗。2.深入研究多租户共享时的服务调度策略,有效解决数据库多租户共享时的数据竞争问题;本专利技术基于已有的调度算法提出了基于租户类型的优先级调度算法,为不同类型的租户提供多样的调度策略,满足不同租户的资源需求。3.本专利技术设计了基于命名空间和元数据的多租户管理模块,有效解决数据库多租户共享使用中的各种冲突问题。附图说明图1是本专利技术实施例的系统功能逻辑架构图。图2是本专利技术实施例的系统整体架构图。图3是本专利技术实施例的基于namespace的租户管理模块结构示意图。图4是本专利技术实施例的基于角色的用户管理模块结构示意图。图5是本专利技术实施例的数据存储模式图。图6是本专利技术实施例的数据管理模块的功能模块图。图7是本专利技术实施例的服务调度模块逻辑架构图。图8是本专利技术实施例的客户端功能模块图。图9是本专利技术实施例的租户和用户数据结构图。图10是本专利技术实施例的用户信息修改流程图。图11是本专利技术实施例的租户管理模块关键类图。图12是本专利技术实施例的数据存储结构图。图13是本专利技术实施例的Record结构图。图14是本专利技术实施例的数据服务处理流程图。图15是本专利技术实施例的数据管理主要类图。图16是本专利技术实施例的两种数据分片方式图。图17是本专利技术实施例的服务调度框架图。图18是本专利技术实施例的服务调度处理流程图。图19是本专利技术实施例的服务调度主要类图。图20是本专利技术实施例的客户端主要功能接口设计图。图21是本专利技术实施例的客户端数据插入流程图。具体实施方式为了对本专利技术的技术特征、目的和效果有更加清楚的理解,现对照附图说明本专利技术的具体实施方式。本专利技术中,如图1所示,一种适用MongoDB数据库的多租户数据共享存储系统,包括客户端、服务端和网络传输模块。其中,网络传输模块即网络IO,网络IO用于在客户端和服务端之间进行数据通信和数据传输;服务端用于根据处理后的数据库服务请求执行对应的数据库操作,并将请求结果返回至客户端。客户端用于为系统使用者提供数据的读写接口,以及将用户的数据库服务请求进行处理,通过网络连接将处理后的数据库服务请求发本文档来自技高网...

【技术保护点】
1.一种适用MongoDB数据库的多租户数据共享存储系统,其特征在于,包括客户端、服务端和网络传输模块;其中,网络传输模块用于在客户端和服务端之间进行数据通信和数据传输;/n服务端用于根据处理后的数据库服务请求执行对应的数据库操作,并将请求结果返回至客户端;/n客户端用于为系统使用者提供数据的读写接口,以及将用户的数据库服务请求进行处理,通过网络连接将处理后的数据库服务请求发送至服务端,同时根据相应的数据格式和协议对服务端返回的请求结果进行解析并呈现给用户。/n

【技术特征摘要】
1.一种适用MongoDB数据库的多租户数据共享存储系统,其特征在于,包括客户端、服务端和网络传输模块;其中,网络传输模块用于在客户端和服务端之间进行数据通信和数据传输;
服务端用于根据处理后的数据库服务请求执行对应的数据库操作,并将请求结果返回至客户端;
客户端用于为系统使用者提供数据的读写接口,以及将用户的数据库服务请求进行处理,通过网络连接将处理后的数据库服务请求发送至服务端,同时根据相应的数据格式和协议对服务端返回的请求结果进行解析并呈现给用户。


2.根据权利要求1所述的一种适用MongoDB数据库的多租户数据共享存储系统,其特征在于,所述服务端包括租户管理模块、数据管理模块和服务调度模块;其中,租户管理模块用于为租户提供基本的租户信息访问、管理和修改功能,以及对客户端的连接请求进行权限验证;
数据管理模块用于以共享数据库与独立数据模式的方式将每个租户的数据单独存储到每个租户自身的数据库中,并为每个租户提供逻辑独立的数据库服务;
服务调度模块用于对客户端发送的多租户数据库服务请求进行解析,并根据解析结果动态调度数据库资源对多租户数据库服务请求进行响应。


3.根据权利要求2所述的一种适用MongoDB数据库的多租户数据共享存储系统,其特征在于,所述数据管理模块具体包括数据存储模块、数据访问模块、元数据管理模块、数据分布模块和网络通信模块;其中,数据存储模块用于租户数据隔离存储;数据访问模块用于为上层客户端提供数据库服务;元数据管理模块用于对租户数据进行管理维护...

【专利技术属性】
技术研发人员:侯孟书陈志磊宋元凤周世杰
申请(专利权)人:电子科技大学
类型:发明
国别省市:四川;51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1