一种建立连接的方法及装置制造方法

文档序号:6505328阅读:145来源:国知局
一种建立连接的方法及装置制造方法
【专利摘要】本申请公开了一种建立连接的方法及装置,用以解决现有技术中APP在访问热点数据时可能会占用数据库连接池中的所有连接,浪费数据库连接池的资源的问题。该方法预先将APP的数据库连接池中的连接划分为至少两个队列,每个队列中包含至少一个连接,在访问目标数据时,APP根据目标数据的标识信息以及预设的标识信息与各队列的对应关系,确定该目标数据的标识信息对应的队列,并通过确定的队列中空闲的连接访问数据库中的该目标数据。通过上述方法,即使APP同时占用多个连接访问热点数据,APP最多也只能占用该热点数据的标识信息对应的队列中的所有连接,而不会占用数据库连接池中的所有连接,因此可有效节省数据库连接池中的资源。
【专利说明】一种建立连接的方法及装置

【技术领域】
[0001]本申请涉及通信【技术领域】,尤其涉及一种建立连接的方法及装置。

【背景技术】
[0002]目前,应用(Applicat1n,APP)与数据库之间的信息交互已经普遍存在于各种应用场景中。
[0003]当APP与数据库进行信息交互时,APP首先要与数据库建立连接,再基于建立的连接与数据库进行信息交互。但是,由于数据库与APP建立连接的过程比较繁琐,建立连接所需的时间较长,而且也需要耗费数据库较多的资源,因此,在现有技术中,通常在APP中预设数据库连接池,APP可通过该数据库连接池与数据库建立连接。
[0004]具体的,在现有技术中,对于一个APP来说,可预先建立该APP与数据库的一定数量(如10个)的连接,并将已经建立的这一定数量的连接保存在数据库连接池中,当APP与数据库连接时,则可直接采用数据库连接池中空闲的连接与数据库进行信息交互。
[0005]但是,当数据库中的某个数据是访问量较高的热点数据时,APP很可能会用掉数据库连接池中的所有连接用以访问数据库中的该热点数据,导致APP要访问其他非热点数据时,数据库连接池中没有空闲的连接可用。而且,为了保证数据库中的数据的准确性,当APP通过多个连接对数据库中的同一个数据进行多次更新操作时,数据库对于这多个更新操作是串行执行的,因此,即使APP同时占用了数据库连接池中的所有连接对数据库中的同一个热点数据进行更新,数据库对着多个更新操作也是串行执行的,这显然浪费了数据库连接池中的资源。


【发明内容】

[0006]本申请实施例提供一种建立连接的方法及装置,用以解决现有技术中APP在访问热点数据时可能会占用数据库连接池中的所有连接,浪费数据库连接池的资源的问题。
[0007]本申请实施例提供的一种建立连接的方法,包括:
[0008]根据目标数据的标识信息,以及预设的标识信息与数据库连接池中各队列的对应关系,确定所述数据库连接池中与所述目标数据的标识信息对应的队列,其中,预先将所述数据库连接池中的连接划分为至少两个队列,每个队列中包含至少一个连接;
[0009]通过确定的队列中空闲的连接访问数据库中的所述目标数据。
[0010]本申请实施例提供的一种建立连接的方法,包括:
[0011]根据目标数据的标识信息,以及预设的标识信息与各虚拟资源组的对应关系,确定所述目标数据的标识信息对应的虚拟资源组;
[0012]判断确定的虚拟资源组中的连接的数量是否小于针对所述确定的虚拟资源组预设的最大连接数;
[0013]若是,则将所述数据库连接池中空闲的连接划分到所述确定的虚拟资源组中,通过所述确定的虚拟资源组中空闲的连接访问数据库中的所述目标数据,并在访问所述目标数据后将占用的连接释放到所述数据库连接池中;
[0014]否则,等待至所述确定的虚拟资源组中的连接的数量小于所述最大连接数时,将所述数据库连接池中空闲的连接划分到所述确定的虚拟资源组中,通过所述确定的虚拟资源组中空闲的连接访问数据库中的所述目标数据,并在访问所述目标数据后将占用的连接释放到所述数据库连接池中。
[0015]本申请实施例提供的一种建立连接的装置,包括:
[0016]确定模块,用于根据目标数据的标识信息,以及预设的标识信息与数据库连接池中各队列的对应关系,确定所述数据库连接池中与所述目标数据的标识信息对应的队列,其中,预先将所述数据库连接池中的连接划分为至少两个队列,每个队列中包含至少一个连接;
[0017]连接模块,用于通过所述确定模块确定的队列中空闲的连接访问数据库中的所述目标数据。
[0018]本申请实施例提供的一种建立连接的装置,包括:
[0019]确定模块,用于根据目标数据的标识信息,以及预设的标识信息与各虚拟资源组的对应关系,确定所述目标数据的标识信息对应的虚拟资源组;
[0020]判断模块,用于判断所述确定模块确定的虚拟资源组中的连接的数量是否小于针对所述确定的虚拟资源组预设的最大连接数;
[0021]连接模块,用于当所述判断模块的判断结果为是时,将所述数据库连接池中空闲的连接划分到所述确定的虚拟资源组中,通过所述确定的虚拟资源组中空闲的连接访问数据库中的所述目标数据,并在访问所述目标数据后将占用的连接释放到所述数据库连接池中;当所述判断模块的判断结果为否时,等待至所述确定的虚拟资源组中的连接的数量小于所述最大连接数时,将所述数据库连接池中空闲的连接划分到所述确定的虚拟资源组中,通过所述确定的虚拟资源组中空闲的连接访问数据库中的所述目标数据,并在访问所述目标数据后将占用的连接释放到所述数据库连接池中。
[0022]本申请实施例提供一种建立连接的方法及装置,该方法预先将APP的数据库连接池中的连接划分为至少两个队列,每个队列中包含至少一个连接,在访问目标数据时,APP根据目标数据的标识信息以及预设的标识信息与各队列的对应关系,确定该目标数据的标识信息对应的队列,并通过确定的队列中空闲的连接访问数据库中的该目标数据。通过上述方法,即使APP同时占用多个连接访问热点数据,APP最多也只能占用该热点数据的标识信息对应的队列中的所有连接,而不会占用数据库连接池中的所有连接,因此可有效节省数据库连接池中的资源。

【专利附图】

【附图说明】
[0023]图1为本申请实施例提供的第一种建立连接的过程;
[0024]图2为本申请实施例提供的将数据库连接池中的连接划分为多个队列的示意图;
[0025]图3为本申请实施例提供的第二种建立连接的过程;
[0026]图4为本申请实施例提供的数据库连接池中的各虚拟资源组示意图;
[0027]图5为本申请实施例提供的第一种建立连接的装置结构示意图;
[0028]图6为本申请实施例提供的第二种建立连接的装置结构示意图。

【具体实施方式】
[0029]本申请实施例中预先将APP的数据库连接池中的连接划分为至少两个队列,每个队列中包含至少一个连接,并预设数据库中各数据的标识信息与各队列的对应关系,在APP访问目标数据时,可根据目标数据的标识信息确定对应的队列,并通过确定的队列中空闲的连接访问目标数据。通过上述方法,即使APP同时通过多个连接访问同一个数据,APP也不会将数据库连接池中的所有连接都占用,因此可避免浪费数据库连接池中的资源。
[0030]下面结合说明书附图,对本申请实施例进行详细描述。
[0031]图1为本申请实施例提供的第一种建立连接的过程,具体包括以下步骤:
[0032]SlOl:根据目标数据的标识信息,以及预设的标识信息与数据库连接池中各队列的对应关系,确定数据库连接池中与目标数据的标识信息对应的队列。
[0033]在本申请实施例中,可针对一个APP,预先将该APP的数据库连接池中的连接划分为至少两个队列,每个队列中包含至少一个连接,并预设数据库中各数据的标识信息与各队列的对应关系,如图2所不。
[0034]图2为本申请实施例提供的将数据库连接池中的连接划分为多个队列的示意图。假设APP的数据库连接池中共包括10个连接,这10个连接是预先建立的APP与数据库的连接,则在图2中,将这10个连接划分为4个队列,分别为队列1、队列2、队列3、队列4。其中,队列I中有4个连接,队列2、队列3、队列4中各有2个连接。
[0035]在预设数据库中各数据的标识信息与数据库连接池中各队列的对应关系时,可将热点数据的标识信息对应的队列设置为包含连接的数量最多的队列,非热点数据的标识信息对应的队列设置为其他队列。其中,数据的标识信息包括但不限于数据的ID等。
[0036]例如,在图2中,可将队列I设置为热点数据的标识信息对应的队列,将队列2、队列3、队列4设置为非热点数据的标识信息对应的队列。
[0037]S102:通过确定的队列中空闲的连接访问数据库中的目标数据。
[0038]APP确定了要访问的目标数据的标识信息对应的队列后,则可通过确定的队列中空闲的连接访问数据库中的目标数据。
[0039]继续沿用上例,假设APP要访问的目标数据为热点数据,数据库连接池中各队列的划分如图2所示,已经预设了热点数据的标识信息对应的队列为队列1,则步骤SlOl中APP确定该目标数据的标识信息对应的队列为队列1,步骤S102中APP可通过队列I中空闲的连接访问该目标数据。
[0040]通过上述方法,即使APP访问的是热点数据,APP最多也只能占用热点数据的标识信息对应的队列中的所有连接,而不会占用其他队列的连接,也就不会将数据库连接池中的所有连接都占满,因此可有效避免浪费数据库连接池中的资源。
[0041]进一步的,当APP通过上述步骤SlOl确定了目标数据的标识信息对应的队列后,如果确定的队列中不存在空闲的连接,则可判断当前建立的与数据库的连接的数量是否小于预设的最大数量。如果当前建立的与数据库的连接的数量小于预设的最大数量,则建立与数据库的连接,并通过建立的连接访问目标数据,也即,此时APP不使用数据库连接池中已经建立的与数据库的连接访问目标数据,而是新建一个与数据库的连接,并通过新建的该连接访问目标数据。如果当前建立的与数据库的连接的数量不小于预设的最大数量,则可直接返回建立失败消息,也即,本次访问目标数据失败。
[0042]继续以图2为例进行说明,假设APP确定目标数据的标识信息对应的队列为队列1,但此时队列I中并无空闲的连接,则APP判断自身当前与数据库建立的连接的数量是否小于预设的最大数量,若是,则APP新建一个与数据库的连接(不使用队列2、队列3、队列4中的任何一个空闲连接),并通过新建的连接访问目标数据,否则,直接返回建立连接失败消息。
[0043]除了采用上述处理方法以外,当APP通过上述步骤S1I确定的目标数据的标识信息对应的队列中不存在空闲的连接时,还可等待确定的队列中的连接被释放,并监控等待时间。如果等待的时间长度不超过预设时间长度,且确定的队列中的连接被释放,则可通过确定的队列中释放的连接访问目标数据。如果等待的时间长度已经达到预设时间长度,但确定的队列中的连接仍未被释放,则返回建立连接失败消息,也即,本次访问目标数据失败。
[0044]继续以图2为例进行说明,假设APP确定目标数据的标识信息对应的队列为队列1,但此时队列I中并无空闲的连接,则APP等待队列I中的连接被释放,如果等待的时间长度不超过预设时间长度,且队列I中的某个连接被释放,则通过队列I中被释放的连接访问目标数据,如果等待的时间长度已经达到预设时间长度,但队列I中仍没有连接被释放,则返回建立连接失败消息。
[0045]以上为本申请实施例提供的第一种建立连接的方法,在上述第一种建立连接的方法中,数据库连接池中的各连接一旦划分成多个队列,则一个队列中的连接就不能被其他队列共享,实现了各连接的严格隔离。下面说明本申请实施例提供的第二种建立连接的方法,如图3所示。
[0046]图3为本申请实施例提供的第二种建立连接的过程,具体包括以下步骤:
[0047]S301:根据目标数据的标识信息,以及预设的标识信息与各虚拟资源组的对应关系,确定目标数据的标识信息对应的虚拟资源组。
[0048]S302:判断确定的虚拟资源组中的连接的数量是否小于针对该确定的虚拟资源组预设的最大连接数,若是,则执行步骤S303,否则执行步骤S304。
[0049]S303:将数据库连接池中空闲的连接划分到该确定的虚拟资源组中,通过该确定的虚拟资源组中空闲的连接访问数据库中的目标数据,并在访问目标数据后将占用的连接释放到数据库连接池中。
[0050]如果确定的虚拟资源组中的连接的数量小于针对该确定的虚拟资源组预设的最大连接数,则APP将数据库连接池
[0051]S304:等待至该确定的虚拟资源组中的连接的数量小于最大连接数时,将数据库连接池中空闲的连接划分到该确定的虚拟资源组中,通过该确定的虚拟资源组中空闲的连接访问数据库中的目标数据,并在访问目标数据后将占用的连接释放到数据库连接池中。
[0052]在本申请实施例中,可针对一个APP,在该APP的数据库连接池中预设至少两个虚拟资源组,针对每个虚拟资源组预设相应的最大连接数,针对一个虚拟资源组预设的最大连接数小于数据库连接池中的连接的数量,并预设数据库中的各数据的标识信息与各虚拟资源组的对应关系。其中,数据的标识信息包括但不限于数据的ID等,如图4所示。
[0053]图4为本申请实施例提供的数据库连接池中的各虚拟资源组示意图,在图4中,对于一个虚拟资源组而言,当APP未访问标识信息为该虚拟资源组对应的标识信息的数据时,数据库连接池中的连接不会被划分到该虚拟资源组中,而当APP访问标识信息为该虚拟资源组对应的标识信息的数据时,数据库连接池中的连接则会被划分到该虚拟资源组中,以供APP访问该数据使用,其中,划分到该虚拟资源组中的连接最多不超过针对该虚拟资源组预设的最大连接数。当APP访问数据结束后,所使用的该虚拟资源组中的连接会被重新释放到数据库连接池中。
[0054]在图4中,数据库连接池中共有10个连接,在数据库连接池中设置了 4个虚拟资源组,分别为资源组1、资源组2、资源组3、资源组4。其中,针对资源组I和资源组2预设的最大连接数为5、针对资源组3和资源组4预设的最大连接数为3。
[0055]由于第二种建立连接的方法不同于第一种建立连接的方法,虚拟资源组并非是将数据库连接池中的所有连接进行严格的隔离,而是当需要数据库连接池中的连接时(即,当APP访问标识信息为该虚拟资源组对应的标识信息的数据时),从数据库连接池中取出一个连接划入该虚拟资源组中,当使用该连接完毕后,再将该连接从该虚拟资源组中还回数据库连接池,因此,针对各虚拟资源组预设的最大连接数之和可以大于数据库连接池中的连接的数量,如图4中针对各虚拟资源组预设的最大连接数之和为11,而数据库连接池中的连接的数量为10。
[0056]继续以图4为例进行说明,假设APP要访问的目标数据的标识信息对应的虚拟资源组为资源组1,针对资源组I预设的最大连接数为5 JUAPP判断当前资源组I中的连接的数量是否小于5。若是,则将数据库连接池中一个空闲的连接划分到资源组I中,并通过划分到资源组I中的空闲的连接访问目标数据,在访问目标数据后,再将所使用的连接从资源组I中释放到数据库连接池中。如果当前资源组I中的连接的数量不小于5,则APP等待至资源组I中的连接的数量小于5时,再将数据库连接池中一个空闲的连接划分到资源组I中,并通过划分到资源组I中的空闲的连接访问目标数据,在访问目标数据后,再将所使用的连接从资源组I中释放到数据库连接池中。
[0057]通过上述方法,即使APP同时占用多个连接访问热点数据,APP访问该热点数据所占用的连接的数量最多不超过该热点数据的标识信息对应的虚拟资源组的最大连接数,而不会占用数据库连接池中的所有连接,因此可有效节省数据库连接池中的资源,可达到与本申请实施例提供的第一种建立连接的方法相同的效果。
[0058]进一步的,当APP通过步骤S301确定了目标数据的标识信息对应的虚拟资源组后,如果确定的虚拟资源组中的连接的数量小于针对该确定的虚拟资源组预设的最大连接数,但当前数据库连接池中没有空闲的连接,则APP可判断自身建立的与数据库的连接的数量是否小于预设的最大数量。若小于,则建立与数据库的连接,并通过建立的连接访问目标数据,也即,此时APP不使用数据库连接池中已经建立的与数据库的连接,而是新建一个与数据库的连接,并使用新建的连接访问目标数据。若不小于,则APP可直接返回建立连接失败消息,也即,本次访问目标数据失败。
[0059]更进一步的,在步骤S304中,如果确定的虚拟资源组中的连接的数量不小于针对所述确定的虚拟资源组预设的最大连接数,则APP在等待该确定的虚拟资源组中的连接的数量小于最大连接数时,还可对等待的时间长度进行监控。如果等待的时间未达到预设时间长度,且该确定的虚拟资源组中的连接的数量已经小于最大连接数,则将数据库连接池中空闲的连接划分到该确定的虚拟资源组中,并进行后续步骤。如果等待的时间已经达到预设时间长度,但该确定的虚拟资源组中的连接的数量仍未小于最大连接数,则可返回建立连接失败消息,本次访问目标数据失败。
[0060]以上为本申请实施例提供的建立连接的方法,基于同样的思路,本申请实施例还提供两种建立连接的装置,如图5和图6所示。
[0061]图5为本申请实施例提供的第一种建立连接的装置结构示意图,具体包括:
[0062]确定模块501,用于根据目标数据的标识信息,以及预设的标识信息与数据库连接池中各队列的对应关系,确定所述数据库连接池中与所述目标数据的标识信息对应的队列,其中,预先将所述数据库连接池中的连接划分为至少两个队列,每个队列中包含至少一个连接;
[0063]连接模块502,用于通过所述确定模块501确定的队列中空闲的连接访问数据库中的所述目标数据。
[0064]所述连接模块502还用于,当确定的队列中不存在空闲的连接,且当前建立的与所述数据库的连接的数量小于预设的最大数量时,建立与所述数据库的连接,并通过建立的连接访问所述目标数据;当确定的队列中不存在空闲的连接,且当前建立的与所述数据库的连接的数量不小于预设的最大数量时,返回建立连接失败消息。
[0065]所述连接模块502还用于,当确定的队列中不存在空闲的连接时,等待所述确定的队列中的连接被释放;如果等待的时间长度不超过预设时间长度,且所述确定的队列中的连接被释放,则通过所述确定的队列中释放的连接访问数据库的所述目标数据;如果等待的时间长度达到预设时间长度,且所述确定的队列中的连接未被释放,则返回建立连接失败消息。
[0066]具体的上述第一种建立连接的装置对应于本申请实施例提供的第一种建立连接的方法。
[0067]图6为本申请实施例提供的第二种建立连接的装置结构示意图,具体包括:
[0068]确定模块601,用于根据目标数据的标识信息,以及预设的标识信息与各虚拟资源组的对应关系,确定所述目标数据的标识信息对应的虚拟资源组;
[0069]判断模块602,用于判断所述确定模块601确定的虚拟资源组中的连接的数量是否小于针对所述确定的虚拟资源组预设的最大连接数;
[0070]连接模块603,用于当所述判断模块602的判断结果为是时,将所述数据库连接池中空闲的连接划分到所述确定的虚拟资源组中,通过所述确定的虚拟资源组中空闲的连接访问数据库中的所述目标数据,并在访问所述目标数据后将占用的连接释放到所述数据库连接池中;当所述判断模块602的判断结果为否时,等待至所述确定的虚拟资源组中的连接的数量小于所述最大连接数时,将所述数据库连接池中空闲的连接划分到所述确定的虚拟资源组中,通过所述确定的虚拟资源组中空闲的连接访问数据库中的所述目标数据,并在访问所述目标数据后将占用的连接释放到所述数据库连接池中。
[0071]所述连接模块603还用于,当所述判断模块602的判断结果为是、且所述数据库连接池中没有空闲的连接、且当前建立的与所述数据库的连接的数量小于预设的最大数量时,建立与所述数据库的连接,并通过建立的连接访问所述目标数据;当所述判断模块602的判断结果为是、且所述数据库连接池中没有空闲的连接、且当前建立的与所述数据库的连接的数量不小于预设的最大数量时,返回建立连接失败消息。
[0072]所述连接模块603还用于,当所述判断模块602的判断结果为否时,将所述数据库连接池中空闲的连接划分到所述确定的虚拟资源组中之前,确定等待所述确定的虚拟资源组中的连接的数量小于所述最大连接数的时间未达到预设时间长度。
[0073]具体的上述第二种建立连接的装置对应于本申请实施例提供的第二种建立连接的方法。
[0074]本申请实施例提供一种建立连接的方法及装置,该方法预先将APP的数据库连接池中的连接划分为至少两个队列,每个队列中包含至少一个连接,在访问目标数据时,APP根据目标数据的标识信息以及预设的标识信息与各队列的对应关系,确定该目标数据的标识信息对应的队列,并通过确定的队列中空闲的连接访问数据库中的该目标数据。通过上述方法,即使APP同时占用多个连接访问热点数据,APP最多也只能占用该热点数据的标识信息对应的队列中的所有连接,而不会占用数据库连接池中的所有连接,因此可有效节省数据库连接池中的资源。
[0075]本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0076]在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
[0077]内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
[0078]计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0079]本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0080]这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0081]这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0082]尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
[0083]显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请实施例的精神和范围。这样,倘若本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
【权利要求】
1.一种建立连接的方法,其特征在于,包括: 根据目标数据的标识信息,以及预设的标识信息与数据库连接池中各队列的对应关系,确定所述数据库连接池中与所述目标数据的标识信息对应的队列,其中,预先将所述数据库连接池中的连接划分为至少两个队列,每个队列中包含至少一个连接; 通过确定的队列中空闲的连接访问数据库中的所述目标数据。
2.如权利要求1所述的方法,其特征在于,所述方法还包括: 当确定的队列中不存在空闲的连接,且当前建立的与所述数据库的连接的数量小于预设的最大数量时,建立与所述数据库的连接,并通过建立的连接访问所述目标数据; 当确定的队列中不存在空闲的连接,且当前建立的与所述数据库的连接的数量不小于预设的最大数量时,返回建立连接失败消息。
3.如权利要求1所述的方法,其特征在于,所述方法还包括: 当确定的队列中不存在空闲的连接时,等待所述确定的队列中的连接被释放; 如果等待的时间长度不超过预设时间长度,且所述确定的队列中的连接被释放,则通过所述确定的队列中释放的连接访问数据库的所述目标数据; 如果等待的时间长度达到预设时间长度,且所述确定的队列中的连接未被释放,则返回建立连接失败消息。
4.一种建立连接的方法,其特征在于,包括: 根据目标数据的标识信息,以及预设的标识信息与各虚拟资源组的对应关系,确定所述目标数据的标识信息对应的虚拟资源组; 判断确定的虚拟资源组中的连接的数量是否小于针对所述确定的虚拟资源组预设的最大连接数; 若是,则将所述数据库连接池中空闲的连接划分到所述确定的虚拟资源组中,通过所述确定的虚拟资源组中空闲的连接访问数据库中的所述目标数据,并在访问所述目标数据后将占用的连接释放到所述数据库连接池中; 否则,等待至所述确定的虚拟资源组中的连接的数量小于所述最大连接数时,将所述数据库连接池中空闲的连接划分到所述确定的虚拟资源组中,通过所述确定的虚拟资源组中空闲的连接访问数据库中的所述目标数据,并在访问所述目标数据后将占用的连接释放到所述数据库连接池中。
5.如权利要求4所述的方法,其特征在于,所述方法还包括: 当所述确定的虚拟资源组中的连接的数量小于针对所述确定的虚拟资源组预设的最大连接数、且所述数据库连接池中没有空闲的连接、且当前建立的与所述数据库的连接的数量小于预设的最大数量时,建立与所述数据库的连接,并通过建立的连接访问所述目标数据; 当所述确定的虚拟资源组中的连接的数量小于针对所述确定的虚拟资源组预设的最大连接数、且所述数据库连接池中没有空闲的连接、且当前建立的与所述数据库的连接的数量不小于预设的最大数量时,返回建立连接失败消息。
6.如权利要求4所述的方法,其特征在于,当所述确定的虚拟资源组中的连接的数量不小于针对所述确定的虚拟资源组预设的最大连接数时,将所述数据库连接池中空闲的连接划分到所述确定的虚拟资源组中之前,所述方法还包括: 确定等待所述确定的虚拟资源组中的连接的数量小于所述最大连接数的时间未达到预设时间长度。
7.一种建立连接的装置,其特征在于,包括: 确定模块,用于根据目标数据的标识信息,以及预设的标识信息与数据库连接池中各队列的对应关系,确定所述数据库连接池中与所述目标数据的标识信息对应的队列,其中,预先将所述数据库连接池中的连接划分为至少两个队列,每个队列中包含至少一个连接; 连接模块,用于通过所述确定模块确定的队列中空闲的连接访问数据库中的所述目标数据。
8.如权利要求7所述的装置,其特征在于,所述连接模块还用于,当确定的队列中不存在空闲的连接,且当前建立的与所述数据库的连接的数量小于预设的最大数量时,建立与所述数据库的连接,并通过建立的连接访问所述目标数据;当确定的队列中不存在空闲的连接,且当前建立的与所述数据库的连接的数量不小于预设的最大数量时,返回建立连接失败消息。
9.如权利要求7所述的装置,其特征在于,所述连接模块还用于,当确定的队列中不存在空闲的连接时,等待所述确定的队列中的连接被释放;如果等待的时间长度不超过预设时间长度,且所述确定的队列中的连接被释放,则通过所述确定的队列中释放的连接访问数据库的所述目标数据;如果等待的时间长度达到预设时间长度,且所述确定的队列中的连接未被释放,则返回建立连接失败消息。
10.一种建立连接的装置,其特征在于,包括: 确定模块,用于根据目标数据的标识信息,以及预设的标识信息与各虚拟资源组的对应关系,确定所述目标数据的标识信息对应的虚拟资源组; 判断模块,用于判断所述确定模块确定的虚拟资源组中的连接的数量是否小于针对所述确定的虚拟资源组预设的最大连接数; 连接模块,用于当所述判断模块的判断结果为是时,将所述数据库连接池中空闲的连接划分到所述确定的虚拟资源组中,通过所述确定的虚拟资源组中空闲的连接访问数据库中的所述目标数据,并在访问所述目标数据后将占用的连接释放到所述数据库连接池中;当所述判断模块的判断结果为否时,等待至所述确定的虚拟资源组中的连接的数量小于所述最大连接数时,将所述数据库连接池中空闲的连接划分到所述确定的虚拟资源组中,通过所述确定的虚拟资源组中空闲的连接访问数据库中的所述目标数据,并在访问所述目标数据后将占用的连接释放到所述数据库连接池中。
11.如权利要求10所述的装置,其特征在于,所述连接模块还用于,当所述判断模块的判断结果为是、且所述数据库连接池中没有空闲的连接、且当前建立的与所述数据库的连接的数量小于预设的最大数量时,建立与所述数据库的连接,并通过建立的连接访问所述目标数据;当所述判断模块的判断结果为是、且所述数据库连接池中没有空闲的连接、且当前建立的与所述数据库的连接的数量不小于预设的最大数量时,返回建立连接失败消息。
12.如权利要求10所述的装置,其特征在于,所述连接模块还用于,当所述判断模块的判断结果为否时,将所述数据库连接池中空闲的连接划分到所述确定的虚拟资源组中之前,确定等待所述确定的虚拟资源组中的连接的数量小于所述最大连接数的时间未达到预设时间长度。
【文档编号】G06F17/30GK104281587SQ201310277055
【公开日】2015年1月14日 申请日期:2013年7月3日 优先权日:2013年7月3日
【发明者】楼方鑫 申请人:阿里巴巴集团控股有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1