分片数据库路由方法、系统、设备及存储介质与流程

文档序号:21362551发布日期:2020-07-04 04:36阅读:260来源:国知局
分片数据库路由方法、系统、设备及存储介质与流程

本发明涉及数据库技术,尤其是涉及一种分片数据库路由方法、系统、设备及存储介质。



背景技术:

在移动互联网时代,随着业务数据的爆发式增长,数据库分片已经成为常见的数据优化技术,即把数据库切分成多个不同的分片数据库(shardeddatabase,sdb),从而缓解单一数据库的性能问题。然而,在数据库分片之后,现有技术对业务数据的处理大多要依赖中心数据库,通过中心数据库路由,或者采用路由映射的方式,进行分片数据库的数据扭转与交互,从而增加了中心数据库和数据路由的压力及开销,一旦中心数据库发生故障,就会导致整个业务瘫痪,甚至存在丢失数据的风险。



技术实现要素:

本发明旨在至少在一定程度上解决现有技术中存在的技术问题之一。为此,本发明提出一种分片数据库路由方法,能够提高分片数据库的利用率,减轻中心数据库的负载压力,从而降低中心数据库的故障概率。

本发明还提出一种分片数据库路由系统。

本发明还提出一种分片数据库路由设备。

本发明还提出一种计算机可读存储介质。

第一方面,本发明的一个实施例提供了一种分片数据库路由方法,包括:

客户端发起包括分片键(shardingkey)的业务数据处理请求,分片键用于确定业务数据在分片数据库中的分布;

客户端根据分片键,获取分片元映射数据;

客户端根据分片元映射数据,获取包括业务数据的目标分片数据库实例;

客户端使用目标分片数据库实例,将业务数据处理请求路由到目标分片数据库。

本发明实施例的一种分片数据库路由方法至少具有如下有益效果:

1.通过将业务数据处理请求直接路由到目标分片数据库,绕开中心数据库,提高了分片数据库的利用率,减轻了中心数据库的负载压力,从而降低了中心数据库的故障概率;

2.业务数据处理请求仅在客户端与目标分片数据库之间进行交互,减少了中心数据库与目标分片数据库之间的数据扭转和交互,减小了业务数据处理请求的路由开销,提高了业务数据的处理效率。

根据本发明的另一些实施例的一种分片数据库路由方法,客户端根据分片键,获取分片元映射数据,包括:

客户端根据分片键的值,或者分片键的哈希值,计算分片元数据,得到分片元映射数据,分片元数据包括分片配置数据和分片元映射数据。

本发明实施例的一种分片数据库路由方法,根据分片规则,利用分片键的值,或者分片键的哈希值,计算分片元数据,得到分片元映射数据,目的是根据分片元映射数据,寻址到目标分片数据库。

根据本发明的另一些实施例的一种分片数据库路由方法,客户端根据分片元映射数据,获取包括业务数据的目标分片数据库实例,包括:

客户端根据分片元映射数据,查询包括分片元映射数据的路由表,获取包括业务数据的目标分片数据库实例。

本发明实施例的一种分片数据库路由方法,通过查询包括分片元映射数据的路由表,能够确定包括业务数据的目标分片数据库的地址。

根据本发明的另一些实施例的一种分片数据库路由方法,客户端使用目标分片数据库实例,将业务数据处理请求路由到目标分片数据库,包括:

客户端创建独立线程,使用目标分片数据库实例,将中心数据库实例上的数据源切换到目标分片数据库实例上,将业务数据处理请求路由到目标分片数据库。

本发明实施例的一种分片数据库路由方法,通过将中心数据库实例上的数据源切换到目标分片数据库实例上,能够实现将业务数据处理请求直接路由到目标分片数据库;而通过创建独立线程,还能减少数据源切换对其他业务数据处理进程的影响。

根据本发明的另一些实施例的一种分片数据库路由方法,目标分片数据库响应业务数据处理请求,完成业务数据处理。

本发明实施例的一种分片数据库路由方法,目标分片数据库接收到业务数据处理请求,对业务数据进行处理,业务数据处理请求并不经过中心数据库,减小了业务数据处理请求的路由开销,提高了业务数据的处理效率。

根据本发明的另一些实施例的一种分片数据库路由方法,客户端销毁独立线程,将数据源切换回中心数据库实例上。

本发明实施例的一种分片数据库路由方法,业务数据处理完成,客户端就销毁独立线程,释放处理上一次业务数据所占用的内存空间,将数据源切换回中心数据库实例上,准备响应下一次的业务数据处理请求。

第二方面,本发明的一个实施例提供了一种分片数据库路由系统,包括:

业务数据请求单元,用于发起包括分片键的业务数据处理请求,分片键用于确定业务数据在分片数据库中的分布;

数据源切换单元,用于根据分片键,获取分片元映射数据;根据分片元映射数据,获取包括业务数据的目标分片数据库实例;使用目标分片数据库实例,将业务数据处理请求路由到目标分片数据库;

业务数据处理单元,用于响应业务数据处理请求,完成业务数据处理。

本发明实施例的一种分片数据库路由系统至少具有如下有益效果:

1.数据源切换单元通过将业务数据处理请求直接路由到目标分片数据库,绕开中心数据库,提高了分片数据库的利用率,减轻了中心数据库的负载压力,从而降低了中心数据库的故障概率;

2.业务数据处理请求仅在客户端与目标分片数据库之间进行交互,减少了中心数据库与目标分片数据库之间的数据扭转和交互,减小了业务数据处理请求的路由开销,提高了业务数据的处理效率。

根据本发明的另一些实施例的一种分片数据库路由系统,还包括独立线程创建单元,用于创建或者销毁独立线程,独立线程创建单元分别连接数据源切换单元和业务数据处理单元。

本发明实施例的一种分片数据库路由系统,独立线程创建单元通过创建独立线程,能够减少数据源切换对其他业务数据处理进程的影响。

第三方面,本发明的一个实施例提供了一种分片数据库路由设备,包括:

至少一个处理器,以及,

与至少一个处理器通信连接的存储器;其中,

存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行本发明的一些实施例的分片数据库路由方法。

本发明实施例的一种分片数据库路由设备至少具有如下有益效果:

1.通过将业务数据处理请求直接路由到目标分片数据库,绕开中心数据库,提高了分片数据库的利用率,减轻了中心数据库的负载压力,从而降低了中心数据库的故障概率;

2.业务数据处理请求仅在客户端与目标分片数据库之间进行交互,减少了中心数据库与目标分片数据库之间的数据扭转和交互,减小了业务数据处理请求的路由开销,提高了业务数据的处理效率。

第四方面,本发明的一个实施例提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,计算机可执行指令用于使计算机执行本发明的一些实施例的分片数据库路由方法。

本发明实施例的一种计算机可读存储介质至少具有如下有益效果:

1.通过将业务数据处理请求直接路由到目标分片数据库,绕开中心数据库,提高了分片数据库的利用率,减轻了中心数据库的负载压力,从而降低了中心数据库的故障概率;

2.业务数据处理请求仅在客户端与目标分片数据库之间进行交互,减少了中心数据库与目标分片数据库之间的数据扭转和交互,减小了业务数据处理请求的路由开销,提高了业务数据的处理效率。

附图说明

图1是本发明实施例中一种分片数据库路由方法的一具体实施例的流程示意图;

图2是本发明实施例中一种分片数据库路由方法的另一具体实施例的流程示意图;

图3是本发明实施例中一种分片数据库路由系统的一具体实施例的系统框图;

图4是本发明实施例中一种分片数据库路由系统的另一具体实施例的系统框图。

具体实施方式

以下将结合实施例对本发明的构思及产生的技术效果进行清楚、完整地描述,以充分地理解本发明的目的、特征和效果。显然,所描述的实施例只是本发明的一部分实施例,而不是全部实施例,基于本发明的实施例,本领域的技术人员在不付出创造性劳动的前提下所获得的其他实施例,均属于本发明保护的范围。

在本发明实施例的描述中,如果涉及到“若干”,其含义是一个以上,如果涉及到“第一”、“第二”,应当理解为用于区分技术特征,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量或者隐含指明所指示的技术特征的先后关系。如果某一特征被称为“设置”、“固定”、“连接”、“安装”在另一个特征,它可以直接设置、固定、连接在另一个特征上,也可以间接地设置、固定、连接、安装在另一个特征上。

在本发明实施例中,诸如数据库服务器之类的服务器是集成的软件部件和计算资源(诸如存储器、节点以及节点上的用于执行集成的软件部件的进程)的分配的组合,其中软件和计算资源的组合专用于代表服务器的客户端提供特定类型的功能。数据库服务器支配并促进对特定数据库的访问,从而处理客户端访问数据库的请求。

数据库包括存储在永久存储器机制(诸如硬盘的集合)上的数据和元数据。例如,根据关系和/或对象-关系数据库结构,这些数据和元数据可以逻辑地被存储在数据库中。

分片是一种数据层体系架构,在该数据层体系架构中数据跨独立的数据库实例被水平分区,其中每个独立的数据库实例被称为“分片”。分片的集合一起构成被称为“分片数据库”的单个逻辑数据库。水平分区是一种将单个较大的表分解为较小的、更易于管理的信息子集(称为“分区”)的技术。从逻辑上讲,分片数据库可以是客户端可访问的,就像传统的非分片数据库一样。但是,分片数据库中的表跨分片被水平分区。

未分片数据库是关系数据库并且包括表。表的所有内容都存储在同一未分片数据库中,并且因此使用相同的计算资源,诸如处理器、存储器和盘空间。但是,分片数据库描绘了使用分片技术的替代配置。分片数据库包括若干个分片。分片中的每一个是其自己的数据库实例并且分别包括其自己的表,不需要共享诸如处理器、存储器和/或盘存储装置之类的硬件。分片数据库中的水平分区涉及跨分片拆分数据库表,使得每个分片包含表的行的子集,被称为“分片表”。

从数据库管理的角度来看,分片数据库由可以被共同管理或者单独管理的多个数据库实例组成。但是,从客户端的角度来看,分片数据库在逻辑上看起来像单个数据库。因此,分片数据库中包括的分片的数量以及数据跨这些分片的分布对客户端来说是完全透明的。

分片数据库包括分片目录。分片目录是用于存储分片数据库的配置数据的特殊数据库。可以复制分片目录,以提供改进的可用性和可伸缩性。存储在分片目录中的配置数据可以包括:路由表,该路由表映射哪个分片存储与分片键的给定的值、值范围或值集合对应的数据块;分片拓扑数据,该分片拓扑数据描述分片数据库的整体配置,关于分片的配置信息。因此,对于需要访问特定分片键值的数据的查询,可以使用路由表来查找分片数据库中的哪个分片包含处理查询所需的数据块。

实施例1

参照图1,示出了本发明实施例中一种分片数据库路由方法的一具体实施例的流程示意图。如图1所示,本发明实施例的一种分片数据库路由方法,包括如下具体步骤:

s100.客户端发起包括分片键的业务数据处理请求,分片键用于确定业务数据在分片数据库中的分布。

客户端发起业务数据处理请求,请求包括分片键,分片键确定业务数据在分片数据库中的分布。分片键可以是业务数据的单索引或者混合索引。只有分片的id字段索引和业务数据的单索引或者混合索引是唯一指向业务数据所在分片的索引。客户端是终端设备上的应用程序,与数据库进行业务数据交互。

s110.客户端根据分片键,获取分片元映射数据。

客户端根据具体的分片规则,使用分片键计算分片元数据,得到分片元映射数据。分片元数据包括分片配置数据和分片元映射数据,分片元映射数据包括业务数据与路由节点的映射关系。分片规则可以根据实际的业务场景进行定义,可以包括以下方式中的任一种:

(1)划分号段

每个分片上存储相同大小的号段区间,如把分片键的值为[1,100]的业务数据存放在第一分片上,把分片键的值为[101,200]的业务数据存放在第二分片上。

(2)取模

先计算分片键的哈希值,再对分片的数量取模,假设有n个分片,编号为0~n-1,通过hash(shardingkey)%n就可以确定存储业务数据的分片编号。

(3)检索表

在检索表中存储分片键和分片的映射关系,通过查找检索表就可以确定业务数据分布。检索表可以对每个分片键都存储映射关系,也可以结合号段划分等方法来减小检索表的容量。

(4)一致性哈希

首先,对存储节点的哈希值进行计算,其将存储空间抽象为一个环,将存储节点配置到环上,环上所有的节点都有一个值。其次,对数据进行哈希计算,按顺时针方向将其映射到离其最近的节点上去。当有节点出现故障离线时,按照算法的映射方法,受影响的仅仅为环上故障节点开始逆时针方向至下一个节点之间区间的数据对象,而这些对象本身就是映射到故障节点之上的。当有节点增加时,比如,在节点a和b之间重新添加一个节点c,受影响的也仅仅是节点c逆时针遍历直到b之间的数据对象,将这些重新映射到c上即可。因此,当有节点出现变动时,不会使得整个存储空间上的数据都进行重新映射,解决了简单哈希算法增删节点,重新映射所有数据带来的效率低下的问题。

在本发明的一些实施例中,客户端根据分片键的值,或者分片键的哈希值,计算分片元数据,得到分片元映射数据,分片元数据包括分片配置数据和分片元映射数据。

客户端具体是使用分片键的值还是分片键的哈希值来计算分片元数据,取决于数据库具体的分片规则。

s120.客户端根据分片元映射数据,获取包括业务数据的目标分片数据库实例。

由于分片元映射数据包括业务数据与路由节点的映射关系,因此,通过查找分片元映射数据中的映射关系表,就能够确定目标分片数据库的地址。

在本发明的另一些实施例中,通过查询包括分片元映射数据的路由表,能够确定包括业务数据的目标分片数据库的地址。

路由表映射哪个分片存储与分片键的值、值范围或值集合对应的业务数据。查找路由表确定了目标分片数据库的地址,通过寻址就能获取目标分片数据库实例。

s130.客户端使用目标分片数据库实例,将业务数据处理请求路由到目标分片数据库。

客户端使用目标分片数据库实例,在分片数据库实例上输入路由指令,将业务数据处理请求路由到目标分片数据库。目标分片数据库接收到业务数据处理请求,响应请求,对相应的业务数据进行处理。

目标分片数据库还可以可选地返回识别特定分片存储的所有分片键范围的映射数据。这种映射数据可以由客户端直接高速缓存或在客户端可访问的连接池中高速缓存。映射数据允许客户端将具有与被高速缓存的映射数据匹配的分片键的后续查询直接路由到目标分片数据库。这将改进对目标分片的后续数据库请求的性能。

本发明实施例的一种分片数据库路由方法,一方面,通过将业务数据处理请求直接路由到目标分片数据库,绕开中心数据库,提高了分片数据库的利用率,减轻了中心数据库的负载压力,从而降低了中心数据库的故障概率。另一方面,业务数据处理请求仅在客户端与目标分片数据库之间进行交互,减少了中心数据库与目标分片数据库之间的数据扭转和交互,减小了业务数据处理请求的路由开销,提高了业务数据的处理效率。

实施例2

参照图2,示出了本发明实施例中一种分片数据库路由方法的另一具体实施例的流程示意图。如图2所示,基于实施例1,本发明实施例的一种分片数据库路由方法,具体包括如下步骤:

s200.客户端发起包括分片键的业务数据处理请求,分片键用于确定业务数据在分片数据库中的分布。

s210.客户端根据分片键,获取分片元映射数据。

s220.客户端根据分片元映射数据,获取包括业务数据的目标分片数据库实例。

s230.客户端创建独立线程,使用目标分片数据库实例,将中心数据库实例上的数据源切换到目标分片数据库实例上,将业务数据处理请求路由到目标分片数据库。

其中,步骤s200~s220与实施例1中的步骤s100~s120一致,此处不再赘述。

步骤s230:客户端使用threadlocal创建独立线程,在目标分片数据库实例上输入指令进行操作,通过切片方式重写数据源,使用上下文切面的方式动态切换当前线程的数据源,将中心数据库实例上的数据源切换到目标分片数据库实例上,将业务数据处理请求路由到目标分片数据库。

在本发明的一些实施例中,目标分片数据库响应业务数据处理请求,完成业务数据处理。业务数据处理完成,客户端销毁独立线程,将数据源切换回中心数据库实例上。

客户端使用threadlocal的remove方法使当前线程销毁,并使用上下文切面的方式,将数据源切换回中心数据库实例上。客户端销毁独立线程,能够释放处理上一次业务数据所占用的内存空间,将数据源切换回中心数据库实例上,准备响应下一次的业务数据处理请求。

实施例3

参照图3,示出了本发明实施例中一种分片数据库路由系统的一具体实施例的系统框图。如图3所示,本发明实施例的一种分片数据库路由系统,包括业务数据请求单元、数据源切换单元和业务数据处理单元,数据源切换单元分别连接业务数据请求单元和业务数据处理单元。

其中,业务数据请求单元,用于发起包括分片键的业务数据处理请求,分片键用于确定业务数据在分片数据库中的分布。

数据源切换单元,用于根据分片键,获取分片元映射数据;根据分片元映射数据,获取包括业务数据的目标分片数据库实例;使用目标分片数据库实例,将业务数据处理请求路由到目标分片数据库。

业务数据处理单元,用于响应业务数据处理请求,完成业务数据处理。

本发明实施例的一种分片数据库路由系统,数据源切换单元通过将业务数据处理请求直接路由到目标分片数据库,绕开中心数据库,提高了分片数据库的利用率,减轻了中心数据库的负载压力,从而降低了中心数据库的故障概率。此外,业务数据处理请求仅在客户端与目标分片数据库之间进行交互,减少了中心数据库与目标分片数据库之间的数据扭转和交互,减小了业务数据处理请求的路由开销,提高了业务数据的处理效率。

实施例4

参照图4,示出了本发明实施例中一种分片数据库路由系统的另一具体实施例的系统框图。如图4所示,基于实施例3,本发明实施例的一种分片数据库路由系统,包括业务数据请求单元、数据源切换单元、业务数据处理单元,以及独立线程创建单元,数据源切换单元分别连接业务数据请求单元、业务数据处理单元和独立线程创建单元,独立线程创建单元还与业务数据处理单元连接。

其中,业务数据请求单元,用于发起包括分片键的业务数据处理请求,分片键用于确定业务数据在分片数据库中的分布。

数据源切换单元,用于根据分片键,获取分片元映射数据;根据分片元映射数据,获取包括业务数据的目标分片数据库实例;使用目标分片数据库实例,将业务数据处理请求路由到目标分片数据库。

业务数据处理单元,用于响应业务数据处理请求,完成业务数据处理。

独立线程创建单元,用于创建或者销毁独立线程。

独立线程创建单元通过创建独立线程,能够减少数据源切换对其他业务数据处理进程的影响。

以上所描述的系统实施例仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或模块可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,在本发明实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

实施例5

本发明实施例的一种分片数据库路由设备,包括至少一个处理器,以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行实施例1至实施例2中任一具体实施例的一种分片数据库路由方法。

本发明实施例的一种分片数据库路由设备,一方面,通过将业务数据处理请求直接路由到目标分片数据库,绕开中心数据库,提高了分片数据库的利用率,减轻了中心数据库的负载压力,从而降低了中心数据库的故障概率。另一方面,业务数据处理请求仅在客户端与目标分片数据库之间进行交互,减少了中心数据库与目标分片数据库之间的数据扭转和交互,减小了业务数据处理请求的路由开销,提高了业务数据的处理效率。

本发明实施例的一种分片数据库路由设备,处理器可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,处理器是一种分片数据库路由方法的可运行装置的控制中心,利用各种接口和线路连接整个一种分片数据库路由方法的可运行装置的各个部分。

存储器可用于存储计算机程序和/或模块,处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现一种分片数据库路由方法的可运行装置的各种功能。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

实施例6

本发明实施例的一种计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,计算机可执行指令用于使计算机执行实施例1至实施例2中任一具体实施例的一种分片数据库路由方法。

本发明实施例的一种计算机可读存储介质,通过将业务数据处理请求直接路由到目标分片数据库,绕开中心数据库,提高了分片数据库的利用率,减轻了中心数据库的负载压力,从而降低了中心数据库的故障概率。此外,业务数据处理请求仅在客户端与目标分片数据库之间进行交互,减少了中心数据库与目标分片数据库之间的数据扭转和交互,减小了业务数据处理请求的路由开销,提高了业务数据的处理效率。

本发明实施例的计算机可执行指令可以使用现有的关系数据库编码语言或查询语言(诸如结构化查询语言(sql))来实现。这意味着现有系统可以容易地升级、迁移或连接到包括本发明实施例3至实施例4中任一具体实施例的一种分片数据库路由系统。

软件指令当被存储在(一个或多个)处理器可访问的存储介质中时,使得计算设备成为被定制为执行软件指令中指定的操作的专用计算设备。术语“软件”、“软件指令”、“计算机程序”、“计算机可执行指令”和“处理器可执行指令”应当被广义地解释为覆盖用于指示计算设备执行具体操作的任何机器可读信息(无论人类是否可读),并且包括但不限于应用软件、桌面应用、脚本、二进制文件、操作系统、设备驱动程序、引导装载程序、she11、实用程序、系统软件、javascript、网页、web应用、插件、嵌入式软件、微码、编译器、调试器、解释器、虚拟机、链接器和文本编辑器。

上面结合附图对本发明实施例作了详细说明,在本发明实施例中描述的流程图的所有步骤、操作和功能旨在指示在各个具体实施例中使用专用计算机或通用计算机中的编程执行的操作。换句话说,本发明中的每个流程图结合本发明的相关描述是用于对计算机进行编程以执行所描述的功能的算法的全部或部分的指南、计划或规范。

但是本发明不限于上述实施例,在所属技术领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。此外,在不冲突的情况下,本发明的实施例及实施例中的特征可以相互组合。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1