一種訪問(wèn)數(shù)據(jù)庫(kù)的方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種訪問(wèn)數(shù)據(jù)庫(kù)的方法及裝置。
【背景技術(shù)】
[0002] 隨著互聯(lián)網(wǎng)業(yè)務(wù)的發(fā)展,交易系統(tǒng)的業(yè)務(wù)量指數(shù)增長(zhǎng)。同時(shí),互聯(lián)網(wǎng)業(yè)務(wù)經(jīng)常進(jìn)行 促銷活動(dòng),會(huì)導(dǎo)致某一時(shí)間段內(nèi)交易量激增,出現(xiàn)交易高峰。交易系統(tǒng)目前普遍依賴數(shù)據(jù)庫(kù) 作為數(shù)據(jù)持久化的工具,一旦發(fā)生交易高峰的情況,數(shù)據(jù)庫(kù)操作會(huì)成為瓶頸。
[0003] 數(shù)據(jù)庫(kù)訪問(wèn)通常為應(yīng)用系統(tǒng)直接向數(shù)據(jù)庫(kù)請(qǐng)求連接,但是由于連接數(shù)量的限制, 應(yīng)用系統(tǒng)常需頻繁建立、關(guān)閉連接,操作十分不便;而傳統(tǒng)的數(shù)據(jù)庫(kù)連接池資源也只對(duì)一個(gè) 應(yīng)用系統(tǒng)提供服務(wù),當(dāng)某個(gè)應(yīng)用系統(tǒng)相對(duì)空閑時(shí),數(shù)據(jù)庫(kù)連接資源因?yàn)槭穷A(yù)先分配的,無(wú)法 被其他應(yīng)用使用,造成資源的浪費(fèi),即交易高峰到來(lái)時(shí),成為數(shù)據(jù)庫(kù)操作的瓶頸,影響業(yè)務(wù) 的服務(wù)受理能力,此外由于傳統(tǒng)一個(gè)連接池的數(shù)據(jù)源只能操作一個(gè)數(shù)據(jù)庫(kù)實(shí)例,因此無(wú)法 滿足一個(gè)應(yīng)用系統(tǒng)訪問(wèn)多個(gè)數(shù)據(jù)庫(kù)的需求。
[0004] 因此,現(xiàn)有技術(shù)中在出現(xiàn)交易量激增的情況下,應(yīng)用系統(tǒng)連接分配不合理易造成 連接資源的浪費(fèi),且由于傳統(tǒng)一個(gè)連接池管理的數(shù)據(jù)源只能操作一個(gè)數(shù)據(jù)庫(kù)實(shí)例,因此無(wú) 法滿足一個(gè)應(yīng)用系統(tǒng)訪問(wèn)多個(gè)數(shù)據(jù)庫(kù)的需求。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明實(shí)施例提供一種訪問(wèn)數(shù)據(jù)庫(kù)的方法及裝置,用以解決現(xiàn)有技術(shù)中在出現(xiàn)交 易量激增的情況下,應(yīng)用系統(tǒng)連接分配不合理易造成連接資源的浪費(fèi),且由于傳統(tǒng)一個(gè)連 接池管理的數(shù)據(jù)源只能操作一個(gè)數(shù)據(jù)庫(kù)實(shí)例,因此無(wú)法滿足一個(gè)應(yīng)用系統(tǒng)訪問(wèn)多個(gè)數(shù)據(jù)庫(kù) 的需求的問(wèn)題。
[0006] 本發(fā)明實(shí)施例提供的一種訪問(wèn)數(shù)據(jù)庫(kù)的方法,包括:
[0007] 共享數(shù)據(jù)庫(kù)連接池在通過(guò)代理連接接收到來(lái)自應(yīng)用系統(tǒng)的數(shù)據(jù)庫(kù)操作請(qǐng)求后,通 過(guò)與所述代理連接綁定的物理數(shù)據(jù)庫(kù)連接,向數(shù)據(jù)庫(kù)發(fā)送所述數(shù)據(jù)庫(kù)操作請(qǐng)求;
[0008] 在通過(guò)所述物理數(shù)據(jù)庫(kù)連接接收到數(shù)據(jù)庫(kù)返回的操作結(jié)果后,將所述操作結(jié)果通 過(guò)與所述物理數(shù)據(jù)庫(kù)連接綁定的所述代理連接,向應(yīng)用系統(tǒng)發(fā)送所述操作結(jié)果。
[0009] 本發(fā)明實(shí)施例應(yīng)用系統(tǒng)通過(guò)代理連接向共享數(shù)據(jù)庫(kù)連接池提交數(shù)據(jù)庫(kù)操作,共享 數(shù)據(jù)庫(kù)連接池通過(guò)代理連接找到與所述代理連接綁定的物理數(shù)據(jù)庫(kù)連接,向數(shù)據(jù)庫(kù)發(fā)送所 述數(shù)據(jù)庫(kù)操作請(qǐng)求;避免了應(yīng)用系統(tǒng)與數(shù)據(jù)庫(kù)直接連接頻繁建立、關(guān)閉的復(fù)雜操作,且與傳 統(tǒng)應(yīng)用系統(tǒng)所使用的連接池不同,使用共享數(shù)據(jù)庫(kù)連接池的方案,可增大共享的連接池最 大連接數(shù)。
[0010] 可選的,通過(guò)代理連接接收到來(lái)自應(yīng)用系統(tǒng)的數(shù)據(jù)庫(kù)操作請(qǐng)求之前,還包括:
[0011] 在接收應(yīng)用系統(tǒng)獲取數(shù)據(jù)庫(kù)連接的請(qǐng)求后,從共享連接池中取出空閑的物理數(shù)據(jù) 庫(kù)連接,并實(shí)例化一個(gè)代理連接,將得到的代理連接與應(yīng)用系統(tǒng)進(jìn)行連接;以及
[0012] 將與所述應(yīng)用系統(tǒng)需要連接的數(shù)據(jù)庫(kù)之間的物理數(shù)據(jù)庫(kù)連接,與得到的代理連接 進(jìn)行綁定。
[0013] 本發(fā)明實(shí)施例將應(yīng)用系統(tǒng)和共享數(shù)據(jù)庫(kù)連接池間的代理連接與共享數(shù)據(jù)庫(kù)連接 池和數(shù)據(jù)庫(kù)之間的物理數(shù)據(jù)庫(kù)連接進(jìn)行綁定,不僅有利于數(shù)據(jù)庫(kù)連接資源的有效使用,而 且也提高了數(shù)據(jù)庫(kù)操作效率。
[0014] 可選的,在接收應(yīng)用系統(tǒng)獲取數(shù)據(jù)庫(kù)連接的請(qǐng)求后,還包括:
[0015] 若當(dāng)前沒(méi)有空閑的物理數(shù)據(jù)庫(kù)連接資源,且共享連接池與數(shù)據(jù)庫(kù)之間的連接數(shù)量 未達(dá)到最大連接數(shù),則創(chuàng)建并初始化新的物理連接,并實(shí)例化一個(gè)代理連接,將得到的代理 連接與應(yīng)用系統(tǒng)進(jìn)行連接;以及
[0016] 將與所述應(yīng)用系統(tǒng)需要連接的數(shù)據(jù)庫(kù)之間的物理數(shù)據(jù)庫(kù)連接,與得到的代理連接 進(jìn)行綁定。
[0017] 本發(fā)明實(shí)施例中,在當(dāng)前沒(méi)有空閑的物理數(shù)據(jù)庫(kù)連接資源分配給應(yīng)用系統(tǒng)的情況 下,如果共享數(shù)據(jù)庫(kù)連接池與數(shù)據(jù)庫(kù)之間的連接數(shù)量未達(dá)到最大連接數(shù),則創(chuàng)建新的物理 數(shù)據(jù)庫(kù)連接,可以應(yīng)對(duì)激增的數(shù)據(jù)庫(kù)訪問(wèn)請(qǐng)求。
[0018] 可選的,在接收應(yīng)用系統(tǒng)獲取數(shù)據(jù)庫(kù)連接的請(qǐng)求后,還包括:
[0019] 若當(dāng)前沒(méi)有空閑的物理數(shù)據(jù)庫(kù)連接資源,且共享連接池與數(shù)據(jù)庫(kù)之間的連接數(shù)量 達(dá)到最大連接數(shù),則等待有空閑的物理數(shù)據(jù)庫(kù)連接資源后,從共享連接池中取出所述空閑 的物理數(shù)據(jù)庫(kù)連接,并實(shí)例化一個(gè)代理連接,將得到的代理連接與應(yīng)用系統(tǒng)進(jìn)行連接;以及
[0020] 將與所述應(yīng)用系統(tǒng)需要連接的數(shù)據(jù)庫(kù)之間的物理數(shù)據(jù)庫(kù)連接,與得到的代理連接 進(jìn)行綁定。
[0021] 本發(fā)明實(shí)施例中,在當(dāng)前沒(méi)有空閑的物理數(shù)據(jù)庫(kù)連接資源分配給應(yīng)用系統(tǒng)的情況 下,如果共享數(shù)據(jù)庫(kù)連接池與數(shù)據(jù)庫(kù)之間的連接數(shù)量達(dá)到最大連接數(shù),則需等待空閑的物 理數(shù)據(jù)庫(kù)連接資源,一般,如果共享數(shù)據(jù)庫(kù)連接池在處理完某個(gè)應(yīng)用系統(tǒng)的數(shù)據(jù)庫(kù)操作后, 會(huì)及時(shí)將該連接資源回收,供其他應(yīng)用系統(tǒng)請(qǐng)求使用。
[0022] 可選的,所述共享數(shù)據(jù)庫(kù)連接池向應(yīng)用系統(tǒng)發(fā)送所述操作結(jié)果之后,還包括:
[0023] 所述共享數(shù)據(jù)庫(kù)連接池在所述應(yīng)用系統(tǒng)釋放所述應(yīng)用系統(tǒng)與所述共享數(shù)據(jù)庫(kù)連 接池之間的代理連接后,刪除所述代理連接與所述物理數(shù)據(jù)庫(kù)連接的綁定關(guān)系,并回收所 述物理數(shù)據(jù)庫(kù)連接。
[0024] 本發(fā)明實(shí)施例中共享數(shù)據(jù)庫(kù)連接池在處理完某個(gè)應(yīng)用的數(shù)據(jù)庫(kù)操作后,會(huì)及時(shí)將 該連接回收,供其他應(yīng)用請(qǐng)求使用。此時(shí),如果另外一個(gè)應(yīng)用提出數(shù)據(jù)庫(kù)操作請(qǐng)求,該系統(tǒng) 可以及時(shí)分配已歸還的連接給新的請(qǐng)求使用。實(shí)現(xiàn)了數(shù)據(jù)庫(kù)連接為多個(gè)應(yīng)用復(fù)用。
[0025] 本發(fā)明實(shí)施例提供了一種訪問(wèn)數(shù)據(jù)庫(kù)的裝置,包括:
[0026] 連接池管理模塊,用于在通過(guò)代理連接接收到來(lái)自應(yīng)用系統(tǒng)的數(shù)據(jù)庫(kù)操作請(qǐng)求 后,通過(guò)與所述代理連接綁定的物理數(shù)據(jù)庫(kù)連接,向數(shù)據(jù)庫(kù)發(fā)送所述數(shù)據(jù)庫(kù)操作請(qǐng)求;
[0027] 連接池?cái)?shù)據(jù)返回模塊,用于在通過(guò)所述物理數(shù)據(jù)庫(kù)連接接收到數(shù)據(jù)庫(kù)返回的操作 結(jié)果后,將所述操作結(jié)果通過(guò)與所述物理數(shù)據(jù)庫(kù)連接綁定的所述代理連接,向應(yīng)用系統(tǒng)發(fā) 送所述操作結(jié)果。
[0028] 可選的,所述連接池管理模塊還用于:
[0029] 在接收應(yīng)用系統(tǒng)獲取數(shù)據(jù)庫(kù)連接的請(qǐng)求后,從共享連接池中取出空閑的物理數(shù)據(jù) 庫(kù)連接,并實(shí)例化一個(gè)代理連接,將得到的代理連接與應(yīng)用系統(tǒng)進(jìn)行連接;以及
[0030] 將與所述應(yīng)用系統(tǒng)需要連接的數(shù)據(jù)庫(kù)之間的物理數(shù)據(jù)庫(kù)連接,與得到的代理連接 進(jìn)行綁定。
[0031] 可選的,所述連接池管理模塊還用于:
[0032] 若當(dāng)前沒(méi)有空閑的物理數(shù)據(jù)庫(kù)連接資源,且共享連接池與數(shù)據(jù)庫(kù)之間的連接數(shù)量 未達(dá)到最大連接數(shù),則創(chuàng)建并初始化新的物理連接,并實(shí)例化一個(gè)代理連接,將得到的代理 連接與應(yīng)用系統(tǒng)進(jìn)行連接;以及
[0033] 將與所述應(yīng)用系統(tǒng)需要連接的數(shù)據(jù)庫(kù)之間的物理數(shù)據(jù)庫(kù)連接,與得到的代理連接 進(jìn)行綁定。
[0034] 可選的,所述連接池管理模塊還用于:
[0035] 若當(dāng)前沒(méi)有空閑的物理數(shù)據(jù)庫(kù)連接資源,且共享連接池與數(shù)據(jù)庫(kù)之間的連接數(shù)量 達(dá)到最大連接數(shù),則等待有空閑的物理數(shù)據(jù)庫(kù)連接資源后,從共享連接池中取出所述空閑 的物理數(shù)據(jù)庫(kù)連接,并實(shí)例化一個(gè)代理連接,將得到的代理連接與應(yīng)用系統(tǒng)進(jìn)行連接;以及
[0036] 將與所述應(yīng)用系統(tǒng)需要連接的數(shù)據(jù)庫(kù)之間的物理數(shù)據(jù)庫(kù)連接,與得到的代理連接 進(jìn)行綁定。
[0037] 可選的,所述連接池?cái)?shù)據(jù)返回模塊還用于:
[0038] 在所述應(yīng)用系統(tǒng)釋放所述應(yīng)用系統(tǒng)與所述共享連接池之間的代理連接后,刪除所 述代理連接與所述物理數(shù)據(jù)庫(kù)連接的綁定關(guān)系,并回收所述物理數(shù)據(jù)庫(kù)連接。
[0039] 本發(fā)明實(shí)施例中,共享數(shù)據(jù)庫(kù)連接池在通過(guò)代理連接接收到來(lái)自應(yīng)用系統(tǒng)的數(shù)據(jù) 庫(kù)操作請(qǐng)求后,通過(guò)與所述代理連接綁定的物理數(shù)據(jù)庫(kù)連接,向數(shù)據(jù)庫(kù)發(fā)送所述數(shù)據(jù)庫(kù)操 作請(qǐng)求;在通過(guò)所述物理數(shù)據(jù)庫(kù)連接接收到數(shù)據(jù)庫(kù)返回的操作結(jié)果后,將所述操作結(jié)果通 過(guò)與所述物理數(shù)據(jù)庫(kù)連接綁定的所述代理連接,向應(yīng)用系統(tǒng)發(fā)送所述操作結(jié)果。本發(fā)明實(shí) 施例應(yīng)用系統(tǒng)通過(guò)代理連接向共享數(shù)據(jù)庫(kù)連接池提交數(shù)據(jù)庫(kù)操作,共享數(shù)據(jù)庫(kù)連接池通過(guò) 代理連接找到與所述代理連接綁定的物理數(shù)據(jù)庫(kù)連接,向數(shù)據(jù)庫(kù)發(fā)送所述數(shù)據(jù)庫(kù)操作請(qǐng) 求;避免了應(yīng)用系統(tǒng)與數(shù)據(jù)庫(kù)直接連接頻繁建立、關(guān)閉的復(fù)雜操作,且與傳統(tǒng)應(yīng)用系統(tǒng)所使 用的連接池不同,使用共享數(shù)據(jù)庫(kù)連接池的方案,可增大共享的連接池最大連接數(shù);進(jìn)一步 地,通過(guò)共享數(shù)據(jù)庫(kù)連接池獲取相應(yīng)數(shù)據(jù)庫(kù)的代理連接,可以滿足多數(shù)據(jù)庫(kù)數(shù)據(jù)操作場(chǎng)景 的需要。
【附圖說(shuō)明】
[0040] 為了更清楚地說(shuō)明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使 用的附圖作簡(jiǎn)要介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明