CN105373563A - 数据库切换方法及装置 - Google Patents

数据库切换方法及装置 Download PDF

Info

Publication number
CN105373563A
CN105373563A CN201410433481.5A CN201410433481A CN105373563A CN 105373563 A CN105373563 A CN 105373563A CN 201410433481 A CN201410433481 A CN 201410433481A CN 105373563 A CN105373563 A CN 105373563A
Authority
CN
China
Prior art keywords
database
operation requests
middleware
completing
client
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
CN201410433481.5A
Other languages
English (en)
Other versions
CN105373563B (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.)
Beijing Qizhi Business Consulting Co ltd
Beijing Qihoo Technology Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Qizhi Software Beijing 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 Beijing Qihoo Technology Co Ltd, Qizhi Software Beijing Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201410433481.5A priority Critical patent/CN105373563B/zh
Publication of CN105373563A publication Critical patent/CN105373563A/zh
Application granted granted Critical
Publication of CN105373563B publication Critical patent/CN105373563B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种数据库切换方法及装置,该方法中间件与原数据库之间建立有第一连接,当中间件接收到将原数据库切换为新数据库的切换请求时,根据该切换请求,中间件与新数据库建立第二连接,并保持与原数据库的第一连接,由于此时中间件同时保持着与原数据库、新数据库之间的连接,因此,当中间件接收到客户端的操作请求时,不必等待原数据库将尚未完成处理的操作请求全部处理完毕,即可直接将接收到的操作请求通过第二连接发送给新数据库处理,有效地提高了中间件的发送效率。

Description

数据库切换方法及装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据库切换方法及装置。
背景技术
随着互联网的迅速发展,数据库的中间件技术在面向网络的分布式数据库系统中得到了广泛的应用。
中间件可以是位于客户端与数据库之间的中转设备,并可以连接两者。当客户端向中间件请求访问数据库时,该客户端先与中间件建立通讯连接,然后,中间件从预先建立的数据库连接中选择一个当前空闲的数据库连接,并将该数据库连接分配给该客户端使用。
当客户端要使用结构化查询语言(StructuredQueryLanguage,SQL)语句对数据库中的数据进行操作时,会将SQL语句发送至中间件,由中间件通过分配给该客户端的数据库连接将该SQL语句转发至数据库,数据库执行接收到的该SQL语句,并通过中间件向该客户端返回该SQL语句的执行结果。
在现有技术中,当要将原数据库切换为新数据库时,中间件会接收到将原数据库切换为新数据库的切换请求,此时,中间件需要一直等待原数据库将之前中间件发送的SQL语句全部执行完毕后,才能将尚未发送给原数据库的SQL语句发送给新数据库,从而导致中间件的发送效率较低。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的数据库切换方法及装置,在原数据库切换为新数据库时,能够有效地提高中间件的发送效率。
根据本发明的第一个方面,提出一种数据库切换方法,中间件与第一数据库之间建立有第一连接,包括:
所述中间件接收将所述第一数据库切换为第二数据库的切换请求;
所述中间件根据所述切换请求,与所述第二数据库建立第二连接,并保持所述第一连接;
当所述中间件接收到客户端的操作请求时,将所述操作请求通过所述第二连接发送给所述第二数据库处理。
可选地,所述方法还包括:
监控所述第一数据库中的未完成处理的操作请求;
当监控到所述第一数据库中不存在未完成处理的操作请求时,所述中间件断开所述第一连接。
可选地,监控所述第一数据库中的未完成处理的操作请求具体包括:
所述中间件监控所述第一数据库中的未完成处理的操作请求的数量;
每监控到所述第一数据库处理完一个操作请求时,将所述未完成处理的操作请求的数量减1;
当所述未完成处理的操作请求的数量为0时,确定所述第一数据库中不存在未完成处理的操作请求。
可选地,将所述操作请求通过所述第二连接发送给所述第二数据库处理之前,所述方法还包括:
确定所述操作请求所属的数据库事务中的其它操作请求未通过所述第一连接发送给所述第一数据库处理。
可选地,所述操作请求包括:SQL语句;
所述处理包括:执行SQL语句,并向所述中间件发送执行结果。
根据本发明的第二个方面,提出一种数据库切换装置,中间件与第一数据库之间建立有第一连接,包括:
第一接收模块,用于接收将所述第一数据库切换为第二数据库的切换请求;
连接模块,用于根据所述切换请求,与所述第二数据库建立第二连接,并保持所述第一连接;
第二接收模块,用于接收客户端的操作请求;
发送模块,用于当所述第二接收模块接收到客户端的操作请求时,将所述操作请求通过所述第二连接发送给所述第二数据库处理。
可选地,所述装置还包括:
监控模块,用于监控所述第一数据库中的未完成处理的操作请求;
断开模块,用于当所述监控模块监控到所述第一数据库中不存在未完成处理的操作请求时,断开所述第一连接。
所述监控模块具体用于,监控所述第一数据库中的未完成处理的操作请求的数量;每监控到所述第一数据库处理完一个操作请求时,将所述未完成处理的操作请求的数量减1;当所述未完成处理的操作请求的数量为0时,确定所述第一数据库中不存在未完成处理的操作请求。
可选地,所述装置还包括:
确定模块,用于在所述发送模块将所述操作请求通过所述第二连接发送给所述第二数据库处理之前,确定所述操作请求所属的数据库事务中的其它操作请求未通过所述第一连接发送给所述第一数据库处理。
所述操作请求包括:SQL语句;所述处理包括:执行SQL语句,并向所述中间件发送执行结果。
根据本发明提供的数据库切换方法,中间件与原数据库之间建立有第一连接,当中间件接收到将原数据库切换为新数据库的切换请求时,根据该切换请求,中间件与新数据库建立第二连接,并保持与原数据库的第一连接,由于此时中间件同时保持着与原数据库、新数据库之间的连接,因此,中间件不必等待原数据库将尚未完成处理的操作请求全部处理完毕,即可将尚未发送给原数据库的SQL语句发送给新数据库处理,有效地提高了中间件的发送效率。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为依据本发明实施例的数据库切换方法;
图2为依据本发明实施例,在实际应用场景下,原数据库与新数据库切换前,原数据库、中间件,以及客户端之间的连接架构;
图3为依据本发明实施例,在实际应用场景下,客户端通过中间件访问原数据库,以及原数据库切换为新数据库的过程;
图4为依据本发明实施例,在实际应用场景下,客户端访问原数据库前,原数据库中存储的数据表A的结构;
图5为依据本发明实施例,在实际应用场景下,原数据库与新数据库切换时,原数据库、新数据库、中间件,以及客户端之间的连接架构
图6为依据本发明实施例,在实际应用场景下,原数据库与新数据库切换后,新数据库中存储的从原数据库复制的数据表A的结构;
图7为依据本发明实施例的数据库切换装置。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
以下结合附图,详细说明本申请各实施例提供的技术方案。
图1为依据本发明实施例的数据库切换方法,可以包括步骤:
S101:中间件接收将第一数据库切换为第二数据库的切换请求。
其中,该中间件与第一数据库中间建立有第一连接。
S102:中间件根据该切换请求,与第二数据库建立第二连接,并保持第一连接。
S103:当中间件接收到客户端的操作请求时,将该操作请求通过第二连接发送给第二数据库处理。
从上述可知,在该实施例中,中间件预先与第一数据库建立有第一连接,客户端通过中间件对第一数据库进行操作,具体的操作方法是:首先,该客户端与中间件建立通讯连接,然后,中间件将第一连接分配给该客户端,则该客户端通过该通讯连接向中间件发送对第一数据库的操作请求,再由中间件将接收到的该操作请求通过第一连接发送给第一数据库,第一数据库对接收到的该操作请求进行处理后,向中间件发送处理结果,最后,中间件将该处理结果发送给客户端。其中,中间件与第一数据库建立的第一连接和与第二数据库建立的第二连接均为数据库连接。
需要说明的是,在本发明的实施例中,中间件可以是位于客户端与数据库之间的中转设备,并可以连接两者。中间件封装了与客户端中可能安装的各种操作系统平台相关的处理方法,以为数据库提供统一的接口,使得客户端在更换操作系统和通信协议等底层的配置后无需改变数据库的程序代码,增强了数据库的可移植性。而且中间件还可以管理数据库连接,减轻了数据库的负担,具体的,若不使用中间件,客户端每次访问数据库都需要与数据库建立一个数据库连接,则当大量客户端并行访问数据库时,需要同时与数据库建立大量数据库连接,由于建立数据库连接是比较耗费时间和系统资源的操作,且数据库的并行处理能力有限,因此,客户端对数据库的访问效率会大大降低,而中间件可以预先与数据库建立多个空闲的数据库连接,并对这些数据库连接进行保持和管理,每当有客户端通过中间件请求访问数据库时,该客户端先与中间件建立通讯连接,然后,中间件从预先建立的数据库连接中选择一个当前空闲的数据库连接,并将该数据库连接分配给该客户端使用,等该客户端使用完毕后,中间件将该数据库连接回收,提高了客户端对数据库的访问效率。
当要将第一数据库切换为第二数据库时,中间件会接收到将第一数据库切换为第二数据库的切换请求,其中,第二数据库与中间件在物理上是连通状态,具体可通过电缆、数据线等物理设备连通,该切换请求可以通过中间件提供给管理者的管理接口发送。进而,中间件根据该切换请求,与第二数据库建立第二连接,并保持与第一数据库之间的第一连接,由于此时中间件同时保持着与第一数据库、第二数据库之间的连接,因此,当中间件接收到客户端的操作请求时,不必等待第一数据库将尚未完成处理的操作请求全部处理完毕,即可直接将接收到的操作请求发送给第二数据库进行处理即可,有效地提高了中间件的发送效率。
依据本发明的一个实施例,可以有多个客户端通过中间件对第一数据库进行并行访问,则中间件可预先与第一数据库建立多个连接,并针对每个客户端,为该客户端分配一个该连接作为所述的第一连接,通过该第一连接为其对应的客户端向第一数据库发送操作请求,并接收第一数据库返回的处理结果。当要将第一数据库切换为第二数据库时,中间件会接收到将第一数据库切换为第二数据库的切换请求,则中间件同样也可根据该切换请求与第二数据库建立多个连接(其中,连接的数量不小于当前通过中间件与第一数据库保持连接的客户端的数量),给每个客户端分配一个连接作为所述的第二连接,并为每个客户端保持所述的第一连接,当中间件接收到某客户端的操作请求时,将该操作请求通过分配给该客户端的第二连接发送给第二数据库处理。
依据本发明的一个实施例,所述的操作请求包括:SQL语句。所述SQL语句可以是数据查询语言语句、数据操纵语言语句、数据定义语言语句、数据控制语言语句、事务处理语言语句、指针控制语言语句等等。客户端通过中间件向数据库发送SQL语句,数据库则对SQL语句进行处理,所述的处理包括:执行SQL语句,并向中间件发送执行结果等。
依据本发明的另一实施例,要将第一数据库切换为第二数据库时,中间件接收到将第一数据库切换为第二数据库的切换请求,在中间件与第二数据库建立第二连接前,中间件会将从客户端接收到的操作请求通过第一连接发送给所述第一数据库处理,而基于步骤103,在中间件与第二数据库建立第二连接后,中间件会将从客户端接收到的操作请求通过第二连接发送给第二数据库处理,但是,此时第一数据库中可能存在尚未完成处理的操作请求,也就是说,第一数据库中可能仍存在从中间件接收的但尚未执行的SQL语句、或者正在执行的SQL语句、或者已执行但未返回执行结果的SQL语句。若此时中间件断开与第一数据库之间的第一连接,则第一数据库就无法向中间件发送未完成处理的操作请求后续的执行结果。
因此,中间件在与第二数据库建立第二连接后,保持与第一数据库之间的第一连接,且需要监控第一数据库中的未完成处理的操作请求,以确定何时可以断开与第一数据库之间的第一连接。显然,只有当中间件监控到第一数据库中不存在未完成处理的操作请求时,也即,中间件已接收到第一数据库发送的全部操作请求的执行结果后,才可以断开第一连接。
当然,中间件通过上述方法断开第一连接只是为了尽快释放对第一数据库的操作权,中间件同样可以一直保持与第一数据库的第一连接而不用断开。
依据本发明的一个实施例,监控所述第一数据库中的未完成处理的操作请求,具体包括:中间件监控第一数据库中的未完成处理的操作请求的数量,每监控到第一数据库处理完一个操作请求时,将所述未完成处理的操作请求的数量减1,当未完成处理的操作请求的数量为0时,确定第一数据库中不存在未完成处理的操作请求。
具体的,由于中间件会为客户端转发该客户端向第一数据库发送所有操作请求,且中间件也会为第一数据库转发该第一数据库向客户端发送的所有执行结果,因此,中间件可以监控向第一数据库发送的操作请求的数量,以及向该客户端发送的执行结果的数量,显然,两者之差即为第一数据库中未完成处理的操作请求的数量,当该未完成处理的操作请求的数量为0时,中间件即可确定第一数据库中已不存在未完成处理的操作请求,从而可断开与第一数据库的第一连接。
依据本发明的一个实施例,在中间件将第一数据库切换为第二数据库之前,中间件可能已经通过第一连接向第一数据库发送了属于同一个数据库事务中一部分的操作请求,但是尚未通过第一连接向第一数据库发送该数据库事务中其余部分的操作请求,对于数据库事务中的操作请求而言,数据库会根据发送该操作请求所使用的数据库连接识别同一个数据库事务中的后续操作请求,进而,需要将属于同一个数据库事务所有操作请求通过相同的数据库连接发送,也即,中间件需要将尚未发送的该数据库事务中其余部分的操作请求仍通过第一连接发送给第一数据库。因此,基于这种情况,当中间件接收到客户端的上述操作请求时,在将该操作请求通过第二连接发送给第二数据库处理之前,需要确定该操作请求所属的数据库事务中的其它操作请求未通过第一连接发送给第一数据库处理,具体的,当中间件接收到客户端发送的操作请求时,可判断与该操作请求属于同一个数据库事务中的其它操作请求已经是否通过第一连接发送给所述第一数据库,若是,则中间件仍将该操作请求通过第一连接发送给第一数据库处理,否则,中间件确定该操作请求所属的数据库事务中的其它操作请求未通过第一连接发送给第一数据库处理,将该操作请求通过第二连接发送给第二数据库进行处理。
在此针对上述的数据库事务进行说明:
一个数据库事务可以包含多个操作请求,其中,所述的操作请求可以是SQL语句。由于在数据库中可同时执行多个数据库事务,为了不混淆各个数据库事务,数据库使用连接标识(Identity,ID)对一个数据库事务的所有语句进行标识,其中,该连接标识为发送该数据库事务的语句所使用连接的连接ID。若中间件发送数据库事务的某条语句与发送该数据库事务的其它语句使用了不同连接,则数据库认为该条语句与该其它语句属于不同的数据库事务,并分别用对应的不同连接ID对其标识,因此,每个连接ID标识的数据库事务的语句均不完整,导致数据库无法正确执行该数据库事务中的语句。根据上述说明,数据库是根据连接识别同一个数据库事务中的语句,因此,需要将同一个数据库事务所有语句通过相同连接发送。
另外,在本发明的实施例中,需要有同步机制来实现第二数据库从第一数据库中同步数据项,以及对数据项的修改操作,否则,第二数据库可能无法正确地执行中间件发送的操作请求,其原因可能包括:在第二数据库中找不到对应的数据项、对数据项赋值的顺序错误等。基于一种常用的同步机制,第二数据库可以从第一数据库复制全部的数据,对于第一数据库新增的对数据项的操作,第二数据库则可以通过回放第一数据库的二进制日志,使所述第二数据库中的数据项、以及数据项的值与所述第一数据库一致。其中,在同步过程中,第二数据库接收到中间件发送的操作请求时,可先将该操作请求缓存在操作请求队列中,等待同步完毕后,再处理该操作请求。
依据本发明的一个实施例,在第二数据库从第一数据库中同步数据项后,则可处理中间件发送的该操作请求,但是,由于第一数据库中可能存在未完成处理的操作请求,后续第一数据库对该未完成处理的操作请求进行处理后,需要将处理结果也同步给第二数据库,以保证第二数据库中的数据项,以及数据项的值的正确性。
结合图2至6,对依据本发明一个实施例的的数据库切换方法的实际应用如下:
图2示出了在应用了中间件的场景下,原数据库(即,第一数据库)与新数据库(即,第二数据库)切换前,原数据库、中间件、以及客户端之间的连接架构。3个客户端C1~C3通过中间件访问原数据库,具体的,客户端C1~C3分别与中间件基于传输控制协议(TransmissionControlProtocol,TCP)建立有通讯连接,中间件与原数据库建立了数据库连接c1~c3(c1~c3即为第一连接)。其中,原数据库与新数据库可以为MySQL数据库,所述的数据库连接可以为java数据库连接(JavaDatabaseConnectivity,JDBC)。
图3示出了客户端通过中间件访问原数据库,以及原数据库切换为新数据库的过程,具体包括步骤:
S301:客户端向中间件发送若干操作请求。
假定原数据库中存储有数据表A(数据表A,以下简称为表A),表A定义了若干数据项,表A中包含了3条数据记录D1~D3,其中,每条数据记录包括一组数据项的取值。图4示出了表A当前的结构,表A中的第一行表示表A包含的若干数据项1~n,表A中的第一列表示表A包含的数据记录D1~D3,某数据项所在的列与某数据记录所在的行交汇处的单元格中为在该数据记录中该数据项的取值。
客户端C1向中间件发送SQL语句S1,以请求查询原数据库中表A的数据记录D1,客户端C2向中间件发送SQL语句S2,以请求修改原数据库中表A的数据记录D2(修改数据记录D2中数据项2的取值,将b2修改为b2’),客户端C3向中间件发送SQL语句S3,以请求向表A中插入一条数据记录D4。
S302:中间件通过分配给该客户端的数据库连接将该若干操作请求发送给原数据库。
中间件将SQL语句S1通过数据库连接c1发送给原数据库,将SQL语句S2通过数据库连接c2发送给原数据库,将SQL语句S3通过数据库连接c3发送给原数据库。
S303:原数据库对接收到的该若干操作请求进行处理。
原数据库接收到SQL语句S1、S2、S3后,将其放在SQL语句的等待执行队列中依次执行,假定原数据库成功执行了SQL语句S1、S2,而SQL语句S3仍在等待执行。
S304:原数据库将该若干操作请求中已处理完的操作请求的处理结果发送给中间件。
原数据库将SQL语句S1执行成功的结果,以及查询到的数据记录D1通过数据库连接c1发送给中间件,原数据库将SQL语句S2的执行成功的结果(即,对数据记录D2修改成功)通过数据库连接c2发送给中间件。
S305:中间件将接收到的处理结果发送给对应的客户端。
S306:新数据库从原数据库同步。
新数据库与原数据库基于TCP建立通讯连接,新数据库复制原数据库中当前存储的数据,该数据包括原数据库中存储的表A。
S307:中间件接收到将原数据库切换为新数据库的切换请求。
管理者通过中间件提供的管理接口向中间件发送将原数据库切换为新数据库的切换请求,中间件接收到该切换请求。
S308:中间件与新数据库建立数据库连接,给每个客户端分配一个该数据库连接,并保持与原数据库之间的数据库连接。
中间件与新数据库建立了数据库连接nc1、nc2、nc3(nc1、nc2、nc3即为第二连接),并将数据库连接nc1分配给客户端C1,将数据库连接nc2分配给客户端C2,将数据库连接nc3分配给客户端C3,图5示出了当前客户端、中间件、原数据库、新数据库之间的连接架构。
S309:中间件监控原数据库中未完成处理的操作请求。
中间件开始监控原数据库中未完成处理的操作请求,由于中间件尚未接收到原数据库返回的SQL语句S3的执行结果,则此时原数据库中未完成处理的操作请求的数量为1。
S310:客户端继续向中间件发送操作请求。
此时,客户端C1又向中间件发送SQL语句S4,以请求查询表A中数据记录D3。
S311:中间件确定客户端发送的操作请求所属的数据库事务中的其它操作请求未发送给原数据库处理。
由于中间件判断SQL语句S4不属于一个数据库事务,因此,中间件可以进行后续操作。
S312:中间件将接收到的该操作请求发送给新数据库处理。
中间件将接收到的SQL语句S4通过分配给客户端C1的数据库连接nc1发送给新数据库执行,由于在步骤S306中,新数据库已经从原数据库复制了表A,因此,新数据库可以成功执行SQL语句S4,具体的,新数据库在复制的表A中的查询到数据记录D3,并将查询成功的结果,以及查询到数据记录D3通过中间件返回给客户端C1。
S313:当原数据库中未完成处理的操作请求的数量为0时,中间件断开与原数据库的数据库连接。
当原数据库对步骤303中尚未执行的SQL语句S3成功执行,并向中间件返回执行结果后,中间件确定原数据库中未完成处理的操作请求的数量为0,则中间件断开与原数据库的数据库连接c1~c3。
S314:新数据库从原数据库同步在原数据库中新增的对数据项的操作。
由于原数据库执行SQL语句S3时,在表A中增加了一条数据记录D4,但是,新数据库中复制的表A中没有这条增加的数据记录D4,因此,新数据库要从原数据库同步这条新增的数据记录D4,方法可以是复制数据记录D4并添加至复制的表A中,或者,新数据库可以根据原数据库的二进制日志获取SQL语句S3,并执行。图6示出了新数据库中复制的表A当前的结构,可以看出,在该复制的表A中,数据记录D2的数据项2的取值已经修改为b2’,且增加了数据记录D4,与原数据库中数据项,以及数据项的值的状态一致。
以上为本发明实施例提供的一种数据库切换方法,基于同样的发明思路,本发明实施例还提供一种数据库切换装置,如图7所示。
图7为依据本发明一个实施例的数据库切换装置结构示意图,具体包括:
第一接收模块701,用于接收将所述第一数据库切换为第二数据库的切换请求;
连接模块702,用于根据所述切换请求,与所述第二数据库建立第二连接,并保持所述第一连接;
第二接收模块703,用于接收客户端的操作请求;
发送模块704,用于当所述第二接收模块703接收到客户端的操作请求时,将所述操作请求通过所述第二连接发送给所述第二数据库处理。
所述装置还包括:
监控模块705,用于监控所述第一数据库中的未完成处理的操作请求;
断开模块706,用于当所述监控模块705监控到所述第一数据库中不存在未完成处理的操作请求时,断开所述第一连接。
所述监控模块705具体用于,监控所述第一数据库中的未完成处理的操作请求的数量;每监控到所述第一数据库处理完一个操作请求时,将所述未完成处理的操作请求的数量减1;当所述未完成处理的操作请求的数量为0时,确定所述第一数据库中不存在未完成处理的操作请求。
所述装置还包括:
确定模块707,用于在所述发送模块704将所述操作请求通过所述第二连接发送给所述第二数据库处理之前,确定所述操作请求所属的数据库事务中的其它操作请求未通过所述第一连接发送给所述第一数据库处理。
所述操作请求包括:SQL语句;所述处理包括:执行SQL语句,并向所述中间件发送执行结果。
具体的上述如图7所示的数据库切换装置可以位于中间件中。
本发明实施例提供一种数据库切换方法及装置,该方法中间件与原数据库之间建立有第一连接,当中间件接收到将原数据库切换为新数据库的切换请求时,根据该切换请求,中间件与新数据库建立第二连接,并保持与原数据库的第一连接,由于此时中间件同时保持着与原数据库、新数据库之间的连接,因此,当中间件接收到客户端的操作请求时,不必等待原数据库将尚未完成处理的操作请求全部处理完毕,即可直接将接收到的操作请求通过第二连接发送给新数据库处理,有效地提高了中间件的发送效率。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的拦截应用程序中的植入信息的设备中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
本申请可以应用于计算机系统/服务器,其可与众多其它通用或专用计算系统环境或配置一起操作。适于与计算机系统/服务器一起使用的众所周知的计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统﹑大型计算机系统和包括上述任何系统的分布式云计算技术环境,等等。
计算机系统/服务器可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机系统/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。

Claims (10)

1.一种数据库切换方法,其特征在于,中间件与第一数据库之间建立有第一连接,所述方法包括:
所述中间件接收将所述第一数据库切换为第二数据库的切换请求;
所述中间件根据所述切换请求,与所述第二数据库建立第二连接,并保持所述第一连接;
当所述中间件接收到客户端的操作请求时,将所述操作请求通过所述第二连接发送给所述第二数据库处理。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
监控所述第一数据库中的未完成处理的操作请求;
当监控到所述第一数据库中不存在未完成处理的操作请求时,所述中间件断开所述第一连接。
3.如权利要求2所述的方法,其特征在于,监控所述第一数据库中未完成处理的操作请求,具体包括:
所述中间件监控所述第一数据库中的未完成处理的操作请求的数量;
每监控到所述第一数据库处理完一个操作请求时,将所述未完成处理的操作请求的数量减1;
当所述未完成处理的操作请求的数量为0时,确定所述第一数据库中不存在未完成处理的操作请求。
4.如权利要求1所述的方法,其特征在于,将所述操作请求通过所述第二连接发送给所述第二数据库处理之前,所述方法还包括:
确定所述操作请求所属的数据库事务中的其它操作请求未通过所述第一连接发送给所述第一数据库处理。
5.如权利要求1~4任一所述的方法,其特征在于,所述操作请求包括:SQL语句;
所述处理包括:执行SQL语句,并向所述中间件发送执行结果。
6.一种数据库切换装置,其特征在于,中间件与第一数据库之间建立有第一连接,所述装置包括:
第一接收模块,用于接收将所述第一数据库切换为第二数据库的切换请求;
连接模块,用于根据所述切换请求,与所述第二数据库建立第二连接,并保持所述第一连接;
第二接收模块,用于接收客户端的操作请求;
发送模块,用于当所述第二接收模块接收到客户端的操作请求时,将所述操作请求通过所述第二连接发送给所述第二数据库处理。
7.如权利要求6所述的装置,其特征在于,所述装置还包括:
监控模块,用于监控所述第一数据库中的未完成处理的操作请求;
断开模块,用于当所述监控模块监控到所述第一数据库中不存在未完成处理的操作请求时,断开所述第一连接。
8.如权利要求7所述的装置,其特征在于,所述监控模块具体用于,监控所述第一数据库中的未完成处理的操作请求的数量;每监控到所述第一数据库处理完一个操作请求时,将所述未完成处理的操作请求的数量减1;当所述未完成处理的操作请求的数量为0时,确定所述第一数据库中不存在未完成处理的操作请求。
9.如权利要求6所述的装置,其特征在于,所述装置还包括:
确定模块,用于在所述发送模块将所述操作请求通过所述第二连接发送给所述第二数据库处理之前,确定所述操作请求所属的数据库事务中的其它操作请求未通过所述第一连接发送给所述第一数据库处理。
10.如权利要求6~9任一所述的装置,其特征在于,所述操作请求包括:SQL语句;所述处理包括:执行SQL语句,并向所述中间件发送执行结果。
CN201410433481.5A 2014-08-28 2014-08-28 数据库切换方法及装置 Active CN105373563B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410433481.5A CN105373563B (zh) 2014-08-28 2014-08-28 数据库切换方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410433481.5A CN105373563B (zh) 2014-08-28 2014-08-28 数据库切换方法及装置

Publications (2)

Publication Number Publication Date
CN105373563A true CN105373563A (zh) 2016-03-02
CN105373563B CN105373563B (zh) 2020-02-18

Family

ID=55375771

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410433481.5A Active CN105373563B (zh) 2014-08-28 2014-08-28 数据库切换方法及装置

Country Status (1)

Country Link
CN (1) CN105373563B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107239548A (zh) * 2017-06-05 2017-10-10 携程旅游网络技术(上海)有限公司 基于SQL Server和HIVE的报表处理方法
CN107357866A (zh) * 2017-07-01 2017-11-17 广东电网有限责任公司信息中心 一种电力企业信息系统中间件、数据库的国产化迁移方法
CN109388630A (zh) * 2018-09-29 2019-02-26 北京京东金融科技控股有限公司 数据库切换方法、系统、电子设备和计算机可读介质
CN109471902A (zh) * 2017-09-08 2019-03-15 阿里巴巴集团控股有限公司 一种数据库切换方法、装置、设备及系统
CN112015469A (zh) * 2020-07-14 2020-12-01 北京淇瑀信息科技有限公司 一种系统重构方法、装置和电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7899888B2 (en) * 2002-06-28 2011-03-01 Oracle America, Inc. Runtime versioning of information processing systems
CN103136364A (zh) * 2013-03-14 2013-06-05 曙光信息产业(北京)有限公司 集群数据库系统及其数据查询处理方法
CN103500120A (zh) * 2013-09-17 2014-01-08 北京思特奇信息技术股份有限公司 基于多线程异步双写的分布式缓存高可用处理方法及系统
CN103838719A (zh) * 2012-11-20 2014-06-04 镇江鼎拓科技信息有限公司 一种数据库连接中间件的设计方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7899888B2 (en) * 2002-06-28 2011-03-01 Oracle America, Inc. Runtime versioning of information processing systems
CN103838719A (zh) * 2012-11-20 2014-06-04 镇江鼎拓科技信息有限公司 一种数据库连接中间件的设计方法
CN103136364A (zh) * 2013-03-14 2013-06-05 曙光信息产业(北京)有限公司 集群数据库系统及其数据查询处理方法
CN103500120A (zh) * 2013-09-17 2014-01-08 北京思特奇信息技术股份有限公司 基于多线程异步双写的分布式缓存高可用处理方法及系统

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107239548A (zh) * 2017-06-05 2017-10-10 携程旅游网络技术(上海)有限公司 基于SQL Server和HIVE的报表处理方法
CN107239548B (zh) * 2017-06-05 2020-04-07 携程旅游网络技术(上海)有限公司 基于SQL Server和HIVE的报表处理方法
CN107357866A (zh) * 2017-07-01 2017-11-17 广东电网有限责任公司信息中心 一种电力企业信息系统中间件、数据库的国产化迁移方法
CN109471902A (zh) * 2017-09-08 2019-03-15 阿里巴巴集团控股有限公司 一种数据库切换方法、装置、设备及系统
CN109388630A (zh) * 2018-09-29 2019-02-26 北京京东金融科技控股有限公司 数据库切换方法、系统、电子设备和计算机可读介质
WO2020063197A1 (zh) * 2018-09-29 2020-04-02 京东数字科技控股有限公司 数据库切换方法、系统、电子设备和计算机可读介质
CN109388630B (zh) * 2018-09-29 2020-09-29 京东数字科技控股有限公司 数据库切换方法、系统、电子设备和计算机可读介质
CN112015469A (zh) * 2020-07-14 2020-12-01 北京淇瑀信息科技有限公司 一种系统重构方法、装置和电子设备
CN112015469B (zh) * 2020-07-14 2023-11-14 北京淇瑀信息科技有限公司 一种系统重构方法、装置和电子设备

Also Published As

Publication number Publication date
CN105373563B (zh) 2020-02-18

Similar Documents

Publication Publication Date Title
US10275184B2 (en) Framework for volatile memory query execution in a multi node cluster
CN112099918B (zh) 容器化环境中的集群的实时迁移
US10732836B2 (en) Remote one-sided persistent writes
CN106685691B (zh) 物联网系统中终端设备的高效更新配置方法
US20190197173A1 (en) Techniques for a linearizable primary-secondary database system that replicates database data with eventual consistency
CN101460907B (zh) 用于管理程序的执行的系统和方法
CN105373563A (zh) 数据库切换方法及装置
US10462250B2 (en) Distributed caching cluster client configuration
US20160026667A1 (en) Memory-aware joins based in a database cluster
US10802766B2 (en) Database with NVDIMM as persistent storage
US9135454B2 (en) Systems and methods for enabling searchable encryption
CN103150394A (zh) 面向高性能计算的分布式文件系统元数据管理方法
CN105450618A (zh) 一种api服务器处理大数据的运算方法及其系统
CN110795503A (zh) 分布式存储系统的多集群数据同步方法及相关装置
US20150301875A1 (en) Persisting and managing application messages
CN104932941A (zh) 一种分布式消息处理系统及其中的设备和方法
CN112083889A (zh) 数据迁移方法、装置、设备及可读存储介质
KR20170121911A (ko) P2P를 이용한 IoT 기기의 펌웨어 업데이트 방법 및 그 장치
US9298765B2 (en) Apparatus and method for handling partially inconsistent states among members of a cluster in an erratic storage network
CN104519138A (zh) 一种基于分布式ftp的数据传输方法及系统
CN104917798A (zh) 一种数据更新的方法和系统
CN112905676A (zh) 一种数据文件的导入方法及装置
CN103888545A (zh) 一种分布式系统中全局型数据的处理方法和装置
JP2023508610A (ja) ビデオデータの取得方法、装置、電子デバイス及び記憶媒体
JP2018173741A (ja) コンテナ登録プログラム、コンテナ登録装置及びコンテナ登録方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address

Address after: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee after: Beijing Qizhi Business Consulting Co.,Ltd.

Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee before: Qizhi software (Beijing) Co.,Ltd.

CP03 Change of name, title or address
TR01 Transfer of patent right

Effective date of registration: 20240108

Address after: Room 801, 8th floor, No. 104, floors 1-19, building 2, yard 6, Jiuxianqiao Road, Chaoyang District, Beijing 100015

Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee before: Beijing Qizhi Business Consulting Co.,Ltd.

TR01 Transfer of patent right