CN104391873A - 数据库操作分离方法和系统 - Google Patents

数据库操作分离方法和系统 Download PDF

Info

Publication number
CN104391873A
CN104391873A CN201410593688.9A CN201410593688A CN104391873A CN 104391873 A CN104391873 A CN 104391873A CN 201410593688 A CN201410593688 A CN 201410593688A CN 104391873 A CN104391873 A CN 104391873A
Authority
CN
China
Prior art keywords
database
data base
master data
target
request
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.)
Pending
Application number
CN201410593688.9A
Other languages
English (en)
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.)
Shanghai Dameng Database Co Ltd
Original Assignee
Shanghai Dameng Database 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 Shanghai Dameng Database Co Ltd filed Critical Shanghai Dameng Database Co Ltd
Priority to CN201410593688.9A priority Critical patent/CN104391873A/zh
Publication of CN104391873A publication Critical patent/CN104391873A/zh
Pending legal-status Critical Current

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/23Updating
    • G06F16/2365Ensuring data consistency and integrity

Landscapes

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

Abstract

本发明实施例提供一种数据库操作分离方法和系统。该方法包括:客户端与主数据库建立第一连接,并与目标从数据库建立第二连接;客户端根据输入的操作事务,确定操作事务所包含的操作请求对应的操作类型;对于操作事务包含的各操作请求,根据当前操作请求对应的操作类型,基于预设操作请求分配策略,分配主数据库或目标从数据库执行当前操作请求;主数据库基于预设数据一致性策略,将所述主数据库中的操作数据同步至与主数据库连接的候选从数据库中。本方案能够降低由主数据库和候选从数据库构成的数据库系统的复杂性,并减少主数据库的并发压力,提高数据库系统的性能;还能保证主数据库以及候选从数据库之间数据的一致性。

Description

数据库操作分离方法和系统
技术领域
本发明实施例涉及信息技术领域,尤其涉及一种数据库操作分离方法和系统。
背景技术
随着信息时代的发展,信息更新速度不断加快,信息种类也纷繁复杂,业务数据量规模日益增长,数据库系统如何满足数据的高并发读写,是一个巨大的挑战。传统的数据库系统都是使用一个数据库进行读写操作,在高并发量时,数据库的并发性能可能成为整个应用系统的瓶颈。为了解决这个问题,读写分离的数据库系统应运而生。读写分离数据库系统一般包含一个主数据库以及若干从数据库,主数据库上执行写操作,从数据库用来分流执行读操作。
现有的数据库读写分离技术,主要是通过应用服务器或代理层对用户提交的数据库访问请求进行读写分类,从而达到数据库读写分离的目的;或者通过在操作请求中携带注释,并通过解析注释得到操作请求的读写类型,从而达到数据库读写分离的目的。
上述数据库读写分离技术存在以下缺陷:由于需要在数据库的上层部署应用服务器或代理层,增加了复杂性,且会产生相应的性能损耗,此外,还存在主数据库与从数据库的数据不一致的问题。
发明内容
本发明实施例提供一种数据库操作分离方法和系统,以在不增加数据库系统复杂性的情况下,实现操作事务所包含的操作请求的分离,并实现主数据库与从数据库之间数据保持一致。
第一方面,本发明实施例提供了一种数据库操作分离方法,包括:
客户端与主数据库建立第一连接,并与目标从数据库建立第二连接,其中,所述目标从数据库由所述主数据库根据客户端发送的操作分离连接请求,从与所述主数据库连接的候选从数据库中确定;
客户端根据输入的操作事务,确定所述操作事务所包含的操作请求对应的操作类型;
对于所述操作事务所包含的各操作请求,所述客户端根据当前操作请求对应的操作类型,基于预设操作请求分配策略,基于所述第一连接分配主数据库或基于所述第二连接分配所述目标从数据库执行当前操作请求;
所述主数据库基于预设数据一致性策略,将所述主数据库中的操作数据同步至所述候选从数据库中。
第二方面,本发明实施例还提供了一种数据库操作分离系统,包括客户端、主数据库和与所述主数据库连接的候选从数据库;
所述客户端包括:
连接建立模块,用于与主数据库建立第一连接,并与目标从数据库建立第二连接,其中,所述目标从数据库由所述主数据库根据客户端发送的操作分离连接请求,从与所述主数据库连接的候选从数据库中确定;
操作类型确定模块,用于根据输入的操作事务,确定所述操作事务所包含的操作请求对应的操作类型;
操作请求分配模块,用于对于所述操作事务所包含的各操作请求,根据当前操作请求对应的操作类型,基于预设操作请求分配策略,基于所述第一连接分配主数据库或基于所述第二连接分配所述目标从数据库执行当前操作请求;
所述主数据库包括:操作数据同步模块,用于基于预设数据一致性策略,将所述主数据库中的操作数据同步至所述候选从数据库中。
本发明实施例提供的数据库操作分离方法和系统,通过客户端确定操作事务所包含的操作请求的操作类型,并将不同操作类型的操作请求分配至主数据库或从与所述主数据库连接的候选从数据库中确定的一个目标从数据库进行执行,由于无需通过部署额外的应用服务器或代理层,因此降低了由主数据库和与所述主数据库连接的候选从数据库构成的数据库系统的复杂性,并减少了主数据库的并发压力,提高了数据库系统的性能;在主数据库和目标从数据库执行不同类型的操作请求之后,通过将主数据库中的操作数据同步至所述候选从数据库中,保证了主数据库以及与主数据连接的所有候选从数据库之间数据的一致性。
附图说明
为了更清楚地说明本发明,下面将对本发明中所需要使用的附图做一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一提供的一种数据库操作分离方法的流程图;
图2为本发明实施例二提供的一种数据库操作分离方法的流程图;
图3为本发明实施例三提供的一种数据库操作分离方法的流程图;
图4为本发明实施例四提供的一种数据库操作分离方法的流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施例中的技术方案作进一步详细描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。可以理解的是,此处所描述的具体实施例仅用于解释本发明,而非对本发明的限定,基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部内容。
实施例一
请参阅图1,为本发明实施例一提供的一种数据库操作分离方法的流程图。本发明实施例的方法适用于数据库操作分离系统,该系统包括客户端、主数据库和与所述主数据库连接的候选从数据库。
该方法包括:
步骤110、客户端与主数据库建立第一连接,并与目标从数据库建立第二连接;
其中,所述目标从数据库由所述主数据库根据客户端发送的操作分离连接请求,从与所述主数据库连接的候选从数据库中确定。
步骤120、客户端根据输入的操作事务,确定所述操作事务所包含的操作请求对应的操作类型;
本步骤具体是确定操作事务中包含的操作请求对应的操作类型。
在本步骤中,所述输入的操作事务一般是由用户输入到客户端中,然后由客户端进行操作类型确认。
步骤130、对于所述操作事务所包含的各操作请求,所述客户端根据当前操作请求对应的操作类型,基于预设操作请求分配策略,基于所述第一连接分配主数据库或基于所述第二连接分配所述目标从数据库执行当前操作请求;
本步骤具体是对于各操作请求,客户端根据每个操作请求对应的操作类型,将操作请求分配至主数据库或所述目标从数据库中进行执行。
通常,对于大部分数据库分析型的操作事务,操作类型为读操作的操作请求所占比例较大,本步骤可以将所占比例较大的读操作对应的操作请求发送至目标从数据库进行执行,而将所占比例较小的写操作对应的操作请求发送至主数据库进行执行,避免了只采用一个数据库的并发读写压力,通过目标从数据库分流了操作事务中的部分操作,从而减少了主数据库的并发压力,提高了数据库系统的性能。
步骤140、所述主数据库基于预设数据一致性策略,将所述主数据库中的操作数据同步至所述候选从数据库中。
本步骤具体是在主数据库以及与主数据连接的候选从数据库之间执行操作数据同步,从而保证主数据库与所述候选从数据库的数据一致性。
具体地,虽然目标从数据库执行操作类型为读操作的操作请求不会改变目标从数据库中的数据,但是由于主数据执行操作类型为写操作的操作请求会改变主数据库中的数据,既可以是在主数据库的原始数据的基础上增加数据,也可以是修改或者替换原始数据,还可以是删除原始数据,从而导致主数据库与候选从数据库之间数据的不一致,通过将主数据库中的操作数据同步至候选从数据库,能够保证主数据库与所述候选从数据库的数据一致性。
需要说明的是,当与主数据库连接的候选从数据库的数量为1时,所述目标从数据库为该候选从数据库,通过本操作能够保证主数据库与目标从数据库的数据一致性;当与主数据库连接的候选从数据库的数量为至少2个时,需在多个候选从数据库中确定其中的一个候选从数据库作为所述目标从数据库,此时,将所述主数据库中的操作数据同步至所述候选从数据库中,不仅包括将所述操作数据同步至该目标从数据库,还包括将所述操作数据同步至除该目标从数据库之外的其余候选从数据库。
本实施例的技术方案,通过客户端确定操作事务所包含的操作请求的操作类型,并将不同操作类型的操作请求分配至主数据库或从与所述主数据库连接的候选从数据库中确定的一个目标从数据库进行执行,由于无需通过部署额外的应用服务器或代理层,因此降低了由主数据库和与所述主数据库连接的候选从数据库构成的数据库系统的复杂性,并减少了主数据库的并发压力,提高了数据库系统的性能;在主数据库和目标从数据库执行不同类型的操作请求之后,通过将主数据库中的操作数据同步至所述候选从数据库中,保证了主数据库以及与主数据连接的所有候选从数据库之间数据的一致性。
实施例二
请参阅图2,为本发明实施例二提供的一种数据库操作分离方法的流程图。本实施例在上述实施例的基础上,提供了客户端根据当前操作请求对应的操作类型,基于预设操作请求分配策略,分配主数据库或从与所述主数据库连接的候选从数据库中确定的一个目标从数据库执行当前操作请求的优选方案。
在本实施例中,所述操作类型可以包括:读操作、写操作、提交操作以及回滚操作。
该优选方法包括:
步骤210、如果当前操作请求对应的操作类型为读操作,且在所述操作事务中,当前操作请求之前的操作请求对应的操作类型均为读操作,则客户端基于所述第二连接将当前操作请求发送至所述目标从数据库,以使所述目标从数据库执行当前操作请求;
本步骤具体是客户端确定当前操作请求的操作类型为读操作后,进一步检测在所述操作事务中当前操作请求之前的操作请求,若当前操作请求之前的操作请求的类型均为读操作,也即不涉及主数据库或目标从数据库中数据的改变,则分配目标从数据库执行当前操作。
步骤220、如果当前操作请求对应的操作类型为读操作,且当前操作请求为所述操作事务中的第一个操作请求,则客户端基于所述第二连接将当前操作请求发送至所述目标从数据库,以使所述目标从数据库执行当前操作请求;
本步骤具体是客户端确定当前操作请求的操作类型为读操作后,进一步检测在所述操作事务中当前操作请求之前的操作请求,若当前操作请求之前没有其他操作请求,也即不涉及主数据库或目标从数据库中数据的改变,则分配目标从数据库执行当前操作。
例如,在一个操作事务中,如果当前操作请求为查询操作,该查询操作的操作类型为读操作,且该查询操作为该操作事务中的第一个操作请求,则客户端将该查询操作发送至目标从数据库进行相应的查询。
步骤230、如果当前操作请求对应的操作类型为读操作,且在所述操作事务中,在当前操作请求之前存在操作类型为写操作的操作请求,则客户端基于所述第一连接将当前操作请求发送至所述主数据库,以使所述主数据库执行当前操作请求;
本步骤具体是客户端确定当前操作请求的操作类型为读操作,进一步检测在所述操作事务中,在当前操作请求之前是否存在写操作,若是,则客户端将当前操作请求发送至主数据库进行执行。
若否,则对应步骤210或者步骤220,此处不再赘述。
需要说明的是,如果在当前读操作之前存在写操作,而写操作由主数据库执行,相应地,会改变主数据库中的原始数据,也即,由主数据库执行写操作之后,主数据库中的数据与目标从数据库中的数据通常不一致,因此客户端将当前读操作发送至主数据库,由于主数据库中的数据及时更新,因此能满足操作请求;如果客户端将当前读操作发送至目标从数据库,由于从数据库中的数据与主数据库中的及时更新后的数据并不一致,可能导致无法执行当前读操作请求,或者导致执行出错。
步骤240、如果当前操作请求对应的操作类型为写操作,则客户端基于所述第一连接将当前操作请求发送至所述主数据库,以使所述主数据库执行当前操作请求;
本步骤具体是客户端确定当前操作请求的操作类型为写操作,则客户端将当前操作请求发送至主数据库进行执行。
需要说明的是,对于大部分数据库分析型的操作事务,操作类型为读操作的操作请求所占比例较大,因此,通过将所占比例较小的写操作对应的操作请求发送至主数据库进行执行,避免了只采用一个数据库的并发读写压力,通过目标从数据库分流了操作事务中的大部分操作,从而减少了主数据库的并发压力,提高了数据库系统的性能。
需要说明的是,主数据库执行写操作,既可以是在主数据库的原始数据的基础上增加数据,也可以是修改或者替换原始数据,还可以是删除原始数据。
步骤250、如果当前操作请求对应的操作类型为提交操作,则客户端基于所述第一连接将当前操作请求发送至所述主数据库,以使所述主数据库执行当前操作请求;
步骤260、如果当前操作请求对应的操作类型为回滚操作,则客户端基于所述第一连接将当前操作请求发送至所述主数据库,以使所述主数据库执行当前操作请求。
本实施例的技术方案,在客户端确定操作事务所包含的操作请求的操作类型之后,如果当前操作类型为写操作、提交操作或回滚操作,则由主数据库执行;如果当前操作类型为读操作,则进一步检测在操作事务中,当前操作请求与当前操作请求之前的操作请求的关联关系,并根据关联关系,分配主数据库或从数据库执行,能够实现不同操作类型的操作请求的细分,避免了无法执行当前读操作请求,或者导致执行出错,从而得到需要的执行结果。
需要说明的是,在本实施例中,步骤210-步骤260是相互独立的,都是根据当前操作请求对应的操作类型,基于预设操作请求分配策略,分配主数据库或从与所述主数据库连接的候选从数据库中确定的一个目标从数据库执行当前操作请求的优选实施方式,即可以执行步骤210-步骤260中的至少一项,且执行顺序不限。
实施例三
请参阅图3,为本发明实施例三提供的一种数据库操作分离方法的流程图。本实施例在上述各实施例的基础上,提供了主数据库基于预设数据一致性策略,将所述主数据库中的操作数据同步至所述候选从数据库中的优选方案。
该优选方法包括:
步骤310、如果所述主数据库获取到所述客户端发送的提交操作,则所述主数据库将所述主数据的日志缓冲区包含的日志发送至所述候选从数据库,以使所述候选从数据库根据该日志进行相应重做;
本步骤中,具体是主数据库在接收到客户端发送的提交操作之后,通过将所述主数据的日志缓冲区包含的日志发送至所述候选从数据库,以使所述候选从数据库根据该日志进行相应重做,从而使主数据库与各候选从数据库中的数据保持一致。
主数据库执行操作请求时,除了会对主数据库中的数据产生影响,还会在日志缓冲区中写入与执行的操作请求对应的信息,在事务提交时,无论此时日志缓冲区是否被写满,将此时日志缓冲区包含的日志发送至所述候选从数据库,使各候选从数据库根据该日志进行相应重做,即可保证主数据库与各候选从数据库之间的数据一致性。
例如,如果此时日志缓冲区的日志中包含有写操作,各候选从数据库则可以根据该日志中的写操作进行相应操作,从而使主数据库与各候选从数据库中的数据保持一致。
步骤320、如果所述主数据库的日志缓冲区被写满,则所述主数据库将所述日志缓冲区写满时形成的日志发送至所述候选从数据库,以使所述候选从数据库根据该日志进行相应重做;
本步骤中,主数据库执行操作请求时,除了会主数据库中的数据产生影响,还会在日志缓冲区中写入与执行的操作请求对应的信息,所述写入的与执行的操作请求对应的信息的容量受主数据库的日志缓冲区的容量限制,在日志缓冲区被写满时,与执行的操作请求对应的信息的集合即构成本步骤中的日志。
如果操作事务太大或者主数据库同时执行多个用户的多个操作事务时,可能在操作事务还没提交时日志缓冲区就被写满,在写满时,主数据库将日志发送给各候选从数据库进行重做,从而主数据库与各候选从数据库中的数据保持一致。
对于步骤310和步骤320,在各候选从数据库收到日志进行相应重做后,会分别返回重做完成消息至所述主数据库。
优选是,主数据库收到各候选从数据库重做日志完成的消息后,继续对外提供服务。通过各候选从数据库的重做日志完成的消息,可以进一步保证主数据库与各候选从数据库之间数据的一致性。
需要说明的是,由于数据同步针对的是各候选从数据库,其中包括目标从数据库,从而使得在接收到新的操作事务时,从各候选数据库中确定的新目标从数据库具备执行相应的新操作事务中读操作的能力。
步骤330、如果所述主数据库获取所述主数据库与所述目标从数据库之间的连接故障信息,则所述主数据库断开与该故障目标从数据库之间的故障连接,并回滚未提交的操作事务,以及返回出错信息至连接了该目标从数据库的客户端,以使连接了该故障目标从数据库的客户端断开与该故障目标从数据库之间的连接,并返回与新的目标从数据库建立第二连接的操作,其中,新的目标从数据库由所述主数据库根据连接了故障目标从数据库的客户端发送的操作分离连接请求,从与所述主数据库连接的剩余候选从数据库中确定。
在本步骤中,如果主数据库获取到所述主数据库与所述目标从数据库之间的连接故障信息,则断开该故障连接,此时如果主数据库在连接出现故障之前,执行了写操作或其他改变主数据库中数据的操作,则会导致主数据库与目标从数据库中的数据不一致,因此主数据库通过回滚未提交的操作事务,以及返回出错信息至连接了该故障目标从数据库的客户端,以使连接了该故障目标从数据库的客户端断开与该故障目标从数据库之间的连接,对于后续的各操作请求,返回与新的目标从数据库建立第二连接的操作,也即从主数据库获取连接的其余候选从数据库中确定的一个新目标从数据库信息,连接了该故障目标从数据库的客户端建立与新目标从数据库的第二连接,后续的各操作请求就可依据预设等操作请求分配策略,分配主数据库或新目标从数据库执行。之后,继续进行所述主数据库基于预设数据一致性策略,将所述主数据库中的操作数据同步至所述候选从数据库中这一步骤,不仅实现了未提交的操作事务的读写分离,而且保证了主数据库与仍处于正常状态的其余候选从数据库之间的数据一致性。
需要说明的是,在本实施例中,步骤310-步骤330是相互独立的,且执行顺序不限。
实施例四
请参阅图4,为本发明实施例四提供的一种数据库操作分离方法的流程图。本实施例的方法可以由数据库操作分离系统来执行。本实施例在上述各实施例的基础上,提供了客户端与目标从数据库建立第二连接的优选方案。
该优选方法包括:
步骤410、客户端基于第一连接,将用户建立的操作分离连接请求发送至所述主数据库;
步骤420、所述客户端接收所述主数据库发送的一个目标从数据库的连接属性信息,其中,所述目标从数据库由所述主数据库根据所述操作分离连接请求,从与所述主数据库连接的候选从数据库中确定;
步骤430、所述客户端根据所述连接属性信息,与所述目标从数据库建立第二连接。
需要注意的是,所述第一连接和第二连接均为普通连接,其中,所述第二连接优选基于所述第一连接和客户端发送的操作分离连接请求建立。其中操作分离连接请求可用于使主数据库从与所述主数据库连接的候选从数据库中确定一个目标从数据库,并向客户端返回所述目标从数据库的连接属性信息,例如,IP地址或端口信息等,从而能够使所述客户端与所述目标从数据库建立第二连接。
在本实施例中,较佳地,所述目标从数据库的确定具体可以由所述主数据库根据所述操作分离连接请求,以及根据所述主数据库中预置的与所述主数据库连接的候选从数据库对应的即时归档信息,并基于循环选择策略,从所述候选从数据库中确定。
例如,当前与主数据库连接的客户端有3个,其中第一客户端发送第一操作事务,第二客户端发送第二操作事务,第三客户端发送第三操作事务,而与主数据库连接的候选从数据库的数量为2,所述主数据库根据候选从数据库对应的即时归档信息,如果判断到上次操作事务的操作请求分离是由所述主数据库与第一候选从数据库执行的,则从2个候选从数据中,选择第二候选从数据库作为对应于第一操作事务的目标从数据库,选择第一候选从数据库作为对应于第二操作事务的目标从数据库,选择第二候选从数据库作为对应于第三操作事务的目标从数据库,以实现将3个客户端分别发送的操作事务均匀分配到2个候选从数据库,从而使这2个候选从数据库的负载均衡,提高数据库系统的整体性能。
下面通过实例进行说明数据库系统性能的提升,其中,数据库系统由一个主数据库和两个候选从数据库组成。
选取某市办公系统的典型模块(数据量接近10G)作为测试场景,对采用本发明实施例的技术方案与采用单机数据库系统分别得到的性能进行对比测试,其中主数据库与候选从数据库之间采用千兆局域网连接。
在操作事务中读写操作比例不同的情况下,采用本发明实施例的技术方案在性能方面的表现如下表所示:
可以看出,对于大部分数据库分析型的操作事务,读操作占较大比例时,使用本发明所述读写分离方法可以在操作请求处理能力和平均响应时间上得到较大提升。
当读操作比例为90%时,采用该数据库系统和采用单机数据库方案的性能对比如下表所示。
可以看出,使用该数据库系统方案相比单机数据库在每秒处理操作请求数和平均响应时间上均有明显提升。
实施例五
本实施例提供一种数据库操作分离系统。该系统包括:包括客户端、主数据库和与所述主数据库连接的候选从数据库。
所述客户端包括:连接建立模块、操作类型确定模块和操作请求分配模块。
其中,连接建立模块用于与主数据库建立第一连接,并与目标从数据库建立第二连接,其中,所述目标从数据库由所述主数据库根据客户端发送的操作分离连接请求,从与所述主数据库连接的候选从数据库中确定;操作类型确定模块用于根据输入的操作事务,确定所述操作事务所包含的操作请求对应的操作类型;操作请求分配模块用于对于所述操作事务所包含的各操作请求,根据当前操作请求对应的操作类型,基于预设操作请求分配策略,基于所述第一连接分配主数据库或基于所述第二连接分配所述目标从数据库执行当前操作请求。
所述主数据库包括:操作数据同步模块,用于基于预设数据一致性策略,将所述主数据库中的操作数据同步至所述候选从数据库中。
本实施例的技术方案,通过客户端确定操作事务所包含的操作请求的操作类型,并将不同操作类型的操作请求分配至主数据库或从与所述主数据库连接的候选从数据库中确定的一个目标从数据库进行执行,由于无需通过部署额外的应用服务器或代理层,因此降低了由主数据库和与所述主数据库连接的候选从数据库构成的数据库系统的复杂性,并减少了主数据库的并发压力,提高了数据库系统的性能;在主数据库和目标从数据库执行不同类型的操作请求之后,通过将主数据库中的操作数据同步至所述候选从数据库中,保证了主数据库以及与主数据连接的所有候选从数据库之间数据的一致性。
在上述方案中,所述操作类型包括:读操作、写操作、提交操作以及回滚操作;
操作请求分配模块包括下述至少一项:第一分配单元、第二分配单元、第三分配单元、第四分配单元、第五分配单元和第六分配单元。
其中,第一分配单元用于如果当前操作请求对应的操作类型为读操作,且在所述操作事务中,当前操作请求之前的操作请求对应的操作类型均为读操作,则基于所述第二连接将当前操作请求发送至所述目标从数据库,以使所述目标从数据库执行当前操作请求;第二分配单元用于如果当前操作请求对应的操作类型为读操作,且当前操作请求为所述操作事务中的第一个操作请求,则基于所述第二连接将当前操作请求发送至所述目标从数据库,以使所述目标从数据库执行当前操作请求;第三分配单元用于如果当前操作请求对应的操作类型为读操作,且在所述操作事务中,在当前操作请求之前存在操作类型为写操作的操作请求,则基于所述第一连接将当前操作请求发送至所述主数据库,以使所述主数据库执行当前操作请求;第四分配单元用于如果当前操作请求对应的操作类型为写操作,则基于所述第一连接将当前操作请求发送至所述主数据库,以使所述主数据库执行当前操作请求;第五分配单元用于如果当前操作请求对应的操作类型为提交操作,则基于所述第一连接将当前操作请求发送至所述主数据库,以使所述主数据库执行当前操作请求;第六分配单元用于如果当前操作请求对应的操作类型为回滚操作,则基于所述第一连接将当前操作请求发送至所述主数据库,以使所述主数据库执行当前操作请求。
在上述方案中,操作数据同步模块包括下述至少一项:第一同步单元、第二同步单元和第三同步单元。
其中,第一同步单元用于如果所述主数据库获取到所述客户端发送的提交操作,则将所述主数据的日志缓冲区包含的日志发送至所述候选从数据库,以使所述候选从数据库根据该日志进行相应重做;第二同步单元用于如果所述主数据库的日志缓冲区被写满,则将所述日志缓冲区写满时形成的日志发送至所述候选从数据库,以使所述候选从数据库根据该日志进行相应重做;第三同步单元用于如果所述主数据库获取所述主数据库与所述目标从数据库之间的连接故障信息,则所述主数据库断开与该故障目标从数据库之间的故障连接,并回滚未提交的操作事务,以及返回出错信息至连接了该目标从数据库的客户端,以使连接了该故障目标从数据库的客户端断开与该故障目标从数据库之间的连接,并返回与新的目标从数据库建立第二连接的操作,其中,新的目标从数据库由所述主数据库根据连接了故障目标从数据库的客户端发送的操作分离连接请求,从与所述主数据库连接的剩余候选从数据库中确定。
在上述方案中,连接建立模块优选包括:第一连接建立单元和第二连接建立单元。
其中,第一连接建立单元用于在根据输入的操作事务,确定所述操作事务所包含的操作请求对应的操作类型之前,与主数据库建立第一连接;第二连接建立单元用于基于所述第一连接,将用户建立的操作分离连接请求发送至所述主数据库;接收所述主数据库发送的一个目标从数据库的连接属性信息,其中,所述目标从数据库由所述主数据库根据所述操作分离连接请求,从与所述主数据库连接的候选从数据库中确定;根据所述连接属性信息,与所述目标从数据库建立第二连接。
在上述方案中,所述目标从数据库优选由所述主数据库根据所述操作分离连接请求,以及根据所述主数据库中预置的与所述主数据库连接的候选从数据库对应的即时归档信息,并基于循环选择策略,从所述候选从数据库中确定。
本发明实施例提供的数据库操作分离系统可执行本发明任意实施例所提供的数据库操作分离方法,具备执行方法相应的功能模块和有益效果。
最后应说明的是:以上各实施例仅用于说明本发明的技术方案,而非对其进行限制;实施例中优选的实施方式,并非对其进行限制,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种数据库操作分离方法,其特征在于,包括:
客户端与主数据库建立第一连接,并与目标从数据库建立第二连接,其中,所述目标从数据库由所述主数据库根据客户端发送的操作分离连接请求,从与所述主数据库连接的候选从数据库中确定;
客户端根据输入的操作事务,确定所述操作事务所包含的操作请求对应的操作类型;
对于所述操作事务所包含的各操作请求,所述客户端根据当前操作请求对应的操作类型,基于预设操作请求分配策略,基于所述第一连接分配主数据库或基于所述第二连接分配所述目标从数据库执行当前操作请求;
所述主数据库基于预设数据一致性策略,将所述主数据库中的操作数据同步至所述候选从数据库中。
2.根据权利要求1所述的方法,其特征在于,所述操作类型包括:读操作、写操作、提交操作以及回滚操作;
对于所述操作事务所包含的各操作请求,所述客户端根据当前操作请求对应的操作类型,基于预设操作请求分配策略,基于所述第一连接分配主数据库或基于所述第二连接分配所述目标从数据库执行当前操作请求,包括下述至少一项:
如果当前操作请求对应的操作类型为读操作,且在所述操作事务中,当前操作请求之前的操作请求对应的操作类型均为读操作,则所述客户端基于所述第二连接将当前操作请求发送至所述目标从数据库,以使所述目标从数据库执行当前操作请求;
如果当前操作请求对应的操作类型为读操作,且当前操作请求为所述操作事务中的第一个操作请求,则所述客户端基于所述第二连接将当前操作请求发送至所述目标从数据库,以使所述目标从数据库执行当前操作请求;
如果当前操作请求对应的操作类型为读操作,且在所述操作事务中,在当前操作请求之前存在操作类型为写操作的操作请求,则所述客户端基于所述第一连接将当前操作请求发送至所述主数据库,以使所述主数据库执行当前操作请求;
如果当前操作请求对应的操作类型为写操作,则所述客户端基于所述第一连接将当前操作请求发送至所述主数据库,以使所述主数据库执行当前操作请求;
如果当前操作请求对应的操作类型为提交操作,则所述客户端基于所述第一连接将当前操作请求发送至所述主数据库,以使所述主数据库执行当前操作请求;
如果当前操作请求对应的操作类型为回滚操作,则所述客户端基于所述第一连接将当前操作请求发送至所述主数据库,以使所述主数据库执行当前操作请求。
3.根据权利要求1或2所述的方法,其特征在于,所述主数据库基于预设数据一致性策略,将所述主数据库中的操作数据同步至所述候选从数据库中,包括下述至少一项:
如果所述主数据库获取到所述客户端发送的提交操作,则所述主数据库将所述主数据的日志缓冲区包含的日志发送至所述候选从数据库,以使所述候选从数据库根据该日志进行相应重做;
如果所述主数据库的日志缓冲区被写满,则所述主数据库将所述日志缓冲区写满时形成的日志发送至所述候选从数据库,以使所述候选从数据库根据该日志进行相应重做;
如果所述主数据库获取所述主数据库与所述目标从数据库之间的连接故障信息,则所述主数据库断开与该故障目标从数据库之间的故障连接,并回滚未提交的操作事务,以及返回出错信息至连接了该目标从数据库的客户端,以使连接了该故障目标从数据库的客户端断开与该故障目标从数据库之间的连接,并返回与新的目标从数据库建立第二连接的操作,其中,新的目标从数据库由所述主数据库根据连接了故障目标从数据库的客户端发送的操作分离连接请求,从与所述主数据库连接的剩余候选从数据库中确定。
4.根据权利要求1所述的方法,其特征在于,所述客户端与所述目标从数据库建立第二连接,包括:
所述客户端基于所述第一连接,将用户建立的操作分离连接请求发送至所述主数据库;
所述客户端接收所述主数据库发送的一个目标从数据库的连接属性信息,其中,所述目标从数据库由所述主数据库根据所述操作分离连接请求,从与所述主数据库连接的候选从数据库中确定;
所述客户端根据所述连接属性信息,与所述目标从数据库建立第二连接。
5.根据权利要求4所述的方法,其特征在于,所述目标从数据库由所述主数据库根据所述操作分离连接请求,从与所述主数据库连接的候选从数据库中确定,包括:
所述目标从数据库由所述主数据库根据所述操作分离连接请求,以及根据所述主数据库中预置的与所述主数据库连接的候选从数据库对应的即时归档信息,并基于循环选择策略,从所述候选从数据库中确定。
6.一种数据库操作分离系统,包括客户端、主数据库和与所述主数据库连接的候选从数据库;
其特征在于,所述客户端包括:
连接建立模块,用于与主数据库建立第一连接,并与目标从数据库建立第二连接,其中,所述目标从数据库由所述主数据库根据客户端发送的操作分离连接请求,从与所述主数据库连接的候选从数据库中确定;
操作类型确定模块,用于根据输入的操作事务,确定所述操作事务所包含的操作请求对应的操作类型;
操作请求分配模块,用于对于所述操作事务所包含的各操作请求,根据当前操作请求对应的操作类型,基于预设操作请求分配策略,基于所述第一连接分配主数据库或基于所述第二连接分配所述目标从数据库执行当前操作请求;
所述主数据库包括:操作数据同步模块,用于基于预设数据一致性策略,将所述主数据库中的操作数据同步至所述候选从数据库中。
7.根据权利要求6所述的系统,其特征在于,所述操作类型包括:读操作、写操作、提交操作以及回滚操作;
操作请求分配模块包括下述至少一项:
第一分配单元,用于如果当前操作请求对应的操作类型为读操作,且在所述操作事务中,当前操作请求之前的操作请求对应的操作类型均为读操作,则基于所述第二连接将当前操作请求发送至所述目标从数据库,以使所述目标从数据库执行当前操作请求;
第二分配单元,用于如果当前操作请求对应的操作类型为读操作,且当前操作请求为所述操作事务中的第一个操作请求,则基于所述第二连接将当前操作请求发送至所述目标从数据库,以使所述目标从数据库执行当前操作请求;
第三分配单元,用于如果当前操作请求对应的操作类型为读操作,且在所述操作事务中,在当前操作请求之前存在操作类型为写操作的操作请求,则基于所述第一连接将当前操作请求发送至所述主数据库,以使所述主数据库执行当前操作请求;
第四分配单元,用于如果当前操作请求对应的操作类型为写操作,则基于所述第一连接将当前操作请求发送至所述主数据库,以使所述主数据库执行当前操作请求;
第五分配单元,用于如果当前操作请求对应的操作类型为提交操作,则基于所述第一连接将当前操作请求发送至所述主数据库,以使所述主数据库执行当前操作请求;
第六分配单元,用于如果当前操作请求对应的操作类型为回滚操作,则基于所述第一连接将当前操作请求发送至所述主数据库,以使所述主数据库执行当前操作请求。
8.根据权利要求6或7所述的系统,其特征在于,操作数据同步模块包括下述至少一项:
第一同步单元,用于如果所述主数据库获取到所述客户端发送的提交操作,则将所述主数据的日志缓冲区包含的日志发送至所述候选从数据库,以使所述候选从数据库根据该日志进行相应重做;
第二同步单元,用于如果所述主数据库的日志缓冲区被写满,则将所述日志缓冲区写满时形成的日志发送至所述候选从数据库,以使所述候选从数据库根据该日志进行相应重做;
第三同步单元,用于如果所述主数据库获取所述主数据库与所述目标从数据库之间的连接故障信息,则所述主数据库断开与该故障目标从数据库之间的故障连接,并回滚未提交的操作事务,以及返回出错信息至连接了该目标从数据库的客户端,以使连接了该故障目标从数据库的客户端断开与该故障目标从数据库之间的连接,并返回与新的目标从数据库建立第二连接的操作,其中,新的目标从数据库由所述主数据库根据连接了故障目标从数据库的客户端发送的操作分离连接请求,从与所述主数据库连接的剩余候选从数据库中确定。
9.根据权利要求6所述的系统,其特征在于,连接建立模块包括:
第一连接建立单元,用于与所述主数据库建立第一连接;
第二连接建立单元,用于基于所述第一连接,将用户建立的操作分离连接请求发送至所述主数据库;接收所述主数据库发送的一个目标从数据库的连接属性信息,其中,所述目标从数据库由所述主数据库根据所述操作分离连接请求,从与所述主数据库连接的候选从数据库中确定;根据所述连接属性信息,与所述目标从数据库建立第二连接。
10.根据权利要求9所述的系统,其特征在于,所述目标从数据库由所述主数据库根据所述操作分离连接请求,从与所述主数据库连接的候选从数据库中确定,包括:
所述目标从数据库由所述主数据库根据所述操作分离连接请求,以及根据所述主数据库中预置的与所述主数据库连接的候选从数据库对应的即时归档信息,并基于循环选择策略,从所述候选从数据库中确定。
CN201410593688.9A 2014-10-29 2014-10-29 数据库操作分离方法和系统 Pending CN104391873A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410593688.9A CN104391873A (zh) 2014-10-29 2014-10-29 数据库操作分离方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410593688.9A CN104391873A (zh) 2014-10-29 2014-10-29 数据库操作分离方法和系统

Publications (1)

Publication Number Publication Date
CN104391873A true CN104391873A (zh) 2015-03-04

Family

ID=52609777

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410593688.9A Pending CN104391873A (zh) 2014-10-29 2014-10-29 数据库操作分离方法和系统

Country Status (1)

Country Link
CN (1) CN104391873A (zh)

Cited By (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106126600A (zh) * 2016-06-21 2016-11-16 浪潮电子信息产业股份有限公司 一种执行读写分离的方法、装置及系统
CN106372115A (zh) * 2016-08-23 2017-02-01 成都乾威科技有限公司 一种数据读写方法、系统及数据库系统
CN106383755A (zh) * 2016-09-23 2017-02-08 北京奇虎科技有限公司 在主从式数据库系统中恢复从库的方法、装置和系统
CN106649857A (zh) * 2016-12-30 2017-05-10 北京恒华伟业科技股份有限公司 一种基于读写分离的数据库操作方法及装置
CN107368563A (zh) * 2017-06-30 2017-11-21 北京奇虎科技有限公司 数据库数据的删除方法及装置、电子设备、存储介质
CN107391758A (zh) * 2017-08-24 2017-11-24 阿里巴巴集团控股有限公司 数据库切换方法、装置及设备
CN107506436A (zh) * 2017-08-23 2017-12-22 福建星瑞格软件有限公司 一种用于物联网数据库存储性能测试的方法以及装置
CN108038157A (zh) * 2017-12-05 2018-05-15 北京星河星云信息技术有限公司 主从数据库读写方法、系统、存储装置和服务器
CN109033420A (zh) * 2018-08-08 2018-12-18 北京奇艺世纪科技有限公司 一种数据处理方法和装置
CN109684270A (zh) * 2018-12-11 2019-04-26 泰康保险集团股份有限公司 数据库归档方法、装置、系统、设备及可读存储介质
CN110019312A (zh) * 2017-12-29 2019-07-16 中国移动通信集团山西有限公司 读写数据分离调度方法、装置、设备及介质
CN110083438A (zh) * 2019-05-05 2019-08-02 上海达梦数据库有限公司 事务分发方法、装置、设备和存储介质
CN110188114A (zh) * 2019-05-27 2019-08-30 上海达梦数据库有限公司 一种数据操作的优化方法、装置、系统、设备和存储介质
CN110781214A (zh) * 2019-09-26 2020-02-11 金蝶软件(中国)有限公司 数据库读写方法、装置、计算机设备和存储介质
CN110955719A (zh) * 2018-09-27 2020-04-03 阿里巴巴集团控股有限公司 一种数据存取处理设备、系统和方法
CN112115202A (zh) * 2020-09-18 2020-12-22 北京人大金仓信息技术股份有限公司 集群环境下的任务分发方法和装置
CN112231300A (zh) * 2020-10-21 2021-01-15 北京人大金仓信息技术股份有限公司 一种函数的分析方法、装置及电子设备
CN112860788A (zh) * 2019-11-28 2021-05-28 阿里巴巴集团控股有限公司 事务处理方法、装置、计算机系统及可读存储介质
CN114157674A (zh) * 2020-08-17 2022-03-08 中移(上海)信息通信科技有限公司 无线通信方法、装置、系统、服务器以及介质
WO2022068220A1 (zh) * 2020-09-30 2022-04-07 北京金山云网络技术有限公司 数据处理的方法、装置、计算机设备和存储介质
CN115794928A (zh) * 2023-02-03 2023-03-14 金蝶汽车网络科技有限公司 超文本请求处理方法、装置、计算机设备和存储介质
CN112231300B (zh) * 2020-10-21 2024-07-05 北京人大金仓信息技术股份有限公司 一种函数的分析方法、装置及电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030217064A1 (en) * 2002-05-17 2003-11-20 Walters Arthur P. Separation of database transactions
CN102591964A (zh) * 2011-12-30 2012-07-18 北京新媒传信科技有限公司 数据读写分离机制的实现方法和装置
CN102622427A (zh) * 2012-02-27 2012-08-01 杭州闪亮科技有限公司 读写分离数据库的方法及系统
CN103793432A (zh) * 2012-11-01 2014-05-14 深圳中兴网信科技有限公司 一种数据库读写分离方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030217064A1 (en) * 2002-05-17 2003-11-20 Walters Arthur P. Separation of database transactions
CN102591964A (zh) * 2011-12-30 2012-07-18 北京新媒传信科技有限公司 数据读写分离机制的实现方法和装置
CN102622427A (zh) * 2012-02-27 2012-08-01 杭州闪亮科技有限公司 读写分离数据库的方法及系统
CN103793432A (zh) * 2012-11-01 2014-05-14 深圳中兴网信科技有限公司 一种数据库读写分离方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
祝雄锋: "数据库集群中间件MySQL Proxy研究与分析", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Cited By (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106126600A (zh) * 2016-06-21 2016-11-16 浪潮电子信息产业股份有限公司 一种执行读写分离的方法、装置及系统
CN106372115A (zh) * 2016-08-23 2017-02-01 成都乾威科技有限公司 一种数据读写方法、系统及数据库系统
CN106383755A (zh) * 2016-09-23 2017-02-08 北京奇虎科技有限公司 在主从式数据库系统中恢复从库的方法、装置和系统
CN106649857A (zh) * 2016-12-30 2017-05-10 北京恒华伟业科技股份有限公司 一种基于读写分离的数据库操作方法及装置
CN107368563A (zh) * 2017-06-30 2017-11-21 北京奇虎科技有限公司 数据库数据的删除方法及装置、电子设备、存储介质
CN107368563B (zh) * 2017-06-30 2021-02-23 北京奇虎科技有限公司 数据库数据的删除方法及装置、电子设备、存储介质
CN107506436A (zh) * 2017-08-23 2017-12-22 福建星瑞格软件有限公司 一种用于物联网数据库存储性能测试的方法以及装置
CN107391758A (zh) * 2017-08-24 2017-11-24 阿里巴巴集团控股有限公司 数据库切换方法、装置及设备
CN108038157A (zh) * 2017-12-05 2018-05-15 北京星河星云信息技术有限公司 主从数据库读写方法、系统、存储装置和服务器
CN110019312B (zh) * 2017-12-29 2021-05-04 中国移动通信集团山西有限公司 读写数据分离调度方法、装置、设备及介质
CN110019312A (zh) * 2017-12-29 2019-07-16 中国移动通信集团山西有限公司 读写数据分离调度方法、装置、设备及介质
CN109033420B (zh) * 2018-08-08 2020-11-03 北京奇艺世纪科技有限公司 一种数据处理方法和装置
CN109033420A (zh) * 2018-08-08 2018-12-18 北京奇艺世纪科技有限公司 一种数据处理方法和装置
CN110955719A (zh) * 2018-09-27 2020-04-03 阿里巴巴集团控股有限公司 一种数据存取处理设备、系统和方法
CN109684270A (zh) * 2018-12-11 2019-04-26 泰康保险集团股份有限公司 数据库归档方法、装置、系统、设备及可读存储介质
CN110083438A (zh) * 2019-05-05 2019-08-02 上海达梦数据库有限公司 事务分发方法、装置、设备和存储介质
CN110188114A (zh) * 2019-05-27 2019-08-30 上海达梦数据库有限公司 一种数据操作的优化方法、装置、系统、设备和存储介质
CN110781214A (zh) * 2019-09-26 2020-02-11 金蝶软件(中国)有限公司 数据库读写方法、装置、计算机设备和存储介质
CN112860788A (zh) * 2019-11-28 2021-05-28 阿里巴巴集团控股有限公司 事务处理方法、装置、计算机系统及可读存储介质
CN114157674A (zh) * 2020-08-17 2022-03-08 中移(上海)信息通信科技有限公司 无线通信方法、装置、系统、服务器以及介质
CN112115202A (zh) * 2020-09-18 2020-12-22 北京人大金仓信息技术股份有限公司 集群环境下的任务分发方法和装置
WO2022068220A1 (zh) * 2020-09-30 2022-04-07 北京金山云网络技术有限公司 数据处理的方法、装置、计算机设备和存储介质
CN112231300A (zh) * 2020-10-21 2021-01-15 北京人大金仓信息技术股份有限公司 一种函数的分析方法、装置及电子设备
CN112231300B (zh) * 2020-10-21 2024-07-05 北京人大金仓信息技术股份有限公司 一种函数的分析方法、装置及电子设备
CN115794928A (zh) * 2023-02-03 2023-03-14 金蝶汽车网络科技有限公司 超文本请求处理方法、装置、计算机设备和存储介质

Similar Documents

Publication Publication Date Title
CN104391873A (zh) 数据库操作分离方法和系统
US10521396B2 (en) Placement policy
US9170743B2 (en) Management method of virtual storage system and remote copy system
US11797498B2 (en) Systems and methods of database tenant migration
US11093468B1 (en) Advanced metadata management
US20170212707A1 (en) Techniques to manage non-disruptive san availability in a partitioned cluster
US20110153570A1 (en) Data replication and recovery method in asymmetric clustered distributed file system
CN102622427A (zh) 读写分离数据库的方法及系统
WO2019001017A1 (zh) 集群间数据迁移方法、系统、服务器及计算机存储介质
EP3788489B1 (en) Data replication in a distributed storage system
CN107180113B (zh) 一种大数据检索平台
CN109643310A (zh) 用于数据库中数据重分布的系统和方法
CN111212111A (zh) 对象存储服务管理方法及电子设备
WO2012101540A1 (en) Application recovery in file system
CN103345502A (zh) 分布式数据库的事务处理方法和系统
CN105635311A (zh) 一种云管理平台中资源池信息同步的方法
CN107357522A (zh) 数据处理方法和装置
CN117677943A (zh) 用于混合数据处理的数据一致性机制
WO2012063315A1 (ja) 計算機システム、仮想サーバへのボリューム割り当て方法及び計算機読み取り可能な記憶媒体
US11157456B2 (en) Replication of data in a distributed file system using an arbiter
CN104376088A (zh) 一种云数据库的分布式同步方法及数据库系统
CN105426119A (zh) 一种存储设备及数据处理方法
EP3788501B1 (en) Data partitioning in a distributed storage system
US20050278501A1 (en) Method and apparatus for caching storage system
US10331627B2 (en) Method and system for unified technological stack management for relational databases

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20150304

WD01 Invention patent application deemed withdrawn after publication