CN114896245A - 一种实现Hash分区表主键约束的方法及系统 - Google Patents
一种实现Hash分区表主键约束的方法及系统 Download PDFInfo
- Publication number
- CN114896245A CN114896245A CN202210427642.4A CN202210427642A CN114896245A CN 114896245 A CN114896245 A CN 114896245A CN 202210427642 A CN202210427642 A CN 202210427642A CN 114896245 A CN114896245 A CN 114896245A
- Authority
- CN
- China
- Prior art keywords
- partition
- data
- module
- hash
- update
- 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.)
- Pending
Links
- 238000005192 partition Methods 0.000 title claims abstract description 135
- 238000000034 method Methods 0.000 title claims abstract description 32
- 238000012790 confirmation Methods 0.000 claims description 16
- 238000004364 calculation method Methods 0.000 claims description 13
- 238000010200 validation analysis Methods 0.000 claims 3
- 230000004069 differentiation Effects 0.000 claims 2
- 230000009286 beneficial effect Effects 0.000 abstract description 3
- 238000000638 solvent extraction Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
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/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/221—Column-oriented 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24554—Unary operations; Data partitioning operations
-
- 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
- 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)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种实现Hash分区表主键约束的方法和系统,属于数据库执行领域;所述方法的具体步骤如下:S1将操作区分为insert和update;S2将Insert操作进行分类操作;S3将update操作进行分类操作;本方法实现了Hash分区表主键约束条件;对如何实现Hash分区的主键约束方案进行了补充,填补的该方面空缺;另外,该方法能够在提前判断数据所在分区,这样就能有效避免对整个分区表进行查找,只需要从特定分区进行查找判断是否重复即可,有助于提高数据库执行性能,提高用户体验。
Description
技术领域
本发明公开一种实现Hash分区表主键约束的方法及系统,涉及数据库执行技术领域。
背景技术
分区表就是将大表的数据分成称为分区的许多小的子集,分区表的种类划分主要有:range(范围)、list(列表)和hash(散列)分区。划分依据主要是根据其表内部属性。同时,分区表能够创建其独特的分区索引。其中Hash 分区表就是根据分区列进行Hash后对表进行划分,以达到查询时优化的目的。但由于Hash分区表的分区列必须包含主键列,所以对于表中的主键的唯一性约束的实现显得十分重要。
虽然目前市面上的数据库大都支持Hash分区表,但是对于如何实现Hash 分区表中的主键约束都找不到具体的描述。
故现发明一种实现Hash分区表主键约束的方法及系统,以解决上述问题。
发明内容
本发明针对现有技术的问题,提供一种实现Hash分区表主键约束的方法及系统,所采用的技术方案为:一种实现Hash分区表主键约束的方法,所述方法的具体步骤如下:
S1将操作区分为insert和update;
S2将Insert操作进行分类操作;
S3将update操作进行分类操作。
所述的S1具体步骤如下:
S101在执行阶段根据语句类型判断是Insert还是update;
S102如果语句类型是Insert则进行S2步骤,如果语句类型是update则进行S3步骤。
所述的S2具体步骤如下:
S201将Insert操作根据Hash计算获得分区ID,在对应的分区下查找主键冲突;
S202如果分区中数据已经存在,则进行报错;如果分区中数据不存在,则执行后续添加流程。
所述的S3具体步骤如下:
S301对Hash分区表的分布列修改后的值进行Hash计算,得出需要重分布到的分区的新ID;将新ID与数据所在分区的原ID进行比较;
S302如果新ID和原ID相同,则不需要进行Hash重分布;如果新ID和原 ID不同,则需要进行Hash重分布。
S303当不需要进行Hash重分布时,Update操作根据Hash计算获得分区 ID,在对应的分区下查找主键冲突;
S304如果分区中数据已经存在则进行报错;如果分区中数据不存在,则更新原分区数据;
S313当需要进行Hash重分布时,Update操作根据Hash重分布得到的分区 ID,在对应的分区下查找主键冲突;
S314如果分区中数据已经存在则进行报错;如果分区中数据不存在,则先把原来分区中的数据删除,再将新的数据添加到新的分区中。
一种实现Hash分区表主键约束的系统,其特征是所述的系统具体包括数据操作区分模块、Insert模块和update模块:
操作区分模块:将操作区分为insert和update;
Insert模块:将Insert操作进行分类操作;
update模块:将update操作进行分类操作。
所述数据操作区分模块具体包括语言区分模块和执行模块A:
语言区分模块:在执行阶段根据语句类型判断是Insert还是update;
执行模块A:如果语句类型是Insert则进行S2步骤,如果语句类型是 update则进行S3步骤。
所述Insert模块具体包括冲突确认模块A、和执行模块B:
冲突确认模块A:将Insert操作根据Hash计算,在对应的分区下查找主键冲突;
执行模块B:如果分区中数据已经存在,则进行报错;如果分区中数据不存在,则执行后续添加流程。
所述update模块具体包括重分布模块、执行模块C、冲突确认模块B、执行模块D、冲突确认模块C和执行模块E:
执行模块C:如果新ID和原ID相同,则不需要进行Hash重分布;如果新 ID和原ID不同,则需要进行Hash重分布;
冲突确认模块B:当不需要进行Hash重分布时,Update操作根据Hash计算获得分区ID,在对应的分区下查找主键冲突;
执行模块D:如果分区中数据已经存在则进行报错;如果分区中数据不存在,则更新原分区数据;
冲突确认模块C:当需要进行Hash重分布时,Update操作根据Hash重分布得到的分区ID,在对应的分区下查找主键冲突;
执行模块E:如果分区中数据已经存在则进行报错;如果分区中数据不存在,则先把原来分区中的数据删除,再将新的数据添加到新的分区中。
本发明的有益效果为:目前市面上的数据库大多支持Hash分区表,并且分区列必须包含主键列,但是对如何保证主键列的唯一性并没有具体描述。本发明主要描述了在数据库执行阶段,先确定需不需要Hash重分布,再来判断数据所在分区,最后在所在分区判断数据唯一性的方法。本方法实现了Hash 分区表主键约束条件。对如何实现Hash分区的主键约束方案进行了补充,填补的该方面空缺。另外,该方法能够在提前判断数据所在分区,这样就能有效避免对整个分区表进行查找,只需要从特定分区进行查找判断是否重复即可,有助于提高数据库执行性能,提高用户体验。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明方法的流程图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定;
实施例一:
一种实现Hash分区表主键约束的方法,所述方法的具体步骤如下:
S1将操作区分为insert和update;
S2将Insert操作进行分类操作;
S3将update操作进行分类操作;
该技术方法包含3个部分:在执行阶段判断是insert还是update,判断是否需要Hash重分布,判断数据是否存在;
判断是否需要Hash重分布,首先要看修改的列是否为Hash分区表的分布列,如果是Hash分区表的分布列,那么对修改后的值进行Hash计算后,得出需要重分布到的分区的ID,在和原来数据所在的分区的ID进行比较,如果两次的ID相同,那么不需要进行Hash重分布,如果两次ID不同,那么需要进行 Hash重分布;
进一步的,所述的S1具体步骤如下:
S101在执行阶段根据语句类型判断是Insert还是update;
S102如果语句类型是Insert则进行S2步骤,如果语句类型是update则进行S3步骤;
进一步的,所述的S2具体步骤如下:
S201对Hash分区表的分布列修改后的值进行Hash计算,得出需要重分布到的分区的新ID;
S201将Insert操作根据Hash计算获得分区ID,在对应的分区下查找主键冲突;
S202如果分区中数据已经存在,则进行报错;如果分区中数据不存在,则执行后续添加流程;
再一步的,所述的S3具体步骤如下:
S301对Hash分区表的分布列修改后的值进行Hash计算,得出需要重分布到的分区的新ID;将新ID与数据所在分区的原ID进行比较;
S302如果新ID和原ID相同,则不需要进行Hash重分布;如果新ID和原 ID不同,则需要进行Hash重分布。
S303当不需要进行Hash重分布时,Update操作根据Hash计算获得分区 ID,在对应的分区下查找主键冲突;
S304如果分区中数据已经存在则进行报错;如果分区中数据不存在,则更新原分区数据;
S313当需要进行Hash重分布时,Update操作根据Hash重分布得到的分区 ID,在对应的分区下查找主键冲突;
S314如果分区中数据已经存在则进行报错;如果分区中数据不存在,则先把原来分区中的数据删除,再将新的数据添加到新的分区中;
本方法的发明目的是实现一种能够保证Hash分区表主键约束的方法,主要通过判断是否需要Hash重分布以及计算数据所在分区,来判断该数据是否存在,来保证主键的唯一性约束;
SQL执行阶段分为接收SQL语句、构建语法树、生成执行计划、运行并返回结果四个阶段,该方法的实现主要在生成执行计划阶段完成;本方法会对数据库的insert和update方法都进行修改,目的是在进行insert时能够判断表中是否已经存在数据,以及在进行update操作时,是否把原来的数据修改成了表中已经存在的数据;这样来实现主键的唯一性约束;其特征在于:通过执行计划获取语句类型,通过修改内容判断是否重分布,通过分区ID判断是否重复;
名词解释
分区表:分区表是将大表的数据分成称为分区的许多小的子集。
Hash分区表:Hash分区表是按照分区列的Hash进行分区的分区表。
SQL执行阶段:一个SQL语句从接受到执行结束返回结果行经过的各个阶段,也可以称之为SQL语句的生命周期,分为接收SQL语句、构建语法树、生成执行计划、运行并返回结果四个阶段。
主键约束:主键约束在表中定义一个主键来唯一确定表中每一行数据的标识符。
唯一性约束:唯一性约束要求该列唯一,允许为空,但只能出现一个空值。
Insert:在数据库中插入数据。
Update:在数据库中修改数据。
实施例二:
一种实现Hash分区表主键约束的系统,其特征是所述的系统具体包括数据操作区分模块、Insert模块和update模块:
操作区分模块:将操作区分为insert和update;
Insert模块:将Insert操作进行分类操作;
update模块:将update操作进行分类操作;
所述操作区分模块具体包括语言区分模块和执行模块A:
语言区分模块:在执行阶段根据语句类型判断是Insert还是update;
执行模块A:如果语句类型是Insert则进行S2步骤,如果语句类型是 update则进行S3步骤;
所述Insert模块具体包括冲突确认模块A、和执行模块B:
冲突确认模块A:将Insert操作根据Hash计算,在对应的分区下查找主键冲突;
执行模块B:如果分区中数据已经存在,则进行报错;如果分区中数据不存在,则执行后续添加流程;
所述update模块具体包括重分布模块、执行模块C、冲突确认模块B、执行模块D、冲突确认模块C和执行模块E:
重分布模块:对Hash分区表的分布列修改后的值进行Hash计算,得出需要重分布到的分区的新ID;将新ID与数据所在分区的原ID进行比较;
执行模块C:如果新ID和原ID相同,则不需要进行Hash重分布;如果新 ID和原ID不同,则需要进行Hash重分布;
冲突确认模块B:当不需要进行Hash重分布时,Update操作根据Hash计算获得分区ID,在对应的分区下查找主键冲突;
执行模块D:如果分区中数据已经存在则进行报错;如果分区中数据不存在,则更新原分区数据;
冲突确认模块C:当需要进行Hash重分布时,Update操作根据Hash重分布得到的分区ID,在对应的分区下查找主键冲突;
执行模块E:如果分区中数据已经存在则进行报错;如果分区中数据不存在,则先把原来分区中的数据删除,再将新的数据添加到新的分区中。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (8)
1.一种实现Hash分区表主键约束的方法,其特征是所述方法的具体步骤如下:
S1将操作区分为insert和update;
S2将Insert操作进行分类操作;
S3将update操作进行分类操作。
2.根据权利要求1所述的方法,其特征是所述的S1具体步骤如下:
S101在执行阶段根据语句类型判断是Insert还是update;
S102如果语句类型是Insert则进行S2步骤,如果语句类型是update则进行S3步骤。
3.根据权利要求2所述的方法,其特征是所述的S2具体步骤如下:
S201将Insert操作根据Hash计算获得分区ID,在对应的分区下查找主键冲突;
S202如果分区中数据已经存在,则进行报错;如果分区中数据不存在,则执行后续添加流程。
4.根据权利要求3所述的方法,其特征是所述的S3具体步骤如下:
S301对Hash分区表的分布列修改后的值进行Hash计算,得出需要重分布到的分区的新ID;将新ID与数据所在分区的原ID进行比较;
S302如果新ID和原ID相同,则不需要进行Hash重分布;如果新ID和原ID不同,则需要进行Hash重分布。
S303当不需要进行Hash重分布时,Update操作根据Hash计算获得分区ID,在对应的分区下查找主键冲突;
S304如果分区中数据已经存在则进行报错;如果分区中数据不存在,则更新原分区数据;
S313当需要进行Hash重分布时,Update操作根据Hash重分布得到的分区ID,在对应的分区下查找主键冲突;
S314如果分区中数据已经存在则进行报错;如果分区中数据不存在,则先把原来分区中的数据删除,再将新的数据添加到新的分区中。
5.一种实现Hash分区表主键约束的系统,其特征是所述的系统具体包括数据确认模块、重分布模块和存在判定模块:
操作区分模块:将操作区分为insert和update;
Insert模块:将Insert操作进行分类操作;
update模块:将update操作进行分类操作。
6.根据权利要求5所述的系统,其特征是所述操作区分模块具体包括语言区分模块和执行模块A:
语言区分模块:在执行阶段根据语句类型判断是Insert还是update;
执行模块A:如果语句类型是Insert则进行S2步骤,如果语句类型是update则进行S3步骤。
7.根据权利要求6所述的系统,其特征是所述Insert模块具体包括冲突确认模块A、和执行模块B:
冲突确认模块A:将Insert操作根据Hash计算,在对应的分区下查找主键冲突;
执行模块B:如果分区中数据已经存在,则进行报错;如果分区中数据不存在,则执行后续添加流程。
8.根据权利要求7所述的系统,其特征是所述update模块具体包括重分布模块、执行模块C、冲突确认模块B、执行模块D、冲突确认模块C和执行模块E:
重分布模块:对Hash分区表的分布列修改后的值进行Hash计算,得出需要重分布到的分区的新ID;将新ID与数据所在分区的原ID进行比较;
执行模块C:如果新ID和原ID相同,则不需要进行Hash重分布;如果新ID和原ID不同,则需要进行Hash重分布;
冲突确认模块B:当不需要进行Hash重分布时,Update操作根据Hash计算获得分区ID,在对应的分区下查找主键冲突;
执行模块D:如果分区中数据已经存在则进行报错;如果分区中数据不存在,则更新原分区数据;
冲突确认模块C:当需要进行Hash重分布时,Update操作根据Hash重分布得到的分区ID,在对应的分区下查找主键冲突;
执行模块E:如果分区中数据已经存在则进行报错;如果分区中数据不存在,则先把原来分区中的数据删除,再将新的数据添加到新的分区中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210427642.4A CN114896245A (zh) | 2022-04-22 | 2022-04-22 | 一种实现Hash分区表主键约束的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210427642.4A CN114896245A (zh) | 2022-04-22 | 2022-04-22 | 一种实现Hash分区表主键约束的方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114896245A true CN114896245A (zh) | 2022-08-12 |
Family
ID=82718136
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210427642.4A Pending CN114896245A (zh) | 2022-04-22 | 2022-04-22 | 一种实现Hash分区表主键约束的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114896245A (zh) |
-
2022
- 2022-04-22 CN CN202210427642.4A patent/CN114896245A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20170083573A1 (en) | Multi-query optimization | |
US20160232186A1 (en) | Method and system for database partition | |
US8271523B2 (en) | Coordination server, data allocating method, and computer program product | |
CN113110866B (zh) | 一种数据库变更脚本的评估方法及装置 | |
CN110147407B (zh) | 一种数据处理方法、装置及数据库管理服务器 | |
EP1234258B1 (en) | System for managing rdbm fragmentations | |
US20110246448A1 (en) | Database distribution system and methods for scale-out applications | |
CN111581234B (zh) | Rac多节点数据库查询方法、装置及系统 | |
CN114398371B (zh) | 数据库集群系统多副本分片方法、装置、设备及存储介质 | |
CN107077496A (zh) | 用于索引编译以优化索引使用的系统、方法和设备 | |
US9053207B2 (en) | Adaptive query expression builder for an on-demand data service | |
CN114090695A (zh) | 分布式数据库的查询优化的方法和装置 | |
WO2022005989A1 (en) | Patchindex system and method for updatable materialization of approximate constraints | |
CN112347108A (zh) | 适用于混合后端的数据查询方法和系统 | |
CN114328612A (zh) | 查询优化器的数据处理方法、装置及电子设备 | |
US20210034616A1 (en) | Query optimization | |
CN111078728A (zh) | 一种数据库归档模式下跨库查询方法和装置 | |
CN108780452B (zh) | 一种存储过程处理方法及装置 | |
CN114896245A (zh) | 一种实现Hash分区表主键约束的方法及系统 | |
US10762084B2 (en) | Distribute execution of user-defined function | |
CN114254005A (zh) | 分区表的分组聚集查询方法、装置、计算机设备和介质 | |
CN110413642B (zh) | 一种应用无感知的分片数据库解析及优化方法 | |
CN111737290A (zh) | 一种分布式数据库的查询方法及装置 | |
CN113360503A (zh) | 分布式数据库的测试数据跟踪方法及装置 | |
CN111858616A (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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20221202 Address after: Room 305-22, Building 2, No. 1158 Zhangdong Road and No. 1059 Dangui Road, China (Shanghai) Pilot Free Trade Zone, Pudong New Area, Shanghai, 200120 Applicant after: Shanghai Yunxi Technology Co.,Ltd. Address before: Building S02, 1036 Gaoxin Langchao Road, Jinan, Shandong 250100 Applicant before: Shandong Inspur Scientific Research Institute Co.,Ltd. |
|
TA01 | Transfer of patent application right |