CN114791907A - 一种多租户共享数据的处理方法和系统 - Google Patents
一种多租户共享数据的处理方法和系统 Download PDFInfo
- Publication number
- CN114791907A CN114791907A CN202210324516.6A CN202210324516A CN114791907A CN 114791907 A CN114791907 A CN 114791907A CN 202210324516 A CN202210324516 A CN 202210324516A CN 114791907 A CN114791907 A CN 114791907A
- Authority
- CN
- China
- Prior art keywords
- data
- target
- target data
- unit
- identifier
- 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.)
- Granted
Links
Images
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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- 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
- G06F16/278—Data partitioning, e.g. horizontal or vertical partitioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6227—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明公开了一种多租户共享数据的处理方法和系统,该方法包括:当接收到租户发送的与目标数据源配置id对应的目标数据时,根据目标数据源配置id和目标数据的属性生成目标数据的目标数据标识和各目标数据切分单元的目标单元标识;若根据目标数据标识和各目标单元标识判断数据库中不存在目标数据,将目标单元标识存储到共享数据表,将目标数据标识存储到共享数据存储表,进行预设关联操作并存储目标数据;当接收到租户对目标数据的查询请求时,根据租户的租户名称、租户数据关联表、共享数据存储表和共享数据表获取目标数据,并将目标数据返回租户,从而在保证多租户系统隔离性的同时,提高了多租户共享数据的处理效率并减少了存储冗余。
Description
技术领域
本申请涉及数据库技术领域,更具体地,涉及一种多租户共享数据的处理方法和系统。
背景技术
多租户技术(multi-tenancy technology)或称多重租赁技术,是一种软件架构技术,它是在探讨与实现如何于多用户的环境下共用相同的系统或程序组件,并且仍可确保各用户间数据的隔离性。
一个支持多租户技术的系统需要在设计上对它的数据和配置进行隔离,从而使系统的每个租户或组织都能够使用一个单独的系统实例,并且每个租户都可以根据自己的需求对租用的系统实例进行个性化配置。由于要满足租户之间的隔离性,通常来说租户之间的数据是按照不同租户隔离存储的,即使租户之间有一些配置和数据是一致的也会根据租户不同存储多份,每个租户访问自己的数据和配置。
数据和配置的隔离会让用户业务数据完全隔离,特别是在某些特定系统,比如元数据管理系统中,不同租户的配置可能相同也可能不同,但是由于数据隔离,即使是相同的配置,租户之间抓取元数据独立进行,相同配置的两个租户都会在各自实例内部完成元数据抓取和存储。这样即使拥有相同配置的某些资源的数据仍然会存储多份,不仅造成业务性能损耗,还会造成存储的冗余浪费,系统的成本会大大增加。
因此,如何提高多租户共享数据的处理效率并减少存储冗余,是目前有待解决的技术问题。
发明内容
本发明公开了一种多租户共享数据的处理方法,用以解决现有技术中多租户共享数据处理效率低,存储冗余多的技术问题。该方法应用于包括租户数据关联表、共享数据存储表和共享数据表的数据库中,包括:
当接收到租户发送的与目标数据源配置id对应的目标数据时,根据所述目标数据源配置id和所述目标数据的属性生成所述目标数据的目标数据标识和各目标数据切分单元的目标单元标识,其中,各所述目标数据切分单元是根据所述属性切分所述目标数据后生成的;
根据所述目标数据标识和各所述目标单元标识判断数据库中是否存在所述目标数据,若数据库中不存在所述目标数据,将所述目标单元标识存储到所述共享数据表,将所述目标数据标识存储到所述共享数据存储表,进行预设关联操作并存储所述目标数据;
当接收到租户对所述目标数据的查询请求时,根据租户的租户名称、所述租户数据关联表、所述共享数据存储表和所述共享数据表获取所述目标数据,并将所述目标数据返回租户;
其中,所述租户数据关联表表征了租户名称和所述目标数据标识所属的数据标识的关联关系,所述共享数据存储表表征了数据标识、所述目标单元标识所属的单元标识和所述目标数据源配置id所属的数据源配置id的关联关系,所述共享数据表表征了单元标识和所述目标数据所属的真实数据的关联关系,数据源配置id由数据源IP地址和端口号生成,所述预设关联操作为将租户名称和所述目标数据标识关联到所述租户数据关联表并将所述目标数据标识和所述目标单元标识关联到所述共享数据存储表。
相应的,本发明还提供了一种多租户共享数据的处理系统,应用于包括租户数据关联表、共享数据存储表和共享数据表的数据库中,所述系统包括:
生成模块,用于当接收到租户发送的与目标数据源配置id对应的目标数据时,根据所述目标数据源配置id和所述目标数据的属性生成所述目标数据的目标数据标识和各目标数据切分单元的目标单元标识,其中,各所述目标数据切分单元是根据所述属性切分所述目标数据后生成的;
存储模块,用于根据所述目标数据标识和各所述目标单元标识判断数据库中是否存在所述目标数据,若数据库中不存在所述目标数据,将所述目标单元标识存储到所述共享数据表,将所述目标数据标识存储到所述共享数据存储表,进行预设关联操作并存储所述目标数据;
获取模块,用于当接收到租户对所述目标数据的查询请求时,根据租户的租户名称、所述租户数据关联表、所述共享数据存储表和所述共享数据表获取所述目标数据,并将所述目标数据返回租户;
其中,所述租户数据关联表表征了租户名称和所述目标数据标识所属的数据标识的关联关系,所述共享数据存储表表征了数据标识、所述目标单元标识所属的单元标识和所述目标数据源配置id所属的数据源配置id的关联关系,所述共享数据表表征了单元标识和所述目标数据所属的真实数据的关联关系,数据源配置id由数据源IP地址和端口号生成,所述预设关联操作为将租户名称和所述目标数据标识关联到所述租户数据关联表并将所述目标数据标识和所述目标单元标识关联到所述共享数据存储表。
通过应用以上技术方案,当接收到租户发送的与目标数据源配置id对应的目标数据时,根据目标数据源配置id和目标数据的属性生成目标数据的目标数据标识和各目标数据切分单元的目标单元标识;根据目标数据标识和各目标单元标识判断数据库中是否存在目标数据,若数据库中不存在目标数据,将目标单元标识存储到共享数据表,将目标数据标识存储到共享数据存储表,进行预设关联操作并存储目标数据;当接收到租户对目标数据的查询请求时,根据租户的租户名称、租户数据关联表、共享数据存储表和共享数据表获取目标数据,并将目标数据返回租户,从而在保证多租户系统隔离性的同时,提高了多租户共享数据的处理效率并减少了存储冗余。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本发明实施例提出的一种多租户共享数据的处理方法的流程示意图;
图2示出了本发明实施例中数据表关系ER模型图;
图3示出了本发明实施例提出的一种多租户共享数据的处理系统的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供一种多租户共享数据的处理方法,每一个租户通过共享数据的唯一数据标识获取数据,该数据标识是根据租户的配置生成的,如果租户有相同的数据配置或者相交的数据配置,则可以根据数据配置生成对应的数据标识。租户通过该数据标识维护一个到数据的引用,保证租户可以使用到共享数据。由于共享数据的创建只会触发一次,不用每一个租户都各自触发能够有效减少相应的创建成本,此外共享数据只会存储一份,能有效的降低存储成本。
该方法应用于包括租户数据关联表、共享数据存储表和共享数据表的数据库中,如图1所示,包括以下步骤:
步骤S101,当接收到租户发送的与目标数据源配置id对应的目标数据时,根据所述目标数据源配置id和所述目标数据的属性生成所述目标数据的目标数据标识和各目标数据切分单元的目标单元标识。
本实施例中,在数据库中预先构建了租户数据关联表、共享数据存储表和共享数据表,租户数据关联表表征了租户名称和目标数据标识所属的数据标识的关联关系,共享数据存储表表征了数据标识、目标单元标识所属的单元标识和目标数据源配置id所属的数据源配置id的关联关系,共享数据表表征了单元标识和目标数据所属的真实数据的关联关系。
数据源配置id由数据源IP地址和端口号生成。目标数据的属性是一个数据字段,表示目标数据的一个特征,该属性可包括标称属性、二元属性、序数属性、数值属性、离散属性与连续属性。各目标数据切分单元是根据该属性切分目标数据后生成的。
租户需要通过目标数据源配置id对目标数据进行存储,在接收到租户发送的该目标数据时,根据目标数据源配置id和目标数据的属性生成目标数据的目标数据标识和各目标数据切分单元的目标单元标识。
可选的,如图2所示,租户数据关联表的结构为[tenant_name,data_id],共享数据存储表的结构为[data_id,Sdata_id,数据源配置id],共享数据表的结构为[Sdata_id,data],其中,tenant_name是租户名称,data_id为数据标识,Sdata_id为数据切分单元的单元标识。
可选的,数据源配置id =数据源IP地址+端口号,本领域技术人员也可采用其他根据数据源IP地址和端口号的方式生成数据源配置id。
为了准确的生成目标数据标识和目标单元标识,在本申请一些实施例中,根据所述目标数据源配置id和所述目标数据的属性生成所述目标数据的目标数据标识和各目标数据切分单元的目标单元标识,具体为:
根据所述属性切分所述目标数据并获取各所述目标数据切分单元的目标单元数据;
缓存各所述目标单元数据并生成各所述目标单元数据的缓存路径;
根据所述缓存路径获取各所述目标单元数据的数据字节,并按预设标识计算算法对所述数据字节处理后生成各所述目标单元标识;
根据所述目标数据源配置id和各所述目标单元标识生成所述目标数据标识。
本实施例中,先根据属性切分目标数据,从而获取各目标数据切分单元的目标单元数据,然后将各目标单元数据进行缓存并生成相应的缓存路径,再根据缓存路径获取各目标单元数据的数据字节,按照预设标识计算算法对各数据字节处理并生成各目标单元标识,最后根据目标数据源配置id和各目标单元标识生成目标数据标识。
可选的,目标数据标识=目标数据源配置id+各目标单元标识,例如,若各目标单元标识=A + B + …… + C + Y + Z,则目标数据标识=目标数据源配置id+A + B + …… +C + Y + Z。
可选的,预设标识计算函数可以为func DataFLieMD5(flie: Sdata_id[Count,i].URL),Sdata_id[Count,i].URL为所述缓存路径。
为了可靠的获取目标单元数据,在本申请一些实施例中,根据所述属性切分所述目标数据并获取各所述目标数据切分单元的目标单元数据,具体为:
根据所述属性确定各所述目标数据切分单元的属性值Min.length;
调用Length()函数计算并获取所述目标数据的最大属性值MAX.length;
若MAX.length除以Min.length的余数不为零,则所述目标数据切分单元的数量Count=MAX.length/Min.length+1,所述目标数据切分单元的编号Sdata_id[Count,i]=Sdata_id[MAX.length/Min.length+1 , i];
若MAX.length除以Min.length的余数为零,则Count=MAX.length/Min.length,Sdata_id[Count,i]=Sdata_id[MAX.length/Min.length , i];
按Count和Sdata_id[Count,i]切分所述目标数据,获取Count个目标单元数据Sdata_id[Count,i].Data;
其中1≤i≤Count。
本实施例中,属性值Min.length可根据属性进行预设,目标数据切分单元的编号Sdata_id[Count,i]的形式可以为Sdata_id[Count,1],Sdata_id[Count,2],……,Sdata_id[Count, Count-1]和Sdata_id[Count, Count]。
步骤S102,根据所述目标数据标识和各所述目标单元标识判断数据库中是否存在所述目标数据,若数据库中不存在所述目标数据,将所述目标单元标识存储到所述共享数据表,将所述目标数据标识存储到所述共享数据存储表,进行预设关联操作并存储所述目标数据。
本实施例中,可根据目标数据标识和各目标单元标识查询共享数据存储表和共享数据表,判断数据库中是否存在目标数据,若数据库中不存在所述目标数据,则需要将目标数据进行存储,具体的,将目标单元标识存储到共享数据表,并将目标数据标识存储到共享数据存储表,并进行预设关联操作后存储目标数据。预设关联操作为将租户名称和目标数据标识关联到租户数据关联表并将目标数据标识和目标单元标识关联到共享数据存储表。
为了进一步提高数据处理效率,在根据所述目标数据标识和各所述目标单元标识判断数据库中是否存在所述目标数据之后,所述方法还包括:
若数据库中已存在所述目标数据,进行所述预设关联操作。
本实施例中,若数据库中已存在目标数据,则说明不需要再次存储目标数据,仅进行预设关联操作即可,从而减少了数据存储次数。
为了进一步提高数据存储效率,在本申请一些实施例中,存储所述目标数据,具体为:
若所述共享数据存储表中不存在与所述目标数据源配置id相同的数据源配置id,将各所述目标单元标识存储到所述共享数据表,将所述目标数据标识存储到所述共享数据存储表,将所述目标数据标识和用户名称关联到所述租户数据关联表,并将各所述目标单元数据进行存储;
若所述共享数据存储表中存在与所述目标数据源配置id相同的数据源配置id,且所述目标数据源配置id下的所述共享数据表中存在分别与各所述目标单元标识相同的单元标识,进行所述预设关联操作;
若所述共享数据存储表中存在与所述目标数据源配置id相同的数据源配置id,且各所述目标单元标识与所述目标数据源配置id下的所述共享数据表中的单元标识均不相同或一部分相同,根据不相同的目标数据切分单元的编号将对应的不相同的目标单元数据存储,并将所述目标单元标识存储到所述共享数据表,将所述目标数据标识存储到所述共享数据存储表,并进行所述预设关联操作。
本实施例中,将目标数据源配置id与共享数据存储表中各数据源配置id进行比对,若共享数据存储表中不存在与目标数据源配置id相同的数据源配置id,则需要将各目标单元数据进行存储,具体的,将各目标单元标识存储到共享数据表并将目标数据标识存储到共享数据存储表,然后将目标数据标识和用户名称关联到租户数据关联表,并将各目标单元数据进行存储。
若共享数据存储表中存在与目标数据源配置id相同的数据源配置id,将各目标单元标识分别与目标数据源配置id下的享数据表中的单元标识进行比对,若目标数据源配置id下的共享数据表中存在分别与各目标单元标识相同的单元标识,则直接进行预设关联操作;若各目标单元标识与目标数据源配置id下的共享数据表中的单元标识均不相同或一部分相同,则根据不相同的目标数据切分单元的编号将对应的不相同的目标单元数据存储,并将目标单元标识存储到共享数据表,将目标数据标识存储到共享数据存储表,最后进行预设关联操作。
需要说明的是,以上优选实施例的方案仅为本申请所提出的一种具体实现方案,其他存储目标数据的方式均属于本申请的保护范围。
步骤S103,当接收到租户对所述目标数据的查询请求时,根据租户的租户名称、所述租户数据关联表、所述共享数据存储表和所述共享数据表获取所述目标数据,并将所述目标数据返回租户。
本实施例中,当接收到租户对目标数据的查询请求时,先根据租户名称查询租户数据关联表并获取目标数据标识,然后根据目标数据标识查询共享数据存储表并获取目标单元标识,再根据目标单元标识查询共享数据表并获取目标数据,最后将目标数据返回租户。
通过应用以上技术方案,当接收到租户发送的与目标数据源配置id对应的目标数据时,根据目标数据源配置id和目标数据的属性生成目标数据的目标数据标识和各目标数据切分单元的目标单元标识;根据目标数据标识和各目标单元标识判断数据库中是否存在目标数据,若数据库中不存在目标数据,将目标单元标识存储到共享数据表,将目标数据标识存储到共享数据存储表,进行预设关联操作并存储目标数据;当接收到租户对目标数据的查询请求时,根据租户的租户名称、租户数据关联表、共享数据存储表和共享数据表获取目标数据,并将目标数据返回租户,从而在保证多租户系统隔离性的同时,提高了多租户共享数据的处理效率并减少了存储冗余。
为了进一步阐述本发明的技术思想,现结合具体的应用场景,对本发明的技术方案进行说明。
本申请实施例提供一种多租户共享数据的处理方法,包括以下步骤:
S1.创建租户数据关联表、共享数据存储表和共享数据表,如图2所示。
S2.当接收到租户发送的与目标数据源配置id对应的目标数据Data时,根据目标数据源配置id和目标数据的属性生成目标数据Data的目标数据标识data_id和各目标数据切分单元的目标单元标识Sdata_id。
S2.1 切分目标数据Data:
(1)根据目标数据的属性确定目标数据切分单元的属性值Min.length;
(2)通过Length(data)方法计算并获取目标数据的最大属性值MAX.length;
(3)计算并获取目标数据切分单元的数量Count、编号Sdata_id[Count,i]:
如果MAX.length除以Min.length的余数不为零,则
Count = MAX.length/Min.length+1;
Sdata_id[Count,i] = Sdata_id[MAX.length/Min.length+1 , i];
如果MAX.length除以Min.length的余数为零,则
Count = MAX.length/Min.length;
Sdata_id[Count,i] = Sdata_id[MAX.length/Min.length , i];
其中1≤i≤Count。
(4)确定切分方式。
数据切分方式为,目标数据Data将被切分为Count个目标数据切分单元,各目标数据切分单元的编号Sdata_id分别为Sdata_id[Count,1],Sdata_id[Count,2],……,Sdata_id[Count, Count-1]和Sdata_id[Count, Count]。
(5)按(4)中的切分方式对目标数据Data进行切分,获得目标数据切分单元的目标单元数据Sdata_id[Count,i].Data。
S2.2 缓存目标单元数据Sdata_id[Count,i].Data,并生成目标单元数据的缓存路径Sdata_id[Count,i].URL;
S2.3 根据缓存路径Sdata_id[Count,i].URL,获取每个目标数据切分单元的数据字节Sdata_id[Count,i].Bytes,并通过预设标识计算函数func DataFLieMD5(flie:Sdata_id[Count,i].URL),计算获得目标单元标识Sdata_id。
其中,预设标识计算函数DataFLieMD5(flie:Sdata_id[Count,i].URL)的具体过程如表1所示。
表1
func DataFLieMD5(flie:Sdata_id[Count,i].URL)->String { var result =“ “ let bufferSize = 1024 * 1024 do { var digest = MD5() letfile = try FlieHandle(forReadingForm: file) defer {file.closeFile() } while autoreleasepool(invoking: { letdata = file.readData(ofLength: bufferSize) do { _ = trydigest.update(withBytes: Sdata_id[Count,i].Bytes) } catch {AppLog error(error) return false } return Sdata_id[Count,i].Data.count > 0 }) { } Let res = try digest.finish()Result = res.toHexString() } catch { AppLog.error(error) }AppLog.debug(Sdata_id[Count,i].data + “md5:\(result)”) Return result } |
目标单元标识Sdata_id[Count,i].id的示例如表2所示。
表2
目标数据切分单元的编号Sdata_id[Count,i] | 目标单元标识 Sdata_id[Count,i].id |
Sdata_id[Count,1] | A(A=F001,十六进制) |
Sdata_id[Count,2] | B(A=F102,十六进制) |
Sdata_id[Count,3] | C(A=EC0D,十六进制) |
…… | …… |
Sdata_id[Count, Count -1] | Y(A=CF10,十六进制) |
Sdata_id[Count, Count] | Z(A=DA1F,十六进制) |
Sdata_id[Count,i].id=Sdata_id[Count,1].id+Sdata_id[Count,2].id +Sdata_id[Count,3].id+……+Sdata_id[Count,Count-1].id+Sdata_id[Count, Count].id;
例如:Sdata_id[Count,i].id = A + B + …… + C + Y + Z。
S2.4 根据目标数据源配置id和目标单元标识Sdata_id[Count,i].id获得目标数据标识data_id,其中,data_id =目标数据源配置id+Sdata_id[Count,i].id;
例如:data_id =目标数据源配置id + A + B + C +……+ Y + Z。
S3.根据目标数据标识data_id和目标单元标识Sdata_id[Count,i].id判断是否有该目标数据存在,如果存在,则直接将租户名称tenant_name和目标数据标识data_id关联到租户数据关联表并将目标数据标识data_id和目标单元标识Sdata_id[Count,i].id关联到共享数据存储表即可;
如果不存在,则将目标单元标识Sdata_id[Count,i].id存储到共享数据表里,将目标数据标识data_id存储到对应的共享数据存储表里,然后将租户名称tenant_name和目标数据标识data_id关联到租户数据关联表并将目标数据标识data_id和目标单元标识Sdata_id[Count,i].id关联到共享数据存储表,并存储目标数据。
存储目标数据的具体过程如下:
第一步:判断数据源配置id是否相同,即将目标数据源配置id与共享数据存储表各数据源配置id进行比对。
如果不存在相同的数据源配置id,则直接将目标单元标识Sdata_id[Count,i].id存储到共享数据表里,将目标数据标识data_id存储到对应的共享数据存储表里,然后关联目标数据标识data_id和租户名称tenant_name到租户数据关联表里,并将各目标单元数据Sdata_id[Count,i].Data全部进行存储;
如果存在相同的数据源配置id,则进行第二步。
第二步:数据源配置id相同,则将每个目标单元标识Sdata_id[Count,i].id,与同一数据源配置id的共享数据表[Sdata_id,data]中的单元标识Sdata_id进行一一比对,比对完成后:
如果目标单元标识Sdata_id[Count,i].id与该数据源配置id的共享数据表中的单元标识均相同,则直接将租户名称tenant_name和目标数据标识data_id关联到租户数据关联表并将目标数据标识data_id和目标单元标识Sdata_id[Count,i].id关联到共享数据存储表即可;
如果目标单元标识Sdata_id[Count,i].id与的共享数据表中的单元标识均不相同或部分相同,则获取所有的不相同的数据切分单元编号Sdata_id[Count,i]和对应的数据切分单元标识Sdata_id[Count,i].id,并根据数据切分单元编号Sdata_id[Count,i],存储对应的目标单元数据Sdata_id[Count,i].Data,然后将目标单元标识Sdata_id[Count,i].id存储到共享数据表里,将目标数据标识data_id存储到对应的共享数据存储表里,同时将租户名称tenant_name和目标数据标识data_id关联到租户数据关联表并将目标数据标识data_id和目标单元标识Sdata_id[Count,i].id关联到共享数据存储表。
S4. 当租户需要查询该目标数据时,通过租户数据关联表、共享数据存储表和共享数据表里关联的tenant_name、data_id和Sdata_id获取目标数据,并将目标数据返回租户。
本申请实施例还提出了一种多租户共享数据的处理系统,应用于包括租户数据关联表、共享数据存储表和共享数据表的数据库中,如图3所示,所述系统包括:
生成模块10,用于当接收到租户发送的与目标数据源配置id对应的目标数据时,根据所述目标数据源配置id和所述目标数据的属性生成所述目标数据的目标数据标识和各目标数据切分单元的目标单元标识,其中,各所述目标数据切分单元是根据所述属性切分所述目标数据后生成的;
存储模块20,用于根据所述目标数据标识和各所述目标单元标识判断数据库中是否存在所述目标数据,若数据库中不存在所述目标数据,将所述目标单元标识存储到所述共享数据表,将所述目标数据标识存储到所述共享数据存储表,进行预设关联操作并存储所述目标数据;
获取模块30,用于当接收到租户对所述目标数据的查询请求时,根据租户的租户名称、所述租户数据关联表、所述共享数据存储表和所述共享数据表获取所述目标数据,并将所述目标数据返回租户;
其中,所述租户数据关联表表征了租户名称和所述目标数据标识所属的数据标识的关联关系,所述共享数据存储表表征了数据标识、所述目标单元标识所属的单元标识和所述目标数据源配置id所属的数据源配置id的关联关系,所述共享数据表表征了单元标识和所述目标数据所属的真实数据的关联关系,数据源配置id由数据源IP地址和端口号生成,所述预设关联操作为将租户名称和所述目标数据标识关联到所述租户数据关联表并将所述目标数据标识和所述目标单元标识关联到所述共享数据存储表。
在具体的应用场景中,存储模块20还用于:
若数据库中已存在所述目标数据,进行所述预设关联操作。
在具体的应用场景中,生成模块10,具体用于:
根据所述属性切分所述目标数据并获取各所述目标数据切分单元的目标单元数据;
缓存各所述目标单元数据并生成各所述目标单元数据的缓存路径;
根据所述缓存路径获取各所述目标单元数据的数据字节,并按预设标识计算函数对所述数据字节处理后生成各所述目标单元标识;
根据所述目标数据源配置id和各所述目标单元标识生成所述目标数据标识。
在具体的应用场景中,生成模块10,还具体用于:
根据所述属性确定各所述目标数据切分单元的属性值Min.length;
调用Length()函数计算并获取所述目标数据的最大属性值MAX.length;
若MAX.length除以Min.length的余数不为零,则所述目标数据切分单元的数量Count=MAX.length/Min.length+1,所述目标数据切分单元的编号Sdata_id[Count,i]=Sdata_id[MAX.length/Min.length+1 , i];
若MAX.length除以Min.length的余数为零,则Count=MAX.length/Min.length,Sdata_id[Count,i]=Sdata_id[MAX.length/Min.length , i];
按Count和Sdata_id[Count,i]切分所述目标数据,获取Count个目标单元数据Sdata_id[Count,i].Data;
其中1≤i≤Count。
在具体的应用场景中,存储模块20,还具体用于:
若所述共享数据存储表中不存在与所述目标数据源配置id相同的数据源配置id,将各所述目标单元标识存储到所述共享数据表,将所述目标数据标识存储到所述共享数据存储表,将所述目标数据标识和用户名称关联到所述租户数据关联表,并将各所述目标单元数据进行存储;
若所述共享数据存储表中存在与所述目标数据源配置id相同的数据源配置id,且所述目标数据源配置id下的所述共享数据表中存在分别与各所述目标单元标识相同的单元标识,进行所述预设关联操作;
若所述共享数据存储表中存在与所述目标数据源配置id相同的数据源配置id,且各所述目标单元标识与所述目标数据源配置id下的所述共享数据表中的单元标识均不相同或一部分相同,根据不相同的目标数据切分单元的编号将对应的不相同的目标单元数据存储,并将所述目标单元标识存储到所述共享数据表,将所述目标数据标识存储到所述共享数据存储表,并进行所述预设关联操作。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (10)
1.一种多租户共享数据的处理方法,其特征在于,应用于包括租户数据关联表、共享数据存储表和共享数据表的数据库中,所述方法包括:
当接收到租户发送的与目标数据源配置id对应的目标数据时,根据所述目标数据源配置id和所述目标数据的属性生成所述目标数据的目标数据标识和各目标数据切分单元的目标单元标识,其中,各所述目标数据切分单元是根据所述属性切分所述目标数据后生成的;
根据所述目标数据标识和各所述目标单元标识判断数据库中是否存在所述目标数据,若数据库中不存在所述目标数据,将所述目标单元标识存储到所述共享数据表,将所述目标数据标识存储到所述共享数据存储表,进行预设关联操作并存储所述目标数据;
当接收到租户对所述目标数据的查询请求时,根据租户的租户名称、所述租户数据关联表、所述共享数据存储表和所述共享数据表获取所述目标数据,并将所述目标数据返回租户;
其中,所述租户数据关联表表征了租户名称和所述目标数据标识所属的数据标识的关联关系,所述共享数据存储表表征了数据标识、所述目标单元标识所属的单元标识和所述目标数据源配置id所属的数据源配置id的关联关系,所述共享数据表表征了单元标识和所述目标数据所属的真实数据的关联关系,数据源配置id由数据源IP地址和端口号生成,所述预设关联操作为将租户名称和所述目标数据标识关联到所述租户数据关联表并将所述目标数据标识和所述目标单元标识关联到所述共享数据存储表。
2.如权利要求1所述的方法,其特征在于,在根据所述目标数据标识和各所述目标单元标识判断数据库中是否存在所述目标数据之后,所述方法还包括:
若数据库中已存在所述目标数据,进行所述预设关联操作。
3.如权利要求1所述的方法,其特征在于,根据所述目标数据源配置id和所述目标数据的属性生成所述目标数据的目标数据标识和各目标数据切分单元的目标单元标识,具体为:
根据所述属性切分所述目标数据并获取各所述目标数据切分单元的目标单元数据;
缓存各所述目标单元数据并生成各所述目标单元数据的缓存路径;
根据所述缓存路径获取各所述目标单元数据的数据字节,并按预设标识计算函数对所述数据字节处理后生成各所述目标单元标识;
根据所述目标数据源配置id和各所述目标单元标识生成所述目标数据标识。
4.如权利要求3所述的方法,其特征在于,根据所述属性切分所述目标数据并获取各所述目标数据切分单元的目标单元数据,具体为:
根据所述属性确定各所述目标数据切分单元的属性值Min.length;
调用Length()函数计算并获取所述目标数据的最大属性值MAX.length;
若MAX.length除以Min.length的余数不为零,则所述目标数据切分单元的数量Count=MAX.length/Min.length+1,所述目标数据切分单元的编号Sdata_id[Count,i]=Sdata_id[MAX.length/Min.length+1 , i];
若MAX.length除以Min.length的余数为零,则Count=MAX.length/Min.length,Sdata_id[Count,i]=Sdata_id[MAX.length/Min.length , i];
按Count和Sdata_id[Count,i]切分所述目标数据,获取Count个目标单元数据Sdata_id[Count,i].Data;
其中1≤i≤Count。
5.如权利要求3所述的方法,其特征在于,存储所述目标数据,具体为:
若所述共享数据存储表中不存在与所述目标数据源配置id相同的数据源配置id,将各所述目标单元标识存储到所述共享数据表,将所述目标数据标识存储到所述共享数据存储表,将所述目标数据标识和用户名称关联到所述租户数据关联表,并将各所述目标单元数据进行存储;
若所述共享数据存储表中存在与所述目标数据源配置id相同的数据源配置id,且所述目标数据源配置id下的所述共享数据表中存在分别与各所述目标单元标识相同的单元标识,进行所述预设关联操作;
若所述共享数据存储表中存在与所述目标数据源配置id相同的数据源配置id,且各所述目标单元标识与所述目标数据源配置id下的所述共享数据表中的单元标识均不相同或一部分相同,根据不相同的目标数据切分单元的编号将对应的不相同的目标单元数据存储,并将所述目标单元标识存储到所述共享数据表,将所述目标数据标识存储到所述共享数据存储表,并进行所述预设关联操作。
6.一种多租户共享数据的处理系统,其特征在于,应用于包括租户数据关联表、共享数据存储表和共享数据表的数据库中,所述系统包括:
生成模块,用于当接收到租户发送的与目标数据源配置id对应的目标数据时,根据所述目标数据源配置id和所述目标数据的属性生成所述目标数据的目标数据标识和各目标数据切分单元的目标单元标识,其中,各所述目标数据切分单元是根据所述属性切分所述目标数据后生成的;
存储模块,用于根据所述目标数据标识和各所述目标单元标识判断数据库中是否存在所述目标数据,若数据库中不存在所述目标数据,将所述目标单元标识存储到所述共享数据表,将所述目标数据标识存储到所述共享数据存储表,进行预设关联操作并存储所述目标数据;
获取模块,用于当接收到租户对所述目标数据的查询请求时,根据租户的租户名称、所述租户数据关联表、所述共享数据存储表和所述共享数据表获取所述目标数据,并将所述目标数据返回租户;
其中,所述租户数据关联表表征了租户名称和所述目标数据标识所属的数据标识的关联关系,所述共享数据存储表表征了数据标识、所述目标单元标识所属的单元标识和所述目标数据源配置id所属的数据源配置id的关联关系,所述共享数据表表征了单元标识和所述目标数据所属的真实数据的关联关系,数据源配置id由数据源IP地址和端口号生成,所述预设关联操作为将租户名称和所述目标数据标识关联到所述租户数据关联表并将所述目标数据标识和所述目标单元标识关联到所述共享数据存储表。
7.如权利要求6所述的系统,其特征在于,所述存储模块还用于:
若数据库中已存在所述目标数据,进行所述预设关联操作。
8.如权利要求6所述的系统,其特征在于,所述生成模块,具体用于:
根据所述属性切分所述目标数据并获取各所述目标数据切分单元的目标单元数据;
缓存各所述目标单元数据并生成各所述目标单元数据的缓存路径;
根据所述缓存路径获取各所述目标单元数据的数据字节,并按预设标识计算函数对所述数据字节处理后生成各所述目标单元标识;
根据所述目标数据源配置id和各所述目标单元标识生成所述目标数据标识。
9.如权利要求8所述的系统,其特征在于,所述生成模块,还具体用于:
根据所述属性确定各所述目标数据切分单元的属性值Min.length;
调用Length()函数计算并获取所述目标数据的最大属性值MAX.length;
若MAX.length除以Min.length的余数不为零,则所述目标数据切分单元的数量Count=MAX.length/Min.length+1,所述目标数据切分单元的编号Sdata_id[Count,i]=Sdata_id[MAX.length/Min.length+1 , i];
若MAX.length除以Min.length的余数为零,则Count=MAX.length/Min.length,Sdata_id[Count,i]=Sdata_id[MAX.length/Min.length , i];
按Count和Sdata_id[Count,i]切分所述目标数据,获取Count个目标单元数据Sdata_id[Count,i].Data;
其中1≤i≤Count。
10.如权利要求8所述的系统,其特征在于,所述存储模块,还具体用于:
若所述共享数据存储表中不存在与所述目标数据源配置id相同的数据源配置id,将各所述目标单元标识存储到所述共享数据表,将所述目标数据标识存储到所述共享数据存储表,将所述目标数据标识和用户名称关联到所述租户数据关联表,并将各所述目标单元数据进行存储;
若所述共享数据存储表中存在与所述目标数据源配置id相同的数据源配置id,且所述目标数据源配置id下的所述共享数据表中存在分别与各所述目标单元标识相同的单元标识,进行所述预设关联操作;
若所述共享数据存储表中存在与所述目标数据源配置id相同的数据源配置id,且各所述目标单元标识与所述目标数据源配置id下的所述共享数据表中的单元标识均不相同或一部分相同,根据不相同的目标数据切分单元的编号将对应的不相同的目标单元数据存储,并将所述目标单元标识存储到所述共享数据表,将所述目标数据标识存储到所述共享数据存储表,并进行所述预设关联操作。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210324516.6A CN114791907B (zh) | 2022-03-30 | 2022-03-30 | 一种多租户共享数据的处理方法和系统 |
PCT/CN2022/122443 WO2023184908A1 (zh) | 2022-03-30 | 2022-09-29 | 一种多租户共享数据的处理方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210324516.6A CN114791907B (zh) | 2022-03-30 | 2022-03-30 | 一种多租户共享数据的处理方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114791907A true CN114791907A (zh) | 2022-07-26 |
CN114791907B CN114791907B (zh) | 2023-01-06 |
Family
ID=82461954
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210324516.6A Active CN114791907B (zh) | 2022-03-30 | 2022-03-30 | 一种多租户共享数据的处理方法和系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114791907B (zh) |
WO (1) | WO2023184908A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116107547A (zh) * | 2023-01-04 | 2023-05-12 | 三峡高科信息技术有限责任公司 | 一种统一服务与多数据源管理的方法 |
WO2023184908A1 (zh) * | 2022-03-30 | 2023-10-05 | 北京柏睿数据技术股份有限公司 | 一种多租户共享数据的处理方法和系统 |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102456028A (zh) * | 2010-10-27 | 2012-05-16 | 金蝶软件(中国)有限公司 | 一种面向多租户的数据获取方法、装置及系统 |
CN106663036A (zh) * | 2014-07-17 | 2017-05-10 | 微软技术许可有限责任公司 | 在多租户系统中处理变化 |
US20170264681A1 (en) * | 2016-03-14 | 2017-09-14 | Zynga Inc. | Multitenancy gaming services platform |
CN107357930A (zh) * | 2017-07-27 | 2017-11-17 | 深圳易嘉恩科技有限公司 | 云账坊平台租户数据表结构 |
CN109918405A (zh) * | 2019-01-25 | 2019-06-21 | 平安科技(深圳)有限公司 | 一种基于多租户多数据源的检索方法和装置 |
CN110072126A (zh) * | 2019-03-19 | 2019-07-30 | 视联动力信息技术股份有限公司 | 数据请求方法、协转服务器及计算机可读存储介质 |
CN110198346A (zh) * | 2019-05-06 | 2019-09-03 | 北京三快在线科技有限公司 | 数据读取方法、装置、电子设备及可读存储介质 |
CN110765489A (zh) * | 2019-10-30 | 2020-02-07 | 深圳前海环融联易信息科技服务有限公司 | 多租户数据库隔离方法、系统、电子设备及计算机存储介质 |
CN110799948A (zh) * | 2017-06-27 | 2020-02-14 | 易享信息技术有限公司 | 针对时间点恢复数据库的数据集的系统和方法 |
CN111581216A (zh) * | 2020-05-09 | 2020-08-25 | 北京百度网讯科技有限公司 | 数据处理方法、装置、设备以及存储介质 |
CN112364110A (zh) * | 2020-11-17 | 2021-02-12 | 深圳前海微众银行股份有限公司 | 元数据管理方法、装置、设备及计算机存储介质 |
US20210073065A1 (en) * | 2019-07-31 | 2021-03-11 | Reliance Jio Infocomm Limited | System and method of mapping and diagnostics of data center resources |
CN113342827A (zh) * | 2021-07-01 | 2021-09-03 | 广东电网有限责任公司 | 一种基于多租户技术的电网数据存储方法、存储介质及系统 |
CN114218606A (zh) * | 2021-12-16 | 2022-03-22 | 上海东普信息科技有限公司 | 租户数据隔离方法、装置、设备及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9424291B2 (en) * | 2013-05-13 | 2016-08-23 | Microsoft Technology Licensing, Llc | Efficient multi-tenant spatial and relational indexing |
CN104731939B (zh) * | 2015-03-31 | 2018-05-01 | 浪潮集团有限公司 | 一种租户间通过数据表共享数据的方法 |
CN114791907B (zh) * | 2022-03-30 | 2023-01-06 | 北京柏睿数据技术股份有限公司 | 一种多租户共享数据的处理方法和系统 |
-
2022
- 2022-03-30 CN CN202210324516.6A patent/CN114791907B/zh active Active
- 2022-09-29 WO PCT/CN2022/122443 patent/WO2023184908A1/zh unknown
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102456028A (zh) * | 2010-10-27 | 2012-05-16 | 金蝶软件(中国)有限公司 | 一种面向多租户的数据获取方法、装置及系统 |
CN106663036A (zh) * | 2014-07-17 | 2017-05-10 | 微软技术许可有限责任公司 | 在多租户系统中处理变化 |
US20170264681A1 (en) * | 2016-03-14 | 2017-09-14 | Zynga Inc. | Multitenancy gaming services platform |
CN110799948A (zh) * | 2017-06-27 | 2020-02-14 | 易享信息技术有限公司 | 针对时间点恢复数据库的数据集的系统和方法 |
CN107357930A (zh) * | 2017-07-27 | 2017-11-17 | 深圳易嘉恩科技有限公司 | 云账坊平台租户数据表结构 |
CN109918405A (zh) * | 2019-01-25 | 2019-06-21 | 平安科技(深圳)有限公司 | 一种基于多租户多数据源的检索方法和装置 |
CN110072126A (zh) * | 2019-03-19 | 2019-07-30 | 视联动力信息技术股份有限公司 | 数据请求方法、协转服务器及计算机可读存储介质 |
CN110198346A (zh) * | 2019-05-06 | 2019-09-03 | 北京三快在线科技有限公司 | 数据读取方法、装置、电子设备及可读存储介质 |
US20210073065A1 (en) * | 2019-07-31 | 2021-03-11 | Reliance Jio Infocomm Limited | System and method of mapping and diagnostics of data center resources |
CN110765489A (zh) * | 2019-10-30 | 2020-02-07 | 深圳前海环融联易信息科技服务有限公司 | 多租户数据库隔离方法、系统、电子设备及计算机存储介质 |
CN111581216A (zh) * | 2020-05-09 | 2020-08-25 | 北京百度网讯科技有限公司 | 数据处理方法、装置、设备以及存储介质 |
CN112364110A (zh) * | 2020-11-17 | 2021-02-12 | 深圳前海微众银行股份有限公司 | 元数据管理方法、装置、设备及计算机存储介质 |
CN113342827A (zh) * | 2021-07-01 | 2021-09-03 | 广东电网有限责任公司 | 一种基于多租户技术的电网数据存储方法、存储介质及系统 |
CN114218606A (zh) * | 2021-12-16 | 2022-03-22 | 上海东普信息科技有限公司 | 租户数据隔离方法、装置、设备及存储介质 |
Non-Patent Citations (3)
Title |
---|
MOHAMED FEKIH AHMED ET AL.: "A Software-Defined Scalable and Autonomous Architecture for Multi-tenancy", 《2014 IEEE INTERNATIONAL CONFERENCE ON CLOUD ENGINEERING》 * |
周中民: "面向多租户应用的隐私保护动态评测机制的研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
张坤: "面向多租户应用的云数据隐私保护机制研究", 《中国博士学位论文全文数据库 信息科技辑》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023184908A1 (zh) * | 2022-03-30 | 2023-10-05 | 北京柏睿数据技术股份有限公司 | 一种多租户共享数据的处理方法和系统 |
CN116107547A (zh) * | 2023-01-04 | 2023-05-12 | 三峡高科信息技术有限责任公司 | 一种统一服务与多数据源管理的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN114791907B (zh) | 2023-01-06 |
WO2023184908A1 (zh) | 2023-10-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114791907B (zh) | 一种多租户共享数据的处理方法和系统 | |
US10140185B1 (en) | Epoch based snapshot summary | |
US11347787B2 (en) | Image retrieval method and apparatus, system, server, and storage medium | |
CN112287182B (zh) | 图数据存储、处理方法、装置及计算机存储介质 | |
US20120330907A1 (en) | Storage system for eliminating duplicated data | |
US11615000B2 (en) | Method and backup server for processing expired backups | |
US10545988B2 (en) | System and method for data synchronization using revision control | |
CN110633378A (zh) | 一种支持超大规模关系网络的图数据库构建方法 | |
CN104935469A (zh) | 一种日志信息分布式存储方法及系统 | |
CN111522811B (zh) | 数据库的处理方法及装置、存储介质、终端 | |
CN109522043B (zh) | 一种配置数据的管理方法、装置及存储介质 | |
US10664349B2 (en) | Method and device for file storage | |
CN111046106A (zh) | 缓存数据同步方法、装置、设备及介质 | |
CN113407560A (zh) | 更新消息处理方法、数据同步方法、配置信息配置方法 | |
CN113268540A (zh) | 一种数据同步的方法及装置 | |
CN111767314A (zh) | 数据缓存及查询方法、装置、懒缓存系统及存储介质 | |
CN111708763A (zh) | 分片集群的数据迁移方法、装置和分片集群系统 | |
CN114205424B (zh) | 账单文件解压方法、装置、计算机设备和存储介质 | |
CN116303343A (zh) | 数据分片方法、装置、电子设备及存储介质 | |
CN116069810A (zh) | 数据查询方法、装置及终端设备 | |
CN115480704A (zh) | 数据块组迁移映射表的构建方法、装置、设备及存储介质 | |
CN115858590A (zh) | 域名查询请求处理方法、计算机装置、设备、介质和产品 | |
US20210182146A1 (en) | Method, device and computer program product for storing data | |
JP5353682B2 (ja) | 構成情報管理装置、分散情報管理システム、分散情報管理方法および分散情報管理プログラム | |
US7058773B1 (en) | System and method for managing data in a distributed system |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |