CN118170850A - 一种分布式数据库系统分布式唯一索引优化方法、系统、设备及存储介质 - Google Patents
一种分布式数据库系统分布式唯一索引优化方法、系统、设备及存储介质 Download PDFInfo
- Publication number
- CN118170850A CN118170850A CN202410447296.5A CN202410447296A CN118170850A CN 118170850 A CN118170850 A CN 118170850A CN 202410447296 A CN202410447296 A CN 202410447296A CN 118170850 A CN118170850 A CN 118170850A
- Authority
- CN
- China
- Prior art keywords
- index
- slicing
- unique
- distributed
- unique key
- 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
- 238000000034 method Methods 0.000 title claims abstract description 27
- 238000005457 optimization Methods 0.000 title claims abstract description 23
- 239000012634 fragment Substances 0.000 claims description 35
- 238000004590 computer program Methods 0.000 claims description 3
- 238000005192 partition Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 7
- 238000010276 construction Methods 0.000 description 4
- 238000007689 inspection Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种分布式数据库系统分布式唯一索引优化方法和系统,包括:唯一键约束检查模块、数据写入与索引构建模块和唯一键值匹配查询模块;唯一键约束检查模块在数据记录写入时对唯一键进行约束性检查;数据写入与索引构建模块在根据分片键使用哈希分片算法计算出的节点中写入数据,得到数据记录RecordID,并携带上述RecordID,在根据唯一键使用哈希分片算法计算出的节点中创建索引;唯一键值匹配查询模块对要匹配查询的值使用哈希分片算法计算出的节点中进行查询。本发明降低写入数据时因唯一键约束检查带来的性能损耗,并且对于使用唯一键进行匹配的查询,能有效降低网络IO的次数,进而提高索引查询的性能。
Description
技术领域
本发明涉及分布式数据库技术领域,尤其是一种分布式数据库系统分布式唯一索引优化方法、系统、设备及存储介质。
背景技术
分布式数据库表的数据通常会按照一定规则分布在多个存储节点上,常见策略有哈希、范围、链表等(文章后续主要以哈希策略进行举例)。在原生的分布式数据库中,表中主键字段通常作为分片键或在业务字段外单独设定一个分片字段作为分片键。但当表中创建一个或多个唯一键,并且和分片键不是同一个字段时,传统的分布式数据库在构建唯一哈希索引的方法是按分片键进行数据分片,并在本地分片节点上构建分布式唯一哈希索引,由于唯一键和分片键不是同一个字段,当一个新的唯一键插入时我们无法计算当前的唯一键具体分布在哪一个分片节点上,此时我们做唯一性约束检查时需要查询所有的分片节点,资源消耗高,影响数据插入性能;此外,在使用唯一键值进行查询时,也无法计算在哪个分片节点可以命中该唯一键值对应的索引,即不知道与该唯一键值匹配的数据记录存放在哪一个分片节点,需要逐个分片节点进行查询,资源消耗高,影响数据查询性能。
发明内容
本发明所要解决的技术问题在于,提供一种分布式数据库系统分布式唯一索引优化方法、系统、设备及存储介质,优化以唯一键构建分布式唯一索引方法,降低写入数据时因唯一键约束检查带来的性能损耗,并且对于使用唯一键进行匹配的查询,能有效稳定查询的次数,进而提高索引查询的性能。
为解决上述技术问题,本发明提供一种分布式数据库系统分布式唯一索引优化方法,包括如下步骤:
步骤1、一条数据记录写入时对其进行唯一键约束检查,对唯一键的值通过哈希分片算法计算出分片号,到对应的分片节点中对该值进行查询;
步骤2、将数据记录插入到根据分片键使用哈希分片算法计算出的分片节点上,得到一个数据记录ID即RecordID(根据RecordID可以重定向到对应的分片节点中读取数据记录);
步骤3、携带上述数据记录ID,在步骤1中计算出的分片节点中创建索引,将数据记录ID保存在索引中;
步骤4、对要匹配查询的唯一键的值使用哈希分片算法计算分片,到计算出的分片节点上查询该值,若未能命中索引,则代表在此分布式表中不存在唯一键等于该值的数据记录;若命中索引,获取到数据记录的RecordID;若数据记录与索引数据在同一个分片,直接读取对应物理位置上的记录并返回;若数据记录在其他分片上,重定向到其他分片节点读取数据记录再返回。
优选的,步骤1中,对唯一键的值通过哈希分片算法计算出分片号,到对应的分片节点中对该值进行查询;若不存在,则通过检查,可继续写入;反之则不通过检查,返回错误。
优选的,步骤2中,RecordID记录数据所在分片节点信息及在分片节点上的物理位置信息。
优选的,步骤1和步骤4中,哈希分片算法指对唯一键值通过哈希算出哈希值再对分片数取模得到该唯一键值对应的索引K-V所在的分片结点。
相应的,一种如权利要求1所述的分布式数据库系统分布式唯一索引优化方法的系统,包括:唯一键约束检查模块、数据写入与索引构建模块和唯一键值匹配查询模块;唯一键约束检查模块在数据记录写入时对唯一键进行约束性检查;数据写入与索引构建模块在根据分片键使用哈希分片算法计算出的节点中写入数据,得到数据记录RecordID,并携带上述RecordID,在根据唯一键使用哈希分片算法计算出的节点中创建索引;唯一键值匹配查询模块对要匹配查询的值使用哈希分片算法计算出的节点中进行查询。
相应的,一种分布式数据库系统分布式唯一索引优化设备,其特征在于,包括:一个或多个处理器;
存储装置,用于存储一个或多个程序、用户数据;
当所述一个或多个程序被一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1至4任一所述的分布式数据库系统分布式唯一索引优化方法。
相应的,一种分布式数据库系统分布式唯一索引优化存储介质,其特征在于,其上存储有计算机程序,该程序被处理器执行时实现如权利要求1至4任一所述的分布式数据库系统分布式唯一索引优化方法。
本发明的有益效果为:(1)本发明避免了数据记录写入前需要查询所有的分片来进行唯一键约束检查,仅仅需要在对唯一键的值使用哈希分片算法计算得到的分片节点上检查一次即可,索引构建更高效,数据写入更快;(2)在基于分布式唯一索引进行匹配查询时,有效减少了分片节点访问的个数,降低网络资源消耗及减少磁盘IO次数,提高了基于索引进行查询的性能。
附图说明
图1为本发明的数据写入及索引构建时序图。
图2为本发明的查询时序图。
图3为本发明的分片节点A中TABLE1表结构及数据示意图。
图4为本发明的分片节点B中TABLE1表结构及数据示意图。
图5为本发明的分片节点C中TABLE1表结构及数据示意图。
图6为本发明的分布式索引示意图(哈希)。
图7为本发明的全局索引示意图(Range)。
具体实施方式
一种分布式数据库系统分布式唯一索引优化方法,包括如下步骤:
步骤1、唯一键约束检查;一条数据记录写入时对其进行唯一键约束检查,对唯一键的值通过哈希分片算法计算出分片号,到对应的分片节点中该值进行查询;若不存在,则通过检查,可继续写入;反之则不通过检查,返回错误;
步骤2、数据写入与索引构建;将数据记录插入对应的分片节点中,该分片节点基于分片键使用哈希分片算法计算得到,得到一个数据记录ID即RecordID(RecordID记录了数据所在分片节点信息及在分片节点上的物理位置信息,可以根据RecordID重定向到对应的分片节点中读取数据记录);携带上述数据记录ID,在步骤1中计算出的分片节点中创建索引,将数据记录ID保存在索引中;
步骤3、唯一键值匹配查询;对要匹配查询的值使用哈希分片算法计算分片;到步骤1中计算出的分片节点上查询该值(索引查询),若未能命中索引,则代表在此分布式表中不存在唯一键等于该值的数据记录;若命中索引,获取到数据记录的RecordID;基于以上的RecordID,RecordID记录了实际数据的分片节点信息以及在分片节点上的物理位置,若数据记录与索引数据在同一个分片,直接读取对应物理位置上的记录并返回;若数据记录在其他分片上,重定向到其他分片节点读取数据记录再返回。
如图1所示,分布式数据库表TABLE1包括字段:ID、FIELD1、FIELD2和FIELD3。其中ID为主键,也是分片键,TABLE1表数据通过ID进行数据分片,其数据分别分布在三个分片节点(A、B、C)中。现在基于字段FILED1构建分布式唯一索引。用户请求插入数据(4,f,d,e),首先进行唯一键约束检查(本发明以业务层进行唯一键约束检查进行举例,也可以在分布式数据库系统中实现唯一键约束检查),然后将数据记录和索引写入(原子操作,需保证分布式事务)到对应的分片(可能相同分片、可能不同分片)。
如图2所示,用户请求查询TABLE1表中FIELD1字段等于f的数据记录,首先对f使用哈希分片算法计算分片节点,然后到对应的分片节点中进行查询,最后返回查询结果(4,f,d,e)。
如图3、图4和图5所示,一个分布式数据库表TABLE1的结构在分片节点A、B、C中的数据记录。TABLE1表包括字段:ID(分片键、主键)、FIELD1(唯一键,以此键为key来构建全局唯一索引)、FIELD2和FIELD3。
ID为分片键,其中ID值为1、4、7、…的数据记录写入分片节点A;ID为2、5、8、…的数据记录写入分片节点B;ID为3、6、9、…的数据记录写入分片节点C。
FIELD1为索引键,其中FIELD1值为a、d、g、j、m、…在分片节点A中创建索引;FIELD1值为b、e、h、k、n、…在分片节点B中创建索引;FIELD1值为c、f、i、l、o、…在分片节点C中创建索引。
如图6所示,唯一键值通过哈希算出哈希值再对3(分片数)取模即索引K-V(为方便表述,以K-V形式来表述索引)所在分片号,如图,索引<a,A0001>、<d,B0002>、<g,B0003>、<j,C0004>、<m,A0005>、…位于分片节点A;索引<b,B0001>、<e,C0002>、<h,C0003>、<k,B0004>、<n,B0005>、…位于分片节点B;索引<c,C0001>、<f,A0002>、<i,A0003>、<l,A0004>、<o,C0005>、…位于分片节点C中,索引key对应数据表TABLE1中的唯一键FIELD1的值,索引value对应数据表TABLE1中数据记录的RecordID。
如图7所示,为使用Range分片算法构建的索引分布示意图,唯一键值a~e对应的索引位于分片节点A;唯一键值f~j对应的索引位于分片节点B;唯一键值k~o对应的索引位于分片节点C,以B+树构建索引,索引的key对应指向的叶子节点存放数据记录ID。(仅说明也可使用Range方法对索引进行分片)。
实施例1:
用于实现在分布式数据库系统中基于表中字段创建全局唯一索引,具体如下:
分布式数据库系统中包含表TABLE1,TABLE1包含字段:ID(主键,分片键),FIELD1(字段1,唯一键,基于此键的值来构建分布式唯一索引),FIELD2(字段2),FIELD3(字段3)。
其中通过TABLE1通过ID进行分片,要基于表TABLE1中的FIELD1字段创建分布式唯一索引(保证FIELD1字段值在整个分布式系统中唯一,以下简称FIELD1为唯一键),现向分布式表TABLE1的中插入数据记录为(1,a,b,c),其中1为主键,a为唯一键,b对应FIELD2列,c对应FIELD3列,其步骤如下:
1)a(唯一键值)通过哈希分片算法计算出分片A,在分片节点A中查找a,若唯一键值a已存在,则违背唯一性原则,拒绝插入并返回错误;反之则通过唯一键约束检查;
2)上述步骤1中a不存在于分片节点A中,可以继续插入,对1(分片键值)通过哈希分片算法计算出分片A,在分片节点A中插入数据记录(1,a,b,c),得到RecordID—A0001(数据记录ID,RecordID类似传统分布式ROWID,记录了分片地址及数据记录的存储地址,能够通过RecordID直接定位物理记录,本发明中RecordID只为方便描述,而非最终RecordID格式);
3)上述步骤2完成后,在分片节点A中创建索引<a,A0001>,索引key唯一键值a,索引value为上述生成的RecordID—A0001,至此完成了对数据记录(1,a,b,c)的写入。
上述2、3为一次原子操作(即一个事务),在失败时,可以进行事务回滚,以确保数据的准确性。
实施例2:
索引创建在与数据记录在不同分片的情形,具体如下:
向分布式数据库表TABLE1中插入数据记录(4,f,d,e),步骤如下:
1)f(唯一键值)通过哈希分片算法计算出分片C,在分片节点C中查找f,若唯一键值f已存在,则违背唯一性原则,拒绝插入并返回错误;反之则通过唯一键约束检查;
2)上述步骤1中f不存在于分片节点C中,可以继续插入,对4(唯一键值)通过哈希分片算法计算出分片A,在分片节点A中插入数据记录(4,f,d,e),得到RecordID--A0002;
3)上述步骤2完成后,在分片节点C中插入索引<f,A0002>,索引key为唯一键值f,索引value为数据记录(4,f,d,e)对应的RecordID—A0002,至此完成了对数据记录(4,f,d,e)的写入。
实施例3:
基于本发明中分布式唯一索引构建方式,在使用唯一键进行匹配查询时的过程,即基于索引进行查询的过程。
如第六章附图,已经对分布式数据库表TABLE1中字段FIELD1创建了分布式唯一索引,要从TABLE1中通过FIELD1内容进行查找,查找条件为FIELD1==”a”or FIELD1==“e”,查询步骤如下:
1)对a、e通过哈希分片算法分别计算出分区A、B;
2)分别在分区节点A中查找a,在分区节点B中查找e,在分区节点A中可命中索引(a,A0001)、分区节点B中可命中索引(e,C0002),即分别获取到数据记录ID:A0001、C0002;
3)2中分区节点A中找到a的RecordID为A0001,且该数据记录也位于分区节点A中,直接读取地址0001对应的数据记录(1,a,b,c)并返回;分区B中找到e的RecordID为C0002,该数据记录位于分区节点C中,将C0002返回;
4)基于3得到了(1,a,b,c)和C0002,其中C0002为数据记录ID,需进一步查询,通过C0002解析到数据记录所在的分区节点及在分区节点上的物理地址等信息,到分区节点C中读取地址0002处的数据记录,返回记录(6,e,l,m);
5)合并查询结果集并返回,即返回查询结果[(1,a,b,c),(6,e,l,m)]。
相应的,一种如权利要求1所述的分布式数据库系统分布式唯一索引优化方法的系统,包括:唯一键约束检查模块、数据写入与索引构建模块和唯一键值匹配查询模块;唯一键约束检查模块在数据记录写入时对唯一键进行约束性检查;数据写入与索引构建模块在根据分片键使用哈希分片算法计算出的节点中写入数据,得到数据记录RecordID,并携带上述RecordID,在根据唯一键使用哈希分片算法计算出的节点中创建索引;唯一键值匹配查询模块对要匹配查询的值使用哈希分片算法计算出的节点中进行查询。
相应的,一种分布式数据库系统分布式唯一索引优化设备,其特征在于,包括:一个或多个处理器;
存储装置,用于存储一个或多个程序、用户数据;
当所述一个或多个程序被一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1至4任一所述的分布式数据库系统分布式唯一索引优化方法。
相应的,一种分布式数据库系统分布式唯一索引优化存储介质,其特征在于,其上存储有计算机程序,该程序被处理器执行时实现如权利要求1至4任一所述的分布式数据库系统分布式唯一索引优化方法。
本发明通过对优化索引数据分布,即对索引数据进行分片,在进行唯一性约束检查时只需要在索引数据所在分片节点进行约束检查,提高数据写入性能;另外,在通过唯一键进行匹配的查询中,可以基于唯一键值使用哈希分片算法计算出分片节点,只在该分片节点中进行查询,降低网络资源占用及网络IO次数,进而也提高了查询的性能。
Claims (7)
1.一种分布式数据库系统分布式唯一索引优化方法,其特征在于,包括如下步骤:
步骤1、一条数据记录写入时对其进行唯一键约束检查,对唯一键的值通过哈希分片算法计算出分片号,到对应的分片节点中对该值进行查询;
步骤2、将数据记录插入到根据分片键使用哈希分片算法计算出的分片节点上,得到一个数据记录ID即RecordID;
步骤3、携带上述数据记录ID,在步骤1中计算出的分片节点中创建索引,将数据记录ID保存在索引中;
步骤4、对要匹配查询的唯一键的值使用哈希分片算法计算分片,到计算出的分片节点上查询该值,若未能命中索引,则代表在此分布式表中不存在唯一键等于该值的数据记录;若命中索引,获取到数据记录的RecordID;若数据记录与索引数据在同一个分片,直接读取对应物理位置上的记录并返回;若数据记录在其他分片上,重定向到其他分片节点读取数据记录再返回。
2.如权利要求1所述的分布式数据库系统分布式唯一索引优化方法,其特征在于,步骤1中,对唯一键的值通过哈希分片算法计算出分片号,到对应的分片节点中对该值进行查询;若不存在,则通过检查,可继续写入;反之则不通过检查,返回错误。
3.如权利要求1所述的分布式数据库系统分布式唯一索引优化方法,其特征在于,步骤2中,RecordID记录数据所在分片节点信息及在分片节点上的物理位置信息。
4.如权利要求1所述的分布式数据库系统分布式唯一索引优化方法,其特征在于,步骤1和步骤4中,哈希分片算法指对唯一键值通过哈希算出哈希值再对分片数取模得到该唯一键值对应的索引K-V所在的分片结点。
5.一种如权利要求1所述的分布式数据库系统分布式唯一索引优化方法的系统,其特征在于,包括:唯一键约束检查模块、数据写入与索引构建模块和唯一键值匹配查询模块;唯一键约束检查模块在数据记录写入时对唯一键进行约束性检查;数据写入与索引构建模块在根据分片键使用哈希分片算法计算出的节点中写入数据,得到数据记录RecordID,并携带上述RecordID,在根据唯一键使用哈希分片算法计算出的节点中创建索引;唯一键值匹配查询模块对要匹配查询的值使用哈希分片算法计算出的节点中进行查询。
6.一种分布式数据库系统分布式唯一索引优化设备,其特征在于,包括:一个或多个处理器;
存储装置,用于存储一个或多个程序、用户数据;
当所述一个或多个程序被一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1至4任一所述的分布式数据库系统分布式唯一索引优化方法。
7.一种分布式数据库系统分布式唯一索引优化存储介质,其特征在于,其上存储有计算机程序,该程序被处理器执行时实现如权利要求1至4任一所述的分布式数据库系统分布式唯一索引优化方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410447296.5A CN118170850A (zh) | 2024-04-15 | 2024-04-15 | 一种分布式数据库系统分布式唯一索引优化方法、系统、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410447296.5A CN118170850A (zh) | 2024-04-15 | 2024-04-15 | 一种分布式数据库系统分布式唯一索引优化方法、系统、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118170850A true CN118170850A (zh) | 2024-06-11 |
Family
ID=91360359
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410447296.5A Pending CN118170850A (zh) | 2024-04-15 | 2024-04-15 | 一种分布式数据库系统分布式唯一索引优化方法、系统、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118170850A (zh) |
-
2024
- 2024-04-15 CN CN202410447296.5A patent/CN118170850A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3327588B1 (en) | Value-id-based sorting in column-store databases | |
US9600507B2 (en) | Index structure for a relational database table | |
US8996502B2 (en) | Using join dependencies for refresh | |
US8886617B2 (en) | Query-based searching using a virtual table | |
US6546394B1 (en) | Database system having logical row identifiers | |
JP3914662B2 (ja) | データベース処理方法及び実施装置並びにその処理プログラムを記憶した媒体 | |
US8527556B2 (en) | Systems and methods to update a content store associated with a search index | |
US8924373B2 (en) | Query plans with parameter markers in place of object identifiers | |
US9747349B2 (en) | System and method for distributing queries to a group of databases and expediting data access | |
US20030037037A1 (en) | Method of storing, maintaining and distributing computer intelligible electronic data | |
US11176105B2 (en) | System and methods for providing a schema-less columnar data store | |
US6122644A (en) | System for halloween protection in a database system | |
US8090700B2 (en) | Method for updating databases | |
JPH10143538A (ja) | 一般化されたキーインデックス | |
CN102890678A (zh) | 一种基于格雷编码的分布式数据布局方法及查询方法 | |
CN103049521A (zh) | 一种支持多属性复合条件查询的虚拟表索引机制及方法 | |
US7499927B2 (en) | Techniques for improving memory access patterns in tree-based data index structures | |
JP2001350656A (ja) | 異種データソース統合アクセス方法 | |
US20090182766A1 (en) | Avoiding database related joins with specialized index structures | |
CN102193983A (zh) | 图形数据库基于关系路径的节点数据过滤方法 | |
US8150865B2 (en) | Techniques for coalescing subqueries | |
US10019483B2 (en) | Search system and search method | |
US10810219B2 (en) | Top-k projection | |
CN118170850A (zh) | 一种分布式数据库系统分布式唯一索引优化方法、系统、设备及存储介质 | |
CN114218277A (zh) | 一种关系数据库的高效查询方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination |