CN105677693A - 一种访问数据库的方法及装置 - Google Patents
一种访问数据库的方法及装置 Download PDFInfo
- Publication number
- CN105677693A CN105677693A CN201510601159.3A CN201510601159A CN105677693A CN 105677693 A CN105677693 A CN 105677693A CN 201510601159 A CN201510601159 A CN 201510601159A CN 105677693 A CN105677693 A CN 105677693A
- Authority
- CN
- China
- Prior art keywords
- database
- application system
- agency
- connection
- physical
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (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
技术领域
本发明涉及计算机技术领域,尤其涉及一种访问数据库的方法及装置。
背景技术
随着互联网业务的发展,交易系统的业务量指数增长。同时,互联网业务经常进行促销活动,会导致某一时间段内交易量激增,出现交易高峰。交易系统目前普遍依赖数据库作为数据持久化的工具,一旦发生交易高峰的情况,数据库操作会成为瓶颈。
数据库访问通常为应用系统直接向数据库请求连接,但是由于连接数量的限制,应用系统常需频繁建立、关闭连接,操作十分不便;而传统的数据库连接池资源也只对一个应用系统提供服务,当某个应用系统相对空闲时,数据库连接资源因为是预先分配的,无法被其他应用使用,造成资源的浪费,即交易高峰到来时,成为数据库操作的瓶颈,影响业务的服务受理能力,此外由于传统一个连接池的数据源只能操作一个数据库实例,因此无法满足一个应用系统访问多个数据库的需求。
因此,现有技术中在出现交易量激增的情况下,应用系统连接分配不合理易造成连接资源的浪费,且由于传统一个连接池管理的数据源只能操作一个数据库实例,因此无法满足一个应用系统访问多个数据库的需求。
发明内容
本发明实施例提供一种访问数据库的方法及装置,用以解决现有技术中在出现交易量激增的情况下,应用系统连接分配不合理易造成连接资源的浪费,且由于传统一个连接池管理的数据源只能操作一个数据库实例,因此无法满足一个应用系统访问多个数据库的需求的问题。
本发明实施例提供的一种访问数据库的方法,包括:
共享数据库连接池在通过代理连接接收到来自应用系统的数据库操作请求后,通过与所述代理连接绑定的物理数据库连接,向数据库发送所述数据库操作请求;
在通过所述物理数据库连接接收到数据库返回的操作结果后,将所述操作结果通过与所述物理数据库连接绑定的所述代理连接,向应用系统发送所述操作结果。
本发明实施例应用系统通过代理连接向共享数据库连接池提交数据库操作,共享数据库连接池通过代理连接找到与所述代理连接绑定的物理数据库连接,向数据库发送所述数据库操作请求;避免了应用系统与数据库直接连接频繁建立、关闭的复杂操作,且与传统应用系统所使用的连接池不同,使用共享数据库连接池的方案,可增大共享的连接池最大连接数。
可选的,通过代理连接接收到来自应用系统的数据库操作请求之前,还包括:
在接收应用系统获取数据库连接的请求后,从共享连接池中取出空闲的物理数据库连接,并实例化一个代理连接,将得到的代理连接与应用系统进行连接;以及
将与所述应用系统需要连接的数据库之间的物理数据库连接,与得到的代理连接进行绑定。
本发明实施例将应用系统和共享数据库连接池间的代理连接与共享数据库连接池和数据库之间的物理数据库连接进行绑定,不仅有利于数据库连接资源的有效使用,而且也提高了数据库操作效率。
可选的,在接收应用系统获取数据库连接的请求后,还包括:
若当前没有空闲的物理数据库连接资源,且共享连接池与数据库之间的连接数量未达到最大连接数,则创建并初始化新的物理连接,并实例化一个代理连接,将得到的代理连接与应用系统进行连接;以及
将与所述应用系统需要连接的数据库之间的物理数据库连接,与得到的代理连接进行绑定。
本发明实施例中,在当前没有空闲的物理数据库连接资源分配给应用系统的情况下,如果共享数据库连接池与数据库之间的连接数量未达到最大连接数,则创建新的物理数据库连接,可以应对激增的数据库访问请求。
可选的,在接收应用系统获取数据库连接的请求后,还包括:
若当前没有空闲的物理数据库连接资源,且共享连接池与数据库之间的连接数量达到最大连接数,则等待有空闲的物理数据库连接资源后,从共享连接池中取出所述空闲的物理数据库连接,并实例化一个代理连接,将得到的代理连接与应用系统进行连接;以及
将与所述应用系统需要连接的数据库之间的物理数据库连接,与得到的代理连接进行绑定。
本发明实施例中,在当前没有空闲的物理数据库连接资源分配给应用系统的情况下,如果共享数据库连接池与数据库之间的连接数量达到最大连接数,则需等待空闲的物理数据库连接资源,一般,如果共享数据库连接池在处理完某个应用系统的数据库操作后,会及时将该连接资源回收,供其他应用系统请求使用。
可选的,所述共享数据库连接池向应用系统发送所述操作结果之后,还包括:
所述共享数据库连接池在所述应用系统释放所述应用系统与所述共享数据库连接池之间的代理连接后,删除所述代理连接与所述物理数据库连接的绑定关系,并回收所述物理数据库连接。
本发明实施例中共享数据库连接池在处理完某个应用的数据库操作后,会及时将该连接回收,供其他应用请求使用。此时,如果另外一个应用提出数据库操作请求,该系统可以及时分配已归还的连接给新的请求使用。实现了数据库连接为多个应用复用。
本发明实施例提供了一种访问数据库的装置,包括:
连接池管理模块,用于在通过代理连接接收到来自应用系统的数据库操作请求后,通过与所述代理连接绑定的物理数据库连接,向数据库发送所述数据库操作请求;
连接池数据返回模块,用于在通过所述物理数据库连接接收到数据库返回的操作结果后,将所述操作结果通过与所述物理数据库连接绑定的所述代理连接,向应用系统发送所述操作结果。
可选的,所述连接池管理模块还用于:
在接收应用系统获取数据库连接的请求后,从共享连接池中取出空闲的物理数据库连接,并实例化一个代理连接,将得到的代理连接与应用系统进行连接;以及
将与所述应用系统需要连接的数据库之间的物理数据库连接,与得到的代理连接进行绑定。
可选的,所述连接池管理模块还用于:
若当前没有空闲的物理数据库连接资源,且共享连接池与数据库之间的连接数量未达到最大连接数,则创建并初始化新的物理连接,并实例化一个代理连接,将得到的代理连接与应用系统进行连接;以及
将与所述应用系统需要连接的数据库之间的物理数据库连接,与得到的代理连接进行绑定。
可选的,所述连接池管理模块还用于:
若当前没有空闲的物理数据库连接资源,且共享连接池与数据库之间的连接数量达到最大连接数,则等待有空闲的物理数据库连接资源后,从共享连接池中取出所述空闲的物理数据库连接,并实例化一个代理连接,将得到的代理连接与应用系统进行连接;以及
将与所述应用系统需要连接的数据库之间的物理数据库连接,与得到的代理连接进行绑定。
可选的,所述连接池数据返回模块还用于:
在所述应用系统释放所述应用系统与所述共享连接池之间的代理连接后,删除所述代理连接与所述物理数据库连接的绑定关系,并回收所述物理数据库连接。
本发明实施例中,共享数据库连接池在通过代理连接接收到来自应用系统的数据库操作请求后,通过与所述代理连接绑定的物理数据库连接,向数据库发送所述数据库操作请求;在通过所述物理数据库连接接收到数据库返回的操作结果后,将所述操作结果通过与所述物理数据库连接绑定的所述代理连接,向应用系统发送所述操作结果。本发明实施例应用系统通过代理连接向共享数据库连接池提交数据库操作,共享数据库连接池通过代理连接找到与所述代理连接绑定的物理数据库连接,向数据库发送所述数据库操作请求;避免了应用系统与数据库直接连接频繁建立、关闭的复杂操作,且与传统应用系统所使用的连接池不同,使用共享数据库连接池的方案,可增大共享的连接池最大连接数;进一步地,通过共享数据库连接池获取相应数据库的代理连接,可以满足多数据库数据操作场景的需要。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的为多个应用系统提供数据库访问的示意图;
图2为本发明实施例提供的访问数据库的方法示意图;
图3为本发明实施例提供的访问数据库的方法整体流程图;
图4为本发明实施例提供的访问数据库的装置结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
本发明实施例中,共享数据库连接池在通过代理连接接收到来自应用系统的数据库操作请求后,通过与所述代理连接绑定的物理数据库连接,向数据库发送所述数据库操作请求;在通过所述物理数据库连接接收到数据库返回的操作结果后,将所述操作结果通过与所述物理数据库连接绑定的所述代理连接,向应用系统发送所述操作结果。本发明实施例应用系统通过代理连接向共享数据库连接池提交数据库操作,共享数据库连接池通过代理连接找到与所述代理连接绑定的物理数据库连接,向数据库发送所述数据库操作请求;避免了应用系统与数据库直接连接频繁建立、关闭的复杂操作,且与传统应用系统所使用的连接池不同,使用共享数据库连接池的方案,可增大共享的连接池最大连接数;进一步地,通过共享数据库连接池获取相应数据库的代理连接,可以满足多数据库数据操作场景的需要。
下面结合说明书附图对本发明实施例作进一步详细描述。
参照图1场景以便更好地论述本发明实施例中的具体实现过程,图1只是一个场景例子,显然本发明的技术方案可以应用到访问数据库的任何场景下。
如图1所示,本发明实施例在应用系统与数据库之间增加了共享数据库连接池,共享数据库连接池为多个应用系统(应用系统A、应用系统B、应用系统C,〃〃〃)提供数据库连接管理服务和数据操作服务。每个应用系统在数据库操作前,都通过共享数据库连接池获取连接,由该共享数据库连接池分配连接资源,再由应用系统使用分配的连接进行数据库操作。共享数据库连接池可以提供多个数据库(数据库1、数据库2,〃〃〃)的访问服务。对于每个数据库实例(物理数据库),各数据库实例的访问权限统一在共享数据库连接池中。共享数据库连接池可以是一个服务器,也可以是多个服务器的组合。
本发明实施例共享数据库连接池可以对多个应用系统提供连接池管理服务,实现连接的多路复用,提高数据库访问效率,资源利用更加灵活,利用率最大化;多个应用系统使用同一个连接池,每个应用繁忙周期不同,该共享数据库连接池可以更合理的分配数据库连接资源,比较繁忙的应用,可以获得更多的连接资源。针对应用系统需要访问多个数据库的场景,特别是互联网业务的读写分离和分库分表需求,可以简化应用系统上数据库的信息和权限配置管理工作,并且数据库实例的访问权限在共享数据库连接池集中管理,而不是分散在各个应用系统中,进一步提升数据访问的安全性。
本发明实施例提供的一种访问数据库的方法,如图2所示,具体包括以下步骤:
步骤201,共享数据库连接池在通过代理连接接收到来自应用系统的数据库操作请求后,通过与所述代理连接绑定的物理数据库连接,向数据库发送所述数据库操作请求;
步骤202,在通过所述物理数据库连接接收到数据库返回的操作结果后,将所述操作结果通过与所述物理数据库连接绑定的所述代理连接,向应用系统发送所述操作结果。
具体的,步骤201中共享数据库连接池中有物理数据库连接和代理数据库连接两种资源。其中,物理数据库连接用于共享数据库连接池与数据库交互时使用;代理数据库连接为共享数据库连接池与应用系统间交互时使用。共享数据库连接池根据连接池配置管理物理数据库连接,并根据应用系统的需要创建代理数据库连接,将代理连接与物理连接绑定。当应用系统请求数据操作时,共享数据库连接池通过代理连接找到相应的物理连接进行数据库操作。
在实施中,共享数据库连接池与物理数据库创建数据库连接,并基于物理连接在内存中创建连接对象。
本发明实施例中,应用系统通过代理连接向共享数据库连接池提交数据库操作,共享数据库连接池通过代理连接找到与所述代理连接绑定的物理数据库连接,向数据库发送所述数据库操作请求;避免了应用系统与数据库直接连接频繁建立、关闭的复杂操作,且与传统应用系统所使用的连接池不同,使用共享数据库连接池的方案,可增大共享的连接池最大连接数,如单个应用系统的最大连接数为5个,使用共享数据库连接池,该应用系统可以使用多于5个的连接资源。
可选的,在步骤201之前,还需执行下列操作:
在接收应用系统获取数据库连接的请求后,从共享连接池中取出空闲的物理数据库连接,并实例化一个代理连接,将得到的代理连接与应用系统进行连接;以及
将与所述应用系统需要连接的数据库之间的物理数据库连接,与得到的代理连接进行绑定。
可选的,在接收应用系统获取数据库连接的请求后,为防止非法应用系统进入共享数据库连接池,非法占用物理数据库连接,本发明实施例将对应用系统进行身份验证。在应用系统申请数据库连接时,提交的请求参数包括但不限于:应用系统编号、sql语句、sql参数信息、数据库标识参数;
实施中,共享数据库连接池会针对应用系统编号进行鉴权,通过鉴权的应用系统才能继续数据操作,其中,对应用系统编号进行鉴权的方式可以是双向鉴权机制AKA(AuthenticationandKeyAgreement,鉴权和密钥协商)鉴权,也可以使用http摘要鉴权,但不限于上述鉴权方式,其他能够对应用系统编号进行鉴权的方式都适用于本发明实施例。
例如,共享数据库连接池中合法的应用系统为应用系统A、应用系统B以及应用系统C,且对应的应用系统A的系统编号为{A},应用系统B的系统编号为{B}及应用系统C的系统编号为{C},组成共享数据库连接池的合法应用系统编号集。当共享数据库连接池接收到来自某应用系统的数据库操作请求中的系统编号为{D}时,共享数据库连接池将所述系统编号{D}与共享数据库连接池内合法系统编号集进行认证,得出所述系统编号{D}不存在共享数据库连接池的合法系统编号集内,则该应用系统编号对应的应用系统属于非法应用系统,不能对该应用系统进行数据库操作处理;当共享数据库连接池接收到来自某应用系统的数据库操作请求中的系统编号为{B}时,由于共享数据库连接池的合法系统编号集内存在系统编号{B},则该应用系统编号对应的应用系统属于合法应用系统,共享数据库连接池可以对该应用系统进行数据库操作处理。
请求参数中的sql语句是一种数据库查询和程序设计语言,sql参数信息是伴随sql语言查询、更新一集管理的相关参数信息;实施中,通过数据库标识参数可识别要获取哪个数据库的连接资源,针对不同业务场景,可以指定不同的参数类型。例如:读写分离场景,通过读库/写库参数标示以识别获取读库还是写库的连接。再例如:分库分表场景,通过分表字段参数识别获取哪个分片表的连接。数据库标识参数包括但不限于:读库写库标示、分片库标示(时间分片、账号分片);数据库的连接池和访问权限配置统一在共享数据库连接池管理,简化了各个应用系统的数据库配置,同时数据库的账号密码信息不需要再各个应用系统上管理,也不会在网络上传输,提升了数据库访问的安全性。
具体的,从共享连接池中取出空闲的物理数据库连接,并实例化一个代理连接,其中,实例化具体为在共享连接池内存中创建一个代理连接对象。
本发明实施例中,将结合下列表1对代理连接与物理数据库连接之间的绑定关系作进一步详细描述。
表1代理连接与物理数据库连接之间的绑定关系
如表1所示,共享数据库连接池配置与数据库之间的物理数据库连接,如表中Ldb1、Ldb2、Ldb3所示,在应用系统申请数据库连接时,共享数据库连接池根据应用系统提交的数据库标识参数,识别应用系统要获取哪个数据库的连接资源,并在相应数据库的连接池中获取空闲连接资源,实例化一个代理连接,即共享数据库连接池根据应用系统的需要创建代理数据库连接,如应用系统A申请与数据库1连接,共享数据库连接池根据数据库1的标识参数识别出应用系统要获取数据库1的连接资源,则在数据库1的连接池中获取空闲物理数据库连接资源Ldb1,并实例化一个代理连接{LA1},将LA1与Ldb1进行绑定;应用系统B申请与数据库1连接,共享数据库连接池根据数据库1的标识参数识别出应用系统要获取数据库1的连接资源,则在数据库1的连接池中获取空闲物理数据库连接资源Ldb2,并实例化一个代理连接{LB1},将LB1与Ldb2进行绑定;应用系统C申请与数据库1连接,共享数据库连接池根据数据库1的标识参数识别出应用系统要获取数据库1的连接资源,则在数据库1的连接池中获取空闲物理数据库连接资源Ldb3,并将其实例化一个代理连接{LC1},将LC1与Ldb3进行绑定。
本发明实施例中共享数据库连接池对于访问的应用系统,从该连接池中分配连接资源,进行数据操作。如果某一个应用系统的交易量较大,需要的数据库操作较多,共享数据库连接池会分配更多的连接资源给该应用系统。由于该共享数据库连接池对多个应用系统提供数据访问服务,因此,该共享数据库连接池的连接池资源的最大连接数理论上是各个应用独立连接池最大数的总和。如果某个业务出现交易流量峰值的情况,可以应对激增的数据库访问要求。
例如,有10个应用需要访问数据库进行数据操作,每个应用如果使用传统的连接池,单个应用的最大连接数为5个。那么,使用共享数据库连接池的方案,共享的连接池最大连接数可以是50个。如果某个时段,其中一个应用比较繁忙,该应用可以使用这50个连接资源,比传统方案的5个连接资源具有明显的优势。
可选的,在接收应用系统获取数据库连接的请求后,若当前没有空闲的物理数据库连接资源,且共享连接池与数据库之间的连接数量未达到最大连接数,则创建并初始化新的物理连接,并实例化一个代理连接,将得到的代理连接与应用系统进行连接;以及
将与所述应用系统需要连接的数据库之间的物理数据库连接,与得到的代理连接进行绑定。
实施中,当应用系统请求数据库连接时,需要查看共享数据库连接池中是否有空闲物理数据库连接资源,如果存在空闲连接资源,则把连接分配给应用系统并作相应处理(可标记该连接为正在使用);如果没有空闲连接资源,且当前共享数据库连接池与数据库之间的连接数量未达到最大连接数,则创建新的物理数据库连接,并实例化一个代理连接,将代理连接与物理数据库连接进行绑定。
本发明实施例中,在当前没有空闲的连接资源分配给应用系统的情况下,如果共享数据库连接池与应用系统之间的连接数量未达到最大连接数,则创建新的物理连接,可以应对激增的数据库访问请求。
可选的,在接收应用系统获取数据库连接的请求后,若当前没有空闲的物理数据库连接资源,且共享连接池与数据库之间的连接数量达到最大连接数,则等待有空闲的物理数据库连接资源后,从共享连接池中取出所述空闲的物理数据库连接,并实例化一个代理连接,将得到的代理连接与应用系统进行连接;以及
将与所述应用系统需要连接的数据库之间的物理数据库连接,与得到的代理连接进行绑定。
实施中,当应用系统请求数据库连接时,如果共享数据库连接池没有空闲连接资源,且当前共享数据库连接池与数据库之间的连接数量达到最大连接数,则这些请求将被加入到等待队列中,等待空闲的连接资源出现,当有空闲的连接资源后,取出空闲的连接资源,并实例化一个代理连接,将代理连接与物理数据库连接进行绑定。
本发明实施例中,在当前没有空闲的连接资源分配给应用系统的情况下,如果共享数据库连接池与应用系统之间的连接数量达到最大连接数,则需等待空闲的连接资源,一般,如果共享数据库连接池在处理完某个应用系统的数据库操作后,会及时将该连接回收,供其他应用系统请求使用。
可选的,在执行完步骤202之后,所述共享数据库连接池在所述应用系统释放所述应用系统与所述共享数据库连接池之间的代理连接后,删除所述代理连接与所述物理数据库连接的绑定关系,并回收所述物理数据库连接。
本发明实施例中共享数据库连接池在处理完某个应用的数据库操作后,会及时将该连接回收,供其他应用请求使用。此时,如果另外一个应用提出数据库操作请求,该系统可以及时分配已归还的连接给新的请求使用。实现了数据库连接为多个应用复用。
为了使本发明所解决的技术问题、技术方案以及有益效果更加清楚明白,以下结合实施例,对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图3所示为本发明实施例提供的一种访问数据库的方法整体流程图:
步骤301,共享数据库连接池接收应用系统获取数据库连接的请求;
步骤302,共享数据库连接池判断共享连接池中是否存在空闲的物理连接,若是,则执行S303,否则执行S304;
步骤303,共享数据库连接池取出一个连接资源,实例化一个代理连接,将代理连接与物理数据库连接进行绑定,并将代理连接返回至应用系统;
步骤304,共享数据库连接池判断共享数据库连接池的最大连接数是否达到配置上限,若是,则执行305,否则执行306;
步骤305,共享数据库连接池等待有空闲连接回收后,实例化一个代理连接,将代理连接与物理数据库连接进行绑定,并将代理连接返回至应用系统;
步骤306,共享数据库连接池创建新的物理连接,实例化一个代理连接,将代理连接与物理数据库连接进行绑定,并将代理连接返回至应用系统;
步骤307,应用系统通过代理连接向共享数据库连接池发送数据库操作请求;
步骤308,共享数据库连接池通过与所述代理连接绑定的物理数据库连接,向数据库发送所述数据库操作请求;
步骤309,共享数据库连接池接收数据库返回的操作结果;
步骤310,共享数据库连接池将操作结果通过代理连接返回至应用系统;
步骤311,应用系统接收到操作结果后,释放代理连接;
步骤312,共享数据库连接池删除代理连接与所述物理数据库连接的绑定关系,并回收所述物理数据库连接。
本发明实施例应用系统通过代理连接向共享数据库连接池提交数据库操作,共享数据库连接池通过代理连接找到与所述代理连接绑定的物理数据库连接,向数据库发送所述数据库操作请求,避免了应用系统与数据库直接连接频繁建立、关闭的复杂操作,且与传统应用系统所使用的连接池不同,使用共享数据库连接池的方案,可增大共享的连接池最大连接数;进一步地,通过共享数据库连接池获取相应数据库的代理连接,可以满足多数据库数据操作场景的需要;最后,共享数据库连接池在处理完某个应用的数据库操作后,会及时将该连接回收,供其他应用请求使用。此时,如果另外一个应用提出数据库操作请求,该系统可以及时分配已归还的连接给新的请求使用。实现了数据库连接为多个应用复用。
基于相同的技术构思,本发明实施例还提供一种访问数据库的装置,该装置可执行上述方法实施例,由于该装置解决问题的原理与前述一种基于共享数据库连接池访问多个数据库的方法相似,因此该装置的实施可以参见方法的实施,重复之处不再赘述。
本发明实施例提供的一种访问数据库的装置,如图4所示,包括:
连接池管理模块401,用于在通过代理连接接收到来自应用系统的数据库操作请求后,通过与所述代理连接绑定的物理数据库连接,向数据库发送所述数据库操作请求;
连接池数据返回模块402,用于在通过所述物理数据库连接接收到数据库返回的操作结果后,将所述操作结果通过与所述物理数据库连接绑定的所述代理连接,向应用系统发送所述操作结果。
可选的,所述连接池管理模块401还用于:
在接收应用系统获取数据库连接的请求后,从共享连接池中取出空闲的物理数据库连接,并实例化一个代理连接,将得到的代理连接与应用系统进行连接;以及
将与所述应用系统需要连接的数据库之间的物理数据库连接,与得到的代理连接进行绑定。
可选的,所述连接池管理模块401还用于:
若当前没有空闲的物理数据库连接资源,且共享连接池与数据库之间的连接数量未达到最大连接数,则创建并初始化新的物理连接,并实例化一个代理连接,将得到的代理连接与应用系统进行连接;以及
将与所述应用系统需要连接的数据库之间的物理数据库连接,与得到的代理连接进行绑定。
可选的,所述连接池管理模块401还用于:
若当前没有空闲的物理数据库连接资源,且共享连接池与数据库之间的连接数量达到最大连接数,则等待有空闲的物理数据库连接资源后,从共享连接池中取出所述空闲的物理数据库连接,并实例化一个代理连接,将得到的代理连接与应用系统进行连接;以及
将与所述应用系统需要连接的数据库之间的物理数据库连接,与得到的代理连接进行绑定。
可选的,所述连接池数据返回模块402还用于:
在所述应用系统释放所述应用系统与所述共享连接池之间的代理连接后,删除所述代理连接与所述物理数据库连接的绑定关系,并回收所述物理数据库连接。
本领域内的技术人员应明白,本申请的实施例可提供为方法、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种访问数据库的方法,其特征在于,包括:
共享数据库连接池在通过代理连接接收到来自应用系统的数据库操作请求后,通过与所述代理连接绑定的物理数据库连接,向数据库发送所述数据库操作请求;
在通过所述物理数据库连接接收到数据库返回的操作结果后,将所述操作结果通过与所述物理数据库连接绑定的所述代理连接,向应用系统发送所述操作结果。
2.根据权利要求1所述的方法,其特征在于,通过代理连接接收到来自应用系统的数据库操作请求之前,还包括:
在接收应用系统获取数据库连接的请求后,从共享连接池中取出空闲的物理数据库连接,并实例化一个代理连接,将得到的代理连接与应用系统进行连接;以及
将与所述应用系统需要连接的数据库之间的物理数据库连接,与得到的代理连接进行绑定。
3.根据权利要求2所述的方法,其特征在于,在接收应用系统获取数据库连接的请求后,还包括:
若当前没有空闲的物理数据库连接资源,且共享连接池与数据库之间的连接数量未达到最大连接数,则创建并初始化新的物理连接,并实例化一个代理连接,将得到的代理连接与应用系统进行连接;以及
将与所述应用系统需要连接的数据库之间的物理数据库连接,与得到的代理连接进行绑定。
4.根据权利要求3所述的方法,其特征在于,在接收应用系统获取数据库连接的请求后,还包括:
若当前没有空闲的物理数据库连接资源,且共享连接池与数据库之间的连接数量达到最大连接数,则等待有空闲的物理数据库连接资源后,从共享连接池中取出所述空闲的物理数据库连接,并实例化一个代理连接,将得到的代理连接与应用系统进行连接;以及
将与所述应用系统需要连接的数据库之间的物理数据库连接,与得到的代理连接进行绑定。
5.根据权利要求1~4任一所述的方法,其特征在于,所述共享连接池向应用系统发送所述操作结果之后,还包括:
所述共享连接池在所述应用系统释放所述应用系统与所述共享连接池之间的代理连接后,删除所述代理连接与所述物理数据库连接的绑定关系,并回收所述物理数据库连接。
6.一种访问数据库的装置,其特征在于,包括:
连接池管理模块,用于在通过代理连接接收到来自应用系统的数据库操作请求后,通过与所述代理连接绑定的物理数据库连接,向数据库发送所述数据库操作请求;
连接池数据返回模块,用于在通过所述物理数据库连接接收到数据库返回的操作结果后,将所述操作结果通过与所述物理数据库连接绑定的所述代理连接,向应用系统发送所述操作结果。
7.根据权利要求6所述的装置,其特征在于,所述连接池管理模块还用于:
在接收应用系统获取数据库连接的请求后,从共享连接池中取出空闲的物理数据库连接,并实例化一个代理连接,将得到的代理连接与应用系统进行连接;以及
将与所述应用系统需要连接的数据库之间的物理数据库连接,与得到的代理连接进行绑定。
8.根据权利要求7所述的装置,其特征在于,所述连接池管理模块还用于:
若当前没有空闲的物理数据库连接资源,且共享连接池与数据库之间的连接数量未达到最大连接数,则创建并初始化新的物理连接,并实例化一个代理连接,将得到的代理连接与应用系统进行连接;以及
将与所述应用系统需要连接的数据库之间的物理数据库连接,与得到的代理连接进行绑定。
9.根据权利要求8所述的装置,其特征在于,所述连接池管理模块还用于:
若当前没有空闲的物理数据库连接资源,且共享连接池与数据库之间的连接数量达到最大连接数,则等待有空闲的物理数据库连接资源后,从共享连接池中取出所述空闲的物理数据库连接,并实例化一个代理连接,将得到的代理连接与应用系统进行连接;以及
将与所述应用系统需要连接的数据库之间的物理数据库连接,与得到的代理连接进行绑定。
10.根据权利要求6~9任一所述的装置,其特征在于,所述连接池数据返回模块还用于:
在所述应用系统释放所述应用系统与所述共享连接池之间的代理连接后,删除所述代理连接与所述物理数据库连接的绑定关系,并回收所述物理数据库连接。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510601159.3A CN105677693B (zh) | 2015-09-18 | 2015-09-18 | 一种访问数据库的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510601159.3A CN105677693B (zh) | 2015-09-18 | 2015-09-18 | 一种访问数据库的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105677693A true CN105677693A (zh) | 2016-06-15 |
CN105677693B CN105677693B (zh) | 2020-02-18 |
Family
ID=56946866
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510601159.3A Active CN105677693B (zh) | 2015-09-18 | 2015-09-18 | 一种访问数据库的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105677693B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106844678A (zh) * | 2017-01-24 | 2017-06-13 | 山东浪潮商用系统有限公司 | 一种Mybatis数据源与连接池的交互方法 |
WO2020258249A1 (zh) * | 2019-06-28 | 2020-12-30 | 华为技术有限公司 | 数据库访问方法和装置、计算设备和计算机程序产品 |
CN112506965A (zh) * | 2020-12-03 | 2021-03-16 | 北京天融信网络安全技术有限公司 | 一种数据库管理装置及方法 |
CN117539949A (zh) * | 2024-01-10 | 2024-02-09 | 腾讯科技(深圳)有限公司 | 数据库访问请求的处理方法、装置、电子设备和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101383814A (zh) * | 2007-09-07 | 2009-03-11 | 华为技术有限公司 | 一种实现基于连接池的数据访问的设备和方法 |
US20120066363A1 (en) * | 2010-09-15 | 2012-03-15 | Oracle International Corporation | System and method for using a gridlink data source to connect an application server with a clustered database |
CN102609463A (zh) * | 2012-01-13 | 2012-07-25 | 广东电网公司电力科学研究院 | 一种基于准实时平台的数据集群管理系统 |
CN102722575A (zh) * | 2012-06-05 | 2012-10-10 | 河北世窗信息技术有限公司 | 一种多类型数据库连接池管理系统及管理方法 |
CN103729373A (zh) * | 2012-10-15 | 2014-04-16 | 北京新媒传信科技有限公司 | 一种数据库代理方法和装置 |
-
2015
- 2015-09-18 CN CN201510601159.3A patent/CN105677693B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101383814A (zh) * | 2007-09-07 | 2009-03-11 | 华为技术有限公司 | 一种实现基于连接池的数据访问的设备和方法 |
US20120066363A1 (en) * | 2010-09-15 | 2012-03-15 | Oracle International Corporation | System and method for using a gridlink data source to connect an application server with a clustered database |
CN102609463A (zh) * | 2012-01-13 | 2012-07-25 | 广东电网公司电力科学研究院 | 一种基于准实时平台的数据集群管理系统 |
CN102722575A (zh) * | 2012-06-05 | 2012-10-10 | 河北世窗信息技术有限公司 | 一种多类型数据库连接池管理系统及管理方法 |
CN103729373A (zh) * | 2012-10-15 | 2014-04-16 | 北京新媒传信科技有限公司 | 一种数据库代理方法和装置 |
Non-Patent Citations (1)
Title |
---|
MUTOU: "使用JAVA中的动态代理实现数据库连接池", 《HTTP://BLOG.SINA.CN/DPOOL/BLOG/S/BLOG_48476D9B010001DX.HTML?VT=4》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106844678A (zh) * | 2017-01-24 | 2017-06-13 | 山东浪潮商用系统有限公司 | 一种Mybatis数据源与连接池的交互方法 |
WO2020258249A1 (zh) * | 2019-06-28 | 2020-12-30 | 华为技术有限公司 | 数据库访问方法和装置、计算设备和计算机程序产品 |
CN112506965A (zh) * | 2020-12-03 | 2021-03-16 | 北京天融信网络安全技术有限公司 | 一种数据库管理装置及方法 |
CN117539949A (zh) * | 2024-01-10 | 2024-02-09 | 腾讯科技(深圳)有限公司 | 数据库访问请求的处理方法、装置、电子设备和存储介质 |
CN117539949B (zh) * | 2024-01-10 | 2024-04-12 | 腾讯科技(深圳)有限公司 | 数据库访问请求的处理方法、装置、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105677693B (zh) | 2020-02-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111698228B (zh) | 系统访问权限授予方法、装置、服务器及存储介质 | |
CN110096857B (zh) | 区块链系统的权限管理方法、装置、设备和介质 | |
US7854010B2 (en) | Method and apparatus for searching rights object and mapping method and mapping apparatus for the same | |
Meredith et al. | Contracts and types | |
CN112887160B (zh) | 区块链一体机及其多节点部署方法、装置、存储介质 | |
US6205466B1 (en) | Infrastructure for an open digital services marketplace | |
CN103038788B (zh) | 提供多个网络资源 | |
CN107113341B (zh) | 用于数据划分的分布式关系数据库管理系统中事务的高吞吐量处理的系统 | |
US8006084B2 (en) | Apparatus and method for managing plurality of certificates | |
US8250094B2 (en) | Relational lockdown for an item store | |
US20090249436A1 (en) | Centralized Enforcement of Name-Based Computer System Security Rules | |
US20090049047A1 (en) | Storing custom metadata using custom access control entries | |
CN102651775A (zh) | 基于云计算的多租户共享对象管理的方法、设备及系统 | |
JP2023532959A (ja) | 許可制ブロックチェーンのためのプライバシー保護アーキテクチャ | |
CN110851127B (zh) | 一种基于区块链的通用存证方法 | |
US8060464B2 (en) | Data-centric distributed computing | |
CN105677693A (zh) | 一种访问数据库的方法及装置 | |
CN111241195B (zh) | 分布式系统的数据库处理方法、装置、设备及存储介质 | |
CN1937608A (zh) | 管理客户机-服务器通信的方法和计算机系统 | |
CN111612452A (zh) | 一种基于区块链的知识产权管理系统及方法 | |
CN113626853A (zh) | 一种基于区块链的可搜索加密方法及信息数据处理终端 | |
CN114331428A (zh) | 一种非同质化通证分配方法及装置 | |
JP2023538497A (ja) | 編集可能なブロックチェーン | |
CN111200645A (zh) | 业务请求处理方法、装置、设备及可读存储介质 | |
CN116318931A (zh) | 一种基于跨域访问控制的属性映射方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |