CN101334778B - 管理数据库连接的方法和系统 - Google Patents
管理数据库连接的方法和系统 Download PDFInfo
- Publication number
- CN101334778B CN101334778B CN2007101268741A CN200710126874A CN101334778B CN 101334778 B CN101334778 B CN 101334778B CN 2007101268741 A CN2007101268741 A CN 2007101268741A CN 200710126874 A CN200710126874 A CN 200710126874A CN 101334778 B CN101334778 B CN 101334778B
- Authority
- CN
- China
- Prior art keywords
- connection
- context
- application
- connects
- key word
- 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.)
- Expired - Fee Related
Links
Images
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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
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
技术领域
本发明涉及计算机领域,并且特别地涉及一种管理数据库连接的方法和系统。
背景技术
如今,大量应用(application)需要访问数据库以获得所需要的数据。例如,在使用Java语言开发的与数据库有关的应用中,一般使用JDBC(Java DataBase Connection)连接来进行与数据库之间的交互。在此,连接代表了一个通道,各种使用数据的应用可以通过这种通道对数据库进行访问以完成对数据的读写操作。
在实际的情况中,每一次应用请求都要建立一次数据库连接,由于对数据库的访问很频繁,频繁地进行数据库连接操作会占用很大的内存资源。针对这种情况,在连接的管理中引入了“连接池”的管理模式,即预先在一个连接池中放入一定数量的连接,需要建立连接时,只需从池中取出一个连接,使用完毕之后将其放回。然而,现有技术中的连接池管理只限于对连接的基本分配,至于应用对连接的使用是否合理则不受控制。实际上,应用对连接的不当使用会导致资源冲突,使得线程停滞不前,甚至可能造成系统崩溃。对连接的不当使用包括很多种,例如连接泄漏,即有些应用获取连接后没有关闭连接,导致连接被持续地占用;低效地使用连接资源,即使用完某个连接后没有立即释放到连接池中,或者长时间地占用该连接而不使用;死锁(deadlock),即由于以递归的方式调用连接导致有些应用互相等待对方正在使用的资源。
现有技术已经提出了几种连接管理方案用于解决上述对连接使用不当的问题。一种技术是在应用服务器(以下简称AS)中手动检测连接泄漏。在该方法中,利用专门的诊断程序通过轮询的方式在AS上检测连接泄漏。这种检测方法的缺点在于不能自动地检测连接泄漏,因此可能会造成漏检,并且由于要频繁地进行检测,因此会带来额外的开销。
第二种技术是基于超时(timeout)自动检测连接问题。相对于前一种检测技术来说,这是一种自动的方式,其中由AS管理员规定一个针对数据库连接的超时值(例如,默认值为75秒),在该超时届满之后仍然占用连接的应用都将遭到超时异议并且因此其连接将会被系统收回。这种技术特别适用于死锁的情况,因为一旦出现死锁,死锁线程中的连接资源将会因为超时被系统剥夺,从而解开死锁。但是这种技术的缺点在于,很难确定适合于所有事务的超时值。例如,如果线程本身是需要很长时间才能完成的事务,则适合于一般事务的超时会导致剥夺该长时间事务的连接,使得长时间事务无法正确进行。而如果将超时规定得过长,则又使系统无法及时对问题作出反应,往往在问题出现之后很长时间才发现,从而使得整体的连接利用率降低。
另一种常用方法是预先对程序进行调试。其中利用程序调试工具对程序进行分析,如果分析的结果是该程序存在当运行时产生死锁或泄漏的可能,则通知编程人员对程序进行修改。不言而喻,在大型企业环境中对分布式应用进行调试是一项非常繁重的任务。因此,这种方法的成本效率较差。
针对上述的问题,本发明的目的是提供一种管理数据库连接的改进的技术,其能够克服上述解决方案的缺点,显著地提高连接的利用率,从而在整体上提高系统性能。
发明内容
本发明的目的可以通过一种数据库连接管理方法和系统来实现。该方法和系统通过对数据库连接的连接上下文(connection context)进行保存和恢复以及对连接进行重新分配,实现对连接的重复利用。在此所用的术语“连接上下文”是指一个连接的状态信息。应用利用连接访问数据库时,将在连接上传送这种状态信息。图1中示出了这种状态信息的例子,在下文中将对其进行详细地描述。
在本发明的第一个方面中,提供了一种数据库连接管理方法,包括步骤:响应于第一应用的连接请求,为所述第一应用分配可用连接;如果没有可用连接,则选择由第二应用所使用的一个已用连接;对所述已用连接的连接上下文进行备份;释放所述已用连接;以及将所述已用连接分配给所述第一应用。
根据本发明的一个优选实施例,如果所述第二应用请求恢复先前的连接状态,则基于所述备份的连接上下文为其分配新的连接并且恢复先前的连接状态。
根据本发明的另一个优选实施例,应用可以是Java应用,并且连接可以是JDBC连接。其中需要进行备份的连接上下文包括连接的连接(Connection)对象、会话(Statement)对象、结果集(Resultset)对象。
根据本发明的再一优选实施例,在选择已用连接时,可以选择一个占用连接超过预定时间的应用。作为替代,也可以基于最近最少使用算法(LRU)来进行选择。
根据本发明的又一优选实施例,并且将所述已用连接的连接上下文与所述关键字之间建立对应关系。例如,当进行连接上下文备份时,将该应用的连接上下文与该关键字一起放入一个索引表中,并且当需要时,根据该关键字从索引表中取出连接上下文,然后基于所述连接上下文为所述应用分配新的连接并且恢复先前的连接状态。其中该关键字可以是任意字符,也可以是任何其他能够唯一标识该应用的会话的标识符,诸如该连接上下文中的特定信息。
在本发明的第二个方面中,提供了一种数据库连接管理器,包括:连接上下文备份装置,用于对连接的上下文进行备份;以及连接调度装置,用于对连接进行调度。该连接调度装置还包括如下装置:响应于第一应用的连接请求,为所述第一应用分配可用连接的装置;如果没有可用连接,则选择由第二应用所使用的一个已用连接的装置;控制所述连接上下文备份装置对所述已用连接的连接上下文进行备份的装置;释放所述已用连接的装置;以及将所述已用连接分配给所述第一应用的装置。
在本发明的第三个方面中,提供了一种用于管理数据库连接的管理系统,包括应用、连接管理器和连接池,其特征在于该连接管理器可以利用上述方法对应用的连接上下文进行备份和恢复,并且可以对连接进行重新调度。
在现有技术的连接池管理方案中,应用直接从连接池中获取连接,并且在完成数据库访问操作时释放该连接,被释放的连接可以供其他请求连接的新应用所使用。但是如果占用连接的应用占用了连接池中的所有连接而在完成数据库访问操作后没有及时释放连接,就会导致其他请求连接的新应用无法获得连接来访问数据库。根据本发明的方法,应用向连接管理器请求连接,由连接管理器根据目前的连接使用状态对连接进行分配。具体地说,当连接池中的连接全部分配出去时,如果有新的应用请求连接,连接管理器可以在对至少一个已占用连接的应用的连接上下文进行可恢复性备份之后回收至少一个连接,将已回收的连接分配给提出请求的新应用,从而完成对连接的重新调度。如果被释放连接的应用正好是不需要继续使用该连接的应用,则上述处理自然地结束了这种不适当的连接分配状态。如果被释放连接的应用本身尚未完成操作,则其可以在需要时重新请求连接,而管理器将根据先前对其回收连接时备份的连接上下文为其恢复一个连接,从而使得该应用的事务能够接着中断连接之前的处理继续执行,而不需要重新该事务处理。因此,本发明的方法可是实现对数据库连接的动态的、弹性的管理,从而提高连接资源的利用率,改善系统性能。
参考以下结合附图所描述的优选实施例,本发明的这些和其他优点将变得明显。这些实施例仅用于说明的目的,而不应理解为对本发明的范围的限制。
附图说明
图1示意性示出了以JDBC连接为例,应用的连接上下文的例子;
图2示意性示出了根据本发明优选实施例的数据库连接管理方法的流程图;
图3示意性示出了根据本发明优选实施例的用于备份数据库连接的连接上下文的操作的流程图;
图4示意性示出了根据本发明优选实施例的用于基于所保存的连接上下文恢复数据库连接的操作的流程图;
图5示意性示出了根据本发明优选实施例的包括数据库连接管理器的数据库连接管理系统的框图;
图6示意性示出了根据本发明优选实施例的连接管理器与Java应用的交互过程;以及
图7示意性示出了其中可以实现根据本发明的实施例的计算设备。
具体实施方式
图1示出了以JDBC连接为例,应用的连接上下文的例子。在一个JDBC连接上,所传送的信息包括:配置信息、会话(Statement)和结果集(ResultSet)信息、服务器信息、数据源(DataSource)信息等。其中配置信息包括Autocommit(自动提交)、Isolationlevel(隔离级别)、Readonly(只读)、Catalog(目录)和Timezone(时区)等;数据源信息又包括主机/端口、用户/密码、数据库等信息。具体而言,当需要访问数据库,Java应用通过请求建立一个连接,在所建立的连接上生成会话,在会话上执行SQL会话,从而得到结果集。
根据本发明,需要进行备份的JDBC连接的连接上下文、即JDBC连接的状态信息包括:连接状态、数据源状态、事务状态、会话状态以及结果集状态。以下详细对这几种状态信息进行概念性解释或举例说明。
连接状态包括服务器URL、用户/密码、数据库名称等。一般而言,当需要建立JDBC连接时,首先需要下载一个驱动(Driver),驱动管理器调用该驱动的连接方法并向驱动传递一个URL。JDBC规范推荐的JDBC URL的语法格式一般为jdbc:<subprotocol>:<subname>。Subprotocol定义了一个或多个驱动所支持的数据库连通机制的类型。Subname的内容和语法依赖于subprotocol。Subname始终包括服务器地址、用户名、密码以及数据库名称。例如,针对机器dbmachine上的叫做ejbdemo的特定数据库上的Oracle SQL*net信息,则字符串url为:“jdbc:oracle:thin:user/password@(description=(address_list=(address=(protocol=tcp)(host=damachine)(port=1521)))(source_route=yes)(connect_data=(sid=ejbdemo)))”。
另一个例子为请求连接到本地机器上的ejbdemo数据库,则字符串url为:“jdbc:mysql://localhost/ejbdemo?user=user;password=pass”。
JDBC的应用接口定义了一组属性来标识和描述数据源的实现,标准数据源的特性如下表所列:
特性名称 | 类型 | 描述 |
数据库名称 | 字符串 | 服务器上特定数据库的名称 |
数据源名称 | 字符串 | 数据源名称,用于将连接放入连接池中时,命名基本的XADataSource对象或ConnectionPoolDataSource对象 |
描述 | 字符串 | 该数据源的描述 |
网络协议 | 字符串 | 用于与服务器通信的字符串网络协议 |
密码 | 字符串 | 数据库密码 |
端口号 | 整数 | 服务器接收请求的端口号 |
任务名称 | 字符串 | 初始SQL任务名称 |
服务器名称 | 字符串 | 数据库服务器名称 |
用户 | 字符串 | 用户账户名称 |
事务状态的例子包括:例如,禁用自动提交模式(假设con是连接对象)为con.setAutoCommit(false)。另外,事务的隔离级别从最少限制到最多限制分别为:
TRANSACTION_NONE
TRANSACTION_READ_UNCOMMITTED
TRANSACTION_READ_COMMITTED
TRANSACTION_REPEATABLE_READ
TRANSACTION_SERIALIZABLE。
会话可以是诸如INSERT(插入)、UPDATE(更新)以及DELETE(删除)之类的更新会话,也可以是使用SELECT(选择)的查询会话。此外,所存储的程序也可以通过会话调用。诸如INSERT、UPDATE以及DELETE之类的更新会话返回表示涉及数据库中多少行的计数。这类会话不返回任何其他信息。每一次分别向每个数据库服务器发送一个会话。
会话对象由连接对象创建,例如:
Connection conn=dataSource.getConnection(user,passwd);
Statement stmt=conn.createStatement( )。
可以对会话进行缓存并且随后在数据库服务器上预定义执行路径,从而以有效的方式对会话执行多次,这种会话称为准备好的会话(PreparedStatement),例如:
Connection conn=ds.getConnection(user,passwd);
PreparedStatement ps=conn.prepareStatement(“INSERT INTOBOOKLIST”+“(AUTHOR,TITLE,ISBN)VALUES(?,?,?)”);
ps.setString(1,“Zamiatin,Evgenii”);
ps.setString(2,“We”);
ps.setLong(3,0140285852)。
此外,可调用的会话(CallableStatement)用于执行数据库上已存储的程序,例如:
CallableStatement cstmt=con.prepareCall(“{CALL PROC(?,”Literal_Value”,?)}”);
cstmt.setString(1,“First”);
cstmt.setString(2,“Third”)。
查询会话返回JDBC行结果集(Rowset)。行结果集是结果集的一种。行中的各列可以通过名称和列编号来检索。在一个结果集中可以有任意多行。行结果集具有描述各列及其类型的元数据。JDBC规范中与结果集相关的主要概念包括:行集(Rowset)类型、行集并存性(Concurrency)、结果集保留能力(Holdability)、结果集对象。
其中,行集类型包括:
TYPE_FORWARD_ONLY
TYPE_SCROLL_INSENSITIVE
TYPE_SCROLL_SENSITIVE;
行集并存性包括:
CONCUR_READ_ONLY
CONCUR_UPDATABLE;
结果集保留能力包括:
ResultSet rs=stmt.executeQuery(sqlstring)
int colldx=rs.findColumn(“ISBN”)。
图2示出了根据本发明一个优选实施例的连接管理方法的流程图。下面结合图2描述给出本发明的连接管理方法。
首先,一个应用请求一个JDBC连接,其中该请求中可能带有关键字(Key)或不带有关键字。如果该请求带有关键字,则表明发出请求的应用将继续一个被中断而未结束的会话,而该关键字作为用于恢复一个会话的索引(下面将会进一步详细描述这种情况);不带有关键字表明该应用将重新开始一个新的会话,而不是继续一个被中断而未结束的会话。在步骤201对JDBC连接的请求是不带有关键字的请求,而在步骤210发出的对JDBC连接的请求是带有关键字的请求。
接着,在步骤202中,判断连接池中是否有可用的连接。如果有可用的连接,则过程直接前进到步骤205中为应用分配一个连接;如果没有空闲的连接,则过程前进到步骤203中,选择一个已被占用的连接进行回收,如果所有占用的连接都在正在执行会话,那么请求就会等待。如果有占用的连接空闲,则优选地可以基于超时或采用LRU(最近最少使用算法)等现有技术的方法来选择已被占用的连接。最简单的一种选择算法是,在JDBC连接上有一个时间戳,该时间戳记录最后一次会话执行完成的时间;用当前时间去减每个连接上的时间戳,选择所得值最大的连接来进行后续的回收调度处理。
在步骤204中,保存所选择的连接上面的所有状态信息和要被中断的会话的关键字,然后将该会话挂起,接着将所选择的连接释放到连接池中。该关键字与要备份的该会话相关的状态信息相关联。在需要时,可以用该关键字作为索引查找该会话的相关状态信息,以便于恢复会话。该会话相关的状态信息在本发明中称为“连接上下文”。该关键字可以与对应的会话的状态信息一同保存在一个数据库中。
然后,过程前进到步骤205,由于此时连接池中存在被释放的空闲连接,因此可以应用分配一个JDBC连接。
在上文所描述的步骤202至步骤205为本发明的主要技术方案,至步骤205完成为一个请求分配JDBC连接的过程。下面根据请求中是否包含关键字信息具体分两种情况描述。如果该请求中包含关键字则表明该请求需要恢复已有的被中断的会话;如果该请求中没有包含关键字,则表明该请求需要创建一个新的会话。具有步骤如下:
在步骤206中,检测该请求中是否包含关键字。如果请求中没有包含关键字,则过程进入步骤207,其中为该会话创建一个关键字并将其绑定到会话;如果请求中包含了关键字,则过程进入步骤208,其中根据该关键字检索先前保存的连接上下文,将连接上下文中的状态信息恢复到该连接上,并激活该会话。
执行步骤207和步骤208的结果都可以得到一个已经具有关键字的连接,因此接下来在步骤209中,可以在激活的会话上执行一个SQL语句。
接着,在步骤211中,可以根据关键字检测该会话是否活跃。如果判断结果是肯定的,则在步骤212中,可以通过JDBC连接执行SQL语句。然后,在步骤213中,判断是否关闭会话。如果不关闭会话,则在过程进行到步骤217,判断连接是否已经被强制中断,如果为“否”,则返回到步骤209中在会话上执行SQL语句。
如果在步骤213中关闭该会话,则接着在步骤214中判断是否释放连接。如果不释放连接,则在步骤216中创建一个会话,并随后进行到步骤217,判断连接是否被强制中断。如果为“否”,则返回到步骤209中在会话上执行SQL语句。
如果在步骤214释放连接,则接着在步骤215中回收该连接,即断开该连接,并把该连接置于连接池中。
在上述步骤217中,如果判断连接被强制中断,则进行到步骤210,请求一个JDBC连接。该请求带有与会话相关的关键字。步骤217转到上述步骤202,以重新获得一个新的连接,以便于根据请求中的关键字恢复先前被中断而未结束的会话。
在上述步骤中,“关键字”意指可以所述应用希望恢复的会话的连接上下文进行索引的唯一标识符。在具体的实现中,关键字可以是任意字符。优选地,其也可以是连接上下文中的特定的一项信息或多项信息的组合。在此公开的实施例不应理解为对本发明的限制。
图3示出了根据本发明优选实施例的用于备份数据库连接的连接上下文的操作的流程图。图3中所示的步骤是图2中的步骤204中的第一步骤的细分步骤。首先,在步骤301中,创建上下文对象,用上下文对象将上述连接的状态信息打包存储。其次,在步骤302中,将JDBC连接对象中的会话对象都取出来。然后,在步骤303中,将会话对象中的SQL、行集配置信息和行集都取出来放入在步骤301中创建的上下文对象中。最后,在步骤304中,将与该会话相关联的关键字和步骤303后获得的上下文对象一同放入索引表中以便以后可以根据关键字查找上下文对象并由该上下文对象恢复连接的状态信息。
图4示出了根据本发明优选实施例的用于基于所保存的连接上下文恢复数据库连接的操作的流程图。图4中所示的步骤是图2中的步骤208的第一步骤的细分步骤。首先,在步骤401中,根据关键字从索引表中取出上下文对象。其次,在步骤402中,将该上下文对象中的会话对象都取出来。然后,在步骤403中,在已经分配的JDBC连接上恢复所有状态信息,包括恢复该会话中的信息。最后,在步骤404中,将索引表中包含该关键字的上下文删除。因为该连接上下文已经恢复,以后也不会被使用,为了避免与下次可能备份的该会话关键字相关联的上下文相冲突,最好在将备份的上下文用于恢复后立即删除。但是,也可以在下次备份与同一关键字相关的上下文时,用新备份的上下文覆盖以前备份的上下文。
图5示出了根据本发明优选实施例的包括数据库连接管理器的数据库连接管理系统50的框图。系统50包括诸如Java应用之类的应用51、连接池53以及根据本发明的连接管理器52。连接管理器52可以包括连接调度装置521、连接上下文备份装置522和连接上下文恢复装置522。管理器52还可以包括关键字管理装置523以及连接上下文保存库524。
当连接管理器52接收到来自应用的连接请求时,其检查连接池53中是否有空闲的连接。然后,如果有空闲连接,则通过连接调度装置521为该应用分配一个连接;如果没有空闲连接,则通过连接调度装置521选择一个已占用连接的应用。随后连接上下文备份装置522将所选择应用的连接上下文备份到连接上下文保存库524中,挂起该连接的会话,并释放该应用的连接。然后,连接调度装置521将释放的连接分配给先前发出连接请求的应用。这时,关键字管理装置523检测该请求中是否包含关键字。如果该连接请求中不含有关键字,则为该应用分配一个关键字并绑定到该会话。如果该连接请求中含有关键字,则根据该关键字通过连接上下文恢复装置524从连接上下文保存库524中恢复其连接上下文,并基于该恢复的连接上下文为该应用建立连接。
图6示出了根据本发明优选实施例的连接管理器与Java应用之间的交互过程,该连接管理器52包括连接调度装置521、连接上下文备份装置522、连接上下文恢复装置524以及关键字管理装置523(为简便起见,在图6中没有详细示出这些装置)。在步骤61中,Java应用向连接调度装置发送连接请求GetConnection( )。如果有空闲连接,则在步骤62中,连接调度装置为Java应用分配一个连接;如果没有空闲连接,则连接调度装置选择一个已用连接,在图中虚线所示的步骤63中,将该已用连接的连接上下文备份到上下文保存库中,并释放该连接。接着在步骤64中,将已释放连接分配给该Java应用。然后,在步骤65中,Java应用在建立的连接上创建一个会话Stmt=conn.createStatement()。在步骤66中,连接管理器中的关键字管理装置为该会话生成关键字,从而使随后该连接上的会话都带有该关键字。在步骤67中,Java应用在所创建的会话上执行带有关键字的SQL语句,并在步骤68中,获得返回的结果集。可以一直重复步骤67-步骤68,直到Java应用不再需要访问数据库,并且在此过程中连接管理器可以随时根据需要收回连接。利用步骤69表示这种弹性的管理。在步骤69中,当Java应用执行新的SQL语句时,通常可能有三种情况。第一种情况下,在步骤70中,返回结果集;第二种情况下,在短虚线所示的步骤71中,连接管理器将该连接的上下文备份到上下文保存库中,并在步骤72中释放该连接;第三种情况下,连接管理器从Java应用的会话检索到关键字,并在长虚线所示的步骤73和步骤74中根据该关键字从上下文保存库中取出已备份的上下文,然后在步骤75中,根据该恢复的上下文为Java应用建立连接。
图7示意性示出了可以实现根据本发明的实施例的计算设备。
图7中所示的计算机系统包括CPU(中央处理单元)701、RAM(随机存取存储器)702、ROM(只读存储器)703、系统总线704,硬盘控制器705、键盘控制器706、串行接口控制器707、并行接口控制器708、显示器控制器709、硬盘710、键盘711、串行外部设备712、并行外部设备713和显示器714。在这些部件中,与系统总线704相连的有CPU 701、RAM 702、ROM 703、硬盘控制器705、键盘控制器706,串行接口控制器707,并行接口控制器708和显示器控制器709。硬盘710与硬盘控制器705相连,键盘711与键盘控制器706相连,串行外部设备712与串行接口控制器707相连,并行外部设备713与并行接口控制器708相连,以及显示器714与显示器控制器709相连。
图7中每个部件的功能在本技术领域内都是众所周知的,并且图7所示的结构也是常规的。这种结构不仅用于个人计算机,而且用于手持设备,如Palm PC、PDA(个人数据助理)、移动电话等等。在不同的应用中,例如用于实现包含有根据本发明的客户端模块的用户终端或者包含有根据本发明的网络应用服务器的服务器主机时,可以向图7中所示的结构添加某些部件,或者图7中的某些部件可以被省略。图7中所示的整个系统由通常作为软件存储在硬盘710中、或者存储在EPROM或者其它非易失性存储器中的计算机可读指令控制。软件也可从网络(图中未示出)下载。或者存储在硬盘710中,或者从网络下载的软件可被加载到RAM 702中,并由CPU 701执行,以便完成由软件确定的功能。
尽管图7中描述的计算机系统能够支持根据本发明的管理数据库连接的方案,但是该计算机系统只是计算机系统的一个例子。本领域的熟练技术人员可以理解,许多其它计算机系统设计也能实现本发明的实施例。
本发明还可以实现为例如由图7所示计算机系统所使用的计算机程序产品,其可以包含有用于实现根据本发明的管理数据库连接的代码;其还可以包含有用于实现根据本发明的管理数据库连接的代码。在使用之前,可以把代码存储在其它计算机系统的存储器中,例如,存储在硬盘或诸如光盘或软盘的可移动的存储器中,或者经由因特网或其它计算机网络进行下载。
以上给出了用于实现本发明的各种优选实施例,然而本领域的普通技术人员能够理解,在不脱离本发明的本质和范围的情况下可以对本发明做出许多其他改变和改型。应当理解,本发明不限于在此公开的特定实施方式,本发明的范围由所附权利要求限定。
Claims (13)
1.一种数据库连接管理方法,包括步骤:
响应于第一应用的连接请求,为所述第一应用分配可用连接;
如果没有可用连接,则选择由第二应用所使用的一个已用连接;
对所述已用连接的连接上下文进行备份;
释放所述已用连接;以及
将所述已用连接分配给所述第一应用,
其中对所述已用连接的连接上下文进行备份的步骤还包括:
为进行备份的应用的会话定义关键字,并且将所述已用连接的连接上下文与所述关键字之间建立对应关系。
2.根据权利要求1所述的方法,其中还包括步骤:如果所述第二应用请求恢复先前的连接状态,则基于所述备份的连接上下文为其分配新的连接并且恢复先前的连接状态。
3.根据权利要求1或2所述的方法,其中所述应用是Java应用,并且所述连接是JDBC连接。
4.根据权利要求1所述的方法,其中所述选择步骤包括如下步骤:
采用最近最少使用算法在所有已用连接中选择一个将被释放的已用连接;或
选择一个超过预定时间的已用连接。
5.根据权利要求1所述的方法,其中所述关键字是唯一标识每个应用的会话的任意字符。
6.根据权利要求1所述的方法,其中所述关键字是所述连接上下文中的特定信息。
7.一种数据库连接管理器,包括:
连接上下文备份装置,用于对连接的上下文进行备份;
连接调度装置,用于对连接进行调度,其中还包括如下装置:
响应于第一应用的连接请求,为所述第一应用分配可用连接的
装置;
如果没有可用连接,则选择由第二应用所使用的一个已用连接的装置;
控制所述连接上下文备份装置对所述已用连接的连接上下文进行备份的装置;
释放所述已用连接的装置;以及
将所述已用连接分配给所述第一应用的装置;以及
关键字管理装置,用于为进行备份的应用的会话定义关键字,并且将所述已用连接的连接上下文与所述关键字之间建立对应关系。
8.根据权利要求7所述的数据库连接管理器,其中还包括连接上下文恢复装置,用于在所述第二应用请求恢复先前的连接状态时,基于所述备份的连接上下文为其分配新的连接并且恢复先前的连接状态。
9.根据权利要求7或8所述的数据库连接管理器,其中所述应用是Java应用,并且所述连接是JDBC连接。
10.根据权利要求7所述的数据库连接管理器,其中所述选择装置用于执行如下步骤:
采用最近最少使用算法在所有已用连接中选择一个将被释放的已用连接;或
选择一个超过预定时间的已用连接。
11.根据权利要求7所述的数据库连接管理器,其中所述关键字是唯一标识每个应用的任意字符。
12.根据权利要求7所述的数据库连接管理器,其中所述关键字是所述连接上下文中的特定信息。
13.一种用于对数据库连接的管理的系统,包括应用和连接池,其特征在于包括根据权利要求7-12中任一项权利要求所述的数据库连接管理器。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007101268741A CN101334778B (zh) | 2007-06-29 | 2007-06-29 | 管理数据库连接的方法和系统 |
US12/164,065 US7844720B2 (en) | 2007-06-29 | 2008-06-29 | Managing database connections |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007101268741A CN101334778B (zh) | 2007-06-29 | 2007-06-29 | 管理数据库连接的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101334778A CN101334778A (zh) | 2008-12-31 |
CN101334778B true CN101334778B (zh) | 2011-08-03 |
Family
ID=40197381
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007101268741A Expired - Fee Related CN101334778B (zh) | 2007-06-29 | 2007-06-29 | 管理数据库连接的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7844720B2 (zh) |
CN (1) | CN101334778B (zh) |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7724657B2 (en) | 2004-07-23 | 2010-05-25 | Citrix Systems, Inc. | Systems and methods for communicating a lossy protocol via a lossless protocol |
ATE535078T1 (de) | 2004-07-23 | 2011-12-15 | Citrix Systems Inc | Verfahren und system zur sicherung von zugriff aus der ferne auf private netze |
US7810089B2 (en) | 2004-12-30 | 2010-10-05 | Citrix Systems, Inc. | Systems and methods for automatic installation and execution of a client-side acceleration program |
US8954595B2 (en) | 2004-12-30 | 2015-02-10 | Citrix Systems, Inc. | Systems and methods for providing client-side accelerated access to remote applications via TCP buffering |
US8255456B2 (en) | 2005-12-30 | 2012-08-28 | Citrix Systems, Inc. | System and method for performing flash caching of dynamically generated objects in a data communication network |
US20090063686A1 (en) * | 2007-08-30 | 2009-03-05 | Schmidt Brian K | Automated service discovery and dynamic connection management |
KR20090121579A (ko) * | 2008-05-22 | 2009-11-26 | 주식회사 이베이지마켓 | 서버의 취약점을 점검하기 위한 시스템 및 그 방법 |
US8949421B2 (en) * | 2009-07-29 | 2015-02-03 | Teradata Us, Inc. | Techniques for discovering database connectivity leaks |
US8856189B1 (en) * | 2010-01-22 | 2014-10-07 | Symantec Corporation | Systems and methods for managing connections to process data |
EP2363806A1 (en) * | 2010-03-03 | 2011-09-07 | Software AG | Connection handler and method for providing applications with heterogeneous connection objects |
US9589029B2 (en) * | 2010-12-28 | 2017-03-07 | Citrix Systems, Inc. | Systems and methods for database proxy request switching |
US20120278385A1 (en) * | 2011-04-28 | 2012-11-01 | Matthew Nicholas Papakipos | Managing Connection Pools for User Devices |
US9529417B2 (en) | 2011-04-28 | 2016-12-27 | Facebook, Inc. | Performing selected operations using low power-consuming processors on user devices |
US8825842B2 (en) | 2011-04-28 | 2014-09-02 | Facebook, Inc. | Managing notifications pushed to user devices |
US9154580B2 (en) | 2012-02-01 | 2015-10-06 | Tata Consultancy Services Limited | Connection management in a computer networking environment |
CN103729373B (zh) * | 2012-10-15 | 2017-08-04 | 北京新媒传信科技有限公司 | 一种数据库代理方法和装置 |
CN103646084A (zh) * | 2013-12-16 | 2014-03-19 | 浪潮电子信息产业股份有限公司 | 一种基于c程序连接mysql数据库的管理方法 |
CN104331406A (zh) * | 2013-12-20 | 2015-02-04 | 乐视网信息技术(北京)股份有限公司 | 一种数据库容量控制方法及装置 |
CN103853634B (zh) * | 2014-02-26 | 2017-02-01 | 北京优炫软件股份有限公司 | 一种容灾备份系统及方法 |
GB2529625A (en) | 2014-08-25 | 2016-03-02 | Ibm | Context switch of database connections |
CN105468619B (zh) * | 2014-09-03 | 2019-10-29 | 阿里巴巴集团控股有限公司 | 用于数据库连接池的资源分配方法和装置 |
US10389652B2 (en) | 2014-12-19 | 2019-08-20 | International Business Machines Corporation | Connection pool management |
CN104991817A (zh) * | 2015-06-25 | 2015-10-21 | 国网山东省电力公司 | 一种信息系统可配置集成方法及系统 |
CN106339386B (zh) * | 2015-07-08 | 2019-12-24 | 阿里巴巴集团控股有限公司 | 数据库弹性调度方法以及装置 |
CN106445976B (zh) * | 2015-08-12 | 2019-12-24 | 北京国双科技有限公司 | 数据库连接的控制方法及装置 |
US10402100B2 (en) * | 2016-03-23 | 2019-09-03 | Netapp Inc. | Techniques for path optimization in storage networks |
CN108255825A (zh) * | 2016-12-28 | 2018-07-06 | 中国移动通信集团江西有限公司 | 用于动态分配数据库连接的方法和装置 |
US10855587B2 (en) * | 2018-10-19 | 2020-12-01 | Oracle International Corporation | Client connection failover |
CN116436604A (zh) * | 2023-06-08 | 2023-07-14 | 成都房联云码科技有限公司 | 基于数字房产管理类集群应用的密钥管理系统 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6112196A (en) | 1998-06-25 | 2000-08-29 | International Business Machines Corporation | Method and system for managing connections to a database management system by reusing connections to a database subsystem |
US6463078B1 (en) * | 1998-07-22 | 2002-10-08 | Microsoft Corporation | Method for switching protocols transparently in multi-user applications |
KR100288140B1 (ko) * | 1998-12-07 | 2001-05-02 | 이계철 | 이기종 데이터베이스 관리 시스템에 접근 가능한 연결 제공 시스템 및 그 방법 |
JP2004530977A (ja) | 2001-03-30 | 2004-10-07 | ゴールドマン サックス アンド カンパニー | 分散データベースに対して協調アクセスを必要とするクエリ処理の方法およびシステム |
US7506342B2 (en) | 2002-07-23 | 2009-03-17 | Bea Systems, Inc. | System and method for implementing J2EE connector architecture |
US8145759B2 (en) * | 2002-11-04 | 2012-03-27 | Oracle America, Inc. | Dynamically configurable resource pool |
US7181491B2 (en) | 2003-04-04 | 2007-02-20 | Taiwan Semiconductor Manufacturing Company | Intelligent data pool management engine |
US8621031B2 (en) | 2003-04-29 | 2013-12-31 | Oracle International Corporation | Method and apparatus using connection pools in communication networks |
US7174326B2 (en) | 2003-07-17 | 2007-02-06 | Sybase, Inc. | Database system providing methodology for prepared statement cloning |
-
2007
- 2007-06-29 CN CN2007101268741A patent/CN101334778B/zh not_active Expired - Fee Related
-
2008
- 2008-06-29 US US12/164,065 patent/US7844720B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US20090234957A1 (en) | 2009-09-17 |
US7844720B2 (en) | 2010-11-30 |
CN101334778A (zh) | 2008-12-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101334778B (zh) | 管理数据库连接的方法和系统 | |
CN100478944C (zh) | 自动任务生成器的方法和系统 | |
US8135703B2 (en) | Multi-partition query governor in a computer database system | |
US20170222891A1 (en) | Automatic asynchronous handoff identification | |
CN111258565B (zh) | 小程序的生成方法、系统、服务器及存储介质 | |
CN102681836A (zh) | 针对大量并发用户进行扩展的系统和方法 | |
CN106055424A (zh) | 一种信息数据库的异常处理方法和装置 | |
CN106874343B (zh) | 一种时序数据库的数据删除方法及系统 | |
US7047389B2 (en) | Memory allocation method and computer readable medium | |
CN113590433B (zh) | 数据管理方法、数据管理系统和计算机可读存储介质 | |
CN100357889C (zh) | 以类为单位的远程构件生命周期的管理方法 | |
EP1623293A2 (en) | Mediator-based recovery mechanism for multi-agent system | |
CN100568245C (zh) | 工作流数据的持久化处理方法、装置及工作流系统 | |
US20040041840A1 (en) | System and method for process dependency management | |
US7567944B2 (en) | Context based work environment | |
US20030084062A1 (en) | Method and system for automated web reports | |
CN108154343B (zh) | 一种企业级信息系统的应急处理方法及系统 | |
KR101888131B1 (ko) | Dds-dbms 연동 도구의 실시간 변경 데이터 발간 서비스 수행 방법 | |
CN101447993B (zh) | 查找连接池中未释放的连接的方法和装置 | |
US7433875B2 (en) | Web store events | |
CN114493598A (zh) | 计算资源管理方法、装置、计算机设备和存储介质 | |
CN108804239A (zh) | 平台整合的方法、装置、计算机设备和存储介质 | |
US7536376B2 (en) | Task oriented log retrieval utilizing a self-learning search tool | |
CN113037871A (zh) | 会议通话的恢复方法、装置、系统、电子设备和可读存储介质 | |
CN113238815A (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
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: 20110803 Termination date: 20160629 |