專利名稱::一種分布式并行數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)分區(qū)方法
技術(shù)領域:
:本發(fā)明涉及一種分布式并行數(shù)據(jù)庫系統(tǒng),尤其涉及一種分布式并行數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)分區(qū)方法。
背景技術(shù):
:將數(shù)據(jù)存儲在數(shù)據(jù)庫中是常用的數(shù)據(jù)管理方法,特別是存儲在關(guān)系型數(shù)據(jù)庫中。我們可以根據(jù)所要管理的數(shù)據(jù)需求,選擇成熟的數(shù)據(jù)庫管理系統(tǒng)(DBMS=DatabaseManagementSystem),用標準的數(shù)據(jù)定義語言(如SQLDDL),定義包含數(shù)據(jù)表(Table)或關(guān)系(Relation)、數(shù)據(jù)結(jié)構(gòu)、索引、主鍵(PrimaryKey)和外鍵(ForeignKey)等信息的數(shù)據(jù)庫數(shù)據(jù)管理方案(DatabaseSchema),部署數(shù)據(jù)庫系統(tǒng)。而應用程序根據(jù)DBMS提供的數(shù)據(jù)操作語言(如SQLDML),可以進行數(shù)據(jù)操作,如插入、查詢、更新、導入和導出等。當前許多行業(yè)應用,產(chǎn)生和累積的數(shù)據(jù)量非常巨大,例如物聯(lián)網(wǎng)感知數(shù)據(jù)(SensorData)、金融交易數(shù)據(jù)(TransactionData)、電子商務商品數(shù)據(jù)(GoodsData)、公司銷售數(shù)據(jù)(SalesData)等數(shù)據(jù)集(DataSet)。這些數(shù)據(jù)集可能會達到幾百TBs(TeraBytes)或PBs(PetaBytes)這樣海量的規(guī)模,而且隨著時間的增長和業(yè)務的發(fā)展,產(chǎn)生數(shù)據(jù)的速度也可能會不斷提高。對這些海量數(shù)據(jù)的操作效率,如查詢速度,提出了更高的要求。對于海量數(shù)據(jù)的管理,單節(jié)點的數(shù)據(jù)庫系統(tǒng),受其計算或存儲能力的局限,已經(jīng)不能勝任。分布式并行結(jié)構(gòu)或極大規(guī)模并行處理(MPP=MassivelyParallelProcessing)結(jié)構(gòu)的數(shù)據(jù)庫或數(shù)據(jù)倉庫系統(tǒng)可以提供更好的容量和性能方面的伸縮性和擴展性。其中的多節(jié)點無共享集群(Shared-nothingCluster)架構(gòu)已被證實具有管理大規(guī)模數(shù)據(jù)的優(yōu)勢。無共享(Shared-nothing)多節(jié)點分布式并行數(shù)據(jù)庫系統(tǒng)架構(gòu)圖如圖1所示,前端服務器實現(xiàn)一個全局分區(qū)器(Partitioner),它將各個數(shù)據(jù)表按照某種規(guī)則(如按各數(shù)據(jù)表特定屬性域的HASH值或時間段等)進行分區(qū)(Partitioning)或分片(Sharding),將數(shù)據(jù)分布存儲在多個不同的存儲和處理節(jié)點上(如圖中的節(jié)點1節(jié)點N),并由每個節(jié)點上運行的本地數(shù)據(jù)庫實例(LocalDatabaseInstance),來管理根據(jù)分區(qū)器分配到該節(jié)點上的數(shù)據(jù)分區(qū)或分片;同時,一個運行在前端服務器上的全局優(yōu)化查詢器(GlobalQuerier),對應用發(fā)起的特定查詢(Query),進行分析,并發(fā)送(Dispatch)給各節(jié)點數(shù)據(jù)庫系統(tǒng)實例,由各節(jié)點上的本地查詢器(LocalQuerier)來處理,然后將結(jié)果返回給全局查詢器,進行進一步的處理,如合并(Merge)和排序(Sort)等操作,最后將結(jié)果返回給相應的應用。分區(qū)器在對各數(shù)據(jù)表進行劃分時,采用諸如輪轉(zhuǎn)劃分(RoundRobinPartitioning)、散列劃分(HashPartitioning)、范圍劃分(RangePartitioning)和鏈表劃分(ListPartitioning)等分區(qū)方法,將數(shù)據(jù)發(fā)送給相應的節(jié)點。由于采用的分區(qū)方法單獨作用于各個數(shù)據(jù)表,因此,對于針對多個數(shù)據(jù)表的較復雜的關(guān)聯(lián)查詢時,特別是涉及多表間連接(Join)操作的查詢,全局查詢器無論根據(jù)Join查詢判斷式(Predicate)所涉及的任何一個表的分區(qū)信息,將查詢發(fā)送給各分區(qū)所對應的節(jié)點上的局部查詢器處理時,對于Join判斷式所涉及的其他表,各節(jié)點都要從其他節(jié)點上的分區(qū)拷貝搬運數(shù)據(jù)。這3種查詢時的節(jié)點間數(shù)據(jù)搬運也稱作動態(tài)再分區(qū)(DynamicR印artitioning),不僅會消耗網(wǎng)絡帶寬,也會產(chǎn)生傳輸耗時,極大地增加查詢的響應時間,影響查詢效率。
發(fā)明內(nèi)容為了解決現(xiàn)有技術(shù)存在的不足,本發(fā)明的目的在于提供一種分布式并行數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)分區(qū)方法,消除查詢時節(jié)點間數(shù)據(jù)的拷貝和搬運,提高查詢響應速度和效率。為實現(xiàn)上述目的,本發(fā)明提供的一種分布式并行數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)分區(qū)方法,該方法包括以下步驟根據(jù)構(gòu)建的分布式并行數(shù)據(jù)庫系統(tǒng)及分布規(guī)則,創(chuàng)建事實表和維度表,并將所述事實表紀錄和維度表紀錄插入到節(jié)點上;將維度表紀錄復制到事實表的節(jié)點上;對數(shù)據(jù)進行刪除和更新。本發(fā)明在對數(shù)據(jù)集或數(shù)據(jù)流分區(qū)導入或插入分布式數(shù)據(jù)庫系統(tǒng)時,能在每一個節(jié)點,滿足數(shù)據(jù)庫方案所定義的表間關(guān)系,特別是主-外鍵約束條件,使每一個節(jié)點上的數(shù)據(jù),具有數(shù)據(jù)的局部完備性。對于利用主-外鍵約束條件進行表間連接的查詢處理,由于各節(jié)點的數(shù)據(jù)對這類查詢具有局部完備性,不需要在節(jié)點間做數(shù)據(jù)動態(tài)再分區(qū),避免了數(shù)據(jù)的網(wǎng)絡傳輸耗時,降低查詢響應時間,提高查詢效率。本發(fā)明的其它特征和優(yōu)點將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實施本發(fā)明而了解。附圖用來提供對本發(fā)明的進一步理解,并且構(gòu)成說明書的一部分,并與本發(fā)明的實施例一起,用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的限制。在附圖中圖1為現(xiàn)有技術(shù)中無共享多節(jié)點分布式并行數(shù)據(jù)庫系統(tǒng)架構(gòu)圖;圖2為根據(jù)本發(fā)明的分布式并行數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)分區(qū)方法流程圖;圖3為根據(jù)本發(fā)明的事實表和維度表關(guān)聯(lián)圖;圖4為根據(jù)本發(fā)明的劃分成單一星型后的數(shù)據(jù)表關(guān)系圖;圖5為根據(jù)本發(fā)明的維度表紀錄插入后數(shù)據(jù)分布圖;圖6為根據(jù)本發(fā)明的事實表紀錄插入后數(shù)據(jù)分布情況示意圖;圖7為根據(jù)本發(fā)明的BloomFilter位數(shù)組初始值示意圖;圖8為根據(jù)本發(fā)明的根據(jù)χ的哈希函數(shù)值設置位數(shù)組示意圖;圖9為根據(jù)本發(fā)明的判斷y是否屬于集合示意圖。具體實施例方式以下結(jié)合附圖對本發(fā)明的優(yōu)選實施例進行說明,應當理解,此處所描述的優(yōu)選實施例僅用于說明和解釋本發(fā)明,并不用于限定本發(fā)明。在構(gòu)建數(shù)據(jù)庫系統(tǒng)或以分布式數(shù)據(jù)庫為基礎構(gòu)建的數(shù)據(jù)倉庫時,一般總是將實際的事實數(shù)據(jù)和用于描述屬性的數(shù)據(jù)用不同的表分隔,實際的事實數(shù)據(jù)存放于一類被稱為事實表(Facttable)的表中,而從不同角度來描述屬性的數(shù)據(jù)則放到不同的維度表4(Dimensiontable)中。比如,一個Sales數(shù)據(jù)庫或數(shù)據(jù)倉庫可以這樣設計,每一筆銷售記錄,應該會包含銷售的產(chǎn)品,銷售的客戶,產(chǎn)品的供貨商,銷售的時間,銷售的數(shù)量和獲得的收入等。對于銷售的數(shù)量和金額這類具體的數(shù)字型的數(shù)據(jù),通常是系統(tǒng)要分析的對象,而對于像時間,產(chǎn)品,客戶,供貨商,我們往往希望從這些不同的角度來得到數(shù)字型數(shù)據(jù)的一個統(tǒng)計結(jié)果。所以,一般將數(shù)字型的數(shù)據(jù)存放在事實表中,將時間、產(chǎn)品、客戶、供貨商存放在不同的維度表中。自然,在維度表和事實表之間存在一個主-外鍵的關(guān)聯(lián),各個維度表之間則沒有關(guān)系。以類似上述的方式來建模數(shù)據(jù)庫系統(tǒng)關(guān)系和屬性的方式,由于它將不同的數(shù)據(jù)表分為維度表和事實表,并以主-外鍵相關(guān)聯(lián),拓撲上,事實表處于中間的位置,維度表則繞事實表圍成一圈,形似一顆星,所以被稱數(shù)據(jù)庫系統(tǒng)的星形模型(StarSchema)0事實表中除了區(qū)分每條紀錄的外鍵(關(guān)聯(lián)維度表的主鍵)外,就只有我們關(guān)心的數(shù)字型數(shù)據(jù),所以事實表中的每條紀錄,有個專門的術(shù)語稱之為度量(Measurement),因為我們利用數(shù)據(jù)庫或數(shù)據(jù)倉庫做統(tǒng)計分析的時候,這些數(shù)據(jù)就是統(tǒng)計分析的一個個基本單位,也就是度量值。我們知道,在數(shù)據(jù)庫系統(tǒng)查詢和分析中,一般的查詢處理,總是基于對度量即事實表度量的分析和處理展開進行的,即在查詢的判斷式中,總是含有涉及事實表的判斷式。星型模型是數(shù)據(jù)庫系統(tǒng)或數(shù)據(jù)倉庫建模關(guān)系和數(shù)據(jù)的最主要的模型。另外,從星型模型中衍生出來主要有雪花模型(SnowflakeSchema)。雪花模型就是在星形模型的基礎上,對維度表做規(guī)范化后得到的模型。由于每個維度表規(guī)范化可能得到一個星形拓撲或多級的星形拓撲,使整個模型拓撲上形似雪花,所以稱為雪花模型。雪花模型比起星模型就更加復雜,查詢的時候也需要關(guān)聯(lián)更多的表。圖2為根據(jù)本發(fā)明的分布式并行數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)分區(qū)方法流程圖,下面將參考圖2,對本發(fā)明的分布式并行數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)分區(qū)方法進行詳細描述首先,在步驟201,根據(jù)所要管理的數(shù)據(jù)性質(zhì)以及節(jié)點數(shù),構(gòu)建分布式并行數(shù)據(jù)庫系統(tǒng)。例如,在銷售數(shù)據(jù)庫或數(shù)據(jù)倉庫中,構(gòu)建的數(shù)據(jù)表包含有銷售的產(chǎn)品,銷售的客戶,產(chǎn)品的供貨商,銷售的時間,銷售的數(shù)量和獲得的收入等數(shù)據(jù);在步驟202,創(chuàng)建事實表和維度表。創(chuàng)建用于存放實際的事實數(shù)據(jù)的事實表,定義該事實表的主鍵和外鍵,并將事實數(shù)據(jù)的紀錄插入到該事實表,該事實數(shù)據(jù)如上述Sales數(shù)據(jù)庫或數(shù)據(jù)倉庫中銷售的數(shù)量和獲得的收入這類具體的數(shù)字型的數(shù)據(jù);創(chuàng)建用于存放從不同角度來描述屬性的數(shù)據(jù)的維度表,定義該維度表的主鍵,并將描述屬性的數(shù)據(jù)的紀錄插入到該維度表中,描述屬性的數(shù)據(jù)如上述Sales數(shù)據(jù)庫或數(shù)據(jù)倉庫中的時間、產(chǎn)品、客戶、供貨商等數(shù)據(jù);利用事實表的外鍵與維度表的主鍵,對事實表和維度表進行關(guān)聯(lián)。圖3為根據(jù)本發(fā)明的事實表和維度表關(guān)聯(lián)圖,如圖3所示,Tablel和Table2定義為事實表,Table3、Table4和Table5定義為維度表。Tablel的外鍵Fieldll關(guān)聯(lián)Talbe3的主鍵ID3,Tablel的外鍵Fieldl2和Table2的外鍵Field21均關(guān)聯(lián)Talbe4的主鍵ID4,Table2的外鍵Field22關(guān)聯(lián)Talbe5的主鍵ID5;圖4為根據(jù)本發(fā)明的劃分成單一星型后的數(shù)據(jù)表關(guān)系圖,如圖4所示,根據(jù)圖3的事實表和維度表關(guān)聯(lián)圖,把維度表Table4劃分成邏輯的2張表,形成2個單一的星型結(jié)構(gòu),維度表Table4在物理上仍然是一張表;在步驟203,將事實表紀錄和維度表紀錄插入到節(jié)點上。在本步驟中是按照分區(qū)策5略,將事實表紀錄和維度表紀錄插入到不同的節(jié)點上;在步驟204,復制維度表紀錄。事實表的紀錄插入完成后,為了保證數(shù)據(jù)的局部完備性,將該事實表的紀錄外鍵關(guān)聯(lián)的維度表的紀錄,復制到本節(jié)點。這樣,表間連接(Join)生成連接表的時候,不需要搬運其他節(jié)點的數(shù)據(jù),減少網(wǎng)絡開銷。確定將維度表的紀錄復制到事實表的節(jié)點上的方法是首先要確定的是,事實表的外鍵所關(guān)聯(lián)的維度表才需要復制;其次,該新插入紀錄中的外鍵所關(guān)聯(lián)的維度表中的紀錄,需要復制到該事實表紀錄的同一個節(jié)點上。例如,事實表的紀錄的外鍵值為X,那么需要將維度表中主鍵值為X的紀錄復制到本節(jié)點。如果事實表的紀錄有多個外鍵,需要將每個外鍵關(guān)聯(lián)的維度表的紀錄復制過來。由于分區(qū)一般是以表的主鍵作為關(guān)鍵字,所以根據(jù)事實表外鍵的值(也就是維度表主鍵值),能夠很容易找到維度表中需要的紀錄位于哪個節(jié);卜.O圖5為根據(jù)本發(fā)明的維度表紀錄插入后數(shù)據(jù)分布圖,如圖5所示,以圖4中的Tablel、Table3和Table4這一星型為例,在維度表(Table3和Table4)紀錄插入后,各節(jié)點上的數(shù)據(jù)分布情況,從圖5可以看出,在事實表紀錄插入之前,維度表的紀錄在各節(jié)點上是不重疊的(Non-Overlap)。圖6為根據(jù)本發(fā)明的事實表紀錄插入后數(shù)據(jù)分布情況示意圖,如圖6所示,在節(jié)點1插入一條Tablel的紀錄,其Fieldll(值為2)和Fieldl2(值為3)所關(guān)聯(lián)的Table3和Table4的紀錄(分別為ID3=2和ID4=3)在節(jié)點1上不存在,所以需要分別從節(jié)點2和節(jié)點3復制過來;在節(jié)點2插入一條Tablel的紀錄,其Fieldll(值為2)所關(guān)聯(lián)的Table3的紀錄(ID3=2)在節(jié)點2上已經(jīng)存在,不需要復制。而Fieldl2(值為1)所關(guān)聯(lián)的Table4的紀錄(ID4=1)在節(jié)點2上不存在,所以需要從節(jié)點1復制過來;在節(jié)點3插入一條Tablel的紀錄,其Fieldll(值為3)和Fieldl2(值為3)所關(guān)聯(lián)的Table3和Table4的紀錄(分別為ID3=3和ID4=3)在節(jié)點3上都已經(jīng)存在,所以不需要復制。我們可以看出,在事實表紀錄插入后,維度表紀錄可能在不同節(jié)點上產(chǎn)生重疊(Overlap),而事實表紀錄是不重疊的(Non-Overlap)。我們把某個紀錄按照初始分區(qū)策略劃分的節(jié)點稱為該紀錄的主節(jié)點(PrimaryNode),而維度表紀錄為保持局部完備性復制過去的節(jié)點稱為該紀錄的備份節(jié)點(BackupNode)。上述方法,對于大量涉及到Join的查詢操作,系統(tǒng)能夠快速獲取到外鍵關(guān)聯(lián)的紀錄,因為在同一節(jié)點已存儲了這些關(guān)聯(lián)的紀錄,不需要每次都進行數(shù)據(jù)搬運,從而提高查詢效率;對于維度表的查詢操作,先由前端服務器將查詢請求發(fā)送到每個節(jié)點,每個節(jié)點獲取本節(jié)點的紀錄,然后返回給前端服務器進行匯總。由于維度表紀錄可能在不同節(jié)點上產(chǎn)生重疊,所以前端服務器收到的維度表紀錄可能會重復。解決這個問題的方法可以在前端服務器上過濾掉重復的紀錄;也可以在單個節(jié)點上,對紀錄區(qū)分主節(jié)點和備份節(jié)點,過濾掉備份節(jié)點的紀錄;在步驟205,數(shù)據(jù)的刪除處理。刪除事實表中的紀錄,在事實表中的紀錄被刪除后,如果關(guān)聯(lián)的維度表的紀錄不再被其他事實表關(guān)聯(lián),則需要刪除本節(jié)點上關(guān)聯(lián)的維度表紀錄6(主節(jié)點的紀錄不刪除);維度表中紀錄的刪除,只需要刪除主節(jié)點上的紀錄。因為刪除維度表紀錄之前,需要先刪除事實表紀錄,而在刪除事實表紀錄的時候,已經(jīng)刪除那個節(jié)點上維度表紀錄;在步驟206,數(shù)據(jù)的更新處理。事實表中紀錄更新后,如果涉及到外鍵的更新,需要先刪除舊的維度表紀錄(主節(jié)點的紀錄以及被其他事實表關(guān)聯(lián)的紀錄不刪除),再復制新的維度表紀錄;維度表中紀錄的更新,除了要更新主節(jié)點的紀錄外,還需要更新備份節(jié)點的紀錄。更新維度表紀錄的一種實現(xiàn)方法是搜索所有節(jié)點的事實表,查看事實表中是否存在外鍵等于要更新的維度表紀錄的主鍵,如果存在,則更新該節(jié)點上維度表的相關(guān)紀錄。這種方式需要遍歷所有節(jié)點的事實表,將消耗較長的時間;更新維度表紀錄的一種優(yōu)化的實現(xiàn)方法是針對每個維度表和每個節(jié)點,建立一個布隆過濾器(BloomFilter)表,記錄維度表紀錄在節(jié)點上的分布情況,從而輕易找到保存某條指定紀錄的節(jié)點。布隆過濾器(BloomFilter)是一種空間效率很高的隨機數(shù)據(jù)結(jié)構(gòu),它利用位數(shù)組很簡潔地表示一個集合,并能判斷一個元素是否屬于這個集合。BloomFilter的這種高效是有一定代價的在判斷一個元素是否屬于某個集合時,有可能會把不屬于這個集合的元素誤認為屬于這個集合(FalsePositive)。因此,BloomFilter不適合那些“零錯誤”的應用場合。而在能容忍低錯誤率的應用場合下,BloomFilter通過極少的錯誤換取了存儲空間的極大節(jié)省。下面我們具體來看BloomFilter是如何用位數(shù)組表示集合的。圖7為根據(jù)本發(fā)明的BloomFilter位數(shù)組初始值示意圖,如圖7所示,初始狀態(tài)時,BloomFilter是一個包含m位的位數(shù)組,每一位都置為O。為了表達S={xl,x2,…,xn}這樣一個η個元素的集合,BloomFilter使用k個相互獨立的哈希函數(shù)(HashFunction),它們分別將集合中的每個元素映射到{1,···,πι}的范圍中。對任意一個元素X,第f個哈希函數(shù)映射的位置hf(χ)就會被置為1(1彡f彡k)。注意,如果一個位置多次被置為1,那么只有第一次會起作用,后面幾次將沒有任何效果。圖8為根據(jù)本發(fā)明的根據(jù)χ的哈希函數(shù)值設置位數(shù)組示意圖,如圖8所示,在圖8中,k=3,且有兩個哈希函數(shù)選中同一個位置(從左邊數(shù)第七位)。在判斷y是否屬于這個集合時,我們對y應用k次哈希函數(shù),如果所有hf(y)的位置都是1(1<f<k),那么我們就認為y是集合中的元素,否則就認為y不是集合中的元素。圖9為根據(jù)本發(fā)明的判斷y是否屬于集合示意圖,如圖9所示,在圖9中yl就不是集合中的元素,而y2要么屬于這個集合,要么剛好是一個FalsePositive。在計算機科學中,我們常常會碰到時間換空間或者空間換時間的情況,即為了達到某一個方面的最優(yōu)而犧牲另一個方面。BloomFilter在時間空間這兩個因素之外又引入了另一個因素錯誤率。在使用BloomFilter判斷一個元素是否屬于某個集合時,會有一定的錯誤率。也就是說,有可能把不屬于這個集合的元素誤認為屬于這個集合(FalsePositive),但不會把屬于這個集合的元素誤認為不屬于這個集合(FalseNegative)。在增加了錯誤率這個因素之后,BloomFilter通過允許少量的錯誤來節(jié)省大量的存儲空間。本發(fā)明中,將每張維度表在每個節(jié)點上的紀錄分布情況記錄在一個BloomFilter表中,維度表的主鍵(PrimaryKey)作為BloomFilter表的查詢關(guān)鍵字,BloomFilter表數(shù)量=(維度表數(shù)量X節(jié)點數(shù)量)。如果BloomFilter發(fā)生錯誤(FalsePositive),產(chǎn)7生的后果是試圖更新一個節(jié)點上維度表紀錄,但是這個節(jié)點上卻沒有保存這條紀錄。這種錯誤不會影響數(shù)據(jù)的正確性和一致性,它是可以被容忍的。而且只要哈希算法和位數(shù)組的長度選擇得當,這種錯誤率將非常低。這些BloomFilter表可以存儲在前端服務器上,作為一個全局數(shù)據(jù)集;也可以分布存儲在每個節(jié)點上,各節(jié)點負責記錄本節(jié)點上維度表紀錄的分布情況。由于BloomFilter表占用的空間很小,在實現(xiàn)中,可以預先載入內(nèi)存,以提高查詢速度。本發(fā)明的數(shù)據(jù)分區(qū)方法可以應用于涉及到大量關(guān)聯(lián)表Join的查詢操作的分布式數(shù)據(jù)庫系統(tǒng),例如在商品數(shù)據(jù)管理中,用戶往往需要根據(jù)商品種類進行分類,根據(jù)價格進行排序等。運用本發(fā)明,我們可以將商品種類和價格定義在事實表中,另外定義一些外鍵關(guān)聯(lián)維度表,如賣家,生產(chǎn)廠商等。事實表紀錄插入的時候,將關(guān)聯(lián)的維度表紀錄復制到同一節(jié)點。在進行種類/價格/賣家/生產(chǎn)廠商等關(guān)聯(lián)表的連接查詢(Join)的時候,前端服務器把查詢發(fā)送給每個節(jié)點,每個節(jié)點就可以進行這種Join操作,不需要到其他節(jié)點搬運數(shù)據(jù),大大提高查詢效率。各節(jié)點把各自的處理結(jié)果返回給全局查詢器做匯總就可以了。而在銷售數(shù)據(jù)管理中,我們可以將銷售額、利潤值等定義在事實表中,將客戶、銷售時間等定義為維度表,并以主外鍵關(guān)聯(lián)事實表。事實表紀錄插入的時候,將關(guān)聯(lián)的維度表紀錄復制到同一節(jié)點。在對某一客戶的銷售額進行統(tǒng)計的時候,由前端服務器將統(tǒng)計工作分發(fā)到各節(jié)點。每個節(jié)點依靠所保存的信息,可以輕易判斷事實表銷售紀錄是否屬于該客戶,因為本節(jié)點上已經(jīng)存在該客戶信息,從而可以很輕松地完成本節(jié)點的統(tǒng)計工作,最后發(fā)送給前端服務器匯總。本領域普通技術(shù)人員可以理解以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,盡管參照前述實施例對本發(fā)明進行了詳細的說明,對于本領域的技術(shù)人員來說,其依然可以對前述各實施例記載的技術(shù)方案進行修改,或者對其中部分技術(shù)特征進行等同替換。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。8權(quán)利要求一種分布式并行數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)分區(qū)方法,該方法包括以下步驟根據(jù)構(gòu)建的分布式并行數(shù)據(jù)庫系統(tǒng)及分布規(guī)則,創(chuàng)建事實表和維度表,并將所述事實表紀錄和維度表紀錄插入到節(jié)點上;將維度表紀錄復制到事實表的節(jié)點上;對數(shù)據(jù)進行刪除和更新處理。2.根據(jù)權(quán)利要求1所述的分布式并行數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)分區(qū)方法,其特征在于,所述事實表包含主鍵、外鍵和事實表紀錄。3.根據(jù)權(quán)利要求1所述的分布式并行數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)分區(qū)方法,其特征在于,所述維度表包含主鍵和維度表紀錄。4.根據(jù)權(quán)利要求1所述的分布式并行數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)分區(qū)方法,其特征在于,所述事實表和維度表是通過主_鍵外鍵進行關(guān)聯(lián),事實表的外鍵值與其關(guān)聯(lián)的維度表的主鍵值相等。5.根據(jù)權(quán)利要求1所述的分布式并行數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)分區(qū)方法,其特征在于,所述將事實表紀錄和維度表紀錄插入到節(jié)點上是將所述事實表紀錄和維度表紀錄插入到不同節(jié)點上。6.根據(jù)權(quán)利要求1所述的分布式并行數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)分區(qū)方法,其特征在于,所述將維度表紀錄復制到事實表的節(jié)點上的步驟進一步包括根據(jù)事實表的外鍵確定關(guān)聯(lián)的維度表;將事實表外鍵所關(guān)聯(lián)的維度表中的紀錄,復制到所述事實表的節(jié)點上。7.根據(jù)權(quán)利要求1所述的分布式并行數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)分區(qū)方法,其特征在于,所述對數(shù)據(jù)進行刪除處理進一步包括以下步驟刪除事實表中的紀錄;刪除該節(jié)點中事實表關(guān)聯(lián)的維度表紀錄;不刪除主節(jié)點維度表中的紀錄。8.根據(jù)權(quán)利要求1所述的分布式并行數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)分區(qū)方法,其特征在于,所述對數(shù)據(jù)進行更新處理進一步包括以下步驟更新某一節(jié)點的維度表;查找與該維度表關(guān)聯(lián)的事實表;更新所述事實表節(jié)點上與其關(guān)聯(lián)的維度表。9.根據(jù)權(quán)利要求1所述的分布式并行數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)分區(qū)方法,其特征在于,所述對數(shù)據(jù)的更新是針對每個維度表和每個節(jié)點,建立一個布隆過濾器表記錄維度表紀錄在節(jié)點上的分布情況,找到保存某條指定紀錄的節(jié)點并對該節(jié)點上的維度表進行更新。10.根據(jù)權(quán)利要求9所述的分布式并行數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)分區(qū)方法,其特征在于,所述布隆過濾器表存儲在前端服務器或每個節(jié)點上。全文摘要一種分布式并行數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)分區(qū)方法,包括以下步驟根據(jù)構(gòu)建的分布式并行數(shù)據(jù)庫系統(tǒng),創(chuàng)建事實表和維度表;根據(jù)分區(qū)規(guī)則將維度表和事實表紀錄插入到不同節(jié)點上;將維度表紀錄復制到事實表的節(jié)點上;對數(shù)據(jù)進行刪除和更新處理。本發(fā)明在對數(shù)據(jù)集或數(shù)據(jù)流分區(qū)導入或插入分布式數(shù)據(jù)庫系統(tǒng)時,能在每一個節(jié)點,滿足數(shù)據(jù)庫方案所定義的表間關(guān)系,特別是主-外鍵約束條件,使每一個節(jié)點上的數(shù)據(jù),具有數(shù)據(jù)的局部完備性。對于利用主-外鍵約束條件進行表間連接的查詢處理,由于各節(jié)點的數(shù)據(jù)對這類查詢具有局部完備性,不需要在節(jié)點間做數(shù)據(jù)動態(tài)再分區(qū),避免了數(shù)據(jù)的網(wǎng)絡傳輸耗時,降低查詢響應時間,提高查詢效率。文檔編號G06F17/30GK101916261SQ20101023965公開日2010年12月15日申請日期2010年7月28日優(yōu)先權(quán)日2010年7月28日發(fā)明者劉為懷,張衛(wèi)平,張松波申請人:北京播思軟件技術(shù)有限公司