处理数据库操作请求的方法、设备和系统的制作方法

文档序号:6514667阅读:131来源:国知局
处理数据库操作请求的方法、设备和系统的制作方法【专利摘要】本发明公开了一种处理数据库操作请求的方法、设备和系统,其中该方法包括步骤:接收对于数据库的操作请求;以及从与各数据库服务器连接的连接队列中,取出超时时间值最大的连接来处理相应的操作请求;其中该设备包括:应用接口,适于接收对于数据库的操作请求;以及数据库接口,适于从与各数据库服务器连接的连接队列中,取出超时时间值最大的连接来处理相应的操作请求。【专利说明】处理数据库操作请求的方法、设备和系统【
技术领域
】[0001]本发明涉及数据库技术,尤其涉及一种处理数据库操作请求的方法、设备和系统。【
背景技术
】[0002]随着计算机网络的快速发展,出现了具有大量用户的网络应用,这些网络应用需要存储大量的用户数据以及相关数据。先前的单台数据存储服务器的数据存储方式已经不能满足当前网络应用的数据存储要求。目前数据库在使用中普遍采用主-从架构,一般来说,有一个主数据库服务器、多个从数据库服务器,所有的写操作都由主数据库服务器来执行,而从数据库服务器承担绝大部分的读操作。另外,在应用服务器和数据库服务器之间会部署中间层服务器,其负责管理应用服务器对数据库服务器的数据存取服务,通常提供例如读写分离、负载均衡、故障迁移、SQL过滤,连接池等功能。[0003]由于数据库连接需要进行各种初始化操作,不但消耗大量系统资源,而且数据还会很缓慢,因此目前在中间层服务器中采用了连接池技术,连接池是创建和管理连接的缓冲池,这些连接事先准备好被任何需要它们的应用程序请求使用。[0004]图1示意性地图示了一个典型的连接池模型。如图1所示,在中间层服务器中,每当从应用服务器接收到数据存取请求时,就会创建一个工作线程来处理这个请求。工作线程在使用数据库连接的时候从连接池队列头中拿出连接,使用完后放入连接池队列的队尾。[0005]然而,到数据库的连接有默认超时时间,因此在连接池中的连接在一段时间之后会超时,并导致连接失效,并需要重新去建立连接。由于网络用户的特殊特点,网络应用服务会具有不同的访问高峰,当应用服务处于访问高峰时期,访问量会非常大,为了提高并行处理能力,连接池中创建出大量的后端连接。但是当高峰时期过去后,这些后端连接会被放入到连接池中作为可用连接,连接池的队列会被拉长,当一段时间后会出现如示意性地图示连接池模型的超时情况的图2所示的现象:靠近队列头部的一部分连接会超时或者临界超时。如果临界超时的连接被工作线程得到,恰恰又在即将执行操作之前超时,那么继续使用此连接将会出错。【
发明内容】[0006]鉴于上述问题,提出了本发明,以便提供一种克服上述问题或者至少部分地解决上述问题的处理数据库操作请求的方法、设备和系统。[0007]依据本发明的一个方面,提供了一种处理数据库操作请求的方法,包括步骤:接收对于数据库的操作请求;以及从与各数据库服务器连接的连接队列中,取出超时时间值最大的连接来处理相应的操作请求。[0008]可选地,在根据本发明的实施例的处理数据库操作请求的方法中,还包括步骤:在操作请求处理完成后,将用于处理该操作请求的连接放回该连接队列中,将该连接的超时时间值设置为预先定义的默认值。[0009]可选地,在根据本发明的实施例的处理数据库操作请求的方法中,还包括步骤:在该连接队列中的连接的超时时间值为零时,关闭该连接,并将其从该连接队列中删除。[0010]可选地,在根据本发明的实施例的处理数据库操作请求的方法中,还包括步骤:在接收到对于数据库的操作请求时,如果该连接队列中没有用于处理该操作请求的连接,则创建与该数据库服务器的连接,并将其用于处理该操作请求。[0011]可选地,在根据本发明的实施例的处理数据库操作请求的方法中,在该连接队列中,按照超时时间值从小到大的顺序,排列各个连接,超时时间值最大的连接排列在队列尾部,超时时间值最小的连接排列在队列头部。[0012]可选地,在根据本发明的实施例的处理数据库操作请求的方法中,在该从与各数据库服务器连接的连接队列中取出超时时间值最大的连接来处理相应的操作请求的步骤中,从该连接队列的尾部取出连接来处理相应的操作请求;并且在操作请求处理完成后,将该连接放回该连接队列的尾部。[0013]可选地,在根据本发明的实施例的处理数据库操作请求的方法中,其中在该接收对于数据库的操作请求的步骤中,从应用服务器接收应用程序对于数据库的操作请求。[0014]可选地,在根据本发明的实施例的处理数据库操作请求的方法中,每个连接队列用于处理来自相应应用程序的操作请求。[0015]可选地,在根据本发明的实施例的处理数据库操作请求的方法中,该数据库是MySQL数据库。[0016]依据本发明的另一个方面,提供了一种处理数据库操作请求的设备,包括:应用接口,适于接收对于数据库的操作请求;以及数据库接口,适于从与各数据库服务器连接的连接队列中,取出超时时间值最大的连接来处理相应的操作请求。[0017]可选地,在根据本发明的实施例的处理数据库操作请求的设备中,该数据库接口还适于在操作请求处理完成后,将用于处理该操作请求的连接放回该连接队列中,该设备还包括:超时时间设置器,适于在该数据库接口将该连接放回该连接队列后,将该连接的超时时间值设置为预先定义的默认值。[0018]可选地,在根据本发明的实施例的处理数据库操作请求的设备中,该数据库接口还适于在该连接队列中的连接的超时时间值为零时,关闭该连接,并将其从该连接队列中删除。[0019]可选地,在根据本发明的实施例的处理数据库操作请求的设备中,还包括连接创建器,在该应用接口接收到对于数据库的操作请求时,如果该连接队列中没有用于处理该操作请求的连接,则该连接创建器创建与该数据库服务器的连接,该数据库接口将该连接用于处理该操作请求。[0020]可选地,在根据本发明的实施例的处理数据库操作请求的设备中,该数据库接口还适于在该连接队列中,按照超时时间值从小到大的顺序,排列各个连接,其中将超时时间值最大的连接排列在队列尾部,并且将超时时间值最小的连接排列在队列头部。[0021]可选地,在根据本发明的实施例的处理数据库操作请求的设备中,该数据库接口从该连接队列的尾部取出连接来处理相应的操作请求,并且在操作请求处理完成后,将该连接放回该连接队列的尾部。[0022]可选地,在根据本发明的实施例的处理数据库操作请求的设备中,该应用接口从应用服务器接收应用程序对于数据库的操作请求。[0023]可选地,在根据本发明的实施例的处理数据库操作请求的设备中,每个连接队列用于处理来自相应应用程序的操作请求。[0024]可选地,在根据本发明的实施例的处理数据库操作请求的设备中,该数据库是MySQL数据库。[0025]依据本发明的又一个方面,提供了一种处理数据库操作请求的系统,包括:根据本发明的实施例的处理数据库操作请求的设备;一个或者多个应用服务器,适于向该设备发送对于数据库的操作请求;以及数据库服务器,适于根据该设备从该连接队列中取出的一个或多个连接,处理该操作请求。[0026]本发明提供了上述处理数据库操作请求的方法、设备和系统。根据本发明的实施例,可以接收对于数据库的操作请求,然后从与各数据库服务器连接的连接队列中,取出超时时间值最大的连接来处理相应的操作请求。由此,可以利用超时时间值最大的连接来处理操作请求,而不会使用超时或者临界超时的连接来处理操作请求,从而有效地避免了使用临界超时的连接造成的操作请求执行失败的问题。另外,根据本发明的实施例,在连接队列中,可以按照超时时间值从小到大的顺序,排列各个连接,超时时间值最大的连接排列在队列尾部,超时时间值最小的连接排列在队列头部,从而可以从所述连接队列的尾部取出连接来处理相应的操作请求,并且在操作请求处理完成后将所述连接放回所述连接队列的尾部,由此确保总是可以利用超时时间值最大的连接来处理操作请求。[0027]上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的【具体实施方式】。【专利附图】【附图说明】[0028]通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:[0029]图1示意性地图示了一个典型的连接池模型;[0030]图2示意性地图示了连接池模型的超时情况;[0031]图3示意性地图示了根据本发明的实施例的处理数据库操作请求的方法的流程图;[0032]图4示意性地图示了根据本发明的实施例的连接池模型;[0033]图5示意性地图示了根据本发明的实施例的包含多个数据库服务器、多个应用程序、以及连接池的整体结构;以及[0034]图6示意性地图示了根据本发明的实施例的包含处理数据库操作请求的设备、多个数据库服务器、多个应用服务器的系统的框图。【具体实施方式】[0035]下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。[0036]图3示意性地图示了根据本发明的实施例的处理数据库操作请求的方法100的流程图。[0037]根据本发明的实施例,数据库例如可以是MySQL数据库。在下文中,以MySQL数据库为例,对本发明的原理进行描述,然而,这只是为了示例的目的,本发明的范围并不限于此,本发明的原理同样适用于其它类型的数据库,例如IBMDB2、Oracle等数据库。[0038]如图3所示,根据本发明的实施例的处理数据库操作请求的方法100始于步骤S101,其中,接收对于数据库的操作请求。可选地,在步骤SlOl中,例如可以从一个或多个应用服务器接收对于数据库的操作请求。[0039]根据本发明的实施例,在步骤SlOl之后,执行步骤S103,其中,从与各数据库服务器连接的连接队列中,取出超时时间值最大的连接来处理相应的操作请求。[0040]可选地,可以创建用于处理该操作请求的工作线程,然后利用该工作线程,从与各数据库服务器连接的连接队列中,取出超时时间值最大的一个或多个连接来处理相应的操作请求,g卩,按照超时时间从大到小的顺序,取出一个或多个连接,来处理相应的操作请求。[0041]以下,提供从连接队列中取出连接的处理的示例代码,以帮助读者理解本发明的原理,然而这并非是要将本发明的范围限制于此。连接队列中取出连接的处理对应于散列表(hashtable)以及队列操作的过程。[0042]【权利要求】1.一种处理数据库操作请求的方法(100),包括步骤:接收对于数据库的操作请求(SlOl);以及从与各数据库服务器连接的连接队列中,取出超时时间值最大的连接来处理相应的操作请求(S103)。2.如权利要求1所述的方法,还包括步骤:在操作请求处理完成后,将用于处理该操作请求的连接放回所述连接队列中,将所述连接的超时时间值设置为预先定义的默认值。3.如权利要求1所述的方法,还包括步骤:在所述连接队列中的连接的超时时间值为零时,关闭所述连接,并将其从所述连接队列中删除。4.如权利要求1至3所述的方法,还包括步骤:在接收到对于数据库的操作请求时,如果所述连接队列中没有用于处理所述操作请求的连接,则创建与所述数据库服务器的连接,并将其用于处理所述操作请求。5.如权利要求1至4中的任一项所述的方法,其中在所述连接队列中,按照超时时间值从小到大的顺序,排列各个连接,超时时间值最大的连接排列在队列尾部,超时时间值最小的连接排列在队列头部。6.一种处理数据库操作请求的设备(200),包括:应用接口(201),适于接收对于数据库的操作请求;以及数据库接口(203),适于从与各数据库服务器连接的连接队列中,取出超时时间值最大的连接来处理相应的操作请求。7.如权利要求6所述的设备,其中所述数据库接口(203)还适于在操作请求处理完成后,将用于处理该操作请求的连接放回所述连接队列中,所述设备还包括:超时时间设置器(205),适于在所述数据库接口(203)将所述连接放回所述连接队列后,将所述连接的超时时间值设置为预先定义的默认值。8.如权利要求6所述的设备,其中所述数据库接口(203)还适于在所述连接队列中的连接的超时时间值为零时,关闭所述连接,并将其从所述连接队列中删除。9.如权利要求6至8所述的设备,还包括连接创建器(207),在所述应用接口(201)接收到对于数据库的操作请求时,如果所述连接队列中没有用于处理所述操作请求的连接,则所述连接创建器(207)创建与所述数据库服务器的连接,所述数据库接口(203)将该连接用于处理所述操作请求。10.一种处理数据库操作请求的系统(1000),包括:如权利要求6-9所述的设备(200);一个或者多个应用服务器(300-1,…,300-n),适于向所述设备(200)发送对于数据库的操作请求;以及数据库服务器(400-1,…,400-n),适于根据所述设备(200)从所述连接队列中取出的一个或多个连接,处理所述操作请求。【文档编号】G06F17/30GK103559204SQ201310465319【公开日】2014年2月5日申请日期:2013年10月8日优先权日:2013年10月8日【发明者】陈超,桂勇哲,代兵,朱超,王超申请人:北京奇虎科技有限公司,奇智软件(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1