CN114896245A - 一种实现Hash分区表主键约束的方法及系统 - Google Patents

一种实现Hash分区表主键约束的方法及系统 Download PDF

Info

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
Application number
CN202210427642.4A
Other languages
English (en)
Inventor
李杨
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Yunxi Technology Co ltd
Original Assignee
Shandong Inspur Science Research Institute Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shandong Inspur Science Research Institute Co Ltd filed Critical Shandong Inspur Science Research Institute Co Ltd
Priority to CN202210427642.4A priority Critical patent/CN114896245A/zh
Publication of CN114896245A publication Critical patent/CN114896245A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/221Column-oriented storage; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24554Unary operations; Data partitioning operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/285Clustering 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分区表主键约束的方法及系统
技术领域
本发明公开一种实现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:如果分区中数据已经存在则进行报错;如果分区中数据不存在,则先把原来分区中的数据删除,再将新的数据添加到新的分区中。
CN202210427642.4A 2022-04-22 2022-04-22 一种实现Hash分区表主键约束的方法及系统 Pending CN114896245A (zh)

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)

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