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