劃分數(shù)據(jù)庫的方法和裝置的制造方法【
技術(shù)領(lǐng)域:
】[0001]本發(fā)明的各實施方式涉及數(shù)據(jù)庫,更具體地,涉及用于劃分(partition)數(shù)據(jù)庫的方法和裝置。【
背景技術(shù):
】[0002]隨著數(shù)據(jù)庫技術(shù)的發(fā)展,數(shù)據(jù)庫已經(jīng)被廣泛應用于人們工作和生活的各個方面。進一步,隨著與數(shù)據(jù)庫相關(guān)聯(lián)的業(yè)務(wù)流程的復雜化,數(shù)據(jù)庫中可能會包括數(shù)十甚至更多的表(table),如果將這些表全都存儲在同一個數(shù)據(jù)節(jié)點中,則該數(shù)據(jù)節(jié)點可能會因為諸如訪問量過大等原因而出現(xiàn)響應時間過長、甚至宕機等現(xiàn)象。[0003]為了解決單一數(shù)據(jù)節(jié)點中的數(shù)據(jù)量過大的問題,目前提出了針對數(shù)據(jù)庫中的多個表進行垂直劃分(verticalpartition)和水平劃分(horizontalpartition)的技術(shù)方案。然而,現(xiàn)有的劃分方案并不能適合于各種類型的數(shù)據(jù)庫。例如,目前的技術(shù)方案僅能針對滿足特定關(guān)系(例如約束樹模式,ConstrainedTreeSchema,CTS)的數(shù)據(jù)庫進行垂直劃分,這種附加約束條件對于垂直劃分造成了極大的限制。[0004]然而,隨著人們在數(shù)據(jù)管理方面的需求不斷復雜化,數(shù)據(jù)庫的設(shè)計也出現(xiàn)日益復雜化的趨勢,這導致目前的大多數(shù)數(shù)據(jù)庫通常并不符合CTS的要求。因而,如何擺脫這些附加的約束條件、并使得能夠針對各種類型的數(shù)據(jù)庫進行劃分,成為一個關(guān)注焦點?!?br/>發(fā)明內(nèi)容】[0005]因而,期望能夠開發(fā)一種能夠針對數(shù)據(jù)庫進行劃分的技術(shù)方案,并且期望該技術(shù)方案可以擺脫現(xiàn)有技術(shù)中對于待劃分的數(shù)據(jù)庫的附加約束條件,進而實現(xiàn)以簡單方便的方式來劃分數(shù)據(jù)庫。[0006]在本發(fā)明的一個實施方式中,提供了一種用于劃分數(shù)據(jù)庫的方法,包括:基于與數(shù)據(jù)庫相關(guān)聯(lián)的業(yè)務(wù)流程而獲取數(shù)據(jù)庫中的多個表中的數(shù)據(jù)之間的業(yè)務(wù)依賴;基于業(yè)務(wù)依賴生成描述多個表之間的依賴關(guān)系的依賴圖;將依賴圖切割(cut)為至少兩個子圖;以及將數(shù)據(jù)庫垂直地劃分為分別對應于至少兩個子圖的至少兩個部分。[0007]在本發(fā)明的一個實施方式中,提供了一種用于劃分數(shù)據(jù)庫的裝置,包括:獲取模塊,配置用于基于與數(shù)據(jù)庫相關(guān)聯(lián)的業(yè)務(wù)流程而獲取數(shù)據(jù)庫中的多個表中的數(shù)據(jù)之間的業(yè)務(wù)依賴;生成模塊,配置用于基于業(yè)務(wù)依賴生成描述多個表之間的依賴關(guān)系的依賴圖;切割模塊,配置用于將依賴圖切割為至少兩個子圖;以及劃分模塊,配置用于將數(shù)據(jù)庫垂直地劃分為分別對應于至少兩個子圖的至少兩個部分。[0008]采用本發(fā)明所述的方法和裝置,可以擺脫現(xiàn)有技術(shù)中對于待劃分的數(shù)據(jù)庫的附加約束條件,從而實現(xiàn)將數(shù)據(jù)庫中的多個表劃分至不同的部分。進一步,可以將這些不同的部分中的表存儲在不同的數(shù)據(jù)節(jié)點中。以此方式,可以將針對數(shù)據(jù)庫的訪問請求引導至不同的數(shù)據(jù)節(jié)點,進而提高數(shù)據(jù)庫的響應性能并確保數(shù)據(jù)庫的穩(wěn)定運行?!靖綀D說明】[0009]通過結(jié)合附圖對本公開示例性實施方式進行更詳細的描述,本公開的上述以及其他目的、特征和優(yōu)勢將變得更加明顯,其中,在本公開示例性實施方式中,相同的參考標號通常代表相同部件。[0010]圖1示意性示出了適于用來實現(xiàn)本發(fā)明實施方式的示例性計算機系統(tǒng)/服務(wù)器12的框圖;[0011]圖2示意性示出了根據(jù)一個實施方式的針對數(shù)據(jù)庫進行劃分的框圖;[0012]圖3示意性示出了根據(jù)本發(fā)明一個實施方式的基于與數(shù)據(jù)庫相關(guān)聯(lián)的依賴圖來劃分數(shù)據(jù)庫的框圖;[0013]圖4示意性示出了根據(jù)本發(fā)明一個實施方式的用于劃分數(shù)據(jù)庫的方法的流程圖;[0014]圖5示意性示出了根據(jù)本發(fā)明一個實施方式的數(shù)據(jù)庫中的多個表之間的引用關(guān)系(referencerelation)的框圖;[0015]圖6A-6C分別示意性示出了根據(jù)本發(fā)明一個實施方式的基于各個表之間的影響關(guān)系(impactrelation)、引用關(guān)系以及訪問相關(guān)性建立而的依賴圖;[0016]圖7示意性示出了基于圖6A-6C所示的依賴圖生成依賴圖、以及對所生成的依賴圖進行切割的框圖;以及[0017]圖8示意性示出了根據(jù)本發(fā)明一個實施方式的用于劃分數(shù)據(jù)庫的裝置的框圖?!揪唧w實施方式】[0018]下面將參照附圖更詳細地描述本公開的優(yōu)選實施方式。雖然附圖中顯示了本公開的優(yōu)選實施方式,然而應該理解,可以以各種形式實現(xiàn)本公開而不應被這里闡述的實施方式所限制。相反,提供這些實施方式是為了使本公開更加透徹和完整,并且能夠?qū)⒈竟_的范圍完整地傳達給本領(lǐng)域的技術(shù)人員。[0019]圖1示出了適于用來實現(xiàn)本發(fā)明實施方式的示例性計算機系統(tǒng)/服務(wù)器12的框圖。圖1顯示的計算機系統(tǒng)/服務(wù)器12僅僅是一個示例,不應對本發(fā)明實施方式的功能和使用范圍帶來任何限制。[0020]如圖1所示,計算機系統(tǒng)/服務(wù)器12以通用計算設(shè)備的形式表現(xiàn)。計算機系統(tǒng)/服務(wù)器12的組件可以包括但不限于:一個或者多個處理器或者處理單元16,系統(tǒng)存儲器28,連接不同系統(tǒng)組件(包括系統(tǒng)存儲器28和處理單元16)的總線18。[0021]總線18表示幾類總線結(jié)構(gòu)中的一種或多種,包括存儲器總線或者存儲器控制器,外圍總線,圖形加速端口,處理器或者使用多種總線結(jié)構(gòu)中的任意總線結(jié)構(gòu)的局域總線。舉例來說,這些體系結(jié)構(gòu)包括但不限于工業(yè)標準體系結(jié)構(gòu)(ISA)總線,微通道體系結(jié)構(gòu)(MAC)總線,增強型ISA總線、視頻電子標準協(xié)會(VESA)局域總線以及外圍組件互連(PCI)總線。[0022]計算機系統(tǒng)/服務(wù)器12典型地包括多種計算機系統(tǒng)可讀介質(zhì)。這些介質(zhì)可以是任何能夠被計算機系統(tǒng)/服務(wù)器12訪問的可用介質(zhì),包括易失性和非易失性介質(zhì),可移動的和不可移動的介質(zhì)。[0023]系統(tǒng)存儲器28可以包括易失性存儲器形式的計算機系統(tǒng)可讀介質(zhì),例如隨機存取存儲器(RAM)30和/或高速緩存存儲器32。計算機系統(tǒng)/服務(wù)器12可以進一步包括其他可移動/不可移動的、易失性/非易失性計算機系統(tǒng)存儲介質(zhì)。僅作為舉例,存儲系統(tǒng)34可以用于讀寫不可移動的、非易失性磁介質(zhì)(圖1未顯示,通常稱為"硬盤驅(qū)動器")。盡管圖1中未示出,可以提供用于對可移動非易失性磁盤(例如"軟盤")讀寫的磁盤驅(qū)動器,以及對可移動非易失性光盤(例如⑶-ROM,DVD-ROM或者其他光介質(zhì))讀寫的光盤驅(qū)動器。在這些情況下,每個驅(qū)動器可以通過一個或者多個數(shù)據(jù)介質(zhì)接口與總線18相連。存儲器28可以包括至少一個程序產(chǎn)品,該程序產(chǎn)品具有一組(例如至少一個)程序模塊,這些程序模塊被配置以執(zhí)行本發(fā)明各實施方式的功能。[0024]具有一組(至少一個)程序模塊42的程序/實用工具40,可以存儲在例如存儲器28中,這樣的程序模塊42包括--但不限于--操作系統(tǒng)、一個或者多個應用程序、其他程序模塊以及程序數(shù)據(jù),這些示例中的每一個或某種組合中可能包括網(wǎng)絡(luò)環(huán)境的實現(xiàn)。程序模塊42通常執(zhí)行本發(fā)明所描述的實施方式中的功能和/或方法。[0025]計算機系統(tǒng)/服務(wù)器12也可以與一個或多個外部設(shè)備14(例如鍵盤、指向設(shè)備、顯示器24等)通信,還可與一個或者多個使得用戶能與該計算機系統(tǒng)/服務(wù)器12交互的設(shè)備通信,和/或與使得該計算機系統(tǒng)/服務(wù)器12能與一個或多個其他計算設(shè)備進行通信的任何設(shè)備(例如網(wǎng)卡,調(diào)制解調(diào)器等等)通信。這種通信可以通過輸入/輸出(I/O)接口22進行。并且,計算機系統(tǒng)/服務(wù)器12還可以通過網(wǎng)絡(luò)適配器20與一個或者多個網(wǎng)絡(luò)(例如局域網(wǎng)(LAN),廣域網(wǎng)(WAN)和/或公共網(wǎng)絡(luò),例如因特網(wǎng))通信。如圖所示,網(wǎng)絡(luò)適配器20通過總線18與計算機系統(tǒng)/服務(wù)器12的其他模塊通信。應當明白,盡管圖中未示出,可以結(jié)合計算機系統(tǒng)/服務(wù)器12使用其他硬件和/或軟件模塊,包括但不限于:微代碼、設(shè)備驅(qū)動器、冗余處理單元、外部磁盤驅(qū)動陣列、RAID系統(tǒng)、磁帶驅(qū)動器以及數(shù)據(jù)備份存儲系統(tǒng)等。[0026]數(shù)據(jù)庫的劃分可以包括水平劃分和垂直劃分。具體地,水平劃分是指將數(shù)據(jù)庫中的表中的記錄劃分為不同的部分。例如,假設(shè)表Customer包括客戶ID、客戶姓名等等多個字段,并且該表中存儲了上百萬條記錄。為了避免將上百萬條記錄存儲在一個數(shù)據(jù)節(jié)點中,可以按照客戶ID(例如,按照單雙號的方式)來將該表劃分為兩個表,并且分別將兩個表存儲在不同的數(shù)據(jù)節(jié)點中,以便提當前第1頁1 2 3 4 5