本发明属于数据库管理,具体涉及一种分布式数据库广播方法及系统。
背景技术:
1、分布式关系型数据库是一种基于数据库技术与分布式技术的结合的系统,基于传统关系型数据库,通过设定的分片规则,将大表记录进行拆分,分散存储到多个存储节点——数据分片节点,从而突破存储瓶颈,提升数据库性能。
2、分库分表表示对一个大数据量的表,选择其中一个字段作为分片键,通过一定的分片算法计算分片键的值,将表记录进行水平拆分,分散地存储到多个数据分片节点。客户端执行sql语句时提供该分片字段作为查询条件,可快速定位到表记录所在数据分片节点,将sql语句改写后直接路由到该数据分片节点执行,提高执行效率。
3、在实际应用的业务中,很多sql语句的查询条件往往没有包含分片键。在查询时,需将sql语句发送到各个数据分片节点查询再进行汇聚,此过程即为广播查询。
4、现有广播查询或插入方法在大数据量的场景,如果数据分片节点数过多,会占用大量连接,汇聚时占用大量内存、导致内存不足,且即便内存足够也会由于大量连接及汇聚过程降低查询效率。
5、因此需要一种改进的分布式数据库广播方法,能够在分布式数据库原本需要广播查询的场景中实现高效查询或插入。
技术实现思路
1、基于现有技术中存在的上述缺点和不足,本发明的目的之一是至少解决现有技术中存在的上述问题之一或多个,换言之,本发明的目的之一是提供满足前述需求之一或多个的一种分布式数据库广播方法及系统。
2、为了达到上述发明目的,本发明采用以下技术方案:
3、第一方面,本发明提供一种分布式数据库建立方法,具体包括:
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、获取广播的sql语句;
31、将sql语句解析为插入或查询请求;
32、获取插入或查询请求的插入或查询位置索引字;
33、确定插入或查询位置索引字所处的索引分表;
34、在该索引分表中插入上述插入请求的索引、或查询查询请求的索引;
35、根据分片规则确定插入或查询请求的目标数据分片;
36、将插入或查询请求改写为在目标数据分片执行。
37、作为一种优选的方案,根据分片规则确定插入或查询请求的目标数据分片,具体为:
38、根据拆入或查询位置索引字和各个数据分片的索引分表确定插入或查询位置索引字所处的数据分片。
39、作为一种优选的方案,将拆入或查询请求改写为在目标数据分片执行,具体包括:
40、将插入或查询请求改写为在指定数据分片插入或查询;
41、将改写后的插入或查询请求发送至数据分片执行。
42、第五方面,本发明提供一种分布式数据库广播系统,包括上述分布式数据库建立方法所建立的分布式数据库,还具体包括:
43、广播语句获取模块,用于获取广播的sql语句;
44、解析模块,用于将sql语句解析为插入或查询请求;
45、提取模块,用于获取插入或查询请求的插入或查询位置索引字;
46、索引分表操作模块,用于确定插入或查询位置索引字所处的索引分表,在该索引分表中插入上述插入请求的索引、或查询查询请求的索引;
47、分片计算模块,用于根据分片规则确定插入或查询请求的目标数据分片;
48、改写模块,用于将插入或查询请求改写为在目标数据分片执行。
49、第六方面,本发明还提供一种计算机可读存储介质,其特征在于,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现如上述任一项的分布式数据库广播方法。
50、第七方面,本发明还提供一种计算机设备,计算机设备包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,计算机程序被处理器执行时实现如上述任一项的分布式数据库广播方法。
51、本发明与现有技术相比,有益效果是:
52、本发明的方法为主表建立索引表,以提升分布式分关系型数据库查询或插入性能。广播进行查询或插入时可根据索引表直接查询到分片键,从而定位到数据分片,避免数据分片间的大量连接及汇聚查询,提高广播效率。
1.一种分布式数据库建立方法,其特征在于,具体包括:
2.一种分布式数据库插入方法,使用如权利要求1的分布式数据库建立方法所建立的分布式数据库,其特征在于,具体包括:
3.如权利要求2所述的一种分布式数据库插入方法,其特征在于,根据分片规则确定所述插入请求的目标数据分片,具体为:
4.如权利要求2所述的一种分布式数据库插入方法,其特征在于,将所述插入请求改写为在所述目标数据分片执行,具体包括:
5.一种分布式数据库查询方法,使用如权利要求1的分布式数据库建立方法所建立的分布式数据库,其特征在于,具体包括:
6.如权利要求5所述的一种分布式数据库查询方法,其特征在于,根据分片规则确定所述查询请求的目标数据分片,具体为:
7.如权利要求5所述的一种分布式数据库查询方法,其特征在于,所述查询请求改写为在所述目标数据分片执行,具体包括:
8.一种分布式数据库广播方法,使用如权利要求1的分布式数据库建立方法所建立的分布式数据库,其特征在于,具体包括:
9.如权利要求8所述的一种分布式数据库广播方法,其特征在于,根据分片规则确定所述插入或查询请求的目标数据分片,具体为:
10.如权利要求8所述的一种分布式数据库广播方法,其特征在于,将所述拆入或查询请求改写为在所述目标数据分片执行,具体包括:
11.一种分布式数据库广播系统,包括如权利要求1的分布式数据库建立方法所建立的分布式数据库,其特征在于,还具体包括:
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求8至10任一项所述的方法。
13.一种计算机设备,其特征在于,所述计算机设备包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求8至10任一项所述的方法。