CN113190529B - 一种适用MongoDB数据库的多租户数据共享存储系统 - Google Patents
一种适用MongoDB数据库的多租户数据共享存储系统 Download PDFInfo
- Publication number
- CN113190529B CN113190529B CN202110474219.5A CN202110474219A CN113190529B CN 113190529 B CN113190529 B CN 113190529B CN 202110474219 A CN202110474219 A CN 202110474219A CN 113190529 B CN113190529 B CN 113190529B
- Authority
- CN
- China
- Prior art keywords
- data
- tenant
- database
- service
- module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000002955 isolation Methods 0.000 claims abstract description 32
- 238000000034 method Methods 0.000 claims abstract description 31
- 238000004891 communication Methods 0.000 claims abstract description 23
- 238000012545 processing Methods 0.000 claims abstract description 15
- 230000005540 biological transmission Effects 0.000 claims abstract description 14
- 230000007246 mechanism Effects 0.000 claims abstract description 9
- 238000007726 management method Methods 0.000 claims description 113
- 238000013500 data storage Methods 0.000 claims description 36
- 238000003860 storage Methods 0.000 claims description 35
- 238000013523 data management Methods 0.000 claims description 31
- 230000008569 process Effects 0.000 claims description 27
- 238000009826 distribution Methods 0.000 claims description 22
- 238000012986 modification Methods 0.000 claims description 18
- 230000004048 modification Effects 0.000 claims description 18
- 238000013507 mapping Methods 0.000 claims description 11
- 238000012795 verification Methods 0.000 claims description 5
- 238000004458 analytical method Methods 0.000 claims description 4
- 238000004806 packaging method and process Methods 0.000 claims description 4
- 230000002776 aggregation Effects 0.000 claims 1
- 238000004220 aggregation Methods 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 25
- 238000013461 design Methods 0.000 description 16
- 238000012217 deletion Methods 0.000 description 4
- 230000037430 deletion Effects 0.000 description 4
- 241001178520 Stomatepia mongo Species 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 238000000638 solvent extraction Methods 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 238000007792 addition Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000002860 competitive effect Effects 0.000 description 2
- 238000013467 fragmentation Methods 0.000 description 2
- 238000006062 fragmentation reaction Methods 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000003032 molecular docking Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000013138 pruning Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/211—Schema design and management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2291—User-Defined Types; Storage management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
- G06F16/285—Clustering or classification
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种适用MongoDB数据库的多租户数据共享存储系统,包括客户端、服务端和网络传输模块;网络传输模块用于在客户端和服务端之间进行数据通信和数据传输;服务端用于根据处理后的数据库服务请求执行对应的数据库操作,并将请求结果返回至客户端;客户端用于提供数据的读写接口,以及将用户的数据库服务请求进行处理,通过网络连接将处理后的数据库服务请求发送至服务端,同时根据相应的数据格式和协议对服务端返回的请求结果进行解析并呈现给用户。本发明使用元数据管理和命名空间等机制相结合的方式进行实现了多租户对于数据库实例的共享,为了提供多个租户在共享使用同一个数据库实例时的数据隔离,保证了每个租户数据的完整性和安全性。
Description
技术领域
本发明涉及数据存储技术领域,尤其涉及一种适用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用于在客户端和服务端之间进行数据通信和数据传输;
服务端用于根据处理后的数据库服务请求执行对应的数据库操作,并将请求结果返回至客户端。
客户端用于为系统使用者提供数据的读写接口,以及将用户的数据库服务请求进行处理,通过网络连接将处理后的数据库服务请求发送至服务端,同时根据相应的数据格式和协议对服务端返回的请求结果进行解析并呈现给用户。
本实施例中,多租户数据共享存储系统是基于原生的MongoDB数据库实现的多租户数据库系统,原生的MongoDB数据库为传统的客户端-服务器架构,服务端负责监听和管理来自客户端的网络连接请求,并根据客户端的操作请求执行相应的数据库查询等操作,并将操作结果返回给客户端。
为了实现多租户的共享与隔离,本系统需要对原有的客户端和服务器功能进行相应的修改,添加用于数据隔离、租户管理和服务调度的功能模块。本实施例将从从服务端和客户端两个方面分别阐述系统的功能特点和工作原理。
本实施例的系统整体架构如图2所示,为了提供对数据库多租户共享功能的支持,服务端需要实现三个主要的功能模块,分别是租户管理模块、数据管理模块和服务调度模块。为了能够为每个租户提供感知上的独占数据库的使用体验,服务端需要在租户使用数据库服务的使用对该租户之外的数据、租户等信息进行屏蔽,为了满足租户多样的数据库使用需求和访问权限控制,服务端的租户管理模块需要对租户的角色创建等操作进行管理,并提供一些必要的验证机制保障租户对于该数据库的正确使用。
而数据管理模块则是实现多租户共享同一数据库实例的核心功能模块。该模块使用共享数据库、独立数据模式的方式实现了将多个租户数据存储到同一个MongoDB数据库实例,并且为每个租户提供近似于使用独立的MongoDB数据库的体验,同时使用命名空间和元数据管理的方式为多个租户数据之间的隔离提供保障,并且通过为每个租户分配一个名字空间的方式避免了在多个租户创建相同名称的数据库、集合时的命名冲突问题。节省了数据存储过程中的存储开销,提高了对于底层资源的利用率,有效的降低了成本。
最后的一个服务调度模块则是根据一定的策略对客户端发来的各种数据库请求进行合适的调度,以便尽可能保证多个租户共享时对于数据库服务资源的公平竞争,同时在调度过程中又对不同的租户类型加以考虑,更加符合云环境中的按需付费模式。
本实施例中,租户管理模块对MongoDB现有的基于角色的用户管理之上添加了对于多租户功能的支持,租户是一个比用户更大的概念,租户内部可以创建总多用户,并对这些用户进行相应的权限控制和属性修改等。而多个租户在使用过程中不可避免的可能会出现相同的用户名,例如租户A创建了一个名为test的用户,之后租户B又想创建一个名字相同的用户。如果不采取一定的策略,租户B在创建用户test的时候就会出现用户名已存在的数据库报错,而这是多租户数据库应该具有的功能。
为了解决上面的问题,并且提供高效便捷的租户管理功能,租户管理模块采用了基于namespace的管理方式。
如图3所示,租户管理模块采用namespace的管理方式,为每个租户分配一个名字空间,每个租户的所有用户都保存在他自己的名字空间内部,从而避免了前面提到的名字冲突等问题。同时采用这种基于命名空间的租户管理方式,能够将每个租户的信息单独管理,从而进一步提高了租户之间的信息隔离程度。
为了能够为租户提供更为多样化的用户管理服务,租户管理模块还提供了图4所示的基于角色的管理机制,允许租户创建不同角色的用户,为这些用户赋予不同的数据库使用权限。
此外,租户管理模块还负责对客户端的连接请求进行权限验证,根据客户端所属租户以及对应角色的权限对该请求进行相应的处理,保障整个数据库访问过程中的数据安全。
本实施例中,服务的的核心功能模块就是数据管理模块,该模块主要是对多租户数据存储过程和数据存储架构的设计,以保证多租户数据的共同存储以及数据隔离,并且提供相应的多租户数据库访问服务。数据管理模块的核心需求就是实现将多个租户的数据共同存储到同一个MongoDB实例程序,为每个租户提供逻辑上独立的数据库服务,同时还要在租户进行数据访问时提供多租户数据的隔离保障以及数据安全性保障,而这也是本实施例系统的一个核心工作点。数据管理模块采用共享数据库、独立数据模式的方式对多租户的数据进行存储管理,将每个租户的数据单独存储到每个租户自己的数据库、表之中,其数据存储模式如图5所示。
在多租户数据存储的过程中,所有的租户都共享同一个底层MongoDB数据库实例程序,但是每个租户都有自己单独的数据模式,即每个租户都有自己单独的数据库Schema设计,每个租户都可以根据自己的业务类型和数据结构特点设计更加符合需要的数据库、表等结构,在进行数据存储时将自己的数据存储到自己的Schema的数据库、表之中。如图5所示,租户1的数据都被保存在左侧的一系列数据库表中,租户2的数据都被保存到中间的一系列数据库表中,这些数据库表都存储在同一个MongoDB之中,但是通过数据管理模块的设计和管理,为这些数据提供了可靠的隔离手段,保障了不同租户数据之间的隔离性,为每个租户都提供了独立的数据库服务。
上述对多租户数据存储模式的设计完成了多租户数据共享实例存储的功能,除此之外数据管理模块作为多租户MongoDB数据库系统的核心数据管理组件,还需要为上层的客户端提供各种数据库读写请求,能够正确解析处理客户端发来的各种请求,还需要对接更下层的数据存储实现,能够为数据存储过程中的副本管理以及整个数据库系统在进行数据存储时的负载均衡提供一定的管理和维护。
因此整个服务的的数据管理模块需要具备以下几个主要功能模块,包括负责租户数据隔离存储的数据存储模块、负责为上层客户端提供数据库服务的数据访问模块、负责对租户数据进行管理维护的元数据管理模块、负责维持负载均衡的数据分布模块以及负责高效网络通信的网络通信模块。
整个数据管理模块的功能模块图如图6所示。其中,数据存储模块:该模块实现了多租户数据的共享数据库、独立数据模式的数据存储,并为不同租户的数据提供相应的数据隔离策略,提供了逻辑上完全独立的数据库使用体验。当租户第一次使用数据库服务的时候,数据存储模块会为该租户初始化一个独立的数据模式等数据,并将将该租户所有的数据库、表等数据绑定到该租户的数据库模式中,提供一个逻辑独立的数据库存储服务。
数据访问模块:该模块主要是为每个租户提供数据库访问服务,通过一定的策略和元数据控制信息保障了在多个租户共同进行数据库访问时的正确性和隔离型,避免了由于意外访问或者恶意访问导致的租户数据泄露等情况的发生。
元数据管理模块:本实施例的数据库系统为每个租户都设计一个单独的数据模式,将租户的数据单独保存到一系列的数据库表中,为了在数据存储以及数据访问过程中方便进行管理维护,服务端采取了基于元数据控制的管理方案。
元数据管理模块记录了整个系统中所有租户的元数据信息,包括了租户与数据模式的映射关系、租户所创建的数据库、集合信息等多种元数据信息,主要为租户数据存储和数据访问过程中提供各种必要的控制信息。
数据分布模块:数据副本是整个数据库系统高可用性的保障,也是提高分布式系统容错性的常用方式。本实施例的多租户MongoDB数据库系统采用常用的三副本备份的方式保障系统的高可用性以及租户数据的安全性,利用MongoDB本身自带的一些机制进行整个数据库系统在进行数据存储过程中的数据分发,将所有的数据划分成合适大小的chunk数据块,根据一定的策略放置这些数据块,保障整个数据库在数据存储过程中的存储均衡,避免了因热点问题导致的瓶颈问题,从而在一定程度上提高整个系统的性能。
本实施例设计的多租户MongoDB数据库系统是对原生的MongoDB数据库进行适当改造,为其添加了对多租户的支持,实现了多个租户共享使用同一个MongoDB数据库实例的功能。在多租户共享同一数据库实例的过程中,由于每个租户业务类型和业务场景的不同,以及每个租户对于数据库功能要求的不同肯定会有各种各样的数据库访问请求。为了使所有的租户请求都能够及时的得到相应,提供对于数据库资源的公平竞争使用,该系统就需要提供服务调度的一系列功能,而这就是服务端的服务调度模块的主要工作。
如图7所示,服务端使用服务调度模块来对租户的数据库服务请求进行调度,整个服务调度模块具有了多种功能,包括服务分类、服务暂存、服务调度和服务分发,这些子功能模块之间相互协调配合共同完成对租户数据库服务请求的调度工作。
接收到客户端发来的各种数据库服务请求之后,服务调度模块首先会利用服务分类功能对这些服务进行分类,按照这些请求的服务类型和租户类型进行分类,将同一类型的服务请求放到一个调度队列之中,通过调度队列的方式能够很好的将整个服务调度过程解耦,同时利用队列的缓冲功能能够有效的缓解某一时刻的访问高峰问题,有助于提高整个系统的稳定性。而后服务调度模块会根据当前的系统运行状态和请求排队情况对队列中的服务请求进行服务调度和服务分发,并根据当前情况动态调整后续工作线程数量,实现对客户端请求的动态调度,解决多租户的资源共享和竞争问题。
本实施例中,和功能复杂的服务端不同,客户端的功能相对比较简单,客户端只是为租户提供一个本数据库系统的使用入口,为使用者提供必要的用户管理和数据读写接口,同时负责将用户请求发送到服务端。因此本实施例的多租户MongoDB数据库系统的客户端主要包含了用于数据库读写的数据库访问接口和用于与服务端进行通信和数据传输的网络通信模块,客户端功能如图8的功能模块图所示,其中,数据库访问接口是用户使用该多租户MongoDB数据库系统的入口,主要有各种功能接口API组成,其中包括了一些基本的数据库使用操作,比如基本的数据添加、查询、更新和删除等,以及对于数据库、数据表的创建和删除等管理功能。除了这些数据访问接口之外,数据库访问接口还为每个租户提供了基础的用户管理和权限管理等一系列数据库功能接口。
而网络通信模块则是提供了与服务端的网络交互,负责将用户的数据库读写等请求进行封装,将其按照固定格式序列化为正确的网络传输格式,然后将请求发送给服务端,并对接收到的服务端的返回结果进行解包处理以及将请求结果返回给调用接口等。
为了进一步对本实施例多租户数据共享存储系统的工作原理和优点进行说明,下面将对本系统是如何在服务端实现了多租户的共享和数据隔离以及如何对租户的服务请求进行调度实现作进一步阐述。
租户管理模块是本系统中用于租户进行租户信息修改、用户管理的一个功能模块,主要负责管理和维护租户层级的创建、销毁以及各种属性修改工作,对于较低一层的用户层级,租户管理模块需要提供多个租户之间的用户隔离和权限隔离,以及为更高一级的租户提供相应的用户管理和权限控制等功能,最后该模块还需要实现租户在使用数据库过程中的各种安全认证等功能。因此租户管理模块需要具备租户管理、用户管理、权限控制和安全认证等功能。
为了在多租户并存的系统中实现对租户和用户的高效管理,首先要解决的就是对不同的租户和属于该租户的用户加以区分,从逻辑层面进行适当的隔离。为了实现这一功能,租户管理模块使用命名空间的方式对不同的租户进行逻辑隔离和管理。为了能够更加高效快速的定位到每一个租户的信息位置,租户管理模块通过哈希函数的方式进行管理,将所有的租户信息组织成一个Map结构,将租户信息组织成类似于<tenantID,enantInfo>这样的键值对结构,能够很方便的通过这种映射关系找到所要修改的租户信息。由于所有的数据都被保存在Map数据结构中,而map的底层实现是比较高效的哈希方式或者是红黑树方式,因此对于租户信息的访问和修改只需要通过相应的哈希算法就可以直接映射到对应的哈希桶中,获得该租户的详细信息,对租户信息的管理就可以实现O(1)的时间复杂度,具有极高的管理效率。
除了提供基础的租户创建和修改等功能之外,租户管理模块还需要具备租户内部的用户管理等功能,提供每个租户内部的数据库用户和权限管理。租户内部的所有角色信息都保存在了上面描述的tenantInfo数据结构内,对于用户管理的部分则采用了基于角色的管理方式,为每种角色赋予相应的数据库使用权限,将每个用户划分到对应的角色集合,能够大大简化租户内部对于角色和权限的管理。
基于上述对于租户和用户管理的设计描述,租户管理模块将租户信息和用户信息设计成了如图9所示的数据结构。
租户管理模块为每一个租户分配一个独立的名字空间,该名字空间以租户ID或者租户的名称命名,并且将每个租户的所有信息封装成tenantInfo数据结构,两者之间通过哈希映射的方式进行绑定,形成了树状的数据结构。每个租户的tenantInfo数据中既包含了一些如租户类型等基本信息之外还包含了该租户下的所有用户信息,而用户信息的组织方式与租户信息的组织方式类似,也是通过哈希映射的方式实现了用户ID和用户数据之间的关联,每个用户数据都包含了与该用户相关的必要信息,如用户名、用户类型、用户所属的角色、用户密码等数据。整个的租户数据和用户的数据信息构成了一个两层的树状结构,中间通过哈希映射的方式实现数据关联,能够十分高效的定位到某个租户和某个用户的数据结构,完成相应的管理工作,同时由于树状结构的特点,所有分支中的数据都不会互相干扰,能够很好的实现不同租户之间的用户隔离。
双层的树状结构实现了对租户数据和用户数据的高效组织和访问,第一层的map结构Tenants保存了所有租户的信息,通过租户ID能够十分快速的定位到该租户的对应的数据结构,当有新的租户使用该数据库系统的时候,就可以为该租户分配一个新的名字空间,并在Tenants中添加一条新的记录,并进行对应的初始化操作。倘若要对租户中的某个用户信息进行修改,则只需要通过租户ID找到对应的租户数据结构tenantInfo结构,在tenantInfo中的用户表中就可以根据用户名称快速定位到该用户的数据结构userInfo,然后根据自己的需要对其进行修改等操作。双层哈希表的结构既能实现对于租户信息的隔离控制,又能够实现十分高效快速的信息访问服务。
基于上面的数据结构和描述,当需要对租户tenant1下面的用户user1的用户类型进行修改时,首先需要根据租户名称tenant1在Tenants中查找对应的哈希结构,得到该租户的数据控制块tenantInfo结构,然后得到该租户下所有的用户集合users_,为了数据访问的高效性,users_也被组织成哈希map的结构,用于加快对用户数据的查询与定位。然后需要判断要修改的用户user1是否存在,如果不存在则需要进行相应的错误处理与反馈,否则得到该用户的数据控制块userInfo,随后按照要求修改对应的租户类型字段,然后将处理结果反馈给客户端。整个修改流程如下图10所示。
除了上述的租户管理和用户管理,租户管理模块还需要提供权限控制和安全认证的功能。安全认证主要用于在客户端初始化数据库连接时对该用户进行用户识别和登陆认证,保证整个数据库的安全访问;而权限控制则是在用户使用数据库的过程中提供相应的数据库权限管理,避免造成意外的数据访问和越权行为等,而这些都可以通过对租户数据块tenantInfo和用户数据块userInfo的合理设计和数据访问完成。
根据上述对于租户管理模块设计和处理流程的描述,最终所实现的该功能模块的类图如图11所示,图中展示了实现租户管理模块的六个关键类图,其中TenantMangager是用于进行租户管理、用户管理、权限管理等功能的接口类,为租户管理模块提供了必要的添加、修改和删除等函数,使用一个map结构记录了数据库中的租户数据;每个map的值都是一个实例化的租户数据结构TenantHandle,里面提供了用于对当前租户的各种访问和修改函数,具体的租户数据保存在TenantInfo结构之中;最底层的用户数据则被保存在UserInfo结构之中,通过UserHandle提供了对用户数据的访问和修改接口。
本实施例中,数据管理模块是整个服务端的一个核心功能模块,该模块实现了多租户数据在同一个MongoDB数据库实例的共享存储,同时提供了租户之间数据的隔离性和安全性等保障。本实施例最终要实现的是一个能够支持多租户的MongoDB数据库系统,最核心的要求就是共享底层的MongoDB数据库实例,为所有租户提供可靠的数据存储服务,同时为了保障每个租户数据的完整性和安全性,数据管理模块还需要提供一定的数据隔离和数据访问控制机制,从逻辑层面保证租户之间的数据隔离,最后为了提高整个系统的整体服务性能以及可用性还需要具有一定的负载均衡能力,能够有效的对于数据的分布存储做出调整。
为了实现多租户数据的共享和隔离存储,数据管理模块使用了前面实施例中所述的共享数据库、独立数据模式的数据存储模式,为每个租户创建一个单独的数据模式(Schema),将所有该租户相关的数据库、表都存储到该数据模式下。本系统设计的多租户数据库系统允许每个租户创建多个数据库(database)和集合(collection,类似于mysql中的表),而这些数据库都存储在同一个MongoDB数据库实例程序中,为了避免命名冲突的发生,数据管理模块为租户定义的数据库名添加相应的唯一性前缀,即租户tenant1创建的数据库mydb的真实存储名称为tenant1_mydb。而为了保证租户看到的数据库名称仍然为mydb以及更加快捷高效的进行租户数据访问和对租户数据的管理,数据管理模块使用基于元数据控制的管理方式,将租户数据的各种元数据信息统一管理,整体的实现架构如图12所示。
其中的元数据集合记录了数据库中所有租户数据的元数据信息,元数据信息由多条记录Record组成。每条Record都包含了基本的租户名(tenant)、创建用户(user)、呈现给用户的逻辑名称(logic_name)、保存到数据库中的真实名称(physical_name)以及该数据库中包含的集合数量(col_nums)信息,Record结构如图13所示。
元数据为数据管理模块提供了用于进行租户数据管理和提供数据访问服务的诸多元数据信息,能够很快速的根据客户端服务请求中的租户标识和数据库名称找到真实存储在数据库中的物理数据库,并提供相应的数据库读写服务。
基于以上的设计和数据结构,服务端处理客户端的数据库服务请求的流程如图14所示。接收到客户端发来的数据库访问请求之后,首先会对该请求进行解析和识别,然后会对发起该请求的用户以及所属的租户进行安全检验,判断该请求是否为合法的数据库访问请求。通过检验之后会从解析后的请求体中获取该用户的租户标识(tenant)和要访问的逻辑数据库名称(logic_name)字段,根据元数据信息查询得到对应的数据库物理名称,随后则会对其进行相应的权限认证,判断是否具有访问该数据库的正确权限,权限验证通过之后就可以对其进行数据访问,执行客户端发来的请求并将执行结果发送给对应的客户端,否则则是进行相应的处理,并向客户端反馈结果。
根据上述的设计和处理流程,数据管理模块的具体实现如图15所示。租户的数据管理和数据访问功能主要由以上几个关键类实现,其中的DataManager类提供了用于进行前期处理的各种功能,包括对客户端请求的解析、物理数据库的获取和各种安全和权限认证等功能;MetaDataHandle类则提供了对于所有租户元数据信息的一些访问接口,能够为DataManager提供各种必要的元数据信息访问服务;而所有的数据库操作和数据访问则由DbOperation类完成,提供了基础的数据库、集合的创建删除功能,以及数据的增删改查等数据读写服务。
除了实现租户数据的存储和隔离,在底层的数据存储过程中还需要对数据的均衡分布进行一定的管理和维护,由于本系统的实现过程中为每个租户提供单独的数据模式,将每个租户的数据都保存到属于自己的数据集合之中,因此可以很好的利用底层的分片机制为每个租户提供数据均衡分布的功能。
为了便于进行数据的管理,底层数据存储以较小的数据块——chunk为基本存储单位,通过一定的映射方式实现数据块和分片节点的关联,并将数据块保存到对应的数据存储节点上面。为了能够应对不同的数据访问需求,数据的分片映射方式有如图16所示的两种方式。在对数据进行chunk划分的时候可以采取上述图中的两种方式。图16的左边部分提供了基于范围的数据分片方式,根据集合中指定的的某个片键字段X,将X的取值空间进行合适的分割,将集合中的文档按照X值分割到对应的范围,形成一个个的数据chunk,然后根据一些合理的映射规则将这些数据chunk分散存储到多个数据节点上面,使每个租户的数据都能够尽可能的均匀分散到所有的数据节点上面,避免了数据访问时的热点问题。而图16的右边部分所示的基于哈希函数的数据分片方式与基于范围的分配方式类似,只是在前面添加了一层哈希函数的转换过程,将原来的基于X取值空间的分割方式转换为了基于hash(x)的取值空间的数据分割,后面的过程就和基于范围的数据分割方式相同。
这两种数据分割方式能够适合不同的数据访问场景,基于范围的数据分割方式能够将相邻的数据放到同一个数据存储节点上面,有利于对数据的范围查询和访问;而基于哈希函数的数据分割方式通过哈希转换的方式将数据尽可能的随机打散,能够使数据在存储节点上面的分布更加均衡,但是也因此导致了对数据的范围访问需要涉及到更多的存储节点,导致性能有所下降。
本实施例中,服务端的服务调度模块实现了对各种服务资源的统一管理和调度,保障了多个租户对于这些资源的公平竞争使用,一定程度上提高了系统的整体服务质量和性能表现。服务调度模块采用了多级分类的请求管理方式,根据客户端请求的服务类型以及租户类型对到来的请求进行分类管理,保存到对应的请求队列之中,调度模块根据当前的队列情况和可用资源情况对这些请求进行调度处理,整个调度处理框架如图17所示。
接收到客户端发来的服务请求之后,服务调度模块首先会对该请求进行识别,根据请求的类型将这些分为租户信息管理、数据库信息修改、数据访问等多种请求类型。
租户信息管理请求主要是对租户信息的修改以及对租户内用户信息的各种管理操作,包括基础的租户创建和类型变更、用户的创建和删除以及用户数据访问权限的管理等请求;而数据库信息修改则是一些关于数据库表元数据信息的修改以及较高层面的数据库操作请求等,比如开启某个数据库和集合的分片功能、创建新的数据库和集合等操作;而数据访问类型的请求主要是对于数据的各种读写请求,比如基础的数据增删改查,这些请求通常是比较耗费时间且对性能要求较高的请求。
对所有的请求按照类型进行划分之后,为了符合不同租户的使用需求,服务调度模块会对每一类的请求进行二次分类,按照发起请求的租户类型进行分类,最终放到不同的请求队列之中。为了高效的对这些请求进行处理,每种类型的请求都会有对应的请求处理线程池负责处理该类的所有请求,服务调度模块会根据该类型的请求排队情况以及该类型可用服务资源(空闲线程数量)对队列中的请求进行动态调度。
这种分类管理和动态调度的方式实现了对数据库服务资源的高效管理和共享使用,基于上述的服务调度设计,整个服务调度流程如图18所示。
为了能够实现上面所描述的对于客户端请求的分类调度和对于各种资源的分类管理,在实现整个服务调度模块的过程中需要设计不同的调度类和资源管理类,图19展示了实现服务调度功能的关键类图。上图19是实现整个服务掉服务调度程序的核心代码类,其中RequestSchedule类提供了用于服务调度和请求分类管理的基本功能,能够对所有到来的客户端请求进行分类,按照请求的服务类型分类成租户信息管理、数据库信息修改、数据访问这三种基本类型,而每一类型的请求都被封装到一起保存在Requests类里面。
在Requests类的内部又对所有的请求进行了二次分类,按照租户的类型分成了具有不同优先级的请求队列,保存在requests_数组中。当出现新的可用空闲资源时,Requests类的NextTaskToDispatch()函数根据队列优先级按照一定的比例选择某个队列,在队列内部按照先来先服务的原则选出下一个可以执行的请求。为了能够对这三种类型的请求进行分别管理以便实现高效的服务调度,从RequestManager类派生出了分别管理相应类型的客户端请求的代码类:TenantManageRequestManager、DbModifyRequestManager和DataAccessRequestManager,分别实现对租户信息管理、数据库信息修改、数据访问类型的请求的管理和调度。
本实施例中,系统是一个带有多租户功能的数据库系统,需要为用户提供使用本系统的客户端,客户端提供了基本的数据库连接功能,还提供了在多租户环境下的租户管理、数据库管理和数据访问等功能接口。客户端的一些主要接口设计如图20所示。
如图20所示,客户端提供了基本的数据库系统连接(Connect)、登陆(Login)和关闭(Close)功能,为了实现多租户场景下的数据库使用,相比于传统的数据库用户管理接口,客户端提供了基于租户的用户管理功能,能够实现租户和租户内部用户的创建、修改和删除等功能,同时允许租户在创建属于自己的数据库和集合(CreateDatabase、CreateCollection),并进行相应的修改和删除功能。除了这些用于进行租户管理和数据管理的功能接口之外,客户端还提供了Find、Insert、Update和Delete这四个基本的数据读写接口,提供对数据的增删改查功能。
租户在使用数据库功能的时候首先需要连接到数据库系统,在通过权限认证之后就可以像使用本地的数据库系统一样进行数据的读写了,并且租户之间的数据和对这些数据的读写都是相互隔离的。下面的流程图21展示了租户A下面的用户test向数据库mydb中的集合col插入一条新纪录r的过程。
和上图所描述的数据插入流程类似,用户连接到数据系统之后,首先需要进行相应的登陆认证,只有在成功通过认证之后才可以使用图20中各种数据库访问功能,进行基本的角色管理和数据读写。
本发明在传统的基于优先级的调度策略的基础之上添加了分类管理的策略,对租户的请求进行分类,然后再进行调度,提高了对于多租户管理服务资源的高效使用,很好的支持了对于该系统的并发访问,提高了整个系统的可用性,系统满足以下的性能需求:
1)系统具有良好的数据读写性能。对于数据的读写是一个数据库系统所要具备的基本功能,也是数据库日常使用中最常使用的数据库功能,因此本系统必须要具备良好的数据读写性能,提供较低的数据读写延迟。本发明是基于MongoDB实现的一个多租户数据库系统,在原生MongoDB数据库功能的基础上添加了租户管理、数据隔离、服务调度等功能,在原有数据读写之外需要进行额外的元数据读写阶段,因此本系统在数据库的读写性能方面可能会弱于原生的MongoDB数据库,但是最终的性能表现应接近原生的MongoDB数据库的使用体验和数据库读写性能。
2)系统具有良好的弹性扩展能力。本系统是一个能够支持多租户使用的数据库系统,随着每个租户数据量的增多和租户数量的增加,本系统有可能会出现存储容量不足的风险,并且在云服务场景中可能会出现租户购买更多存储空间的可能,因此本系统需要具有良好的弹性扩展能力,满足动态变化的存储需求。
3)确保租户数据的可靠性。作为一个可靠的数据库系统,本系统不能仅仅依靠优秀的硬件设备来保证租户数据的可用性和可靠性,还需要在软件层面提供一定的数据保障。因此本系统将采用副本复制的冗余机制,并将副本放置到多个节点上面的方式提高数据的可靠性,在某个节点故障的时候仍然提供可靠的数据访问功能。
4)系统具有良好的可用性。最终实现的多租户数据库系统应该是健壮的,能够稳定的为用户提供服务的。当集群中有节点发生宕机等故障的时候,系统需要提供相应的机制,能够实现在无需人工干预的情况下系统的自动修复或者及时通知系统的管理人员,并且能够在短时间内就恢复正常的数据访问服务。
以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护的范围由所附的权利要求书及其等效物界定。
Claims (3)
1.一种适用MongoDB数据库的多租户数据共享存储系统,其特征在于,包括客户端、服务端和网络传输模块;其中,网络传输模块用于在客户端和服务端之间进行数据通信和数据传输;
服务端用于根据处理后的数据库服务请求执行对应的数据库操作,并将请求结果返回至客户端;所述服务端包括租户管理模块、数据管理模块和服务调度模块;其中,
租户管理模块用于为租户提供基本的租户信息访问、管理和修改功能,以及对客户端的连接请求进行权限验证;所述租户管理模块采用namespace的管理方式,为每个租户分配一个名字空间,每个租户的所有用户都保存在他自己的名字空间内部,以避免名字冲突;租户管理模块为每一个租户分配一个独立的名字空间,该名字空间以租户ID或者租户的名称命名,并且将每个租户的所有信息封装成tenantInfo数据结构,两者之间通过哈希映射的方式进行绑定,形成了树状的数据结构;整个的租户数据和用户的数据信息构成了一个两层的树状结构,中间通过哈希映射的方式实现数据关联,能够十分高效的定位到某个租户和某个用户的数据结构,完成相应的管理工作,同时由于树状结构的特点,所有分支中的数据都不会互相干扰,能够很好的实现不同租户之间的用户隔离;
数据管理模块用于以共享数据库与独立数据模式的方式将每个租户的数据单独存储到每个租户自身的数据库中,并为每个租户提供逻辑独立的数据库服务,同时使用命名空间和元数据管理的方式为多个租户数据之间的隔离提供保障,并且通过为每个租户分配一个名字空间的方式避免了在多个租户创建相同名称的数据库、集合时的命名冲突问题;所述数据管理模块包括负责租户数据隔离存储的数据存储模块、负责为上层客户端提供数据库服务的数据访问模块、负责对租户数据进行管理维护的元数据管理模块、负责维持负载均衡的数据分布模块以及负责高效网络通信的网络通信模块;数据访问模块:为每个租户提供数据库访问服务,保障在多个租户共同进行数据库访问时的正确性和隔离型,避免由于意外访问或者恶意访问导致的租户数据泄露;元数据管理模块:记录整个系统中所有租户的元数据信息,包括了租户与数据模式的映射关系、租户所创建的数据库和集合信息的多种元数据信息,为租户数据存储和数据访问过程中提供各种必要的控制信息;数据分布模块:采用备份的方式保障系统的高可用性以及租户数据的安全性,利用MongoDB本身自带的一些机制进行整个数据库系统在进行数据存储过程中的数据分发,将所有的数据划分成合适大小的chunk数据块,保障整个数据库在数据存储过程中的存储均衡;网络通信模块:与服务端的网络交互,负责将用户的数据库读写请求进行封装,将其按照固定格式序列化为正确的网络传输格式,然后将请求发送给服务端,并对接收到的服务端的返回结果进行解包处理以及将请求结果返回给调用接口;
服务调度模块用于对客户端发送的多租户数据库服务请求进行解析,并根据解析结果动态调度数据库资源对多租户数据库服务请求进行响应;服务端使用服务调度模块来对租户的数据库服务请求进行调度,整个服务调度模块具有了多种功能,包括服务分类、服务暂存、服务调度和服务分发,这些子功能模块之间相互协调配合共同完成对租户数据库服务请求的调度工作;服务调度模块采用了多级分类的请求管理方式,根据客户端请求的服务类型以及租户类型对到来的请求进行分类管理,保存到对应的请求队列之中,调度模块根据当前的队列情况和可用资源情况对这些请求进行调度处理;
客户端用于为系统使用者提供数据的读写接口,以及将用户的数据库服务请求进行处理,通过网络连接将处理后的数据库服务请求发送至服务端,同时根据相应的数据格式和协议对服务端返回的请求结果进行解析并呈现给用户;所述客户端具体包括用于数据库读写的数据库访问接口和用于与服务端进行通信和数据传输的客户网络通信模块;其中,
数据库访问接口用于为用户提供MongoDB数据库的使用操作接口、调用接口,以及用户管理和权限管理接口;
客户网络通信模块用于与服务端的服务网络通信模块进行交互,将用户的数据库服务请求进行封装,并将数据库服务请求格式按照预设固定格式序列化,然后将序列化后的数据库服务请求发送至服务端;并接收服务端返回的请求结果进行解包分析处理,以及将处理后请求结果返回给调用接口。
2.根据权利要求1所述的一种适用MongoDB数据库的多租户数据共享存储系统,其特征在于,所述数据管理模块具体包括数据存储模块、数据访问模块、元数据管理模块、数据分布模块和网络通信模块;其中,数据存储模块用于租户数据隔离存储;数据访问模块用于为上层客户端提供数据库服务;元数据管理模块用于对租户数据进行管理维护;数据分布模块用于维持负载均衡;服务网络通信模块用于与客户端进行高效网络通信。
3.根据权利要求1所述的一种适用MongoDB数据库的多租户数据共享存储系统,其特征在于,所述服务调度模块具体包括服务分类子模块、服务暂存子模块、服务调度子模块和服务分发子模块;服务分类子模块用于在接收到客户端发来的各种数据库服务请求之后,对请求类型进行识别,按照数据库服务请求的服务类型和租户类型进行分类;
服务暂存子模块将同一类型的数据库服务请求放到一个请求队列中;
服务调度子模块根据当前的系统运行状态和请求排队情况,对调度队列中的数据库服务请求调度分配对应的数据库资源服务工作线程,并根据当前工作线程调度分配情况动态调整后续服务的工作线程数量;
服务分发子模块用于根据数据库资源服务调度分配结果,将数据库服务请求分发至对应工作线程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110474219.5A CN113190529B (zh) | 2021-04-29 | 2021-04-29 | 一种适用MongoDB数据库的多租户数据共享存储系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110474219.5A CN113190529B (zh) | 2021-04-29 | 2021-04-29 | 一种适用MongoDB数据库的多租户数据共享存储系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113190529A CN113190529A (zh) | 2021-07-30 |
CN113190529B true CN113190529B (zh) | 2023-09-19 |
Family
ID=76980898
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110474219.5A Active CN113190529B (zh) | 2021-04-29 | 2021-04-29 | 一种适用MongoDB数据库的多租户数据共享存储系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113190529B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110659303A (zh) * | 2019-10-10 | 2020-01-07 | 北京优炫软件股份有限公司 | 一种数据库节点的读写控制方法及装置 |
CN113761237A (zh) * | 2021-09-11 | 2021-12-07 | 黄冈师范学院 | 一种用于云计算系统的数据处理方法 |
CN114064237B (zh) * | 2021-11-01 | 2024-07-19 | 北京微朗科技有限公司 | 基于智能网卡的多租户管理系统和管理方法 |
CN116069778A (zh) * | 2021-11-04 | 2023-05-05 | 腾讯科技(深圳)有限公司 | 一种元数据的管理方法、相关装置、设备以及存储介质 |
CN114116746B (zh) * | 2021-11-24 | 2024-07-16 | 北京字节跳动网络技术有限公司 | 多系统数据存储方法、装置、介质及电子设备 |
CN114338433B (zh) * | 2021-12-06 | 2024-04-12 | 上海浦东发展银行股份有限公司 | 区块链资源分配方法、装置、系统、计算机设备 |
CN114765630B (zh) * | 2022-02-16 | 2024-04-26 | 杭州湖畔网络技术有限公司 | 多租户平台的数据访问方法、多租户平台及服务器 |
CN115396511A (zh) * | 2022-08-24 | 2022-11-25 | 数字浙江技术运营有限公司 | 多租户的流程引擎创建、应用方法和系统 |
CN117076473B (zh) * | 2023-10-11 | 2024-02-06 | 浪潮通用软件有限公司 | 一种SaaS多租户的元数据运行方法、系统、设备及介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106462545A (zh) * | 2014-03-31 | 2017-02-22 | 亚马逊科技公司 | 可缩放文件存储服务 |
CN106559488A (zh) * | 2016-11-24 | 2017-04-05 | 天津市普迅电力信息技术有限公司 | 一种建立租户驱动的电网地理信息空间服务的方法 |
CN106897124A (zh) * | 2015-12-18 | 2017-06-27 | 华为软件技术有限公司 | 一种多租户请求处理方法、装置及设备 |
US10303669B1 (en) * | 2016-03-30 | 2019-05-28 | Amazon Technologies, Inc. | Simulating hierarchical structures in key value stores |
CN111159134A (zh) * | 2019-12-17 | 2020-05-15 | 复旦大学 | 面向多租户的分布式文件系统安全访问控制方法及系统 |
CN111428256A (zh) * | 2020-03-30 | 2020-07-17 | 北京东方金信科技有限公司 | 一种大数据平台多租户管理系统 |
CN111858097A (zh) * | 2020-07-22 | 2020-10-30 | 安徽华典大数据科技有限公司 | 分布式数据库系统、数据库访问方法 |
CN111861140A (zh) * | 2020-06-28 | 2020-10-30 | 微民保险代理有限公司 | 一种业务处理方法、装置、存储介质和电子装置 |
CN112470141A (zh) * | 2019-05-31 | 2021-03-09 | 斯诺弗雷克公司 | 数据库中的数据共享和实例化视图 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10678757B2 (en) * | 2016-04-08 | 2020-06-09 | Salesforce.Com, Inc. | Reliable generation of a unique key in a distributed system |
-
2021
- 2021-04-29 CN CN202110474219.5A patent/CN113190529B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106462545A (zh) * | 2014-03-31 | 2017-02-22 | 亚马逊科技公司 | 可缩放文件存储服务 |
CN106897124A (zh) * | 2015-12-18 | 2017-06-27 | 华为软件技术有限公司 | 一种多租户请求处理方法、装置及设备 |
US10303669B1 (en) * | 2016-03-30 | 2019-05-28 | Amazon Technologies, Inc. | Simulating hierarchical structures in key value stores |
CN106559488A (zh) * | 2016-11-24 | 2017-04-05 | 天津市普迅电力信息技术有限公司 | 一种建立租户驱动的电网地理信息空间服务的方法 |
CN112470141A (zh) * | 2019-05-31 | 2021-03-09 | 斯诺弗雷克公司 | 数据库中的数据共享和实例化视图 |
CN111159134A (zh) * | 2019-12-17 | 2020-05-15 | 复旦大学 | 面向多租户的分布式文件系统安全访问控制方法及系统 |
CN111428256A (zh) * | 2020-03-30 | 2020-07-17 | 北京东方金信科技有限公司 | 一种大数据平台多租户管理系统 |
CN111861140A (zh) * | 2020-06-28 | 2020-10-30 | 微民保险代理有限公司 | 一种业务处理方法、装置、存储介质和电子装置 |
CN111858097A (zh) * | 2020-07-22 | 2020-10-30 | 安徽华典大数据科技有限公司 | 分布式数据库系统、数据库访问方法 |
Non-Patent Citations (5)
Title |
---|
An approach for the secure management of hybrid cloud–edge environments;Antonio Celesti et al.;《Future Generation Computer Systems》;1-19 * |
MongoDB多租户技术的研究与实现;陈志磊;《中国优秀硕士学位论文全文数据库 信息科技辑》;I138-900 * |
MongoDB环境下SaaS多租户体系模型研究;兰小机 等;《测绘通报》;20121031;21-27 * |
兰小机 等.MongoDB环境下SaaS多租户体系模型研究.《测绘通报》.2012,21-27. * |
基于MongoDB的SaaS数据层多租户关键技术研究与实现;徐栋;《中国优秀硕士学位论文全文数据库 信息科技辑》;I138-804 * |
Also Published As
Publication number | Publication date |
---|---|
CN113190529A (zh) | 2021-07-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113190529B (zh) | 一种适用MongoDB数据库的多租户数据共享存储系统 | |
US11093468B1 (en) | Advanced metadata management | |
US20220188332A1 (en) | Distributed transaction database log with immediate reads and batched writes | |
US11550763B2 (en) | Versioning schemas for hierarchical data structures | |
CN109656879B (zh) | 大数据资源管理方法、装置、设备及存储介质 | |
US7370029B2 (en) | Method of changing system configuration in shared-nothing database management system | |
EP3432549B1 (en) | Method and apparatus for processing user requests | |
CN103218175B (zh) | 多租户的云存储平台访问控制系统 | |
US9836516B2 (en) | Parallel scanners for log based replication | |
US20220075771A1 (en) | Dynamically deploying execution nodes using system throughput | |
US9703788B1 (en) | Distributed metadata in a high performance computing environment | |
US10387384B1 (en) | Method and system for semantic metadata compression in a two-tier storage system using copy-on-write | |
CN113051038A (zh) | 云服务多租户环境下的数据访问方法及装置 | |
WO2023236637A1 (zh) | 数据管理方法及装置 | |
CN111181929A (zh) | 基于共享虚拟机文件的异构混合云架构及管理方法 | |
US10628391B1 (en) | Method and system for reducing metadata overhead in a two-tier storage architecture | |
LU101621B1 (en) | Efficiently providing a guest context access to file content at a host content | |
WO2024131959A1 (zh) | 虚拟单元启动方法及装置、云计算系统 | |
CN118656086A (zh) | 一种低代码应用基于SaaS多租户间的复制方法 | |
CN118819792A (zh) | 一种数据处理方法及相关设备 | |
CN117009346A (zh) | 数据库表结构变更方法、装置、设备及存储介质 | |
CN115480914A (zh) | 一种多租户服务的实现方法及系统 | |
CN117632850A (zh) | 数据操作方法及装置 | |
CN115827240A (zh) | 数据查询方法、装置、设备、系统以及存储介质 | |
CN116827939A (zh) | 基于大数据下集群资源管理分配方法、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB03 | Change of inventor or designer information | ||
CB03 | Change of inventor or designer information |
Inventor after: Song Yuanfeng Inventor after: Hou Mengshu Inventor after: Chen Zhilei Inventor after: Zhou Shijie Inventor before: Hou Mengshu Inventor before: Chen Zhilei Inventor before: Song Yuanfeng Inventor before: Zhou Shijie |
|
GR01 | Patent grant | ||
GR01 | Patent grant |