一種訪問數(shù)據(jù)庫的方法及裝置的制造方法
【技術(shù)領域】
[0001] 本發(fā)明涉及計算機技術(shù)領域,尤其涉及一種訪問數(shù)據(jù)庫的方法及裝置。
【背景技術(shù)】
[0002] 隨著互聯(lián)網(wǎng)業(yè)務的發(fā)展,交易系統(tǒng)的業(yè)務量指數(shù)增長。同時,互聯(lián)網(wǎng)業(yè)務經(jīng)常進行 促銷活動,會導致某一時間段內(nèi)交易量激增,出現(xiàn)交易高峰。交易系統(tǒng)目前普遍依賴數(shù)據(jù)庫 作為數(shù)據(jù)持久化的工具,一旦發(fā)生交易高峰的情況,數(shù)據(jù)庫操作會成為瓶頸,影響業(yè)務的服 務受理能力。
[0003] 在傳統(tǒng)的數(shù)據(jù)庫連接模式中,應用系統(tǒng)對數(shù)據(jù)庫進行數(shù)據(jù)庫操作的過程是同步操 作過程,在操作過程中,應用系統(tǒng)獲取與數(shù)據(jù)庫操作請求對應的數(shù)據(jù)庫連接,通過與數(shù)據(jù)庫 操作請求對應的數(shù)據(jù)庫連接將應用系統(tǒng)的數(shù)據(jù)庫操作請求發(fā)送至數(shù)據(jù)庫,同時應用系統(tǒng)需 要同步等待數(shù)據(jù)庫操作結(jié)果,使得應用系統(tǒng)在等待數(shù)據(jù)庫操作結(jié)果的時候,不能繼續(xù)處理 其他業(yè)務的數(shù)據(jù)庫操作請求,導致應用系統(tǒng)業(yè)務資源被占用,造成應用系統(tǒng)業(yè)務資源的浪 費。
[0004] 因此,現(xiàn)有技術(shù)中,應用系統(tǒng)需要同步等待數(shù)據(jù)庫操作結(jié)果,導致應用系統(tǒng)業(yè)務資 源被占用,造成應用系統(tǒng)資源的浪費。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明實施例提供一種訪問數(shù)據(jù)庫的方法及裝置,用以解決現(xiàn)有技術(shù)中應用系統(tǒng) 需要同步等待數(shù)據(jù)庫操作結(jié)果,導致應用系統(tǒng)業(yè)務資源被占用,造成應用系統(tǒng)資源的浪費 的問題。
[0006] 為了實現(xiàn)上述目的,本發(fā)明實施例提供了一種訪問數(shù)據(jù)庫的方法,包括:
[0007] 共享數(shù)據(jù)庫連接池在收到來自應用系統(tǒng)的數(shù)據(jù)庫操作請求后,通過與所述數(shù)據(jù)庫 操作請求對應的數(shù)據(jù)庫之間的物理數(shù)據(jù)庫連接對所述數(shù)據(jù)庫進行操作處理;
[0008] 所述共享數(shù)據(jù)庫連接池在通過所述物理數(shù)據(jù)庫連接接收到數(shù)據(jù)庫返回的操作結(jié) 果后,根據(jù)所述數(shù)據(jù)庫操作請求中的通知地址,將所述操作結(jié)果通知給所述應用系統(tǒng)。
[0009] 本發(fā)明的上述實施例中,共享數(shù)據(jù)庫連接池在收到應用系統(tǒng)的數(shù)據(jù)庫操作請求 后,通過與所述數(shù)據(jù)庫操作請求對應的數(shù)據(jù)庫之間的物理數(shù)據(jù)庫連接對所述數(shù)據(jù)庫進行操 作處理;共享數(shù)據(jù)庫連接池在通過所述物理數(shù)據(jù)庫連接接收到數(shù)據(jù)庫返回的操作結(jié)果后, 根據(jù)所述數(shù)據(jù)庫操作請求中的通知地址,將所述操作結(jié)果通知給所述應用系統(tǒng)。由于應用 系統(tǒng)根據(jù)數(shù)據(jù)庫操作請求中的通知地址,將操作結(jié)果通知給應用系統(tǒng),使得數(shù)據(jù)庫操作過 程中,應用系統(tǒng)不需要同步等待數(shù)據(jù)庫操作結(jié)果,從而實現(xiàn)了應用系統(tǒng)與數(shù)據(jù)庫之間的數(shù) 據(jù)庫操作的異步化,節(jié)省應用系統(tǒng)的業(yè)務資源,提高應用系統(tǒng)的業(yè)務吞吐量。
[0010] 可選的,所述共享數(shù)據(jù)庫連接池在收到應用系統(tǒng)的數(shù)據(jù)庫操作請求后,還包括:
[0011] 所述共享數(shù)據(jù)庫連接池將所述數(shù)據(jù)庫操作請求中的通知地址與所述物理數(shù)據(jù)庫 連接進行綁定;
[0012] 所述共享數(shù)據(jù)庫連接池根據(jù)所述數(shù)據(jù)庫操作請求中的通知地址,將所述操作結(jié)果 通知給所述應用系統(tǒng),包括:
[0013] 所述共享數(shù)據(jù)庫連接池確定與接收所述操作結(jié)果使用的所述物理數(shù)據(jù)庫連接綁 定的通知地址;
[0014] 所述共享數(shù)據(jù)庫連接池根據(jù)所述通知地址,將所述操作結(jié)果通知給所述應用系 統(tǒng)。
[0015] 本發(fā)明上述實施例中,共享數(shù)據(jù)庫連接池將數(shù)據(jù)庫操作請求中的通知地址與物理 數(shù)據(jù)庫連接進行綁定,通過與通知地址進行綁定的物理連接對數(shù)據(jù)庫進行操作處理,此時, 應用系統(tǒng)不用同步等待數(shù)據(jù)庫的操作結(jié)果,可以繼續(xù)處理其他業(yè)務的數(shù)據(jù)庫操作請求,在 共享數(shù)據(jù)庫連接池在收到操作結(jié)果后,根據(jù)操作請求中的通知地址將操作結(jié)果通知給應用 系統(tǒng),從而節(jié)省了應用系統(tǒng)的業(yè)務資源,提高應用系統(tǒng)的業(yè)務吞吐量。
[0016] 可選的,所述共享數(shù)據(jù)庫連接池通過與所述數(shù)據(jù)庫操作請求對應的數(shù)據(jù)庫之間的 物理數(shù)據(jù)庫連接對所述數(shù)據(jù)庫進行操作處理,包括:
[0017] 若所述共享數(shù)據(jù)庫連接池與所述數(shù)據(jù)庫操作請求對應的數(shù)據(jù)庫之間存在未被占 用的物理數(shù)據(jù)庫連接,則通過未被占用的物理數(shù)據(jù)庫連接對所述數(shù)據(jù)庫進行操作處理;或
[0018] 若所述共享數(shù)據(jù)庫連接池與所述數(shù)據(jù)庫操作請求對應的數(shù)據(jù)庫之間不存在未被 占用的物理數(shù)據(jù)庫連接,且建立的物理數(shù)據(jù)庫連接的數(shù)量未達到設定閾值,與所述數(shù)據(jù)庫 之間新建立一條物理數(shù)據(jù)庫連接,并通過新建立的物理數(shù)據(jù)庫連接對所述數(shù)據(jù)庫進行操作 處理。
[0019] 本發(fā)明的上述實施例中,共享連接池在通過與數(shù)據(jù)庫操作請求對應的數(shù)據(jù)庫之間 的物理數(shù)據(jù)庫連接對數(shù)據(jù)庫進行操作處理時,根據(jù)共享數(shù)據(jù)庫連接池與數(shù)據(jù)庫之間的物理 數(shù)據(jù)庫連接是否存在未被占用,如果存在不被占用,則進行數(shù)據(jù)庫操作,若果不存在被占用 的物理數(shù)據(jù)庫連接,則新建立物理數(shù)據(jù)庫連接對數(shù)據(jù)庫進行操作處理。由上述實施例可以 實現(xiàn)當應用系統(tǒng)出現(xiàn)業(yè)務激增的情況,共享數(shù)據(jù)庫連接池可以應對激增的應用系統(tǒng)的數(shù)據(jù) 庫操作請求對數(shù)據(jù)庫訪問的要求,合理有效地利用共享數(shù)據(jù)庫連接池與數(shù)據(jù)庫之間的物理 數(shù)據(jù)庫連接,提高了物理數(shù)據(jù)庫連接的使用效率,同時也提升了應用系統(tǒng)對數(shù)據(jù)庫訪問的 效率。
[0020] 可選的,所述共享數(shù)據(jù)庫連接池通過與所述數(shù)據(jù)庫操作請求對應的數(shù)據(jù)庫之間的 物理數(shù)據(jù)庫連接對所述數(shù)據(jù)庫進行操作處理,包括:
[0021] 若所述共享數(shù)據(jù)庫連接池與所述數(shù)據(jù)庫操作請求對應的數(shù)據(jù)庫之間不存在未被 占用的物理數(shù)據(jù)庫連接,且已建立的物理數(shù)據(jù)庫連接的數(shù)量達到設定閾值,則等待有未被 占用的物理數(shù)據(jù)庫連接出現(xiàn)后,通過未被占用的物理數(shù)據(jù)庫連接對所述數(shù)據(jù)庫進行操作處 理。
[0022] 本發(fā)明的上述實施例中,共享連接池在通過與數(shù)據(jù)庫操作請求對應的數(shù)據(jù)庫之間 的物理數(shù)據(jù)庫連接對數(shù)據(jù)庫進行操作處理時,根據(jù)共享數(shù)據(jù)庫連接池與數(shù)據(jù)庫之間的物理 數(shù)據(jù)庫連接是否存在未被占用,如果存在不被占用,則進行數(shù)據(jù)庫操作,若果不存在被占用 的物理數(shù)據(jù)庫連接,則新建立物理數(shù)據(jù)庫連接對數(shù)據(jù)庫進行操作處理。若果新建立的物理 數(shù)據(jù)庫連接達到閾值,則等待未被占用的物理數(shù)據(jù)庫連接的出現(xiàn)。由上述實施例可以實現(xiàn) 對應用系統(tǒng)出現(xiàn)業(yè)務激增的情況,應對激增的應用系統(tǒng)的數(shù)據(jù)庫操作請求對數(shù)據(jù)庫訪問的 要求,合理有效地利用共享數(shù)據(jù)庫連接池與數(shù)據(jù)庫之間的物理數(shù)據(jù)庫連接,提升了應用系 統(tǒng)對數(shù)據(jù)庫訪問的效率。
[0023] 可選的,若所述共享數(shù)據(jù)庫連接池有新建立的物理數(shù)據(jù)庫連接在設定時長內(nèi)未被 占有,則釋放所述新建立的物理數(shù)據(jù)庫連接。
[0024] 本發(fā)明的上述實施例中,共享數(shù)據(jù)庫連接池有新建立的物理數(shù)據(jù)庫連接在設定時 長內(nèi)未被占有,則釋放所述新建立的物理數(shù)據(jù)庫連接,合理有效地節(jié)省了共享數(shù)據(jù)庫連接 池與數(shù)據(jù)庫之間的物理數(shù)據(jù)庫連接,避免了物理數(shù)據(jù)庫資源的浪費。
[0025] 本發(fā)明實施例提供了一種訪問數(shù)據(jù)庫的方法,包括:
[0026] 應用系統(tǒng)在需要對數(shù)據(jù)庫進行操作后,向共享數(shù)據(jù)庫連接池發(fā)送包含通知地址的 數(shù)據(jù)庫操作請求,以使所述共享數(shù)據(jù)庫連接池通過與所述數(shù)據(jù)庫操作請求對應的數(shù)據(jù)庫之 間的物理數(shù)據(jù)庫連接對所述數(shù)據(jù)庫進行操作處理,并在通過所述物理數(shù)據(jù)庫連接接收到數(shù) 據(jù)庫返回的操作結(jié)果后,根據(jù)所述數(shù)據(jù)庫操作請求中的通知地址,將所述操作結(jié)果通知給 所述應用系統(tǒng);
[0027] 所述應用系統(tǒng)接收來自所述共享數(shù)據(jù)庫連接池的所述操作結(jié)果。
[0028] 本發(fā)明的上述實施例中,由于應用系統(tǒng)根據(jù)數(shù)據(jù)庫操作請求中的通知地址,將操 作結(jié)果通知給應用系統(tǒng),使得數(shù)據(jù)庫操作過程中,應用系統(tǒng)不需要同步等待數(shù)據(jù)庫操作結(jié) 果,從而實現(xiàn)了應用系統(tǒng)與數(shù)據(jù)庫之間的數(shù)據(jù)庫操作的異步化,節(jié)省應用系統(tǒng)的業(yè)務資源, 提高應用系統(tǒng)的業(yè)務吞吐量。
[0029] 本發(fā)明實施例提供了一種訪問數(shù)據(jù)庫的裝置,包括:
[0030] 連接池管理模塊,用于在收到來自應用系統(tǒng)的數(shù)據(jù)庫操作請求后,通過與所述數(shù) 據(jù)庫操作請求對應的數(shù)據(jù)庫之間的物理數(shù)據(jù)庫連接對所述數(shù)據(jù)庫進行操作處理;
[0031] 數(shù)據(jù)訪問控制模塊,用于在通過所述物理數(shù)據(jù)庫連接接收到數(shù)據(jù)庫返回的操作結(jié) 果后,根據(jù)所述數(shù)據(jù)庫操作請求中的通知地址,將所述操作結(jié)果通知給所述應用系統(tǒng)。
[0032] 可選的,所述連接池管理模塊還用于:
[0033] 將所述數(shù)據(jù)庫操作請求中的通知地址與所述物理數(shù)據(jù)庫連接進行綁定;
[0034] 共享數(shù)據(jù)庫連接池