掌桥专利:专业的专利平台
掌桥专利
首页

一种分布式数据库广播方法及系统

文献发布时间:2024-04-18 20:01:23


一种分布式数据库广播方法及系统

技术领域

本发明属于数据库管理技术领域,具体涉及一种分布式数据库广播方法及系统。

背景技术

分布式关系型数据库是一种基于数据库技术与分布式技术的结合的系统,基于传统关系型数据库,通过设定的分片规则,将大表记录进行拆分,分散存储到多个存储节点——数据分片节点,从而突破存储瓶颈,提升数据库性能。

分库分表表示对一个大数据量的表,选择其中一个字段作为分片键,通过一定的分片算法计算分片键的值,将表记录进行水平拆分,分散地存储到多个数据分片节点。客户端执行SQL语句时提供该分片字段作为查询条件,可快速定位到表记录所在数据分片节点,将SQL语句改写后直接路由到该数据分片节点执行,提高执行效率。

在实际应用的业务中,很多SQL语句的查询条件往往没有包含分片键。在查询时,需将SQL语句发送到各个数据分片节点查询再进行汇聚,此过程即为广播查询。

现有广播查询或插入方法在大数据量的场景,如果数据分片节点数过多,会占用大量连接,汇聚时占用大量内存、导致内存不足,且即便内存足够也会由于大量连接及汇聚过程降低查询效率。

因此需要一种改进的分布式数据库广播方法,能够在分布式数据库原本需要广播查询的场景中实现高效查询或插入。

发明内容

基于现有技术中存在的上述缺点和不足,本发明的目的之一是至少解决现有技术中存在的上述问题之一或多个,换言之,本发明的目的之一是提供满足前述需求之一或多个的一种分布式数据库广播方法及系统。

为了达到上述发明目的,本发明采用以下技术方案:

第一方面,本发明提供一种分布式数据库建立方法,具体包括:

为主表建立一个索引表,索引表包含分片键和索引字段;

设置分片规则;

根据分片规则拆分主表的数据,将每部分数据分别存储于分片键中各值对应的数据分片,每个数据分片具有索引字段的一部分索引分表。

第二方面,本发明提供一种分布式数据库插入方法,使用上述分布式数据库建立方法所建立的分布式数据库,方法具体包括:

获取插入请求的插入位置索引字;

确定插入位置索引字所处的索引分表;

在该索引分表中插入上述插入请求的索引;

根据分片规则确定插入请求的目标数据分片;

将插入请求改写为在目标数据分片执行。

作为一种优选的方案,根据分片规则确定插入请求的目标数据分片,具体为:

根据插入位置索引字和各个数据分片的索引分表确定插入位置索引字所处的数据分片。

作为一种优选的方案,将插入请求改写为在目标数据分片执行,具体包括:

将插入请求改写为在指定数据分片插入;

将改写后的插入请求发送至数据分片执行。

第三方面,本发明提供一种分布式数据库查询方法,使用上述分布式数据库建立方法所建立的分布式数据库,方法具体包括:

获取查询请求的查询位置索引字;

确定查询位置索引字所处的索引分表;

在该索引分表中查询查询请求的索引;

根据分片规则确定查询请求的目标数据分片;

将查询请求改写为在目标数据分片执行。

作为一种优选的方案,根据分片规则确定查询请求的目标数据分片,具体为:

根据查询位置索引字和各个数据分片的索引分表确定查询位置索引字所处的数据分片。

作为一种优选的方案,查询请求改写为在目标数据分片执行,具体包括:

将查询请求改写为在指定数据分片查询;

将改写后的查询请求发送至数据分片执行。

第四方面,本发明提供一种分布式数据库广播方法,使用上述分布式数据库建立方法所建立的分布式数据库,方法具体包括:

获取广播的SQL语句;

将SQL语句解析为插入或查询请求;

获取插入或查询请求的插入或查询位置索引字;

确定插入或查询位置索引字所处的索引分表;

在该索引分表中插入上述插入请求的索引、或查询查询请求的索引;

根据分片规则确定插入或查询请求的目标数据分片;

将插入或查询请求改写为在目标数据分片执行。

作为一种优选的方案,根据分片规则确定插入或查询请求的目标数据分片,具体为:

根据拆入或查询位置索引字和各个数据分片的索引分表确定插入或查询位置索引字所处的数据分片。

作为一种优选的方案,将拆入或查询请求改写为在目标数据分片执行,具体包括:

将插入或查询请求改写为在指定数据分片插入或查询;

将改写后的插入或查询请求发送至数据分片执行。

第五方面,本发明提供一种分布式数据库广播系统,包括上述分布式数据库建立方法所建立的分布式数据库,还具体包括:

广播语句获取模块,用于获取广播的SQL语句;

解析模块,用于将SQL语句解析为插入或查询请求;

提取模块,用于获取插入或查询请求的插入或查询位置索引字;

索引分表操作模块,用于确定插入或查询位置索引字所处的索引分表,在该索引分表中插入上述插入请求的索引、或查询查询请求的索引;

分片计算模块,用于根据分片规则确定插入或查询请求的目标数据分片;

改写模块,用于将插入或查询请求改写为在目标数据分片执行。

第六方面,本发明还提供一种计算机可读存储介质,其特征在于,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现如上述任一项的分布式数据库广播方法。

第七方面,本发明还提供一种计算机设备,计算机设备包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,计算机程序被处理器执行时实现如上述任一项的分布式数据库广播方法。

本发明与现有技术相比,有益效果是:

本发明的方法为主表建立索引表,以提升分布式分关系型数据库查询或插入性能。广播进行查询或插入时可根据索引表直接查询到分片键,从而定位到数据分片,避免数据分片间的大量连接及汇聚查询,提高广播效率。

附图说明

图1是本发明的一种分布式数据库建立方法所建分布式数据库的结构框图;

图2是本发明的一种分布式数据库广播方法在处理插入请求时的流程图;

图3是本发明的一种分布式数据库广播方法在处理查询请求时的流程图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。

在下述介绍中提供了本申请的多个实施例,不同实施例之间可以替换或者合并组合,因此本申请也可认为包含所记载的相同和/或不同实施例的所有可能组合。因而,如果一个实施例包含特征A、B、C,另一个实施例包含特征B、D,那么本申请也应视为包括含有A、B、C、D的一个或多个所有其他可能的组合的实施例,尽管该实施例可能并未在以下内容中有明确的文字记载。

下面的描述提供了示例,并且不对权利要求书中阐述的范围、适用性或示例进行限制。可以在不脱离本申请内容的范围的情况下,对描述的元素的功能和布置做出改变。各个示例可以适当省略、替代或添加各种过程或组件。例如所描述的方法可以以所描述的顺序不同的顺序来执行,并且可以添加、省略或组合各种步骤。此外,可以将关于一些示例描述的特征组合到其他示例中。

首先,在本申请的一个实施例中,提供一种分布式数据库建立方法,具体包括如下步骤:

S1、为主表建立一个索引表,索引表包含分片键和索引字段;

S2、设置分片规则;

S3、根据分片规则拆分主表的数据,将每部分数据分别存储于分片键中各值对应的数据分片,每个数据分片具有索引字段的一部分索引分表。

经过上述分布式数据库建立方法所建立的分布式数据库,其结构框图具体如图1所示,具有一个虚拟的逻辑表形式,其中的与主表对应的索引表被分片键分为了若干分片,每个分片具有索引分表,每个分片均被存储于一个数据分片节点中。

更具体的,在步骤S1之前,先使用 Java编写的分布式数据库中间件代理服务。

在本申请的另一个实施例中,提供一种分布式数据库插入方法,使用上述分布式数据库建立方法所建立的分布式数据库,方法具体包括:

获取插入请求的插入位置索引字;

确定插入位置索引字所处的索引分表;

在该索引分表中插入上述插入请求的索引;

根据分片规则确定插入请求的目标数据分片;

将插入请求改写为在目标数据分片执行。

上述方法中,根据分片规则确定插入请求的目标数据分片,具体为:

根据插入位置索引字和各个数据分片的索引分表确定插入位置索引字所处的数据分片。

上述方法中,将插入请求改写为在目标数据分片执行,具体包括:

将插入请求改写为在指定数据分片插入;

将改写后的插入请求发送至数据分片执行。

在本申请的另一个实施例中,还提供一种分布式数据库插入方法,使用上述分布式数据库建立方法所建立的分布式数据库,方法具体包括:

获取查询请求的查询位置索引字;

确定查询位置索引字所处的索引分表;

在该索引分表中查询查询请求的索引;

根据分片规则确定查询请求的目标数据分片;

将查询请求改写为在目标数据分片执行。

上述方法中,根据分片规则确定查询请求的目标数据分片,具体为:

根据查询位置索引字和各个数据分片的索引分表确定查询位置索引字所处的数据分片。

上述方法中,查询请求改写为在目标数据分片执行,具体包括:

将查询请求改写为在指定数据分片查询;

将改写后的查询请求发送至数据分片执行。

更具体的,在查询请求被执行后,其执行结果在汇聚处理后返回客户端。

由于查询与插入均属于常规的数据库操作,作为一种更完善的方案,在实际广播操作时可以将SQL语句自动解析为插入或查询请求然后进行相应执行。在一个实施例中,本申请提供一种分布式数据库广播方法,同样使用上述实施例的分布式数据库建立方法所建立的分布式数据库,方法具体包括:

S4、获取广播的SQL语句;

S5、将SQL语句解析为插入或查询请求;

S6、获取插入或查询请求的插入或查询位置索引字;

S7、确定插入或查询位置索引字所处的索引分表;

S8、在该索引分表中插入上述插入请求的索引、或查询查询请求的索引;

S9、根据分片规则确定插入或查询请求的目标数据分片;

S10、将插入或查询请求改写为在目标数据分片执行.

本实施例方法在处理插入请求时的一个详细举例的流程图如图2所示,假使原SQL插入请求中涉及三个参数order_id、seller_id、buyer_id,经过步骤S5进行SQL语句解析以后,将原SQL语句解析为插入请求,并在步骤S6中提取插入索引字seller_id,order_id作为分片键,根据分片规则的索引表规则mod(seller_id, 2)确定原始插入的数据的索引字位于order_idx_1或order_idx_2,然后根据主表规则mod(order_id, 2)将插入的数据分别填入order_1或order_2中。

在处理查询请求时,本实施例方法的一个详细举例的流程图如图3所示,假使需要查询seller_id = 20的数据,经过步骤S5进行SQL语句解析以后,将原SQL语句解析为查询请求,并在步骤S6中提取查询索引字seller_id作为查询条件,根据索引表规则mod(seller_id, 2)确定需要查询的数据的索引字位于order_idx_2中,然后改写语句,使查询在数据分片节点2中执行,数据分片节点2在其自身的索引分表中查询以后得到查询的数据的order_id为1,则可以根据主表规则mod(order_id, 2)至order_1中查找数据,进而输出查询结果。

上述分布式数据库建立及广播方法为主表建立索引表,以提升分布式分关系型数据库查询或插入性能。广播进行查询或插入时可根据索引表直接查询到分片键,从而定位到数据分片,避免数据分片间的大量连接及汇聚查询,提高广播效率。并且在广播时零侵入,索引表对客户端透明,使客户端无需改造即可使用。

另外,本申请实施例还提供一种分布式数据库广播系统,用于执行上述实施例的分布式数据库广播方法,其结构具体包括:

广播语句获取模块,用于获取广播的SQL语句;

解析模块,用于将SQL语句解析为插入或查询请求;

提取模块,用于获取插入或查询请求的插入或查询位置索引字;

索引分表操作模块,用于确定插入或查询位置索引字所处的索引分表,在该索引分表中插入上述插入请求的索引、或查询查询请求的索引;

分片计算模块,用于根据分片规则确定插入或查询请求的目标数据分片;

改写模块,用于将插入或查询请求改写为在目标数据分片执行。

本申请还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述各个实施例中的分布式数据库广播方法的步骤。其中,计算机可读存储介质可以包括但不限于任何类型的盘,包括软盘、光盘、DVD、CD-ROM、微型驱动器以及磁光盘、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、闪速存储器设备、磁卡或光卡、纳米系统(包括分子存储器IC),或适合于存储指令和/或数据的任何类型的媒介或设备。

在另一个实施例中,本发明还提供一种电子设备,包括至少一个处理器、至少一个存储器及存储在存储器上并可在处理器上运行的计算机程序。

其中,处理器可以包括一个或者多个处理核心。处理器利用各种接口和线路连接整个电子设备内的各个部分,通过运行或执行存储在存储器502内的指令、程序、代码集或指令集,以及调用存储在存储器内的数据,执行各种功能和处理数据。可选的,处理器可以采用DSP、FPGA、PLA中的至少一种硬件形式来实现。处理器可集成CPU、GPU和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示屏所需要显示的内容的渲染和绘制。

其中,存储器可以包括RAM,也可以包括ROM。可选的,该存储器包括非瞬时性计算机可读介质。存储器可用于存储指令、程序、代码、代码集或指令集。存储器可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现上述各个方法实施例的指令等;存储数据区可存储上面各个方法实施例中涉及到的数据等。存储器可选的还可以是至少一个位于远离前述处理器的存储装置。作为一种计算机存储介质的存储器中存储有用于执行上述各个实施例中的分布式数据库广播方法的计算机程序。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

以上者,仅为本公开的示例性实施例,不能以此限定本公开的范围。即但凡依本公开教导所作的等效变化与修饰,皆仍属本公开涵盖的范围内。本领域技术人员在考虑说明书及实践这里的公开后,将容易想到本公开的其实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未记载的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的范围和精神由权利要求限定。

相关技术
  • 用于视频编解码的无损编解码模式
  • 用于视频编解码中的无损编解码模式的方法和装置
技术分类

06120116553653