一种数据库分布式系统及其实现方法

文档序号:6640121阅读:276来源:国知局
一种数据库分布式系统及其实现方法
【专利摘要】一种数据库分布式系统及其实现方法,包括有数据代理装置、多个应用系统和多个数据库,所述数据代理装置分别和应用系统、数据库相连接,其中:数据代理装置,用于接收应用系统发送来的数据库操作指令,从数据库操作指令中提取操作的数据库表,然后根据数据库表与数据库之间的映射关系查找到所述数据库表对应的若干个数据库,再根据所述若干个数据库的指令分发权重系数,从中挑选出一个数据库,最后将所述数据库操作指令转发给挑选出的数据库来执行相应操作。本发明属于网络通信【技术领域】,能智能调整分布式数据库之间的负载分配。
【专利说明】一种数据库分布式系统及其实现方法

【技术领域】
[0001] 本发明涉及一种数据库分布式系统及其实现方法,属于网络通信【技术领域】。

【背景技术】
[0002] 数据库成为应用系统的性能瓶颈之一,如果要提升数据库处理能力,一般无法通 过增加数据库主机数量来提升数据库处理能力,只能更换更高配置的机器。同时,为一套应 用系统往往需要配置有多台备库主机,由于备库主机大部分时间都处于空闲状态,从而也 造成了硬件资源浪费。
[0003] 如何为应用系统提供分布式的数据库?专利申请CN 200810168294. 3(申请名 称:一种智能网业务库存取海量数据的系统、装置及方法, 申请人::中兴通讯股份有限公 司,申请日:2008 - 10 - 15)公开了一种智能网业务库存取海量数据的系统、装置及方法,系 统包括SCF实体和SDF实体:SDF实体提供同一智能网系统存储海量业务数据的多个业务 库;SCF实体与多个业务库相连:在业务建立用户的业务数据时,根据用户的业务信息和业 务键及按照数据库重置策略选中特定的业务库,并将业务数据保存到特定的业务库中;在 用户使用业务时,用相应于数据库重置策略的方法,据该用户的业务信息关联定位到特定 的业务库;并与该业务库进行交互完成业务功能。在SCF实体中通过相应的装置实现上述 功能。本发明利用分布式业务库分散保存海量业务数据,实现对其寻访的压力分担,提高了 业务库的存取性能,但无法智能调整各数据库之间的负载分配,因而各数据库主机硬件处 理能力也不能达到最优状态。
[0004] 因此,如何智能调整分布式数据库之间的负载分配,是一个值得深入研究的技术 问题。


【发明内容】

[0005] 有鉴于此,本发明的目的是提供一种数据库分布式系统及其实现方法,能智能调 整分布式数据库之间的负载分配。
[0006] 为了达到上述目的,本发明提供了一种数据库分布式系统,包括有数据代理装置、 多个应用系统和多个数据库,所述数据代理装置分别和应用系统、数据库相连接,其中:
[0007] 数据代理装置,用于接收应用系统发送来的数据库操作指令,从数据库操作指令 中提取操作的数据库表,然后根据数据库表与数据库之间的映射关系查找到所述数据库表 对应的若干个数据库,再根据所述若干个数据库的指令分发权重系数,从中挑选出一个数 据库,最后将所述数据库操作指令转发给挑选出的数据库来执行相应操作。
[0008] 为了达到上述目的,本发明还提供了一种数据库分布式实现方法,包括有:
[0009] 步骤一、各应用系统向数据代理装置发送数据库操作指令;
[0010] 步骤二、数据代理装置从数据库操作指令中提取操作的数据库表,然后根据数据 库表与数据库之间的映射关系查找到所述数据库表对应的若干个数据库,再根据所述若干 个数据库的指令分发权重系数,从中挑选出一个数据库,最后将所述数据库操作指令转发 给挑选出的数据库来执行相应操作。
[0011] 与现有技术相比,本发明的有益效果是:本发明在应用系统与数据库之间增加数 据代理装置,由数据代理装置负责数据库连接管理、应用系统的数据库访问,并根据数据库 的硬件能力和负载状态,为每个数据库设置相应的指令分发权重系数,从而能智能调整分 布式数据库之间的负载分配,有效解决数据库造成的性能瓶颈、节省硬件成本;数据库的指 令分发权重系数还可以在每个时间周期进行自动调整,从而进一步使得数据代理装置所连 接的各数据库主机硬件处理能力能达到最优状态。

【专利附图】

【附图说明】
[0012] 图1是本发明一种数据库分布式系统的一个实施例的组成结构示意图。
[0013] 图2是本发明一种数据库分布式实现方法的流程图。
[0014] 图3是根据当前时间周期中每个数据库所执行的操作指令数、数据库虚拟处理器 的用户时间和系统时间等参数,对下一时间周期中数据库的指令分发权重系数进行调整的 具体操作流程图。
[0015] 图4是图2步骤二中,数据代理装置在下一个时间周期T+1,根据所述若干个数据 库的指令分发权重系数,从中挑选出一个数据库,最后将所述数据库操作指令转发给挑选 出的数据库来执行相应操作的具体操作流程图。

【具体实施方式】
[0016] 为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步 的详细描述。
[0017] 为了有效提升数据存储可靠性,应用系统所使用的每个数据库表可以同时保存在 多个数据库中,且多个数据库中的数据库表保持数据同步。这样,当数据代理装置接收到应 用系统发送来的数据库操作指令后,从数据库操作指令提取数据库表,然后从所述数据库 表对应的多个数据库中选择一个数据库来执行相应操作,当数据库的操作执行成功后,再 由数据代理装置同步更新到所述数据库表对应的其他数据库中。
[0018] 如图1所示,本发明一种数据库分布式系统,包括有数据代理装置、多个应用系统 和多个数据库,所述数据代理装置分别和应用系统、数据库相连接,其中:
[0019] 数据代理装置,用于接收应用系统发送来的数据库操作指令,从数据库操作指令 中提取操作的数据库表,然后根据数据库表与数据库之间的映射关系查找到所述数据库表 对应的若干个数据库,再根据所述若干个数据库的指令分发权重系数,从中挑选出一个数 据库,最后将所述数据库操作指令转发给挑选出的数据库来执行相应操作。
[0020] 其中,每个数据库的指令分发权重系数既可以根据数据库的CPU占用时长、及已 分配的操作指令数等因素来灵活设置;还可以定义一定的时间周期,并根据当前时间周期 中每个数据库所执行的操作指令数、数据库虚拟处理器的用户时间和系统时间等参数,对 下一时间周期中数据库的指令分发权重系数进行调整,从而使得数据代理装置所连接的各 数据库主机硬件处理能力达到最优状态。数据代理装置进一步包括有:
[0021] 负载均衡器,用于分别在每个时间周期T的起始时刻h、和结束时刻,采集每个 数据库的所有虚拟处理器的用户时间和系统时间,并统计出每个数据库在时间周期T中所 其中, 执行的操作指令数,然后计算出所连接的每个数据库在下一时间周期τ+l的指令分发权重 系数:

【权利要求】
1. 一种数据库分布式系统,其特征在于,包括有数据代理装置、多个应用系统和多个数 据库,所述数据代理装置分别和应用系统、数据库相连接,其中: 数据代理装置,用于接收应用系统发送来的数据库操作指令,从数据库操作指令中提 取操作的数据库表,然后根据数据库表与数据库之间的映射关系查找到所述数据库表对应 的若干个数据库,再根据所述若干个数据库的指令分发权重系数,从中挑选出一个数据库, 最后将所述数据库操作指令转发给挑选出的数据库来执行相应操作。
2. 根据权利要求1所述的系统,其特征在于,每个数据库的指令分发权重系数根据数 据库的CPU占用时长、及已分配的操作指令数来设置。
3. 根据权利要求1所述的系统,其特征在于,数据代理装置进一步包括有: 负载均衡器,用于分别在每个时间周期T的起始时刻h、和结束时刻h,采集每个数 据库的所有虚拟处理器的用户时间和系统时间,并统计出每个数据库在时间周期T中所执 行的操作指令数,然后计算出所连接的每个数据库在下一时间周期T+1的指令分发权重 系数:
其 中,qs(Si)T+1是数据库Si在下一时间周期T+1的指令分发权重系数,i是1到N之间的一个 自然数,N是数据代理装置所连接的数据库总数,CpuT(Si)T+1是数据库Si在下一时间周期 T+1所占用的CPU时长,SqlC0Unt(Si)T是数据库Si在时间周期T中所执行的操作指令数, usercpuT(Si,tj、usercpuT(Si,tQ)分别是tpt。时刻的数据库Si的所有虚拟处理器的用户 时间,syscpuT(Si,t)、syscpuT(Si,tQ)分别是h、tQ时刻的数据库Si的所有虚拟处理器的 系统时间,II表示对计算值取整。
4. 根据权利要求3所述的系统,其特征在于,负载均衡器对数据库Si在下 一时间周期T+1所占用的CPU时长CpuT(Si)T+1的计算公式如下:CpuT(Si)T+1 = interval(T)XcpuCount(Si),其中,interval(T)是时间周期T的时长,单位是秒, cpuCount(Si)是数据库Si的主机逻辑CPU个数。
5. 根据权利要求3所述的系统,其特征在于,负载均衡器还包括有: 权重系数调整单元,用于判断是否所有数据库在时间周期T中所执行的操作指令数都 是0,如果是,则依次将每个数据库在下一时间周期T+1的指令分发权重系数调整为对应数 据库的主机逻辑CPU个数;如果否,则从所有数据库在下一时间周期T+1的指令分发权重系 数中遴选出所有非0的指令分发权重系数值,然后计算每个非0的指令分发权重系数和对 应数据库的主机逻辑CPU个数的比值,并从所有比值中挑选出最小值,再从所有数据库在 下一时间周期T+1的指令分发权重系数中挑选出所有为0的指令分发权重系数,将每个为 〇的指令分发权重系数修改为上述比例最小值和其对应数据库的主机逻辑CPU个数的乘积 值。
6. 根据权利要求1所述的系统,其特征在于,数据代理装置进一步包括有: 指令分发器,用于从若干个数据库中逐一选取每个数据库,并计算每个数据库的权重 比和实际负载比差值:
_中,qs_fz(Sk)是若干 ^(S,)r+1 个数据库中的数据库Sk的权重比和实际负载比差值,是数据库Sk在时间周期 J-=I Τ+1的权重比,,是数据库Sk在时间周期Τ+1的实际负载比,qs(Sk)T+1是数据sqlC ountS M 库Sk在时间周期T+1中的指令分发权重系数,Σ供(S/)?是所述若干个数据库在时间周期 T+1中的指令分发权重系数之和,M是所述若干个数据库的总数,SqlCount(Sk)T+1是数据库Sk在时间周期T+1中所执行的操作指令数,sqlC〇untST+1是所述若干个数据库在时间周期 T+1中所执行的操作指令数之和,其中,当sqlCountST+1 = 0时,则设置为〇 ; SCjlLountS 然后从若干个数据库的权重比和实际负载比差值之中挑选出最大值,最后将所述数据库操 作指令分配给最大值对应的数据库来执行相应操作。
7. 根据权利要求1所述的系统,其特征在于,数据代理装置还包括有: 操作指令数计算单元,用于在每个时间周期的起始时刻,将每个数据库Si在所述时间 周期中所执行的操作指令数SqlCount(Si)均初始化为0,当数据代理装置将应用系统发来 的数据库操作指令转发给数据库Si来执行相应操作时,数据代理装置判断所述数据库操作 指令是否是数据库查询指令,如果是,则调整数据库Si在所述时间周期中所执行的操作指 令数:SqlCount(Si) =SqlCount(Si)+1 ;如果否,则调整数据库Si在所述时间周期中所执行 的操作指令数=SqlCount(Si) =SqlCount(Si)+2。
8. -种数据库分布式实现方法,其特征在于,包括有: 步骤一、各应用系统向数据代理装置发送数据库操作指令; 步骤二、数据代理装置从数据库操作指令中提取操作的数据库表,然后根据数据库表 与数据库之间的映射关系查找到所述数据库表对应的若干个数据库,再根据所述若干个数 据库的指令分发权重系数,从中挑选出一个数据库,最后将所述数据库操作指令转发给挑 选出的数据库来执行相应操作。
9. 根据权利要求8所述的方法,其特征在于,步骤二中,所述若干个数据库的指令分发 权重系数根据每个数据库的CPU占用时长、及已分配的操作指令数来设置。
10. 根据权利要求8所述的方法,其特征在于,还包括有: 步骤A、数据代理装置分别在时间周期T的起始时刻h、和结束时刻h,采集每个数据 库的所有虚拟处理器的用户时间和系统时间; 步骤B、数据代理装置统计出每个数据库在时间周期T中所执行的操作指令数; 步骤C、数据代理装置计算每个数据库在下一时间周期T+1的指令分发权重系数: q^i)'1
,其中, QS(Si)T+1是数据库Si在下一时间周期T+1的指令分发权重系数,i是1到N之间的一个 自然数,N是数据代理装置所连接的数据库总数,CpuT(Si)T+1是数据库Si在下一时间周期 T+1所占用的CPU时长,SqlC0Unt(Si)T是数据库Si在时间周期T中所执行的操作指令数, usercpuT(Si,tj、usercpuT(Si,tQ)分别是tpt。时刻的数据库Si的所有虚拟处理器的用户 时间,syscpuT(Si,t)、syscpuT(Si,tQ)分别是h、tQ时刻的数据库Si的所有虚拟处理器的 系统时间,II表示对计算值取整。
11. 根据权利要求10所述的方法,其特征在于,步骤C中,数据库Si在下 一时间周期T+1所占用的CPU时长CpuT(Si)T+1的计算公式如下:CpuT(Si)T+1 = interval(T)XcpuCount(Si),其中,interval(T)是时间周期T的时长,单位是秒, cpuCount(Si)是数据库Si的主机逻辑CPU个数。
12. 根据权利要求10所述的方法,其特征在于,步骤C之后,还包括有: 步骤D、判断是否所有数据库在时间周期T中所执行的操作指令数都是0,如果是,则依 次将每个数据库在下一时间周期T+1的指令分发权重系数调整为对应数据库的主机逻辑 CPU个数,本流程结束;如果否,则继续下一步; 步骤E、从所有数据库在下一时间周期T+1的指令分发权重系数中遴选出所有非0的指 令分发权重系数值,然后计算每个非〇的指令分发权重系数和对应数据库的主机逻辑CPU 个数的比值,最后从所有比值中挑选出最小值; 步骤F、从所有数据库在下一时间周期T+1的指令分发权重系数中挑选出所有为0的指 令分发权重系数,并将每个为〇的指令分发权重系数修改为上述比例最小值和其对应数据 库的主机逻辑CPU个数的乘积值。
13. 根据权利要求8所述的方法,其特征在于,步骤二进一步包括有: 步骤21、数据代理装置从所述若干个数据库中逐一挑选每个数据库,并计算每个数 据库的权重比和实际负载比差值:其中,qs_ 户1
, fz(Sk)是若干个数据库中的数据库Sk的权重比和实际负载比差值
是数据 库Sk在时间周期T+1的权重比,
是数据库Sk在时间周期T+1的实际负 M 载比,qs(Sk)T+1是数据库Sk在时间周期T+1中的指令分发权重系数,Σ妒(S,)7 N是所述 M 若干个数据库在时间周期T+1中的指令分发权重系数之和,M是所述若干个数据库总数,SqlCount(Sk)T+1是数据库Sk在时间周期T+1中所执行的操作指令数,sqlC〇UntST+1是所述 若干个救据哇亦时间周期T+1中所执行的操作指令数之和,其中,当sqlC〇untST+1 = 0时,
设置为〇 ; 步骤22、从若干个数据库的权重比和实际负载比差值之中挑选出最大值,然后将所述 数据库操作指令分配给最大值对应的数据库来执行相应操作。
14. 根据权利要求10、或13所述的方法,其特征在于,统计出数据库Si在每个时间周 期中所执行的操作指令数,进一步包括有: 数据代理装置在每个时间周期的起始时刻,将数据库Si在所述时间周期中所执行的操 作指令数SqlCount(Si)初始化为O; 当数据代理装置将应用系统发来的数据库操作指令转发给数据库Si来执行相应操作 时,数据代理装置判断所述数据库操作指令是否是数据库查询指令,如果是,则调整数据库 Si在所述时间周期中所执行的操作指令数:SqlCount(Si) =SqlCount(Si)+1 ;如果否,则调 整数据库Si在所述时间周期中所执行的操作指令数:SqlCount(Si) =SqlCount(Si)+2。
【文档编号】G06F17/30GK104462548SQ201410823039
【公开日】2015年3月25日 申请日期:2014年12月25日 优先权日:2014年12月25日
【发明者】廖建新, 李广宇, 刘国辉, 植东梧, 申正, 武杰, 李志强, 郝爱国, 王文钰 申请人:杭州东信北邮信息技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1