一種建立連接的方法及裝置制造方法
【專利摘要】本申請(qǐng)公開(kāi)了一種建立連接的方法及裝置,用以解決現(xiàn)有技術(shù)中APP在訪問(wèn)熱點(diǎn)數(shù)據(jù)時(shí)可能會(huì)占用數(shù)據(jù)庫(kù)連接池中的所有連接,浪費(fèi)數(shù)據(jù)庫(kù)連接池的資源的問(wèn)題。該方法預(yù)先將APP的數(shù)據(jù)庫(kù)連接池中的連接劃分為至少兩個(gè)隊(duì)列,每個(gè)隊(duì)列中包含至少一個(gè)連接,在訪問(wèn)目標(biāo)數(shù)據(jù)時(shí),APP根據(jù)目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息以及預(yù)設(shè)的標(biāo)識(shí)信息與各隊(duì)列的對(duì)應(yīng)關(guān)系,確定該目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息對(duì)應(yīng)的隊(duì)列,并通過(guò)確定的隊(duì)列中空閑的連接訪問(wèn)數(shù)據(jù)庫(kù)中的該目標(biāo)數(shù)據(jù)。通過(guò)上述方法,即使APP同時(shí)占用多個(gè)連接訪問(wèn)熱點(diǎn)數(shù)據(jù),APP最多也只能占用該熱點(diǎn)數(shù)據(jù)的標(biāo)識(shí)信息對(duì)應(yīng)的隊(duì)列中的所有連接,而不會(huì)占用數(shù)據(jù)庫(kù)連接池中的所有連接,因此可有效節(jié)省數(shù)據(jù)庫(kù)連接池中的資源。
【專利說(shuō)明】一種建立連接的方法及裝置
【技術(shù)領(lǐng)域】
[0001]本申請(qǐng)涉及通信【技術(shù)領(lǐng)域】,尤其涉及一種建立連接的方法及裝置。
【背景技術(shù)】
[0002]目前,應(yīng)用(Applicat1n,APP)與數(shù)據(jù)庫(kù)之間的信息交互已經(jīng)普遍存在于各種應(yīng)用場(chǎng)景中。
[0003]當(dāng)APP與數(shù)據(jù)庫(kù)進(jìn)行信息交互時(shí),APP首先要與數(shù)據(jù)庫(kù)建立連接,再基于建立的連接與數(shù)據(jù)庫(kù)進(jìn)行信息交互。但是,由于數(shù)據(jù)庫(kù)與APP建立連接的過(guò)程比較繁瑣,建立連接所需的時(shí)間較長(zhǎng),而且也需要耗費(fèi)數(shù)據(jù)庫(kù)較多的資源,因此,在現(xiàn)有技術(shù)中,通常在APP中預(yù)設(shè)數(shù)據(jù)庫(kù)連接池,APP可通過(guò)該數(shù)據(jù)庫(kù)連接池與數(shù)據(jù)庫(kù)建立連接。
[0004]具體的,在現(xiàn)有技術(shù)中,對(duì)于一個(gè)APP來(lái)說(shuō),可預(yù)先建立該APP與數(shù)據(jù)庫(kù)的一定數(shù)量(如10個(gè))的連接,并將已經(jīng)建立的這一定數(shù)量的連接保存在數(shù)據(jù)庫(kù)連接池中,當(dāng)APP與數(shù)據(jù)庫(kù)連接時(shí),則可直接采用數(shù)據(jù)庫(kù)連接池中空閑的連接與數(shù)據(jù)庫(kù)進(jìn)行信息交互。
[0005]但是,當(dāng)數(shù)據(jù)庫(kù)中的某個(gè)數(shù)據(jù)是訪問(wèn)量較高的熱點(diǎn)數(shù)據(jù)時(shí),APP很可能會(huì)用掉數(shù)據(jù)庫(kù)連接池中的所有連接用以訪問(wèn)數(shù)據(jù)庫(kù)中的該熱點(diǎn)數(shù)據(jù),導(dǎo)致APP要訪問(wèn)其他非熱點(diǎn)數(shù)據(jù)時(shí),數(shù)據(jù)庫(kù)連接池中沒(méi)有空閑的連接可用。而且,為了保證數(shù)據(jù)庫(kù)中的數(shù)據(jù)的準(zhǔn)確性,當(dāng)APP通過(guò)多個(gè)連接對(duì)數(shù)據(jù)庫(kù)中的同一個(gè)數(shù)據(jù)進(jìn)行多次更新操作時(shí),數(shù)據(jù)庫(kù)對(duì)于這多個(gè)更新操作是串行執(zhí)行的,因此,即使APP同時(shí)占用了數(shù)據(jù)庫(kù)連接池中的所有連接對(duì)數(shù)據(jù)庫(kù)中的同一個(gè)熱點(diǎn)數(shù)據(jù)進(jìn)行更新,數(shù)據(jù)庫(kù)對(duì)著多個(gè)更新操作也是串行執(zhí)行的,這顯然浪費(fèi)了數(shù)據(jù)庫(kù)連接池中的資源。
【發(fā)明內(nèi)容】
[0006]本申請(qǐng)實(shí)施例提供一種建立連接的方法及裝置,用以解決現(xiàn)有技術(shù)中APP在訪問(wèn)熱點(diǎn)數(shù)據(jù)時(shí)可能會(huì)占用數(shù)據(jù)庫(kù)連接池中的所有連接,浪費(fèi)數(shù)據(jù)庫(kù)連接池的資源的問(wèn)題。
[0007]本申請(qǐng)實(shí)施例提供的一種建立連接的方法,包括:
[0008]根據(jù)目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息,以及預(yù)設(shè)的標(biāo)識(shí)信息與數(shù)據(jù)庫(kù)連接池中各隊(duì)列的對(duì)應(yīng)關(guān)系,確定所述數(shù)據(jù)庫(kù)連接池中與所述目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息對(duì)應(yīng)的隊(duì)列,其中,預(yù)先將所述數(shù)據(jù)庫(kù)連接池中的連接劃分為至少兩個(gè)隊(duì)列,每個(gè)隊(duì)列中包含至少一個(gè)連接;
[0009]通過(guò)確定的隊(duì)列中空閑的連接訪問(wèn)數(shù)據(jù)庫(kù)中的所述目標(biāo)數(shù)據(jù)。
[0010]本申請(qǐng)實(shí)施例提供的一種建立連接的方法,包括:
[0011]根據(jù)目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息,以及預(yù)設(shè)的標(biāo)識(shí)信息與各虛擬資源組的對(duì)應(yīng)關(guān)系,確定所述目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息對(duì)應(yīng)的虛擬資源組;
[0012]判斷確定的虛擬資源組中的連接的數(shù)量是否小于針對(duì)所述確定的虛擬資源組預(yù)設(shè)的最大連接數(shù);
[0013]若是,則將所述數(shù)據(jù)庫(kù)連接池中空閑的連接劃分到所述確定的虛擬資源組中,通過(guò)所述確定的虛擬資源組中空閑的連接訪問(wèn)數(shù)據(jù)庫(kù)中的所述目標(biāo)數(shù)據(jù),并在訪問(wèn)所述目標(biāo)數(shù)據(jù)后將占用的連接釋放到所述數(shù)據(jù)庫(kù)連接池中;
[0014]否則,等待至所述確定的虛擬資源組中的連接的數(shù)量小于所述最大連接數(shù)時(shí),將所述數(shù)據(jù)庫(kù)連接池中空閑的連接劃分到所述確定的虛擬資源組中,通過(guò)所述確定的虛擬資源組中空閑的連接訪問(wèn)數(shù)據(jù)庫(kù)中的所述目標(biāo)數(shù)據(jù),并在訪問(wèn)所述目標(biāo)數(shù)據(jù)后將占用的連接釋放到所述數(shù)據(jù)庫(kù)連接池中。
[0015]本申請(qǐng)實(shí)施例提供的一種建立連接的裝置,包括:
[0016]確定模塊,用于根據(jù)目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息,以及預(yù)設(shè)的標(biāo)識(shí)信息與數(shù)據(jù)庫(kù)連接池中各隊(duì)列的對(duì)應(yīng)關(guān)系,確定所述數(shù)據(jù)庫(kù)連接池中與所述目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息對(duì)應(yīng)的隊(duì)列,其中,預(yù)先將所述數(shù)據(jù)庫(kù)連接池中的連接劃分為至少兩個(gè)隊(duì)列,每個(gè)隊(duì)列中包含至少一個(gè)連接;
[0017]連接模塊,用于通過(guò)所述確定模塊確定的隊(duì)列中空閑的連接訪問(wèn)數(shù)據(jù)庫(kù)中的所述目標(biāo)數(shù)據(jù)。
[0018]本申請(qǐng)實(shí)施例提供的一種建立連接的裝置,包括:
[0019]確定模塊,用于根據(jù)目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息,以及預(yù)設(shè)的標(biāo)識(shí)信息與各虛擬資源組的對(duì)應(yīng)關(guān)系,確定所述目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息對(duì)應(yīng)的虛擬資源組;
[0020]判斷模塊,用于判斷所述確定模塊確定的虛擬資源組中的連接的數(shù)量是否小于針對(duì)所述確定的虛擬資源組預(yù)設(shè)的最大連接數(shù);
[0021]連接模塊,用于當(dāng)所述判斷模塊的判斷結(jié)果為是時(shí),將所述數(shù)據(jù)庫(kù)連接池中空閑的連接劃分到所述確定的虛擬資源組中,通過(guò)所述確定的虛擬資源組中空閑的連接訪問(wèn)數(shù)據(jù)庫(kù)中的所述目標(biāo)數(shù)據(jù),并在訪問(wèn)所述目標(biāo)數(shù)據(jù)后將占用的連接釋放到所述數(shù)據(jù)庫(kù)連接池中;當(dāng)所述判斷模塊的判斷結(jié)果為否時(shí),等待至所述確定的虛擬資源組中的連接的數(shù)量小于所述最大連接數(shù)時(shí),將所述數(shù)據(jù)庫(kù)連接池中空閑的連接劃分到所述確定的虛擬資源組中,通過(guò)所述確定的虛擬資源組中空閑的連接訪問(wèn)數(shù)據(jù)庫(kù)中的所述目標(biāo)數(shù)據(jù),并在訪問(wèn)所述目標(biāo)數(shù)據(jù)后將占用的連接釋放到所述數(shù)據(jù)庫(kù)連接池中。
[0022]本申請(qǐng)實(shí)施例提供一種建立連接的方法及裝置,該方法預(yù)先將APP的數(shù)據(jù)庫(kù)連接池中的連接劃分為至少兩個(gè)隊(duì)列,每個(gè)隊(duì)列中包含至少一個(gè)連接,在訪問(wèn)目標(biāo)數(shù)據(jù)時(shí),APP根據(jù)目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息以及預(yù)設(shè)的標(biāo)識(shí)信息與各隊(duì)列的對(duì)應(yīng)關(guān)系,確定該目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息對(duì)應(yīng)的隊(duì)列,并通過(guò)確定的隊(duì)列中空閑的連接訪問(wèn)數(shù)據(jù)庫(kù)中的該目標(biāo)數(shù)據(jù)。通過(guò)上述方法,即使APP同時(shí)占用多個(gè)連接訪問(wèn)熱點(diǎn)數(shù)據(jù),APP最多也只能占用該熱點(diǎn)數(shù)據(jù)的標(biāo)識(shí)信息對(duì)應(yīng)的隊(duì)列中的所有連接,而不會(huì)占用數(shù)據(jù)庫(kù)連接池中的所有連接,因此可有效節(jié)省數(shù)據(jù)庫(kù)連接池中的資源。
【專利附圖】
【附圖說(shuō)明】
[0023]圖1為本申請(qǐng)實(shí)施例提供的第一種建立連接的過(guò)程;
[0024]圖2為本申請(qǐng)實(shí)施例提供的將數(shù)據(jù)庫(kù)連接池中的連接劃分為多個(gè)隊(duì)列的示意圖;
[0025]圖3為本申請(qǐng)實(shí)施例提供的第二種建立連接的過(guò)程;
[0026]圖4為本申請(qǐng)實(shí)施例提供的數(shù)據(jù)庫(kù)連接池中的各虛擬資源組示意圖;
[0027]圖5為本申請(qǐng)實(shí)施例提供的第一種建立連接的裝置結(jié)構(gòu)示意圖;
[0028]圖6為本申請(qǐng)實(shí)施例提供的第二種建立連接的裝置結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0029]本申請(qǐng)實(shí)施例中預(yù)先將APP的數(shù)據(jù)庫(kù)連接池中的連接劃分為至少兩個(gè)隊(duì)列,每個(gè)隊(duì)列中包含至少一個(gè)連接,并預(yù)設(shè)數(shù)據(jù)庫(kù)中各數(shù)據(jù)的標(biāo)識(shí)信息與各隊(duì)列的對(duì)應(yīng)關(guān)系,在APP訪問(wèn)目標(biāo)數(shù)據(jù)時(shí),可根據(jù)目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息確定對(duì)應(yīng)的隊(duì)列,并通過(guò)確定的隊(duì)列中空閑的連接訪問(wèn)目標(biāo)數(shù)據(jù)。通過(guò)上述方法,即使APP同時(shí)通過(guò)多個(gè)連接訪問(wèn)同一個(gè)數(shù)據(jù),APP也不會(huì)將數(shù)據(jù)庫(kù)連接池中的所有連接都占用,因此可避免浪費(fèi)數(shù)據(jù)庫(kù)連接池中的資源。
[0030]下面結(jié)合說(shuō)明書(shū)附圖,對(duì)本申請(qǐng)實(shí)施例進(jìn)行詳細(xì)描述。
[0031]圖1為本申請(qǐng)實(shí)施例提供的第一種建立連接的過(guò)程,具體包括以下步驟:
[0032]SlOl:根據(jù)目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息,以及預(yù)設(shè)的標(biāo)識(shí)信息與數(shù)據(jù)庫(kù)連接池中各隊(duì)列的對(duì)應(yīng)關(guān)系,確定數(shù)據(jù)庫(kù)連接池中與目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息對(duì)應(yīng)的隊(duì)列。
[0033]在本申請(qǐng)實(shí)施例中,可針對(duì)一個(gè)APP,預(yù)先將該APP的數(shù)據(jù)庫(kù)連接池中的連接劃分為至少兩個(gè)隊(duì)列,每個(gè)隊(duì)列中包含至少一個(gè)連接,并預(yù)設(shè)數(shù)據(jù)庫(kù)中各數(shù)據(jù)的標(biāo)識(shí)信息與各隊(duì)列的對(duì)應(yīng)關(guān)系,如圖2所不。
[0034]圖2為本申請(qǐng)實(shí)施例提供的將數(shù)據(jù)庫(kù)連接池中的連接劃分為多個(gè)隊(duì)列的示意圖。假設(shè)APP的數(shù)據(jù)庫(kù)連接池中共包括10個(gè)連接,這10個(gè)連接是預(yù)先建立的APP與數(shù)據(jù)庫(kù)的連接,則在圖2中,將這10個(gè)連接劃分為4個(gè)隊(duì)列,分別為隊(duì)列1、隊(duì)列2、隊(duì)列3、隊(duì)列4。其中,隊(duì)列I中有4個(gè)連接,隊(duì)列2、隊(duì)列3、隊(duì)列4中各有2個(gè)連接。
[0035]在預(yù)設(shè)數(shù)據(jù)庫(kù)中各數(shù)據(jù)的標(biāo)識(shí)信息與數(shù)據(jù)庫(kù)連接池中各隊(duì)列的對(duì)應(yīng)關(guān)系時(shí),可將熱點(diǎn)數(shù)據(jù)的標(biāo)識(shí)信息對(duì)應(yīng)的隊(duì)列設(shè)置為包含連接的數(shù)量最多的隊(duì)列,非熱點(diǎn)數(shù)據(jù)的標(biāo)識(shí)信息對(duì)應(yīng)的隊(duì)列設(shè)置為其他隊(duì)列。其中,數(shù)據(jù)的標(biāo)識(shí)信息包括但不限于數(shù)據(jù)的ID等。
[0036]例如,在圖2中,可將隊(duì)列I設(shè)置為熱點(diǎn)數(shù)據(jù)的標(biāo)識(shí)信息對(duì)應(yīng)的隊(duì)列,將隊(duì)列2、隊(duì)列3、隊(duì)列4設(shè)置為非熱點(diǎn)數(shù)據(jù)的標(biāo)識(shí)信息對(duì)應(yīng)的隊(duì)列。
[0037]S102:通過(guò)確定的隊(duì)列中空閑的連接訪問(wèn)數(shù)據(jù)庫(kù)中的目標(biāo)數(shù)據(jù)。
[0038]APP確定了要訪問(wèn)的目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息對(duì)應(yīng)的隊(duì)列后,則可通過(guò)確定的隊(duì)列中空閑的連接訪問(wèn)數(shù)據(jù)庫(kù)中的目標(biāo)數(shù)據(jù)。
[0039]繼續(xù)沿用上例,假設(shè)APP要訪問(wèn)的目標(biāo)數(shù)據(jù)為熱點(diǎn)數(shù)據(jù),數(shù)據(jù)庫(kù)連接池中各隊(duì)列的劃分如圖2所示,已經(jīng)預(yù)設(shè)了熱點(diǎn)數(shù)據(jù)的標(biāo)識(shí)信息對(duì)應(yīng)的隊(duì)列為隊(duì)列1,則步驟SlOl中APP確定該目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息對(duì)應(yīng)的隊(duì)列為隊(duì)列1,步驟S102中APP可通過(guò)隊(duì)列I中空閑的連接訪問(wèn)該目標(biāo)數(shù)據(jù)。
[0040]通過(guò)上述方法,即使APP訪問(wèn)的是熱點(diǎn)數(shù)據(jù),APP最多也只能占用熱點(diǎn)數(shù)據(jù)的標(biāo)識(shí)信息對(duì)應(yīng)的隊(duì)列中的所有連接,而不會(huì)占用其他隊(duì)列的連接,也就不會(huì)將數(shù)據(jù)庫(kù)連接池中的所有連接都占滿,因此可有效避免浪費(fèi)數(shù)據(jù)庫(kù)連接池中的資源。
[0041]進(jìn)一步的,當(dāng)APP通過(guò)上述步驟SlOl確定了目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息對(duì)應(yīng)的隊(duì)列后,如果確定的隊(duì)列中不存在空閑的連接,則可判斷當(dāng)前建立的與數(shù)據(jù)庫(kù)的連接的數(shù)量是否小于預(yù)設(shè)的最大數(shù)量。如果當(dāng)前建立的與數(shù)據(jù)庫(kù)的連接的數(shù)量小于預(yù)設(shè)的最大數(shù)量,則建立與數(shù)據(jù)庫(kù)的連接,并通過(guò)建立的連接訪問(wèn)目標(biāo)數(shù)據(jù),也即,此時(shí)APP不使用數(shù)據(jù)庫(kù)連接池中已經(jīng)建立的與數(shù)據(jù)庫(kù)的連接訪問(wèn)目標(biāo)數(shù)據(jù),而是新建一個(gè)與數(shù)據(jù)庫(kù)的連接,并通過(guò)新建的該連接訪問(wèn)目標(biāo)數(shù)據(jù)。如果當(dāng)前建立的與數(shù)據(jù)庫(kù)的連接的數(shù)量不小于預(yù)設(shè)的最大數(shù)量,則可直接返回建立失敗消息,也即,本次訪問(wèn)目標(biāo)數(shù)據(jù)失敗。
[0042]繼續(xù)以圖2為例進(jìn)行說(shuō)明,假設(shè)APP確定目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息對(duì)應(yīng)的隊(duì)列為隊(duì)列1,但此時(shí)隊(duì)列I中并無(wú)空閑的連接,則APP判斷自身當(dāng)前與數(shù)據(jù)庫(kù)建立的連接的數(shù)量是否小于預(yù)設(shè)的最大數(shù)量,若是,則APP新建一個(gè)與數(shù)據(jù)庫(kù)的連接(不使用隊(duì)列2、隊(duì)列3、隊(duì)列4中的任何一個(gè)空閑連接),并通過(guò)新建的連接訪問(wèn)目標(biāo)數(shù)據(jù),否則,直接返回建立連接失敗消息。
[0043]除了采用上述處理方法以外,當(dāng)APP通過(guò)上述步驟S1I確定的目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息對(duì)應(yīng)的隊(duì)列中不存在空閑的連接時(shí),還可等待確定的隊(duì)列中的連接被釋放,并監(jiān)控等待時(shí)間。如果等待的時(shí)間長(zhǎng)度不超過(guò)預(yù)設(shè)時(shí)間長(zhǎng)度,且確定的隊(duì)列中的連接被釋放,則可通過(guò)確定的隊(duì)列中釋放的連接訪問(wèn)目標(biāo)數(shù)據(jù)。如果等待的時(shí)間長(zhǎng)度已經(jīng)達(dá)到預(yù)設(shè)時(shí)間長(zhǎng)度,但確定的隊(duì)列中的連接仍未被釋放,則返回建立連接失敗消息,也即,本次訪問(wèn)目標(biāo)數(shù)據(jù)失敗。
[0044]繼續(xù)以圖2為例進(jìn)行說(shuō)明,假設(shè)APP確定目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息對(duì)應(yīng)的隊(duì)列為隊(duì)列1,但此時(shí)隊(duì)列I中并無(wú)空閑的連接,則APP等待隊(duì)列I中的連接被釋放,如果等待的時(shí)間長(zhǎng)度不超過(guò)預(yù)設(shè)時(shí)間長(zhǎng)度,且隊(duì)列I中的某個(gè)連接被釋放,則通過(guò)隊(duì)列I中被釋放的連接訪問(wèn)目標(biāo)數(shù)據(jù),如果等待的時(shí)間長(zhǎng)度已經(jīng)達(dá)到預(yù)設(shè)時(shí)間長(zhǎng)度,但隊(duì)列I中仍沒(méi)有連接被釋放,則返回建立連接失敗消息。
[0045]以上為本申請(qǐng)實(shí)施例提供的第一種建立連接的方法,在上述第一種建立連接的方法中,數(shù)據(jù)庫(kù)連接池中的各連接一旦劃分成多個(gè)隊(duì)列,則一個(gè)隊(duì)列中的連接就不能被其他隊(duì)列共享,實(shí)現(xiàn)了各連接的嚴(yán)格隔離。下面說(shuō)明本申請(qǐng)實(shí)施例提供的第二種建立連接的方法,如圖3所示。
[0046]圖3為本申請(qǐng)實(shí)施例提供的第二種建立連接的過(guò)程,具體包括以下步驟:
[0047]S301:根據(jù)目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息,以及預(yù)設(shè)的標(biāo)識(shí)信息與各虛擬資源組的對(duì)應(yīng)關(guān)系,確定目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息對(duì)應(yīng)的虛擬資源組。
[0048]S302:判斷確定的虛擬資源組中的連接的數(shù)量是否小于針對(duì)該確定的虛擬資源組預(yù)設(shè)的最大連接數(shù),若是,則執(zhí)行步驟S303,否則執(zhí)行步驟S304。
[0049]S303:將數(shù)據(jù)庫(kù)連接池中空閑的連接劃分到該確定的虛擬資源組中,通過(guò)該確定的虛擬資源組中空閑的連接訪問(wèn)數(shù)據(jù)庫(kù)中的目標(biāo)數(shù)據(jù),并在訪問(wèn)目標(biāo)數(shù)據(jù)后將占用的連接釋放到數(shù)據(jù)庫(kù)連接池中。
[0050]如果確定的虛擬資源組中的連接的數(shù)量小于針對(duì)該確定的虛擬資源組預(yù)設(shè)的最大連接數(shù),則APP將數(shù)據(jù)庫(kù)連接池
[0051]S304:等待至該確定的虛擬資源組中的連接的數(shù)量小于最大連接數(shù)時(shí),將數(shù)據(jù)庫(kù)連接池中空閑的連接劃分到該確定的虛擬資源組中,通過(guò)該確定的虛擬資源組中空閑的連接訪問(wèn)數(shù)據(jù)庫(kù)中的目標(biāo)數(shù)據(jù),并在訪問(wèn)目標(biāo)數(shù)據(jù)后將占用的連接釋放到數(shù)據(jù)庫(kù)連接池中。
[0052]在本申請(qǐng)實(shí)施例中,可針對(duì)一個(gè)APP,在該APP的數(shù)據(jù)庫(kù)連接池中預(yù)設(shè)至少兩個(gè)虛擬資源組,針對(duì)每個(gè)虛擬資源組預(yù)設(shè)相應(yīng)的最大連接數(shù),針對(duì)一個(gè)虛擬資源組預(yù)設(shè)的最大連接數(shù)小于數(shù)據(jù)庫(kù)連接池中的連接的數(shù)量,并預(yù)設(shè)數(shù)據(jù)庫(kù)中的各數(shù)據(jù)的標(biāo)識(shí)信息與各虛擬資源組的對(duì)應(yīng)關(guān)系。其中,數(shù)據(jù)的標(biāo)識(shí)信息包括但不限于數(shù)據(jù)的ID等,如圖4所示。
[0053]圖4為本申請(qǐng)實(shí)施例提供的數(shù)據(jù)庫(kù)連接池中的各虛擬資源組示意圖,在圖4中,對(duì)于一個(gè)虛擬資源組而言,當(dāng)APP未訪問(wèn)標(biāo)識(shí)信息為該虛擬資源組對(duì)應(yīng)的標(biāo)識(shí)信息的數(shù)據(jù)時(shí),數(shù)據(jù)庫(kù)連接池中的連接不會(huì)被劃分到該虛擬資源組中,而當(dāng)APP訪問(wèn)標(biāo)識(shí)信息為該虛擬資源組對(duì)應(yīng)的標(biāo)識(shí)信息的數(shù)據(jù)時(shí),數(shù)據(jù)庫(kù)連接池中的連接則會(huì)被劃分到該虛擬資源組中,以供APP訪問(wèn)該數(shù)據(jù)使用,其中,劃分到該虛擬資源組中的連接最多不超過(guò)針對(duì)該虛擬資源組預(yù)設(shè)的最大連接數(shù)。當(dāng)APP訪問(wèn)數(shù)據(jù)結(jié)束后,所使用的該虛擬資源組中的連接會(huì)被重新釋放到數(shù)據(jù)庫(kù)連接池中。
[0054]在圖4中,數(shù)據(jù)庫(kù)連接池中共有10個(gè)連接,在數(shù)據(jù)庫(kù)連接池中設(shè)置了 4個(gè)虛擬資源組,分別為資源組1、資源組2、資源組3、資源組4。其中,針對(duì)資源組I和資源組2預(yù)設(shè)的最大連接數(shù)為5、針對(duì)資源組3和資源組4預(yù)設(shè)的最大連接數(shù)為3。
[0055]由于第二種建立連接的方法不同于第一種建立連接的方法,虛擬資源組并非是將數(shù)據(jù)庫(kù)連接池中的所有連接進(jìn)行嚴(yán)格的隔離,而是當(dāng)需要數(shù)據(jù)庫(kù)連接池中的連接時(shí)(即,當(dāng)APP訪問(wèn)標(biāo)識(shí)信息為該虛擬資源組對(duì)應(yīng)的標(biāo)識(shí)信息的數(shù)據(jù)時(shí)),從數(shù)據(jù)庫(kù)連接池中取出一個(gè)連接劃入該虛擬資源組中,當(dāng)使用該連接完畢后,再將該連接從該虛擬資源組中還回?cái)?shù)據(jù)庫(kù)連接池,因此,針對(duì)各虛擬資源組預(yù)設(shè)的最大連接數(shù)之和可以大于數(shù)據(jù)庫(kù)連接池中的連接的數(shù)量,如圖4中針對(duì)各虛擬資源組預(yù)設(shè)的最大連接數(shù)之和為11,而數(shù)據(jù)庫(kù)連接池中的連接的數(shù)量為10。
[0056]繼續(xù)以圖4為例進(jìn)行說(shuō)明,假設(shè)APP要訪問(wèn)的目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息對(duì)應(yīng)的虛擬資源組為資源組1,針對(duì)資源組I預(yù)設(shè)的最大連接數(shù)為5 JUAPP判斷當(dāng)前資源組I中的連接的數(shù)量是否小于5。若是,則將數(shù)據(jù)庫(kù)連接池中一個(gè)空閑的連接劃分到資源組I中,并通過(guò)劃分到資源組I中的空閑的連接訪問(wèn)目標(biāo)數(shù)據(jù),在訪問(wèn)目標(biāo)數(shù)據(jù)后,再將所使用的連接從資源組I中釋放到數(shù)據(jù)庫(kù)連接池中。如果當(dāng)前資源組I中的連接的數(shù)量不小于5,則APP等待至資源組I中的連接的數(shù)量小于5時(shí),再將數(shù)據(jù)庫(kù)連接池中一個(gè)空閑的連接劃分到資源組I中,并通過(guò)劃分到資源組I中的空閑的連接訪問(wèn)目標(biāo)數(shù)據(jù),在訪問(wèn)目標(biāo)數(shù)據(jù)后,再將所使用的連接從資源組I中釋放到數(shù)據(jù)庫(kù)連接池中。
[0057]通過(guò)上述方法,即使APP同時(shí)占用多個(gè)連接訪問(wèn)熱點(diǎn)數(shù)據(jù),APP訪問(wèn)該熱點(diǎn)數(shù)據(jù)所占用的連接的數(shù)量最多不超過(guò)該熱點(diǎn)數(shù)據(jù)的標(biāo)識(shí)信息對(duì)應(yīng)的虛擬資源組的最大連接數(shù),而不會(huì)占用數(shù)據(jù)庫(kù)連接池中的所有連接,因此可有效節(jié)省數(shù)據(jù)庫(kù)連接池中的資源,可達(dá)到與本申請(qǐng)實(shí)施例提供的第一種建立連接的方法相同的效果。
[0058]進(jìn)一步的,當(dāng)APP通過(guò)步驟S301確定了目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息對(duì)應(yīng)的虛擬資源組后,如果確定的虛擬資源組中的連接的數(shù)量小于針對(duì)該確定的虛擬資源組預(yù)設(shè)的最大連接數(shù),但當(dāng)前數(shù)據(jù)庫(kù)連接池中沒(méi)有空閑的連接,則APP可判斷自身建立的與數(shù)據(jù)庫(kù)的連接的數(shù)量是否小于預(yù)設(shè)的最大數(shù)量。若小于,則建立與數(shù)據(jù)庫(kù)的連接,并通過(guò)建立的連接訪問(wèn)目標(biāo)數(shù)據(jù),也即,此時(shí)APP不使用數(shù)據(jù)庫(kù)連接池中已經(jīng)建立的與數(shù)據(jù)庫(kù)的連接,而是新建一個(gè)與數(shù)據(jù)庫(kù)的連接,并使用新建的連接訪問(wèn)目標(biāo)數(shù)據(jù)。若不小于,則APP可直接返回建立連接失敗消息,也即,本次訪問(wèn)目標(biāo)數(shù)據(jù)失敗。
[0059]更進(jìn)一步的,在步驟S304中,如果確定的虛擬資源組中的連接的數(shù)量不小于針對(duì)所述確定的虛擬資源組預(yù)設(shè)的最大連接數(shù),則APP在等待該確定的虛擬資源組中的連接的數(shù)量小于最大連接數(shù)時(shí),還可對(duì)等待的時(shí)間長(zhǎng)度進(jìn)行監(jiān)控。如果等待的時(shí)間未達(dá)到預(yù)設(shè)時(shí)間長(zhǎng)度,且該確定的虛擬資源組中的連接的數(shù)量已經(jīng)小于最大連接數(shù),則將數(shù)據(jù)庫(kù)連接池中空閑的連接劃分到該確定的虛擬資源組中,并進(jìn)行后續(xù)步驟。如果等待的時(shí)間已經(jīng)達(dá)到預(yù)設(shè)時(shí)間長(zhǎng)度,但該確定的虛擬資源組中的連接的數(shù)量仍未小于最大連接數(shù),則可返回建立連接失敗消息,本次訪問(wèn)目標(biāo)數(shù)據(jù)失敗。
[0060]以上為本申請(qǐng)實(shí)施例提供的建立連接的方法,基于同樣的思路,本申請(qǐng)實(shí)施例還提供兩種建立連接的裝置,如圖5和圖6所示。
[0061]圖5為本申請(qǐng)實(shí)施例提供的第一種建立連接的裝置結(jié)構(gòu)示意圖,具體包括:
[0062]確定模塊501,用于根據(jù)目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息,以及預(yù)設(shè)的標(biāo)識(shí)信息與數(shù)據(jù)庫(kù)連接池中各隊(duì)列的對(duì)應(yīng)關(guān)系,確定所述數(shù)據(jù)庫(kù)連接池中與所述目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息對(duì)應(yīng)的隊(duì)列,其中,預(yù)先將所述數(shù)據(jù)庫(kù)連接池中的連接劃分為至少兩個(gè)隊(duì)列,每個(gè)隊(duì)列中包含至少一個(gè)連接;
[0063]連接模塊502,用于通過(guò)所述確定模塊501確定的隊(duì)列中空閑的連接訪問(wèn)數(shù)據(jù)庫(kù)中的所述目標(biāo)數(shù)據(jù)。
[0064]所述連接模塊502還用于,當(dāng)確定的隊(duì)列中不存在空閑的連接,且當(dāng)前建立的與所述數(shù)據(jù)庫(kù)的連接的數(shù)量小于預(yù)設(shè)的最大數(shù)量時(shí),建立與所述數(shù)據(jù)庫(kù)的連接,并通過(guò)建立的連接訪問(wèn)所述目標(biāo)數(shù)據(jù);當(dāng)確定的隊(duì)列中不存在空閑的連接,且當(dāng)前建立的與所述數(shù)據(jù)庫(kù)的連接的數(shù)量不小于預(yù)設(shè)的最大數(shù)量時(shí),返回建立連接失敗消息。
[0065]所述連接模塊502還用于,當(dāng)確定的隊(duì)列中不存在空閑的連接時(shí),等待所述確定的隊(duì)列中的連接被釋放;如果等待的時(shí)間長(zhǎng)度不超過(guò)預(yù)設(shè)時(shí)間長(zhǎng)度,且所述確定的隊(duì)列中的連接被釋放,則通過(guò)所述確定的隊(duì)列中釋放的連接訪問(wèn)數(shù)據(jù)庫(kù)的所述目標(biāo)數(shù)據(jù);如果等待的時(shí)間長(zhǎng)度達(dá)到預(yù)設(shè)時(shí)間長(zhǎng)度,且所述確定的隊(duì)列中的連接未被釋放,則返回建立連接失敗消息。
[0066]具體的上述第一種建立連接的裝置對(duì)應(yīng)于本申請(qǐng)實(shí)施例提供的第一種建立連接的方法。
[0067]圖6為本申請(qǐng)實(shí)施例提供的第二種建立連接的裝置結(jié)構(gòu)示意圖,具體包括:
[0068]確定模塊601,用于根據(jù)目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息,以及預(yù)設(shè)的標(biāo)識(shí)信息與各虛擬資源組的對(duì)應(yīng)關(guān)系,確定所述目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息對(duì)應(yīng)的虛擬資源組;
[0069]判斷模塊602,用于判斷所述確定模塊601確定的虛擬資源組中的連接的數(shù)量是否小于針對(duì)所述確定的虛擬資源組預(yù)設(shè)的最大連接數(shù);
[0070]連接模塊603,用于當(dāng)所述判斷模塊602的判斷結(jié)果為是時(shí),將所述數(shù)據(jù)庫(kù)連接池中空閑的連接劃分到所述確定的虛擬資源組中,通過(guò)所述確定的虛擬資源組中空閑的連接訪問(wèn)數(shù)據(jù)庫(kù)中的所述目標(biāo)數(shù)據(jù),并在訪問(wèn)所述目標(biāo)數(shù)據(jù)后將占用的連接釋放到所述數(shù)據(jù)庫(kù)連接池中;當(dāng)所述判斷模塊602的判斷結(jié)果為否時(shí),等待至所述確定的虛擬資源組中的連接的數(shù)量小于所述最大連接數(shù)時(shí),將所述數(shù)據(jù)庫(kù)連接池中空閑的連接劃分到所述確定的虛擬資源組中,通過(guò)所述確定的虛擬資源組中空閑的連接訪問(wèn)數(shù)據(jù)庫(kù)中的所述目標(biāo)數(shù)據(jù),并在訪問(wèn)所述目標(biāo)數(shù)據(jù)后將占用的連接釋放到所述數(shù)據(jù)庫(kù)連接池中。
[0071]所述連接模塊603還用于,當(dāng)所述判斷模塊602的判斷結(jié)果為是、且所述數(shù)據(jù)庫(kù)連接池中沒(méi)有空閑的連接、且當(dāng)前建立的與所述數(shù)據(jù)庫(kù)的連接的數(shù)量小于預(yù)設(shè)的最大數(shù)量時(shí),建立與所述數(shù)據(jù)庫(kù)的連接,并通過(guò)建立的連接訪問(wèn)所述目標(biāo)數(shù)據(jù);當(dāng)所述判斷模塊602的判斷結(jié)果為是、且所述數(shù)據(jù)庫(kù)連接池中沒(méi)有空閑的連接、且當(dāng)前建立的與所述數(shù)據(jù)庫(kù)的連接的數(shù)量不小于預(yù)設(shè)的最大數(shù)量時(shí),返回建立連接失敗消息。
[0072]所述連接模塊603還用于,當(dāng)所述判斷模塊602的判斷結(jié)果為否時(shí),將所述數(shù)據(jù)庫(kù)連接池中空閑的連接劃分到所述確定的虛擬資源組中之前,確定等待所述確定的虛擬資源組中的連接的數(shù)量小于所述最大連接數(shù)的時(shí)間未達(dá)到預(yù)設(shè)時(shí)間長(zhǎng)度。
[0073]具體的上述第二種建立連接的裝置對(duì)應(yīng)于本申請(qǐng)實(shí)施例提供的第二種建立連接的方法。
[0074]本申請(qǐng)實(shí)施例提供一種建立連接的方法及裝置,該方法預(yù)先將APP的數(shù)據(jù)庫(kù)連接池中的連接劃分為至少兩個(gè)隊(duì)列,每個(gè)隊(duì)列中包含至少一個(gè)連接,在訪問(wèn)目標(biāo)數(shù)據(jù)時(shí),APP根據(jù)目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息以及預(yù)設(shè)的標(biāo)識(shí)信息與各隊(duì)列的對(duì)應(yīng)關(guān)系,確定該目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息對(duì)應(yīng)的隊(duì)列,并通過(guò)確定的隊(duì)列中空閑的連接訪問(wèn)數(shù)據(jù)庫(kù)中的該目標(biāo)數(shù)據(jù)。通過(guò)上述方法,即使APP同時(shí)占用多個(gè)連接訪問(wèn)熱點(diǎn)數(shù)據(jù),APP最多也只能占用該熱點(diǎn)數(shù)據(jù)的標(biāo)識(shí)信息對(duì)應(yīng)的隊(duì)列中的所有連接,而不會(huì)占用數(shù)據(jù)庫(kù)連接池中的所有連接,因此可有效節(jié)省數(shù)據(jù)庫(kù)連接池中的資源。
[0075]本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本申請(qǐng)的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本申請(qǐng)可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本申請(qǐng)可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
[0076]在一個(gè)典型的配置中,計(jì)算設(shè)備包括一個(gè)或多個(gè)處理器(CPU)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。
[0077]內(nèi)存可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲(chǔ)器,隨機(jī)存取存儲(chǔ)器(RAM)和/或非易失性內(nèi)存等形式,如只讀存儲(chǔ)器(ROM)或閃存(flash RAM)。內(nèi)存是計(jì)算機(jī)可讀介質(zhì)的示例。
[0078]計(jì)算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動(dòng)和非可移動(dòng)媒體可以由任何方法或技術(shù)來(lái)實(shí)現(xiàn)信息存儲(chǔ)。信息可以是計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計(jì)算機(jī)的存儲(chǔ)介質(zhì)的例子包括,但不限于相變內(nèi)存(PRAM)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、其他類型的隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲(chǔ)器(CD-ROM)、數(shù)字多功能光盤(DVD)或其他光學(xué)存儲(chǔ)、磁盒式磁帶,磁帶磁磁盤存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備或任何其他非傳輸介質(zhì),可用于存儲(chǔ)可以被計(jì)算設(shè)備訪問(wèn)的信息。按照本文中的界定,計(jì)算機(jī)可讀介質(zhì)不包括非暫存電腦可讀媒體(transitory media),如調(diào)制的數(shù)據(jù)信號(hào)和載波。
[0079]本申請(qǐng)是參照根據(jù)本申請(qǐng)實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來(lái)描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合。可提供這些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過(guò)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
[0080]這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
[0081]這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
[0082]盡管已描述了本申請(qǐng)的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對(duì)這些實(shí)施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實(shí)施例以及落入本申請(qǐng)范圍的所有變更和修改。
[0083]顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本申請(qǐng)實(shí)施例進(jìn)行各種改動(dòng)和變型而不脫離本申請(qǐng)實(shí)施例的精神和范圍。這樣,倘若本申請(qǐng)實(shí)施例的這些修改和變型屬于本申請(qǐng)權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本申請(qǐng)也意圖包含這些改動(dòng)和變型在內(nèi)。
【權(quán)利要求】
1.一種建立連接的方法,其特征在于,包括: 根據(jù)目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息,以及預(yù)設(shè)的標(biāo)識(shí)信息與數(shù)據(jù)庫(kù)連接池中各隊(duì)列的對(duì)應(yīng)關(guān)系,確定所述數(shù)據(jù)庫(kù)連接池中與所述目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息對(duì)應(yīng)的隊(duì)列,其中,預(yù)先將所述數(shù)據(jù)庫(kù)連接池中的連接劃分為至少兩個(gè)隊(duì)列,每個(gè)隊(duì)列中包含至少一個(gè)連接; 通過(guò)確定的隊(duì)列中空閑的連接訪問(wèn)數(shù)據(jù)庫(kù)中的所述目標(biāo)數(shù)據(jù)。
2.如權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 當(dāng)確定的隊(duì)列中不存在空閑的連接,且當(dāng)前建立的與所述數(shù)據(jù)庫(kù)的連接的數(shù)量小于預(yù)設(shè)的最大數(shù)量時(shí),建立與所述數(shù)據(jù)庫(kù)的連接,并通過(guò)建立的連接訪問(wèn)所述目標(biāo)數(shù)據(jù); 當(dāng)確定的隊(duì)列中不存在空閑的連接,且當(dāng)前建立的與所述數(shù)據(jù)庫(kù)的連接的數(shù)量不小于預(yù)設(shè)的最大數(shù)量時(shí),返回建立連接失敗消息。
3.如權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 當(dāng)確定的隊(duì)列中不存在空閑的連接時(shí),等待所述確定的隊(duì)列中的連接被釋放; 如果等待的時(shí)間長(zhǎng)度不超過(guò)預(yù)設(shè)時(shí)間長(zhǎng)度,且所述確定的隊(duì)列中的連接被釋放,則通過(guò)所述確定的隊(duì)列中釋放的連接訪問(wèn)數(shù)據(jù)庫(kù)的所述目標(biāo)數(shù)據(jù); 如果等待的時(shí)間長(zhǎng)度達(dá)到預(yù)設(shè)時(shí)間長(zhǎng)度,且所述確定的隊(duì)列中的連接未被釋放,則返回建立連接失敗消息。
4.一種建立連接的方法,其特征在于,包括: 根據(jù)目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息,以及預(yù)設(shè)的標(biāo)識(shí)信息與各虛擬資源組的對(duì)應(yīng)關(guān)系,確定所述目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息對(duì)應(yīng)的虛擬資源組; 判斷確定的虛擬資源組中的連接的數(shù)量是否小于針對(duì)所述確定的虛擬資源組預(yù)設(shè)的最大連接數(shù); 若是,則將所述數(shù)據(jù)庫(kù)連接池中空閑的連接劃分到所述確定的虛擬資源組中,通過(guò)所述確定的虛擬資源組中空閑的連接訪問(wèn)數(shù)據(jù)庫(kù)中的所述目標(biāo)數(shù)據(jù),并在訪問(wèn)所述目標(biāo)數(shù)據(jù)后將占用的連接釋放到所述數(shù)據(jù)庫(kù)連接池中; 否則,等待至所述確定的虛擬資源組中的連接的數(shù)量小于所述最大連接數(shù)時(shí),將所述數(shù)據(jù)庫(kù)連接池中空閑的連接劃分到所述確定的虛擬資源組中,通過(guò)所述確定的虛擬資源組中空閑的連接訪問(wèn)數(shù)據(jù)庫(kù)中的所述目標(biāo)數(shù)據(jù),并在訪問(wèn)所述目標(biāo)數(shù)據(jù)后將占用的連接釋放到所述數(shù)據(jù)庫(kù)連接池中。
5.如權(quán)利要求4所述的方法,其特征在于,所述方法還包括: 當(dāng)所述確定的虛擬資源組中的連接的數(shù)量小于針對(duì)所述確定的虛擬資源組預(yù)設(shè)的最大連接數(shù)、且所述數(shù)據(jù)庫(kù)連接池中沒(méi)有空閑的連接、且當(dāng)前建立的與所述數(shù)據(jù)庫(kù)的連接的數(shù)量小于預(yù)設(shè)的最大數(shù)量時(shí),建立與所述數(shù)據(jù)庫(kù)的連接,并通過(guò)建立的連接訪問(wèn)所述目標(biāo)數(shù)據(jù); 當(dāng)所述確定的虛擬資源組中的連接的數(shù)量小于針對(duì)所述確定的虛擬資源組預(yù)設(shè)的最大連接數(shù)、且所述數(shù)據(jù)庫(kù)連接池中沒(méi)有空閑的連接、且當(dāng)前建立的與所述數(shù)據(jù)庫(kù)的連接的數(shù)量不小于預(yù)設(shè)的最大數(shù)量時(shí),返回建立連接失敗消息。
6.如權(quán)利要求4所述的方法,其特征在于,當(dāng)所述確定的虛擬資源組中的連接的數(shù)量不小于針對(duì)所述確定的虛擬資源組預(yù)設(shè)的最大連接數(shù)時(shí),將所述數(shù)據(jù)庫(kù)連接池中空閑的連接劃分到所述確定的虛擬資源組中之前,所述方法還包括: 確定等待所述確定的虛擬資源組中的連接的數(shù)量小于所述最大連接數(shù)的時(shí)間未達(dá)到預(yù)設(shè)時(shí)間長(zhǎng)度。
7.一種建立連接的裝置,其特征在于,包括: 確定模塊,用于根據(jù)目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息,以及預(yù)設(shè)的標(biāo)識(shí)信息與數(shù)據(jù)庫(kù)連接池中各隊(duì)列的對(duì)應(yīng)關(guān)系,確定所述數(shù)據(jù)庫(kù)連接池中與所述目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息對(duì)應(yīng)的隊(duì)列,其中,預(yù)先將所述數(shù)據(jù)庫(kù)連接池中的連接劃分為至少兩個(gè)隊(duì)列,每個(gè)隊(duì)列中包含至少一個(gè)連接; 連接模塊,用于通過(guò)所述確定模塊確定的隊(duì)列中空閑的連接訪問(wèn)數(shù)據(jù)庫(kù)中的所述目標(biāo)數(shù)據(jù)。
8.如權(quán)利要求7所述的裝置,其特征在于,所述連接模塊還用于,當(dāng)確定的隊(duì)列中不存在空閑的連接,且當(dāng)前建立的與所述數(shù)據(jù)庫(kù)的連接的數(shù)量小于預(yù)設(shè)的最大數(shù)量時(shí),建立與所述數(shù)據(jù)庫(kù)的連接,并通過(guò)建立的連接訪問(wèn)所述目標(biāo)數(shù)據(jù);當(dāng)確定的隊(duì)列中不存在空閑的連接,且當(dāng)前建立的與所述數(shù)據(jù)庫(kù)的連接的數(shù)量不小于預(yù)設(shè)的最大數(shù)量時(shí),返回建立連接失敗消息。
9.如權(quán)利要求7所述的裝置,其特征在于,所述連接模塊還用于,當(dāng)確定的隊(duì)列中不存在空閑的連接時(shí),等待所述確定的隊(duì)列中的連接被釋放;如果等待的時(shí)間長(zhǎng)度不超過(guò)預(yù)設(shè)時(shí)間長(zhǎng)度,且所述確定的隊(duì)列中的連接被釋放,則通過(guò)所述確定的隊(duì)列中釋放的連接訪問(wèn)數(shù)據(jù)庫(kù)的所述目標(biāo)數(shù)據(jù);如果等待的時(shí)間長(zhǎng)度達(dá)到預(yù)設(shè)時(shí)間長(zhǎng)度,且所述確定的隊(duì)列中的連接未被釋放,則返回建立連接失敗消息。
10.一種建立連接的裝置,其特征在于,包括: 確定模塊,用于根據(jù)目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息,以及預(yù)設(shè)的標(biāo)識(shí)信息與各虛擬資源組的對(duì)應(yīng)關(guān)系,確定所述目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息對(duì)應(yīng)的虛擬資源組; 判斷模塊,用于判斷所述確定模塊確定的虛擬資源組中的連接的數(shù)量是否小于針對(duì)所述確定的虛擬資源組預(yù)設(shè)的最大連接數(shù); 連接模塊,用于當(dāng)所述判斷模塊的判斷結(jié)果為是時(shí),將所述數(shù)據(jù)庫(kù)連接池中空閑的連接劃分到所述確定的虛擬資源組中,通過(guò)所述確定的虛擬資源組中空閑的連接訪問(wèn)數(shù)據(jù)庫(kù)中的所述目標(biāo)數(shù)據(jù),并在訪問(wèn)所述目標(biāo)數(shù)據(jù)后將占用的連接釋放到所述數(shù)據(jù)庫(kù)連接池中;當(dāng)所述判斷模塊的判斷結(jié)果為否時(shí),等待至所述確定的虛擬資源組中的連接的數(shù)量小于所述最大連接數(shù)時(shí),將所述數(shù)據(jù)庫(kù)連接池中空閑的連接劃分到所述確定的虛擬資源組中,通過(guò)所述確定的虛擬資源組中空閑的連接訪問(wèn)數(shù)據(jù)庫(kù)中的所述目標(biāo)數(shù)據(jù),并在訪問(wèn)所述目標(biāo)數(shù)據(jù)后將占用的連接釋放到所述數(shù)據(jù)庫(kù)連接池中。
11.如權(quán)利要求10所述的裝置,其特征在于,所述連接模塊還用于,當(dāng)所述判斷模塊的判斷結(jié)果為是、且所述數(shù)據(jù)庫(kù)連接池中沒(méi)有空閑的連接、且當(dāng)前建立的與所述數(shù)據(jù)庫(kù)的連接的數(shù)量小于預(yù)設(shè)的最大數(shù)量時(shí),建立與所述數(shù)據(jù)庫(kù)的連接,并通過(guò)建立的連接訪問(wèn)所述目標(biāo)數(shù)據(jù);當(dāng)所述判斷模塊的判斷結(jié)果為是、且所述數(shù)據(jù)庫(kù)連接池中沒(méi)有空閑的連接、且當(dāng)前建立的與所述數(shù)據(jù)庫(kù)的連接的數(shù)量不小于預(yù)設(shè)的最大數(shù)量時(shí),返回建立連接失敗消息。
12.如權(quán)利要求10所述的裝置,其特征在于,所述連接模塊還用于,當(dāng)所述判斷模塊的判斷結(jié)果為否時(shí),將所述數(shù)據(jù)庫(kù)連接池中空閑的連接劃分到所述確定的虛擬資源組中之前,確定等待所述確定的虛擬資源組中的連接的數(shù)量小于所述最大連接數(shù)的時(shí)間未達(dá)到預(yù)設(shè)時(shí)間長(zhǎng)度。
【文檔編號(hào)】G06F17/30GK104281587SQ201310277055
【公開(kāi)日】2015年1月14日 申請(qǐng)日期:2013年7月3日 優(yōu)先權(quán)日:2013年7月3日
【發(fā)明者】樓方鑫 申請(qǐng)人:阿里巴巴集團(tuán)控股有限公司