用于對(duì)數(shù)據(jù)庫(kù)進(jìn)行分區(qū)的方法和系統(tǒng)的制作方法
【專利摘要】本發(fā)明涉及一種用于對(duì)數(shù)據(jù)庫(kù)進(jìn)行分區(qū)的方法和系統(tǒng)。其中,對(duì)數(shù)據(jù)庫(kù)進(jìn)行分區(qū)的方法,包括:將所述數(shù)據(jù)庫(kù)中的多個(gè)條目分組成一個(gè)或多個(gè)條目組,以使同一個(gè)所述條目組中的條目總是被一個(gè)或多個(gè)事務(wù)同時(shí)訪問(wèn);以及將所述一個(gè)或多個(gè)條目組劃分為設(shè)定數(shù)目個(gè)分區(qū),以使跨多于一個(gè)分區(qū)進(jìn)行訪問(wèn)的事務(wù)總數(shù)最小化。通過(guò)本發(fā)明,可以獲得有效、靈活、便利的數(shù)據(jù)庫(kù)分區(qū)方法,極大地提高了系統(tǒng)性能。
【專利說(shuō)明】用于對(duì)數(shù)據(jù)庫(kù)進(jìn)行分區(qū)的方法和系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)庫(kù)分區(qū)領(lǐng)域,更具體地,涉及面向事務(wù)型工作負(fù)載的數(shù)據(jù)庫(kù)分區(qū)。【背景技術(shù)】
[0002]隨著計(jì)算機(jī)和網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,對(duì)數(shù)據(jù)庫(kù)技術(shù)的要求也日益提升。隨著在線事務(wù)處理應(yīng)用(例如在線交易應(yīng)用)的規(guī)模的不斷擴(kuò)大和用戶量的不斷提升,這些應(yīng)用產(chǎn)生了越來(lái)越多的數(shù)據(jù)和越來(lái)越多高度并發(fā)的事務(wù),從而擴(kuò)展性成為影響這些系統(tǒng)發(fā)展的主要障礙。系統(tǒng)的擴(kuò)展性不好,會(huì)對(duì)系統(tǒng)的性能和吞吐量產(chǎn)生嚴(yán)重的影響。
[0003]為了解決擴(kuò)展性的問(wèn)題,許多基于Web的公司采用了經(jīng)濟(jì)有效的、并行的數(shù)據(jù)庫(kù)管理系統(tǒng)(以下簡(jiǎn)稱為DBMS)(例如Greenplum數(shù)據(jù)庫(kù)),將數(shù)據(jù)和工作負(fù)載跨大量不共享任何內(nèi)容的節(jié)點(diǎn)(例如商品服務(wù)器)進(jìn)行分區(qū)。然而,在這些DBMS上的在線事務(wù)(transaction)處理(online transaction process,簡(jiǎn)稱為0LTP)應(yīng)用的可擴(kuò)展性取決于最理想的數(shù)據(jù)庫(kù)分區(qū)設(shè)計(jì)的存在:最理想的數(shù)據(jù)庫(kù)分區(qū)設(shè)計(jì)限定了應(yīng)用的數(shù)據(jù)和工作負(fù)載如何跨集群中的多個(gè)節(jié)點(diǎn)進(jìn)行分區(qū),以及對(duì)這些數(shù)據(jù)的查詢和各項(xiàng)事務(wù)如何路由到多個(gè)節(jié)點(diǎn)。這轉(zhuǎn)而確定了訪問(wèn)存儲(chǔ)在各個(gè)節(jié)點(diǎn)上的事務(wù)的數(shù)量尤其是分布式事務(wù)的數(shù)量以及負(fù)載跨集群的分布的不均衡(skew)程度。對(duì)這兩個(gè)因素進(jìn)行優(yōu)化對(duì)衡量復(fù)雜系統(tǒng)而言非常關(guān)鍵,如果沒(méi)有恰當(dāng)?shù)脑O(shè)計(jì),由于阻塞(blocking)、節(jié)點(diǎn)間通信以及負(fù)載平衡問(wèn)題所引起的開(kāi)銷,DBMS的性能很可能并不好于單節(jié)點(diǎn)系統(tǒng)。
【發(fā)明內(nèi)容】
[0004]針對(duì)上述問(wèn)題,本發(fā)明提供一種用于對(duì)數(shù)據(jù)庫(kù)進(jìn)行分區(qū)的方法和系統(tǒng)。
[0005]根據(jù)本發(fā)明的一個(gè)方面,提供一種對(duì)數(shù)據(jù)庫(kù)進(jìn)行分區(qū)的方法,包括:將所述數(shù)據(jù)庫(kù)中的多個(gè)條目分組成一個(gè)或多個(gè)條目組,以使同一個(gè)所述條目組中的條目總是被一個(gè)或多個(gè)事務(wù)同時(shí)訪問(wèn);以及將所述一個(gè)或多個(gè)條目組劃分為設(shè)定數(shù)目個(gè)分區(qū),以使跨多于一個(gè)分區(qū)進(jìn)行訪問(wèn)的事務(wù)總數(shù)最小化。
[0006]根據(jù)本發(fā)明的另一方面,提供一種對(duì)數(shù)據(jù)庫(kù)進(jìn)行分區(qū)的系統(tǒng),包括:分組裝置,被配置為將所述數(shù)據(jù)庫(kù)中的多個(gè)條目分組成一個(gè)或多個(gè)條目組,以使同一個(gè)所述條目組中的條目總是被一個(gè)或多個(gè)事務(wù)同時(shí)訪問(wèn);以及分區(qū)裝置,被配置為將所述一個(gè)或多個(gè)條目組劃分為設(shè)定數(shù)目個(gè)分區(qū),以使跨多于一個(gè)分區(qū)進(jìn)行訪問(wèn)的事務(wù)總數(shù)最小化
【專利附圖】
【附圖說(shuō)明】
[0007]通過(guò)參考附圖閱讀下文的詳細(xì)描述,本發(fā)明實(shí)施方式的上述以及其他目的、特征和優(yōu)點(diǎn)將變得明顯。在附圖中,以示例性而非限制性的方式示出了本發(fā)明的若干實(shí)施方式,其中相同的參考標(biāo)號(hào)表示相同或相似的元素。
[0008]圖1圖示了本發(fā)明的實(shí)施方式可以實(shí)現(xiàn)于其中的示例性環(huán)境100。
[0009]圖2圖示了根據(jù)本發(fā)明一個(gè)示例性實(shí)施方式的用于對(duì)數(shù)據(jù)庫(kù)進(jìn)行分區(qū)的方法200的流程圖。
[0010]圖3圖示了根據(jù)本發(fā)明示例性實(shí)施方式的用于對(duì)數(shù)據(jù)庫(kù)進(jìn)行分區(qū)的系統(tǒng)300的框圖。
[0011]圖4圖示了根據(jù)本發(fā)明一個(gè)示例性實(shí)施方式的用于對(duì)數(shù)據(jù)庫(kù)進(jìn)行分區(qū)的系統(tǒng)的示例界面。
[0012]圖5圖示了適合用來(lái)實(shí)踐本發(fā)明實(shí)施方式的計(jì)算機(jī)系統(tǒng)500的框圖。
【具體實(shí)施方式】
[0013]下面將參考附圖中示出的若干示例性實(shí)施方式來(lái)描述本發(fā)明的原理和精神。應(yīng)當(dāng)理解,給出這些實(shí)施方式僅僅是為了使本領(lǐng)域技術(shù)人員能夠更好地理解進(jìn)而實(shí)現(xiàn)本發(fā)明,而并非以任何方式限制本發(fā)明的范圍。
[0014]首先參考圖1,其圖示了本發(fā)明的實(shí)施方式可以實(shí)現(xiàn)于其中的示例性環(huán)境100。
[0015]如圖所示,在示例環(huán)境100中,總是存在對(duì)數(shù)據(jù)庫(kù)管理系統(tǒng)DBMS102進(jìn)行訪問(wèn)的高度并發(fā)的工作負(fù)載,對(duì)于事務(wù)型數(shù)據(jù)庫(kù)而言,工作負(fù)載可以包括大量的事務(wù)101。很明顯,采用單節(jié)點(diǎn)數(shù)據(jù)庫(kù)系統(tǒng)來(lái)應(yīng)對(duì)這些事務(wù)除了對(duì)該單節(jié)點(diǎn)的存儲(chǔ)能力有極高的要求外,對(duì)其的處理能力也是一種挑戰(zhàn)。因此,較為常見(jiàn)的方法是將數(shù)據(jù)庫(kù)102劃分成多個(gè)分區(qū)(例如如圖1中所示的分區(qū)1、分區(qū)2...),每個(gè)分區(qū)對(duì)應(yīng)存儲(chǔ)于集群的多個(gè)分布式節(jié)點(diǎn)上(例如如圖1中所示的103節(jié)點(diǎn)I至節(jié)點(diǎn)η)。分布式節(jié)點(diǎn)103具有相應(yīng)的服務(wù)器以完成對(duì)事務(wù)101的處理。換而言之,節(jié)點(diǎn)102同時(shí)具有對(duì)數(shù)據(jù)庫(kù)分區(qū)的存儲(chǔ)能力以及對(duì)事務(wù)101的處理能力。這樣,對(duì)DBMS 102的大量并發(fā)的事務(wù)101訪問(wèn)就被分散為對(duì)一個(gè)或多個(gè)分布式節(jié)點(diǎn)103的訪問(wèn),一方面降低了對(duì)各個(gè)分布式節(jié)點(diǎn)103的能力要求,另一方面也加快了對(duì)事務(wù)訪問(wèn)的處理速度。
[0016]如前所述,在這樣的環(huán)境100中,對(duì)數(shù)據(jù)庫(kù)進(jìn)行分區(qū)的方式無(wú)疑是非常關(guān)鍵的。以下參照?qǐng)D2詳細(xì)描述根據(jù)本發(fā)明示例性實(shí)施方式的對(duì)數(shù)據(jù)庫(kù)進(jìn)行分區(qū)的方法200。應(yīng)當(dāng)理解,方法200中示出的步驟僅僅是示意性的。例如,這些步驟可以按照不同的順序執(zhí)行甚至并行執(zhí)行。此外,方法200也可以包括附加的步驟,替換某些步驟,或者省略某些步驟。
[0017]條目組分組
[0018]如圖2所示,方法200開(kāi)始之后,在步驟S202,首先將數(shù)據(jù)庫(kù)中的多個(gè)條目分組成一個(gè)或多個(gè)條目組,以使得被分組于同一條目組中的全部條目在工作負(fù)載的執(zhí)行期間始終被同時(shí)訪問(wèn)。這一步驟基于對(duì)工作負(fù)載和數(shù)據(jù)庫(kù)的分析,確定出在工作負(fù)載執(zhí)行期間總是被同時(shí)訪問(wèn)的條目,并將它們聚合成群組,作為后續(xù)劃分的最小單元。在某些可選方式中,條目組的大小從數(shù)據(jù)庫(kù)元數(shù)據(jù)和存儲(chǔ)在系統(tǒng)目錄中的統(tǒng)計(jì)數(shù)據(jù)中派生出。此外,還可以在可選方式中記錄關(guān)于工作負(fù)載的各個(gè)事務(wù)還涉及到哪些條目組的有關(guān)信息。
[0019]數(shù)據(jù)庫(kù)典型地例如可以是關(guān)系數(shù)據(jù)庫(kù),為使本領(lǐng)域技術(shù)人員更好地理解本發(fā)明,以下以關(guān)系數(shù)據(jù)庫(kù)為例進(jìn)一步說(shuō)明該步驟S202的示例性實(shí)現(xiàn),然而本領(lǐng)域技術(shù)人員應(yīng)知,其完全可以是其它類型的數(shù)據(jù)庫(kù),并且步驟S202也可以以其它方式實(shí)現(xiàn),本發(fā)明在此方面不受限制。
[0020]在關(guān)系數(shù)據(jù)庫(kù)中,數(shù)據(jù)庫(kù)條目例如可以為元組(tuple)。如本領(lǐng)域技術(shù)人員所知,術(shù)語(yǔ)“元組”是關(guān)系數(shù)據(jù)庫(kù)中的基本概念,關(guān)系例如可以是一張表,而表中的每行(即數(shù)據(jù)庫(kù)中的每條記錄)可以稱之為一個(gè)元組。因此,對(duì)于關(guān)系數(shù)據(jù)庫(kù)而言,步驟S202例如可以包括基于從工作負(fù)載中提取的信息,將數(shù)據(jù)庫(kù)中的每張表劃分成一個(gè)或多個(gè)元組群組(tuplegroup)。術(shù)語(yǔ)“元組群組”是關(guān)系內(nèi)的元組集合,在工作負(fù)載執(zhí)行過(guò)程中,元組群組始終一起被訪問(wèn)。每個(gè)元組群組實(shí)質(zhì)上代表最小項(xiàng)謂詞(min-term predicate)。給定關(guān)系R,其中A是R的屬性,則在R上定義的簡(jiǎn)單謂詞P具有如下形式:
[0021]P:Α Θ const
[0022]其中,const是常數(shù),并且Θ £{=,<,關(guān),>,≤,≥}。
[0023]給定從工作負(fù)載派生的、關(guān)系R上的簡(jiǎn)單謂詞{Ρ1,Ρ2,...,ρη}集,則最小項(xiàng)謂詞M可以定義為:
[0024]
【權(quán)利要求】
1.一種對(duì)數(shù)據(jù)庫(kù)進(jìn)行分區(qū)的方法,包括: 將所述數(shù)據(jù)庫(kù)中的多個(gè)條目分組成一個(gè)或多個(gè)條目組,以使同一個(gè)所述條目組中的條目總是被一個(gè)或多個(gè)事務(wù)同時(shí)訪問(wèn);以及 將所述一個(gè)或多個(gè)條目組劃分為設(shè)定數(shù)目個(gè)分區(qū),以使跨多于一個(gè)分區(qū)進(jìn)行訪問(wèn)的事務(wù)數(shù)目最小化。
2.根據(jù)權(quán)利要求1所述的方法,其中,將所述一個(gè)或多個(gè)條目組劃分為設(shè)定數(shù)目個(gè)分區(qū),以使跨多于一個(gè)分區(qū)進(jìn)行訪問(wèn)的事務(wù)數(shù)目最小化進(jìn)一步包括: 將所述一個(gè)或多個(gè)條目組映射為點(diǎn); 將對(duì)所述點(diǎn)所代表的一個(gè)或多個(gè)條目組中所包含的條目進(jìn)行訪問(wèn)的一個(gè)或多個(gè)事務(wù)映射為與所述點(diǎn)相關(guān)聯(lián)的邊,生成圖結(jié)構(gòu);以及 將所述圖結(jié)構(gòu)劃分為所述設(shè)定數(shù)目個(gè)部分,以使被切割的邊的數(shù)目最少, 其中,劃分成的所述各個(gè)部分對(duì)應(yīng)于所述數(shù)據(jù)庫(kù)的各個(gè)分區(qū)。
3.根據(jù)權(quán)利要求2所述的方法,其中所述圖結(jié)構(gòu)為超圖。
4.根據(jù)權(quán)利要求1-3之任一所述的方法,還包括: 確定所劃分的各個(gè)所述分區(qū)是否滿足設(shè)定條件; 當(dāng)確定為不滿足所述設(shè)定條件時(shí),重復(fù)進(jìn)行如下步驟,直至滿足所述設(shè)定條件: 將一個(gè)或多個(gè)所述條目組中的每一個(gè)進(jìn)一步分組成多個(gè)條目組;以及基于當(dāng)前的所有條目組進(jìn)行所述劃分設(shè)定數(shù)目個(gè)分區(qū)以使對(duì)多于一個(gè)分區(qū)進(jìn)行訪問(wèn)的事務(wù)數(shù)目最小化。
5.根據(jù)權(quán)利要求4所述的方法,其中,所述將一個(gè)或多個(gè)所述條目組進(jìn)一步分組成多個(gè)條目組進(jìn)一步包括: 基于條目組的大小和/或條目組的大小與對(duì)所述條目組的訪問(wèn)頻率的比率,選擇用于進(jìn)一步分組的所述一個(gè)或多個(gè)條目組。
6.根據(jù)權(quán)利要求4所述的方法,其中,所述設(shè)定條件涉及以下中的一個(gè)或多個(gè):各個(gè)節(jié)點(diǎn)的存儲(chǔ)能力、各個(gè)節(jié)點(diǎn)的處理能力、分區(qū)的均衡水平、總劃分次數(shù)以及多次劃分的結(jié)果是否收斂。
7.根據(jù)權(quán)利要求6所述的方法,其中,所述設(shè)定條件由所述節(jié)點(diǎn)本身決定和/或由用戶設(shè)置。
8.根據(jù)權(quán)利要求6所述的方法,其中,所述多次劃分的結(jié)果是否收斂進(jìn)一步包括分別與最近若干次分區(qū)結(jié)果相關(guān)聯(lián)的、跨多于一個(gè)分區(qū)進(jìn)行訪問(wèn)的事務(wù)的數(shù)目之間的差別是否小于設(shè)定閾值。
9.根據(jù)權(quán)利要求6-8之任一所述的方法,其中,所述分區(qū)的均衡水平基于如下中的一個(gè)或多個(gè)進(jìn)行度量:分區(qū)的數(shù)目、分區(qū)的大小、訪問(wèn)所述分區(qū)內(nèi)全部條目的事務(wù)數(shù)目、存儲(chǔ)不均衡的影響度、以及處理不均衡的影響度。
10.根據(jù)權(quán)利要求9所述的方法,其中,所述分區(qū)的均衡水平基于不均衡因子SF進(jìn)行度量:1Lf=Iia X (si X 2?= I si) +Px (tI ~ EF=I fi))n其中,a代表所述存儲(chǔ)不均衡對(duì)性能的影響因子,3代表所述處理不均衡對(duì)性能的影響因子,a和P均為非負(fù)參數(shù)并且a+P = I ; 并且其中,n代表分區(qū)的數(shù)目,Si和\分別代表第i個(gè)分區(qū)內(nèi)的條目組的大小和訪問(wèn)第i個(gè)分區(qū)的事務(wù)的總數(shù)量。
11.根據(jù)權(quán)利要求1-3之任一所述的方法,進(jìn)一步包括: 當(dāng)確定為滿足所述設(shè)定條件時(shí),基于各個(gè)所述分區(qū)中的條目與存儲(chǔ)所述條目的節(jié)點(diǎn)之間的映射關(guān)系,建立查找表。
12.根據(jù)權(quán)利要求1-3之任一所述的方法,其中所述數(shù)據(jù)庫(kù)為關(guān)系數(shù)據(jù)庫(kù)。
13.—種對(duì)數(shù)據(jù)庫(kù)進(jìn)行分區(qū)的系統(tǒng),包括: 分組裝置,被配置為將所述數(shù)據(jù)庫(kù)中的多個(gè)條目分組成一個(gè)或多個(gè)條目組,以使同一個(gè)所述條目組中的條目總是被一個(gè)或多個(gè)事務(wù)同時(shí)訪問(wèn);以及 分區(qū)裝置,被配置為將所述一個(gè)或多個(gè)條目組劃分為設(shè)定數(shù)目個(gè)分區(qū),以使跨多于一個(gè)分區(qū)進(jìn)行訪問(wèn)的事務(wù)數(shù)目最小化。
14.根據(jù)權(quán)利要求13所述的系統(tǒng),其中,所述分區(qū)裝置進(jìn)一步包括: 點(diǎn)映射裝置,被配置為將所述一個(gè)或多個(gè)條目組映射為點(diǎn); 邊映射裝置,被配置為將對(duì)所述點(diǎn)所代表的一個(gè)或多個(gè)條目組中所包含的條目進(jìn)行訪問(wèn)的一個(gè)或多個(gè)事務(wù)映射為與所述點(diǎn)相關(guān)聯(lián)的邊,生成圖結(jié)構(gòu);以及 圖劃分裝置,被配置為將所述圖結(jié)構(gòu)劃分為所述設(shè)定數(shù)目個(gè)部分,以使被切割的邊的數(shù)目最少, 其中,劃分成的所述各個(gè)部分對(duì)應(yīng)于所述數(shù)據(jù)庫(kù)的各個(gè)分區(qū)。
15.根據(jù)權(quán)利要求14所述的系統(tǒng),其中所述圖結(jié)構(gòu)為超圖。
16.根據(jù)權(quán)利要求13-15之任一所述的系統(tǒng),還包括: 確定裝置,被配置為確定所劃分的各個(gè)所述分區(qū)是否滿足設(shè)定條件;以及 精化裝置,被配置為當(dāng)確定為不滿足所述設(shè)定條件時(shí),重復(fù)進(jìn)行如下步驟,直至滿足所述設(shè)定條件: 將一個(gè)或多個(gè)所述條目組中的每一個(gè)進(jìn)一步分組成多個(gè)條目組; 基于當(dāng)前的所有條目組進(jìn)行所述劃分設(shè)定數(shù)目個(gè)分區(qū)以使對(duì)多于一個(gè)分區(qū)進(jìn)行訪問(wèn)的事務(wù)數(shù)目最小化。
17.根據(jù)權(quán)利要求16所述的系統(tǒng),其中,所述將一個(gè)或多個(gè)所述條目組進(jìn)一步分組成多個(gè)條目組進(jìn)一步包括: 基于條目組的大小和/或條目組的大小與對(duì)所述條目組的訪問(wèn)頻率的比率,選擇用于進(jìn)一步分組的所述一個(gè)或多個(gè)條目組。
18.根據(jù)權(quán)利要求17所述的系統(tǒng),其中,所述設(shè)定條件涉及以下中的一個(gè)或多個(gè):各個(gè)節(jié)點(diǎn)的存儲(chǔ)能力、各個(gè)節(jié)點(diǎn)的處理能力、分區(qū)的均衡水平、總劃分次數(shù)以及多次劃分的結(jié)果是否收斂。
19.根據(jù)權(quán)利要求18所述的系統(tǒng),其中,所述設(shè)定條件由所述節(jié)點(diǎn)本身決定和/或由用戶設(shè)置。
20.根據(jù)權(quán)利要求18所述的系統(tǒng),其中,所述多次劃分的結(jié)果是否收斂進(jìn)一步包括分別與最近若干次分區(qū)結(jié)果相關(guān)聯(lián)的、跨多于一個(gè)分區(qū)進(jìn)行訪問(wèn)的事務(wù)的數(shù)目之間的差別是否小于設(shè)定閾值。
21.根據(jù)權(quán)利要求18-20之任一所述的系統(tǒng),其中,所述分區(qū)的均衡水平基于如下中的一個(gè)或多個(gè)進(jìn)行度量:分區(qū)的數(shù)目、分區(qū)的大小、訪問(wèn)所述分區(qū)內(nèi)全部條目的事務(wù)數(shù)目、存儲(chǔ)不均衡的影響度、以及處理不均衡的影響度。
22.根據(jù)權(quán)利要求21所述的系統(tǒng),其中,所述分區(qū)的均衡水平基于不均衡因子SF進(jìn)行度量:
23.根據(jù)權(quán)利要求13-15之任一所述的系統(tǒng),進(jìn)一步包括: 查找表建立裝置,被配置為當(dāng)確定為滿足所述設(shè)定條件時(shí),基于各個(gè)所述分區(qū)中的條目與存儲(chǔ)所述條目的節(jié)點(diǎn)之間的映射關(guān)系,建立查找表。
24.根據(jù)權(quán)利要求13-15之任一所述的系統(tǒng),其中所述數(shù)據(jù)庫(kù)為關(guān)系數(shù)據(jù)庫(kù)。
【文檔編號(hào)】G06F17/30GK103714098SQ201210387802
【公開(kāi)日】2014年4月9日 申請(qǐng)日期:2012年9月29日 優(yōu)先權(quán)日:2012年9月29日
【發(fā)明者】曹逾, 郭小燕, 陳繼東 申請(qǐng)人:伊姆西公司