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

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

Info

Publication number
CN104462548A
CN104462548A CN201410823039.3A CN201410823039A CN104462548A CN 104462548 A CN104462548 A CN 104462548A CN 201410823039 A CN201410823039 A CN 201410823039A CN 104462548 A CN104462548 A CN 104462548A
Authority
CN
China
Prior art keywords
database
time
instruction
period
operational order
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.)
Granted
Application number
CN201410823039.3A
Other languages
English (en)
Other versions
CN104462548B (zh
Inventor
廖建新
李广宇
刘国辉
植东梧
申正
武杰
李志强
郝爱国
王文钰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Dongxin Beiyou Information Technology Co Ltd
Original Assignee
Hangzhou Dongxin Beiyou Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hangzhou Dongxin Beiyou Information Technology Co Ltd filed Critical Hangzhou Dongxin Beiyou Information Technology Co Ltd
Priority to CN201410823039.3A priority Critical patent/CN104462548B/zh
Publication of CN104462548A publication Critical patent/CN104462548A/zh
Application granted granted Critical
Publication of CN104462548B publication Critical patent/CN104462548B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

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

Description

一种数据库分布式系统及其实现方法
技术领域
本发明涉及一种数据库分布式系统及其实现方法,属于网络通信技术领域。
背景技术
数据库成为应用系统的性能瓶颈之一,如果要提升数据库处理能力,一般无法通过增加数据库主机数量来提升数据库处理能力,只能更换更高配置的机器。同时,为一套应用系统往往需要配置有多台备库主机,由于备库主机大部分时间都处于空闲状态,从而也造成了硬件资源浪费。
如何为应用系统提供分布式的数据库?专利申请CN 200810168294.3(申请名称:一种智能网业务库存取海量数据的系统、装置及方法,申请人:中兴通讯股份有限公司,申请日:2008‐10‐15)公开了一种智能网业务库存取海量数据的系统、装置及方法,系统包括SCF实体和SDF实体:SDF实体提供同一智能网系统存储海量业务数据的多个业务库;SCF实体与多个业务库相连:在业务建立用户的业务数据时,根据用户的业务信息和业务键及按照数据库重置策略选中特定的业务库,并将业务数据保存到特定的业务库中;在用户使用业务时,用相应于数据库重置策略的方法,据该用户的业务信息关联定位到特定的业务库;并与该业务库进行交互完成业务功能。在SCF实体中通过相应的装置实现上述功能。本发明利用分布式业务库分散保存海量业务数据,实现对其寻访的压力分担,提高了业务库的存取性能,但无法智能调整各数据库之间的负载分配,因而各数据库主机硬件处理能力也不能达到最优状态。
因此,如何智能调整分布式数据库之间的负载分配,是一个值得深入研究的技术问题。
发明内容
有鉴于此,本发明的目的是提供一种数据库分布式系统及其实现方法,能智能调整分布式数据库之间的负载分配。
为了达到上述目的,本发明提供了一种数据库分布式系统,包括有数据代理装置、多个应用系统和多个数据库,所述数据代理装置分别和应用系统、数据库相连接,其中:
数据代理装置,用于接收应用系统发送来的数据库操作指令,从数据库操作指令中提取操作的数据库表,然后根据数据库表与数据库之间的映射关系查找到所述数据库表对应的若干个数据库,再根据所述若干个数据库的指令分发权重系数,从中挑选出一个数据库,最后将所述数据库操作指令转发给挑选出的数据库来执行相应操作。
为了达到上述目的,本发明还提供了一种数据库分布式实现方法,包括有:
步骤一、各应用系统向数据代理装置发送数据库操作指令;
步骤二、数据代理装置从数据库操作指令中提取操作的数据库表,然后根据数据库表与数据库之间的映射关系查找到所述数据库表对应的若干个数据库,再根据所述若干个数据库的指令分发权重系数,从中挑选出一个数据库,最后将所述数据库操作指令转发给挑选出的数据库来执行相应操作。
与现有技术相比,本发明的有益效果是:本发明在应用系统与数据库之间增加数据代理装置,由数据代理装置负责数据库连接管理、应用系统的数据库访问,并根据数据库的硬件能力和负载状态,为每个数据库设置相应的指令分发权重系数,从而能智能调整分布式数据库之间的负载分配,有效解决数据库造成的性能瓶颈、节省硬件成本;数据库的指令分发权重系数还可以在每个时间周期进行自动调整,从而进一步使得数据代理装置所连接的各数据库主机硬件处理能力能达到最优状态。
附图说明
图1是本发明一种数据库分布式系统的一个实施例的组成结构示意图。
图2是本发明一种数据库分布式实现方法的流程图。
图3是根据当前时间周期中每个数据库所执行的操作指令数、数据库虚拟处理器的用户时间和系统时间等参数,对下一时间周期中数据库的指令分发权重系数进行调整的具体操作流程图。
图4是图2步骤二中,数据代理装置在下一个时间周期T+1,根据所述若干个数据库的指令分发权重系数,从中挑选出一个数据库,最后将所述数据库操作指令转发给挑选出的数据库来执行相应操作的具体操作流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细描述。
为了有效提升数据存储可靠性,应用系统所使用的每个数据库表可以同时保存在多个数据库中,且多个数据库中的数据库表保持数据同步。这样,当数据代理装置接收到应用系统发送来的数据库操作指令后,从数据库操作指令提取数据库表,然后从所述数据库表对应的多个数据库中选择一个数据库来执行相应操作,当数据库的操作执行成功后,再由数据代理装置同步更新到所述数据库表对应的其他数据库中。
如图1所示,本发明一种数据库分布式系统,包括有数据代理装置、多个应用系统和多个数据库,所述数据代理装置分别和应用系统、数据库相连接,其中:
数据代理装置,用于接收应用系统发送来的数据库操作指令,从数据库操作指令中提取操作的数据库表,然后根据数据库表与数据库之间的映射关系查找到所述数据库表对应的若干个数据库,再根据所述若干个数据库的指令分发权重系数,从中挑选出一个数据库,最后将所述数据库操作指令转发给挑选出的数据库来执行相应操作。
其中,每个数据库的指令分发权重系数既可以根据数据库的CPU占用时长、及已分配的操作指令数等因素来灵活设置;还可以定义一定的时间周期,并根据当前时间周期中每个数据库所执行的操作指令数、数据库虚拟处理器的用户时间和系统时间等参数,对下一时间周期中数据库的指令分发权重系数进行调整,从而使得数据代理装置所连接的各数据库主机硬件处理能力达到最优状态。数据代理装置进一步包括有:
负载均衡器,用于分别在每个时间周期T的起始时刻t0、和结束时刻t1,采集每个数据库的所有虚拟处理器的用户时间和系统时间,并统计出每个数据库在时间周期T中所执行的操作指令数,然后计算出所连接的每个数据库在下一时间周期T+1的指令分发权重系数:
qs ( S i ) T + 1 = | cpuT ( S i ) T + 1 × sqlCount ( S i ) T ( usercpuT ( S i , t 1 ) - usercpuT ( S i , t 0 ) ) + ( syscpuT ( S i , t 1 ) - syscpuT ( S i , t 0 ) ) | , 其中,qs(Si)T+1是数据库Si在下一时间周期T+1的指令分发权重系数,i是1到N之间的一个自然数,N是数据代理装置所连接的数据库总数,cpuT(Si)T+1是数据库Si在下一时间周期T+1所占用的CPU时长,sqlCount(Si)T是数据库Si在时间周期T中所执行的操作指令数,usercpuT(Si,t1)、usercpuT(Si,t0)分别是t1、t0时刻的数据库Si的所有虚拟处理器的用户时间,syscpuT(Si,t1)、syscpuT(Si,t0)分别是t1、t0时刻的数据库Si的所有虚拟处理器的系统时间,||表示对计算值取整;
指令分发器,用于从若干个数据库中逐一选取每个数据库,并计算每个数据库的权重比和实际负载比差值:其中,qs_fz(Sk)是若干个数据库中的数据库Sk的权重比和实际负载比差值,是数据库Sk在时间周期T+1的权重比,是数据库Sk在时间周期T+1的实际负载比,qs(Sk)T+1是数据库Sk在时间周期T+1中的指令分发权重系数,是所述若干个数据库在时间周期T+1中的指令分发权重系数之和,M是所述若干个数据库的总数,sqlCount(Sk)T+1是数据库Sk在时间周期T+1中所执行的操作指令数,sqlCountST+1是所述若干个数据库在时间周期T+1中所执行的操作指令数之和,其中,当sqlCountST+1=0时,则设置为0;然后从若干个数据库的权重比和实际负载比差值之中挑选出最大值,最后将所述数据库操作指令分配给最大值对应的数据库来执行相应操作。
负载均衡器可以通过在t0、t1时刻查询数据库的系统表,来获取数据库的所有虚拟处理器的用户时间和系统时间。以INFORMIX数据库为例来进一步解释,其系统表sysvpprof记录有数据库使用的虚拟处理器的用户时间unix秒数(即usercpu)、和系统时间unix秒数(即syscpu)。其系统表sysvpprof的表结构如下表所示:
列名称 类型 说明
vpid integer 虚拟处理器id
class char(50) 虚拟处理器类名
usercpu float 用户时间unix秒数
syscpu float 系统时间unix秒数
因而,对于INFORMIX数据库来说,负载均衡器可以在t1、t0时刻通过查询数据库Si的sysvpprof系统表来实时采集到usercpuT(Si,t1)、usercpuT(Si,t0)、syscpuT(Si,t1)、和syscpuT(Si,t0)的值,也即是说,先在t0时刻,数据代理装置向数据库Si发送数据库查询指令:select sum(usercpu)from sysvpprof、select sum(syscpu)from sysvpprof,数据库Si的返回结果即为usercpuT(Si,t0)、syscpuT(Si,t0),再在t1时刻,继续向数据库Si发送数据库查询指令:select sum(usercpu)from sysvpprof、select sum(syscpu)from sysvpprof,数据库Si的返回结果即为usercpuT(Si,t1)、syscpuT(Si,t1)。
负载均衡器对数据库Si在下一时间周期T+1所占用的CPU时长cpuT(Si)T+1的计算公式还可以进一步如下:cpuT(Si)T+1=interval(T)×cpuCount(Si),其中,interval(T)是时间周期T的时长,单位是秒,cpuCount(Si)是数据库Si的主机逻辑CPU个数,其值可以根据实际需要而灵活配置。
值得一提的是,如果在时间周期T内某个数据库Si一直处于空闲状态,则sqlCount(Si)T为0,将导致该数据库在下一时间周期T+1的指令分发权重系数qs(Si)T+1的计算结果也为0,因此,负载均衡器还可以包括有:
权重系数调整单元,用于判断是否所有数据库在时间周期T中所执行的操作指令数都是0,如果是,则依次将每个数据库在下一时间周期T+1的指令分发权重系数调整为对应数据库的主机逻辑CPU个数;如果否,则从所有数据库在下一时间周期T+1的指令分发权重系数中遴选出所有非0的指令分发权重系数值,然后计算每个非0的指令分发权重系数和对应数据库的主机逻辑CPU个数的比值,并从所有比值中挑选出最小值,再从所有数据库在下一时间周期T+1的指令分发权重系数中挑选出所有为0的指令分发权重系数,将每个为0的指令分发权重系数修改为上述比例最小值和其对应数据库的主机逻辑CPU个数的乘积值。
由于数据库插入insert指令、修改update指令、删除delete指令和数据库查询select指令对数据库资源的消耗程度存在差异,因此,数据代理装置还包括有:
操作指令数计算单元,用于在每个时间周期的起始时刻,将每个数据库Si在所述时间周期中所执行的操作指令数sqlCount(Si)均初始化为0,当数据代理装置将应用系统发来的数据库操作指令转发给数据库Si来执行相应操作时,数据代理装置判断所述数据库操作指令是否是数据库查询指令,如果是,则调整数据库Si在所述时间周期中所执行的操作指令数:sqlCount(Si)=sqlCount(Si)+1;如果否,则调整数据库Si在所述时间周期中所执行的操作指令数:sqlCount(Si)=sqlCount(Si)+2。
经过测试数据验证,数据库插入insert指令、修改update指令、删除delete指令一般是数据库查询select指令对数据库资源消耗的两倍,因此,可以采用将每条数据库插入insert指令、修改update指令、删除delete指令按照两条数据库查询select指令来计算,以有效优化下一时间周期的各数据库的指令分发权重系数。
如图2所示,本发明一种数据库分布式实现方法,包括有:
步骤一、各应用系统向数据代理装置发送数据库操作指令;
步骤二、数据代理装置从数据库操作指令中提取操作的数据库表,然后根据数据库表与数据库之间的映射关系查找到所述数据库表对应的若干个数据库,再根据所述若干个数据库的指令分发权重系数,从中挑选出一个数据库,最后将所述数据库操作指令转发给挑选出的数据库来执行相应操作。
步骤二中,所述若干个数据库的指令分发权重系数既可以根据每个数据库的CPU占用时长、及已分配的操作指令数等因素来灵活设置;还可以定义一定的时间周期,并根据当前时间周期中每个数据库所执行的操作指令数、数据库虚拟处理器的用户时间和系统时间等参数,对下一时间周期中数据库的指令分发权重系数进行调整,从而使得数据代理装置所连接的各数据库主机硬件处理能力达到最优状态。如图3所示,本发明根据当前时间周期中每个数据库所执行的操作指令数、数据库虚拟处理器的用户时间和系统时间等参数,对下一时间周期中数据库的指令分发权重系数进行调整,还包括有:
步骤A、数据代理装置分别在时间周期T的起始时刻t0、和结束时刻t1,采集每个数据库的所有虚拟处理器的用户时间和系统时间;
步骤B、数据代理装置统计出每个数据库在时间周期T中所执行的操作指令数;
步骤C、数据代理装置计算每个数据库在下一时间周期T+1的指令分发权重系数: qs ( S i ) T + 1 = | cpuT ( S i ) T + 1 × sqlCount ( S i ) T ( usercpuT ( S i , t 1 ) - usercpuT ( S i , t 0 ) ) + ( syscpuT ( S i , t 1 ) - syscpuT ( S i , t 0 ) ) | , 其中,qs(Si)T+1是数据库Si在下一时间周期T+1的指令分发权重系数,i是1到N之间的一个自然数,N是数据代理装置所连接的数据库总数,cpuT(Si)T+1是数据库Si在下一时间周期T+1所占用的CPU时长,sqlCount(Si)T是数据库Si在时间周期T中所执行的操作指令数,usercpuT(Si,t1)、usercpuT(Si,t0)分别是t1、t0时刻的数据库Si的所有虚拟处理器的用户时间,syscpuT(Si,t1)、syscpuT(Si,t0)分别是t1、t0时刻的数据库Si的所有虚拟处理器的系统时间,||表示对计算值取整。
图3步骤A中,数据代理装置可以通过在t0、t1时刻查询数据库的系统表,来获取数据库的所有虚拟处理器的用户时间和系统时间。以INFORMIX数据库为例来进一步解释,其系统表sysvpprof记录有数据库使用的虚拟处理器的用户时间unix秒数(即usercpu)、和系统时间unix秒数(即syscpu)。其系统表sysvpprof的表结构如下表所示:
列名称 类型 说明
vpid integer 虚拟处理器id
class char(50) 虚拟处理器类名
usercpu float 用户时间unix秒数
syscpu float 系统时间unix秒数
因而,对于INFORMIX数据库来说,数据代理装置可以在t1、t0时刻通过查询数据库Si的sysvpprof系统表来实时采集到usercpuT(Si,t1)、usercpuT(Si,t0)、syscpuT(Si,t1)、和syscpuT(Si,t0)的值,也即是说,先在t0时刻,数据代理装置向数据库Si发送数据库查询指令:select sum(usercpu)from sysvpprof、select sum(syscpu)from sysvpprof,数据库Si的返回结果即为usercpuT(Si,t0)、syscpuT(Si,t0),再在t1时刻,继续向数据库Si发送数据库查询指令:select sum(usercpu)from sysvpprof、select sum(syscpu)from sysvpprof,数据库Si的返回结果即为usercpuT(Si,t1)、syscpuT(Si,t1)。
图3步骤C中,数据库Si在下一时间周期T+1所占用的CPU时长cpuT(Si)T+1的计算公式还可以进一步如下:cpuT(Si)T+1=interval(T)×cpuCount(Si),其中,interval(T)是时间周期T的时长,单位是秒,cpuCount(Si)是数据库Si的主机逻辑CPU个数,其值可以根据实际需要而灵活配置。
值得一提的是,如果在时间周期T内某个数据库Si一直处于空闲状态,则sqlCount(Si)T为0,将导致该数据库在下一时间周期T+1的指令分发权重系数qs(Si)T+1的计算结果也为0,图3步骤C之后,还可以包括有:
步骤D、判断是否所有数据库在时间周期T中所执行的操作指令数都是0?如果是,则依次将每个数据库在下一时间周期T+1的指令分发权重系数调整为对应数据库的主机逻辑CPU个数,本流程结束;如果否,则继续下一步;
步骤E、从所有数据库在下一时间周期T+1的指令分发权重系数中遴选出所有非0的指令分发权重系数值,然后计算每个非0的指令分发权重系数和对应数据库的主机逻辑CPU个数的比值,最后从所有比值中挑选出最小值;
步骤F、从所有数据库在下一时间周期T+1的指令分发权重系数中挑选出所有为0的指令分发权重系数,并将每个为0的指令分发权重系数修改为上述比例最小值和其对应数据库的主机逻辑CPU个数的乘积值。
这样,如图4所示,图2步骤二中,数据代理装置在下一个时间周期T+1,根据所述若干个数据库的指令分发权重系数,从中挑选出一个数据库,最后将所述数据库操作指令转发给挑选出的数据库来执行相应操作,还可以进一步包括有:
步骤21、数据代理装置从所述若干个数据库中逐一挑选每个数据库,并计算每个数据库的权重比和实际负载比差值:其中,qs_fz(Sk)是若干个数据库中的数据库Sk的权重比和实际负载比差值,是数据库Sk在时间周期T+1的权重比,是数据库Sk在时间周期T+1的实际负载比,qs(Sk)T+1是数据库Sk在时间周期T+1中的指令分发权重系数,是所述若干个数据库在时间周期T+1中的指令分发权重系数之和,M是所述若干个数据库总数,sqlCount(Sk)T+1是数据库Sk在时间周期T+1中所执行的操作指令数,sqlCountST+1是所述若干个数据库在时间周期T+1中所执行的操作指令数之和;
其中,当sqlCountST+1=0时,则设置为0;
步骤22、从若干个数据库的权重比和实际负载比差值之中挑选出最大值,然后将所述数据库操作指令分配给最大值对应的数据库来执行相应操作。
由于数据库插入insert指令、修改update指令、删除delete指令和数据库查询select指令对数据库资源的消耗程度存在差异,因此,图3步骤B、或图4步骤21中,统计出数据库Si在每个时间周期中所执行的操作指令数,还可以进一步包括有:
数据代理装置在每个时间周期的起始时刻,将数据库Si在所述时间周期中所执行的操作指令数sqlCount(Si)初始化为0;
当数据代理装置将应用系统发来的数据库操作指令转发给数据库Si来执行相应操作时,数据代理装置判断所述数据库操作指令是否是数据库查询指令,如果是,则调整数据库Si在所述时间周期中所执行的操作指令数:sqlCount(Si)=sqlCount(Si)+1;如果否,则调整数据库Si在所述时间周期中所执行的操作指令数:sqlCount(Si)=sqlCount(Si)+2。
经过测试数据验证,数据库插入insert指令、修改update指令、删除delete指令一般是数据库查询select指令对数据库资源消耗的两倍,因此,可以采用将每条数据库插入insert指令、修改update指令、删除delete指令按照两条数据库查询select指令来计算,以有效优化下一时间周期的各数据库的指令分发权重系数。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

Claims (14)

1.一种数据库分布式系统,其特征在于,包括有数据代理装置、多个应用系统和多个数据库,所述数据代理装置分别和应用系统、数据库相连接,其中:
数据代理装置,用于接收应用系统发送来的数据库操作指令,从数据库操作指令中提取操作的数据库表,然后根据数据库表与数据库之间的映射关系查找到所述数据库表对应的若干个数据库,再根据所述若干个数据库的指令分发权重系数,从中挑选出一个数据库,最后将所述数据库操作指令转发给挑选出的数据库来执行相应操作。
2.根据权利要求1所述的系统,其特征在于,每个数据库的指令分发权重系数根据数据库的CPU占用时长、及已分配的操作指令数来设置。
3.根据权利要求1所述的系统,其特征在于,数据代理装置进一步包括有:
负载均衡器,用于分别在每个时间周期T的起始时刻t0、和结束时刻t1,采集每个数据库的所有虚拟处理器的用户时间和系统时间,并统计出每个数据库在时间周期T中所执行的操作指令数,然后计算出所连接的每个数据库在下一时间周期T+1的指令分发权重系数: qs ( S i ) T + 1 = | cpuT ( S i ) T + 1 × sqlCount ( S i ) T ( usercpuT ( S i , t 1 ) - usercpuT ( S i , t 0 ) ) + ( syscpuT ( S i , t 1 ) - syscpuT ( S i , t 0 ) ) | , 其中,qs(Si)T+1是数据库Si在下一时间周期T+1的指令分发权重系数,i是1到N之间的一个自然数,N是数据代理装置所连接的数据库总数,cpuT(Si)T+1是数据库Si在下一时间周期T+1所占用的CPU时长,sqlCount(Si)T是数据库Si在时间周期T中所执行的操作指令数,usercpuT(Si,t1)、usercpuT(Si,t0)分别是t1、t0时刻的数据库Si的所有虚拟处理器的用户时间,syscpuT(Si,t1)、syscpuT(Si,t0)分别是t1、t0时刻的数据库Si的所有虚拟处理器的系统时间,||表示对计算值取整。
4.根据权利要求3所述的系统,其特征在于,负载均衡器对数据库Si在下一时间周期T+1所占用的CPU时长cpuT(Si)T+1的计算公式如下:cpuT(Si)T+1=interval(T)×cpuCount(Si),其中,interval(T)是时间周期T的时长,单位是秒,cpuCount(Si)是数据库Si的主机逻辑CPU个数。
5.根据权利要求3所述的系统,其特征在于,负载均衡器还包括有:
权重系数调整单元,用于判断是否所有数据库在时间周期T中所执行的操作指令数都是0,如果是,则依次将每个数据库在下一时间周期T+1的指令分发权重系数调整为对应数据库的主机逻辑CPU个数;如果否,则从所有数据库在下一时间周期T+1的指令分发权重系数中遴选出所有非0的指令分发权重系数值,然后计算每个非0的指令分发权重系数和对应数据库的主机逻辑CPU个数的比值,并从所有比值中挑选出最小值,再从所有数据库在下一时间周期T+1的指令分发权重系数中挑选出所有为0的指令分发权重系数,将每个为0的指令分发权重系数修改为上述比例最小值和其对应数据库的主机逻辑CPU个数的乘积值。
6.根据权利要求1所述的系统,其特征在于,数据代理装置进一步包括有:
指令分发器,用于从若干个数据库中逐一选取每个数据库,并计算每个数据库的权重比和实际负载比差值: qs _ fz ( S k ) = qs ( S k ) T + 1 Σ j = 1 M qs ( S j ) T + 1 - sqlCount ( S k ) T + 1 sqlCountS T + 1 , 其中,qs_fz(Sk)是若干个数据库中的数据库Sk的权重比和实际负载比差值,是数据库Sk在时间周期T+1的权重比,是数据库Sk在时间周期T+1的实际负载比,qs(Sk)T+1是数据库Sk在时间周期T+1中的指令分发权重系数,是所述若干个数据库在时间周期T+1中的指令分发权重系数之和,M是所述若干个数据库的总数,sqlCount(Sk)T+1是数据库Sk在时间周期T+1中所执行的操作指令数,sqlCountST+1是所述若干个数据库在时间周期T+1中所执行的操作指令数之和,其中,当sqlCountST+1=0时,则设置为0;然后从若干个数据库的权重比和实际负载比差值之中挑选出最大值,最后将所述数据库操作指令分配给最大值对应的数据库来执行相应操作。
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的起始时刻t0、和结束时刻t1,采集每个数据库的所有虚拟处理器的用户时间和系统时间;
步骤B、数据代理装置统计出每个数据库在时间周期T中所执行的操作指令数;
步骤C、数据代理装置计算每个数据库在下一时间周期T+1的指令分发权重系数: qs ( S i ) T + 1 = | cpuT ( S i ) T + 1 × sqlCount ( S i ) T ( usercpuT ( S i , t 1 ) - usercpuT ( S i , t 0 ) ) + ( syscpuT ( S i , t 1 ) - syscpuT ( S i , t 0 ) ) | , 其中,qs(Si)T+1是数据库Si在下一时间周期T+1的指令分发权重系数,i是1到N之间的一个自然数,N是数据代理装置所连接的数据库总数,cpuT(Si)T+1是数据库Si在下一时间周期T+1所占用的CPU时长,sqlCount(Si)T是数据库Si在时间周期T中所执行的操作指令数,usercpuT(Si,t1)、usercpuT(Si,t0)分别是t1、t0时刻的数据库Si的所有虚拟处理器的用户时间,syscpuT(Si,t1)、syscpuT(Si,t0)分别是t1、t0时刻的数据库Si的所有虚拟处理器的系统时间,||表示对计算值取整。
11.根据权利要求10所述的方法,其特征在于,步骤C中,数据库Si在下一时间周期T+1所占用的CPU时长cpuT(Si)T+1的计算公式如下:cpuT(Si)T+1=interval(T)×cpuCount(Si),其中,interval(T)是时间周期T的时长,单位是秒,cpuCount(Si)是数据库Si的主机逻辑CPU个数。
12.根据权利要求10所述的方法,其特征在于,步骤C之后,还包括有:
步骤D、判断是否所有数据库在时间周期T中所执行的操作指令数都是0,如果是,则依次将每个数据库在下一时间周期T+1的指令分发权重系数调整为对应数据库的主机逻辑CPU个数,本流程结束;如果否,则继续下一步;
步骤E、从所有数据库在下一时间周期T+1的指令分发权重系数中遴选出所有非0的指令分发权重系数值,然后计算每个非0的指令分发权重系数和对应数据库的主机逻辑CPU个数的比值,最后从所有比值中挑选出最小值;
步骤F、从所有数据库在下一时间周期T+1的指令分发权重系数中挑选出所有为0的指令分发权重系数,并将每个为0的指令分发权重系数修改为上述比例最小值和其对应数据库的主机逻辑CPU个数的乘积值。
13.根据权利要求8所述的方法,其特征在于,步骤二进一步包括有:
步骤21、数据代理装置从所述若干个数据库中逐一挑选每个数据库,并计算每个数据库的权重比和实际负载比差值: qs _ fz ( S k ) = qs ( S k ) T + 1 Σ j = 1 M qs ( S j ) T + 1 - sqlCount ( S k ) T + 1 sqlCountS T + 1 , 其中,qs_fz(Sk)是若干个数据库中的数据库Sk的权重比和实际负载比差值,是数据库Sk在时间周期T+1的权重比,是数据库Sk在时间周期T+1的实际负载比,qs(Sk)T+1是数据库Sk在时间周期T+1中的指令分发权重系数,是所述若干个数据库在时间周期T+1中的指令分发权重系数之和,M是所述若干个数据库总数,sqlCount(Sk)T+1是数据库Sk在时间周期T+1中所执行的操作指令数,sqlCountST+1是所述若干个数据库在时间周期T+1中所执行的操作指令数之和,其中,当sqlCountST+1=0时,则设置为0;
步骤22、从若干个数据库的权重比和实际负载比差值之中挑选出最大值,然后将所述数据库操作指令分配给最大值对应的数据库来执行相应操作。
14.根据权利要求10、或13所述的方法,其特征在于,统计出数据库Si在每个时间周期中所执行的操作指令数,进一步包括有:
数据代理装置在每个时间周期的起始时刻,将数据库Si在所述时间周期中所执行的操作指令数sqlCount(Si)初始化为0;
当数据代理装置将应用系统发来的数据库操作指令转发给数据库Si来执行相应操作时,数据代理装置判断所述数据库操作指令是否是数据库查询指令,如果是,则调整数据库Si在所述时间周期中所执行的操作指令数:sqlCount(Si)=sqlCount(Si)+1;如果否,则调整数据库Si在所述时间周期中所执行的操作指令数:sqlCount(Si)=sqlCount(Si)+2。
CN201410823039.3A 2014-12-25 2014-12-25 一种数据库分布式系统及其实现方法 Expired - Fee Related CN104462548B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410823039.3A CN104462548B (zh) 2014-12-25 2014-12-25 一种数据库分布式系统及其实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410823039.3A CN104462548B (zh) 2014-12-25 2014-12-25 一种数据库分布式系统及其实现方法

Publications (2)

Publication Number Publication Date
CN104462548A true CN104462548A (zh) 2015-03-25
CN104462548B CN104462548B (zh) 2017-07-04

Family

ID=52908583

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410823039.3A Expired - Fee Related CN104462548B (zh) 2014-12-25 2014-12-25 一种数据库分布式系统及其实现方法

Country Status (1)

Country Link
CN (1) CN104462548B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104915442A (zh) * 2015-06-26 2015-09-16 携程计算机技术(上海)有限公司 数据分布处理系统及方法
CN105138638A (zh) * 2015-08-24 2015-12-09 浪潮通用软件有限公司 一种基于应用层的数据库分布方法
CN106547790A (zh) * 2015-09-22 2017-03-29 中移(杭州)信息技术有限公司 一种关系型数据库服务系统
CN108462731A (zh) * 2017-02-20 2018-08-28 阿里巴巴集团控股有限公司 数据代理方法、装置以及电子设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040078569A1 (en) * 2002-10-21 2004-04-22 Timo Hotti Method and system for managing security material and sevices in a distributed database system
CN101729929A (zh) * 2008-10-15 2010-06-09 中兴通讯股份有限公司 一种智能网业务库存取海量数据的系统、装置及方法
CN101841565A (zh) * 2010-04-20 2010-09-22 中国科学院软件研究所 数据库集群系统负载均衡方法和数据库集群系统
CN101866364A (zh) * 2010-06-22 2010-10-20 用友软件股份有限公司 数据导入方法和装置
CN103336721A (zh) * 2013-07-08 2013-10-02 北京奇虎科技有限公司 数据库操作请求分配方法、设备和系统
CN103997526A (zh) * 2014-05-21 2014-08-20 中国科学院计算技术研究所 一种可扩展负载均衡系统和方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040078569A1 (en) * 2002-10-21 2004-04-22 Timo Hotti Method and system for managing security material and sevices in a distributed database system
CN101729929A (zh) * 2008-10-15 2010-06-09 中兴通讯股份有限公司 一种智能网业务库存取海量数据的系统、装置及方法
CN101841565A (zh) * 2010-04-20 2010-09-22 中国科学院软件研究所 数据库集群系统负载均衡方法和数据库集群系统
CN101866364A (zh) * 2010-06-22 2010-10-20 用友软件股份有限公司 数据导入方法和装置
CN103336721A (zh) * 2013-07-08 2013-10-02 北京奇虎科技有限公司 数据库操作请求分配方法、设备和系统
CN103997526A (zh) * 2014-05-21 2014-08-20 中国科学院计算技术研究所 一种可扩展负载均衡系统和方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104915442A (zh) * 2015-06-26 2015-09-16 携程计算机技术(上海)有限公司 数据分布处理系统及方法
CN105138638A (zh) * 2015-08-24 2015-12-09 浪潮通用软件有限公司 一种基于应用层的数据库分布方法
CN106547790A (zh) * 2015-09-22 2017-03-29 中移(杭州)信息技术有限公司 一种关系型数据库服务系统
CN108462731A (zh) * 2017-02-20 2018-08-28 阿里巴巴集团控股有限公司 数据代理方法、装置以及电子设备
CN108462731B (zh) * 2017-02-20 2021-04-09 阿里巴巴集团控股有限公司 数据代理方法、装置以及电子设备

Also Published As

Publication number Publication date
CN104462548B (zh) 2017-07-04

Similar Documents

Publication Publication Date Title
CN103365929B (zh) 一种数据库连接的管理方法及系统
CN104778188B (zh) 一种分布式设备日志采集方法
CN101667034B (zh) 一种易扩展的、支持异构集群的监控系统
CN101841565B (zh) 数据库集群系统负载均衡方法和数据库集群系统
CN102521712B (zh) 一种流程实例数据处理方法和装置
CN110110006A (zh) 数据管理方法及相关产品
CN104462548A (zh) 一种数据库分布式系统及其实现方法
CN109189782A (zh) 一种区块链商品交易查询中的索引方法
CN105512336A (zh) 一种基于Hadoop的海量数据处理方法和装置
CN106873945A (zh) 基于批处理和流式处理的数据处理架构及数据处理方法
CN107045679A (zh) 一种基于数据挖掘的电子商品库存管理系统
CN104317957B (zh) 一种报表处理的开放平台、系统及报表处理方法
CN108376143A (zh) 一种新型的olap预计算模型及生成预计算结果的方法
CN105956068A (zh) 基于分布式数据库的网页url去重方法
CN109450987A (zh) 编号生成方法、装置及系统和存储介质
CN102332004B (zh) 用于海量数据管理的数据处理方法和系统
CN106294511B (zh) 一种Hadoop分布式文件系统的存储方法及装置
CN106502875A (zh) 一种基于云计算的日志生成方法及系统
CN104636395A (zh) 一种计数处理方法及装置
CN105471893B (zh) 一种分布式等值数据流连接方法
CN101916281B (zh) 并行计算系统及去重计数方法
CN105242873B (zh) 云计算系统的性能数据的采集与存储方法及装置
CN106886484A (zh) 基于云海系统的报表生成方法和装置
CN110119396A (zh) 数据管理方法及相关产品
CN102201922A (zh) 一种数据计费方法和相关装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP02 Change in the address of a patent holder
CP02 Change in the address of a patent holder

Address after: 310013, Zhejiang, Xihu District, Wensanlu Road, No. 398, 4 floor, Hangzhou

Patentee after: Dongxin Beiyou Information Technology Co., Ltd., Hangzhou

Address before: 100191 Beijing, Zhichun Road, No. 9, hearing the building on the floor of the 7 floor,

Patentee before: Dongxin Beiyou Information Technology Co., Ltd., Hangzhou

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20170704

Termination date: 20191225