分布式数据库下的全局唯一约束方法、装置和电子设备与流程
未命名
09-15
阅读:140
评论:0
1.本发明涉及分布式数据库技术领域,具体涉及一种分布式数据库下的全局唯一约束方法、装置和电子设备。
背景技术:
2.目前,分布式数据库通常将数据拆分成多个分片进行存储,通常根据某一个列的值来确定该行数据的存储位置。在这种情况下,如果需要保证与分片列无关的列的唯一性,通常使用uuid及其变种算法来填充数据。如果涉及多列的唯一性约束,通常要求这些列中必须包含分片列。其他场景下,与分片列无关的列的数据唯一性可能无法得到正确的约束。
3.进一步的,如果使用uuid及其变种算法的方案,则对业务系统提出了一定的要求,无法满足各种特定场景需求。如果强制要求唯一约束必须包含分片列,这也可能和用户实际的使用场景发生冲突,无法良好地满足用户需求。
技术实现要素:
4.本技术提供一种分布式数据库下的全局唯一约束方法、装置和电子设备,以解决现有技术与实际使用场景冲突、无法满足特定场景需求的上述技术问题。
5.根据本技术的一方面,一种实施例提供了一种分布式数据库下的全局唯一约束方法,包括:
6.为原表创建辅助索引表,其中,所述辅助索引表包含唯一约束的所有列以及分片节点编号;
7.所述辅助索引表在唯一约束列上创建本地唯一索引。
8.一种实施例中,所述为原表创建辅助索引表包括:
9.在所述原表的基础上,为所述原表的每一个与分片列无关的唯一约束创建一张辅助索引表。
10.一种实施例中,所述辅助索引表根据唯一约束的第一个列进行分片存储。
11.一种实施例中,还包括数据操作;所述数据操作中,优先处理辅助索引表的数据,其中,如果发生唯一约束冲突,则不满足唯一约束。
12.一种实施例中,所述数据操作中,优先处理辅助索引表的数据包括:
13.响应于写入数据,分布式数据库优先根据所有相关唯一列的数据进行辅助索引表的写入;其中,如果所述辅助索引表中不存在某一行数据,则在写入所述辅助索引表后,再进行所述原表的数据写入;如果所述辅助索引表中存在某一行数据,即唯一约束冲突,则数据写入失败;和/或,
14.所述数据操作中,优先处理辅助索引表的数据包括:
15.响应于变更数据,对所述辅助索引表的数据进行对应的变更;和/或,
16.所述数据操作中,优先处理辅助索引表的数据包括:
17.响应于更新数据,根据所更新行的唯一约束列的数据,更新对应的所述辅助索引
表中的数据。
18.一种实施例中,所述数据操作中,优先处理辅助索引表的数据包括:
19.响应于删除数据,根据所删除行的唯一约束列的数据,删除对应的所述辅助索引表中的数据。
20.根据本技术的一方面,一种实施例提供了一种分布式数据库下的全局唯一约束装置,包括:
21.第一处理模块,用于为原表创建辅助索引表,其中,所述辅助索引表包含唯一约束的所有列以及分片节点编号;和
22.第二处理模块,用于所述辅助索引表在唯一约束列上创建本地唯一索引。
23.一种实施例中,分布式数据库下的全局唯一约束装置还包括:数据处理模块;所述数据处理模块用于优先处理辅助索引表的数据,其中,如果发生唯一约束冲突,则不满足唯一约束;
24.所述数据处理模块包括:数据写入模块、数据变更模块、数据更新模块和数据删除模块中的一种或多种;
25.其中,所述数据写入模块用于响应于写入数据,分布式数据库优先根据所有相关唯一列的数据进行辅助索引表的写入;其中,如果所述辅助索引表中不存在某一行数据,则在写入所述辅助索引表后,再进行所述原表的数据写入;如果所述辅助索引表中存在某一行数据,即唯一约束冲突,则数据写入失败;
26.所述数据变更模块用于响应于变更数据,对所述辅助索引表的数据进行对应的变更;
27.所述数据更新模块用于响应于更新数据,根据所更新行的唯一约束列的数据,更新对应的所述辅助索引表中的数据;
28.所述数据删除模块用于响应于删除数据,根据所删除行的唯一约束列的数据,删除对应的所述辅助索引表中的数据。
29.根据本技术的一方面,一种实施例提供了一种电子设备,包括:
30.存储器;和
31.处理器;
32.其中,所述存储器用于存储一条或多条计算机指令;所述一条或多条计算机指令被所述处理器执行以实现如上任意一项所述分布式数据库下的全局唯一约束方法。
33.根据本技术的一方面,一种实施例提供了一种可读存储介质,所述可读存储介质上存储有计算机指令;其中,所述计算机指令被处理器执行时,实现如上任意一项所述分布式数据库下的全局唯一约束方法。
34.本技术的上述实施例,实现的全局唯一约束,在完整保证分布式场景下的唯一约束功能的前提下,对用户的使用方式没有侵入,对分片列的选择也更灵活,适用范围更宽广,可良好地满足客户需求。
附图说明
35.为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的
附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
36.图1是一种实施例中分布式数据库下的全局唯一约束方法的流程图;
37.图2是一种实施例中分布式数据库下的全局唯一约束装置的结构示意图;
38.图3是一种实施例中数据处理模块的结构示意图。
具体实施方式
39.需要说明的是,在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本技术。
40.为了使本技术领域的人员更好地理解本技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本技术一部分的实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本技术保护的范围。
41.需要说明的是,本技术中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
42.应该理解的是,当元件(诸如层、膜、区域、或衬底)描述为在另一元件“上”时,该元件可直接在该另一元件上,或者也可存在中间元件。而且,本技术中,当描述有元件“连接”至另一元件时,该元件可“直接连接”至该另一元件,或者通过第三元件“连接”至该另一元件。
43.实施例一
44.请参考图1,一种实施例提供了一种分布式数据库下的全局唯一约束方法,包括以下步骤:
45.s1.为原表创建辅助索引表;具体的,在所述原表的基础上,为所述原表的每一个与分片列无关的唯一约束创建一张辅助索引表。
46.其中,所述辅助索引表包含唯一约束的所有列以及对应的分片节点编号。
47.关于辅助索引表,优选的,辅助索引表根据唯一约束的第一个列进行分片存储。
48.s2.所述辅助索引表在唯一约束列上创建本地唯一索引。
49.一种实施例中,分布式数据库下的全局唯一约束方法还包括数据操作;所述数据操作中,优先处理辅助索引表的数据,其中,如果发生唯一约束冲突,则不满足唯一约束。
50.进一步的,关于数据操作中,优先处理辅助索引表的数据,有如下情形:
51.1.响应于写入数据,分布式数据库优先根据所有相关唯一列的数据进行辅助索引表的写入;其中,如果所述辅助索引表中不存在某一行数据,则在写入所述辅助索引表后,再进行所述原表的数据写入;如果所述辅助索引表中存在某一行数据,即唯一约束冲突,则数据写入失败。
52.2.响应于变更数据,对所述辅助索引表的数据进行对应的变更。
53.3.响应于更新数据,根据所更新行的唯一约束列的数据,更新对应的所述辅助索引表中的数据。
54.4.响应于删除数据,根据所删除行的唯一约束列的数据,删除对应的所述辅助索引表中的数据。
55.采用上述方式实现的全局唯一约束,在完整保证分布式场景下的唯一约束功能的前提下,对用户的使用方式没有侵入,对分片列的选择也更灵活,适用范围更宽广。
56.实施例二
57.请参考图1,一种实施例提供了一种分布式数据库下的全局唯一约束方法,具体为:
58.在原表的基础上,为原表的每一个与分片列无关的唯一约束创建一张辅助索引表。此辅助索引表包含了需要保证唯一约束的所有列以及这一行数据存储的实际分片节点的编号。换言之,辅助索引表字段包含:唯一约束所有列和分片节点编号(dn);其中,对于原表任意行(列值为v1,v2,v3),第一列为唯一约束列,行存储在3号分片节点,则对应辅助索引表行数据为原表唯一约束列值和行存储的分片节点编号(v1,3)。
59.此辅助索引表将根据唯一约束的第一个列进行分片存储。同时,该辅助索引表会在在需要保证唯一约束的列上创建一个本地唯一约束索引。可理解的是,唯一约束本质就是分布式数据库下唯一索引。
60.本技术方案的关键点在于:
61.1.创建一个包含所有唯一约束列的辅助索引表,同时在这些列上创建本地唯一索引。其中,本地唯一索引是数据节点内部唯一索引。
62.2.数据操作的时候,优先处理辅助索引表的数据,如果发生冲突,则不满足唯一约束。
63.关于数据操作的时候,优先处理辅助索引表的数据,有如下情形:
64.1.在发生数据写入时,分布式数据库将优先根据所有相关的唯一列的数据,进行辅助索引表的写入。
65.如果辅助索引表中已经存在同样的数据,则说明唯一约束冲突,数据将写入失败。如果辅助索引表中不存在该行数据,则说明该行数据是唯一的,在写入辅助索引表后,再进行原表的数据写入。
66.2.由于引入了额外的辅助索引表,在数据进行变更的时候,同样需要对辅助索引表的数据进行对应的变更。
67.3.在发生数据删除时,同时需要根据所删除的行的唯一约束列的数据,删除对应辅助索引表中的数据。
68.4.在发生数据更新时,同时需要根据所更新的行的唯一约束列的数据,更新对应辅助索引表中的数据。
69.实施例三
70.请参考图2、图3,基于同一发明构思,本技术的一种实施例提供了一种分布式数据库下的全局唯一约束装置,包括:
71.1.第一处理模块10
72.第一处理模块10用于为原表创建辅助索引表,其中,所述辅助索引表包含唯一约束的所有列以及分片节点编号。
73.2.第二处理模块20
74.第二处理模块20用于所述辅助索引表在唯一约束列上创建本地唯一索引。
75.3.数据处理模块30
76.数据处理模块30用于优先处理辅助索引表的数据,其中,如果发生唯一约束冲突,则不满足唯一约束。
77.其中,所述数据处理模块30包括:数据写入模块310、数据变更模块320、数据更新模块330和数据删除模块340中的一种或多种。
78.具体来讲,所述数据写入模块310用于响应于写入数据,分布式数据库优先根据所有相关唯一列的数据进行辅助索引表的写入;其中,如果所述辅助索引表中不存在某一行数据,则在写入所述辅助索引表后,再进行所述原表的数据写入;如果所述辅助索引表中存在某一行数据,即唯一约束冲突,则数据写入失败;
79.所述数据变更模块320用于响应于变更数据,对所述辅助索引表的数据进行对应的变更;
80.所述数据更新模块330用于响应于更新数据,根据所更新行的唯一约束列的数据,更新对应的所述辅助索引表中的数据;
81.所述数据删除模块340用于响应于删除数据,根据所删除行的唯一约束列的数据,删除对应的所述辅助索引表中的数据。
82.本技术方案中,分布式数据库下的全局唯一约束装置之各个模块与上述实施例中分布式数据库下的全局唯一约束方法之各个步骤存在一一对应的关系,不再赘述。
83.实施例四
84.基于同一发明构思,本技术的一种实施例提供了一种电子设备,包括:存储器和处理器;其中,所述存储器用于存储一条或多条计算机指令;所述一条或多条计算机指令被所述处理器执行上述各个实施例中任意一项所述分布式数据库下的全局唯一约束方法。
85.其中,上述的一条或多条计算机指令即可形成为程序。
86.实施例五
87.基于同一发明构思,本技术的一种实施例提供了一种可读存储介质,所述可读存储介质上存储有计算机指令;其中,所述计算机指令被处理器执行时,实现上述各个实施例中任意一项所述分布式数据库下的全局唯一约束方法。
88.其中,上述的一条或多条计算机指令即可形成为程序。
89.上述程序可以运行在处理器中,或者也可以存储在存储器中(或称为计算机可读介质),计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可
读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
90.这些计算机程序也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤,对应与不同的步骤可以通过不同的模块来实现。
91.以上所述仅为本技术的优选实施例而已,并不用于限制本技术,对于本领域的技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
技术特征:
1.一种分布式数据库下的全局唯一约束方法,其特征在于,包括:为原表创建辅助索引表,其中,所述辅助索引表包含唯一约束的所有列以及分片节点编号;所述辅助索引表在唯一约束列上创建本地唯一索引。2.根据权利要求1所述的一种分布式数据库下的全局唯一约束方法,其特征在于,所述为原表创建辅助索引表包括:在所述原表的基础上,为所述原表的每一个与分片列无关的唯一约束创建一张辅助索引表。3.根据权利要求1所述的一种分布式数据库下的全局唯一约束方法,其特征在于,所述辅助索引表根据唯一约束的第一个列进行分片存储。4.根据权利要求1所述的一种分布式数据库下的全局唯一约束方法,其特征在于,还包括数据操作;所述数据操作中,优先处理辅助索引表的数据,其中,如果发生唯一约束冲突,则不满足唯一约束。5.根据权利要求4所述的一种分布式数据库下的全局唯一约束方法,其特征在于,所述数据操作中,优先处理辅助索引表的数据包括:响应于写入数据,分布式数据库优先根据所有相关唯一列的数据进行辅助索引表的写入;其中,如果所述辅助索引表中不存在某一行数据,则在写入所述辅助索引表后,再进行所述原表的数据写入;如果所述辅助索引表中存在某一行数据,即唯一约束冲突,则数据写入失败;和/或,所述数据操作中,优先处理辅助索引表的数据包括:响应于变更数据,对所述辅助索引表的数据进行对应的变更;和/或,所述数据操作中,优先处理辅助索引表的数据包括:响应于更新数据,根据所更新行的唯一约束列的数据,更新对应的所述辅助索引表中的数据。6.根据权利要求4或5所述的一种分布式数据库下的全局唯一约束方法,其特征在于,所述数据操作中,优先处理辅助索引表的数据包括:响应于删除数据,根据所删除行的唯一约束列的数据,删除对应的所述辅助索引表中的数据。7.一种分布式数据库下的全局唯一约束装置,其特征在于,包括:第一处理模块,用于为原表创建辅助索引表,其中,所述辅助索引表包含唯一约束的所有列以及分片节点编号;和第二处理模块,用于所述辅助索引表在唯一约束列上创建本地唯一索引。8.根据权利要求7所述的一种分布式数据库下的全局唯一约束装置,其特征在于,还包括:数据处理模块;所述数据处理模块用于优先处理辅助索引表的数据,其中,如果发生唯一约束冲突,则不满足唯一约束;所述数据处理模块包括:数据写入模块、数据变更模块、数据更新模块和数据删除模块中的一种或多种;其中,所述数据写入模块用于响应于写入数据,分布式数据库优先根据所有相关唯一列的数据进行辅助索引表的写入;其中,如果所述辅助索引表中不存在某一行数据,则在写
入所述辅助索引表后,再进行所述原表的数据写入;如果所述辅助索引表中存在某一行数据,即唯一约束冲突,则数据写入失败;所述数据变更模块用于响应于变更数据,对所述辅助索引表的数据进行对应的变更;所述数据更新模块用于响应于更新数据,根据所更新行的唯一约束列的数据,更新对应的所述辅助索引表中的数据;所述数据删除模块用于响应于删除数据,根据所删除行的唯一约束列的数据,删除对应的所述辅助索引表中的数据。9.一种电子设备,其特征在于,包括:存储器;和处理器;其中,所述存储器用于存储一条或多条计算机指令;所述一条或多条计算机指令被所述处理器执行以实现权利要求1至6中任意一项所述分布式数据库下的全局唯一约束方法。10.一种可读存储介质,其特征在于,所述可读存储介质上存储有计算机指令;其中,所述计算机指令被处理器执行时,实现权利要求1至6中任意一项所述分布式数据库下的全局唯一约束方法。
技术总结
本发明涉及分布式数据库技术领域,公开了一种分布式数据库下的全局唯一约束方法、装置和电子设备。关于方法,为原表创建辅助索引表,其中,所述辅助索引表包含唯一约束的所有列以及分片节点编号;所述辅助索引表在唯一约束列上创建本地唯一索引。关于装置,第一处理模块用于为原表创建辅助索引表,其中,所述辅助索引表包含唯一约束的所有列以及分片节点编号;第二处理模块用于所述辅助索引表在唯一约束列上创建本地唯一索引。本申请的技术方案,实现的全局唯一约束,在完整保证分布式场景下的唯一约束功能的前提下,对用户的使用方式没有侵入,对分片列的选择也更灵活,适用范围更宽广,可良好地满足客户需求。可良好地满足客户需求。可良好地满足客户需求。
技术研发人员:金官丁
受保护的技术使用者:上海热璞网络科技有限公司
技术研发日:2023.06.19
技术公布日:2023/9/12
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
