相關申請案交叉申請
本發(fā)明要求于2015年2月23日遞交的發(fā)明名稱為“一種大規(guī)模并行處理架構(gòu)中的混合數(shù)據(jù)分布”的第14/629,107號美國非臨時專利申請案的在先申請優(yōu)先權(quán),該在先申請的內(nèi)容以引入的方式并入本文。
本發(fā)明大體涉及數(shù)據(jù)庫管理領域,更具體地,涉及大規(guī)模并行處理(massivelyparallelprocessing,簡稱mpp)數(shù)據(jù)庫中的數(shù)據(jù)分布領域。
背景技術:
大規(guī)模并行處理(massivelyparallelprocessing,簡稱mpp)數(shù)據(jù)庫中的數(shù)據(jù)分布設計的首要目標是數(shù)據(jù)在系統(tǒng)各個節(jié)點間的均勻分布。特別地,協(xié)調(diào)多個處理器以并行處理程序,其中,每個處理器具有獨立的操作系統(tǒng)和存儲器資源。該系統(tǒng)可稱為“無共享”,其中數(shù)據(jù)庫的表分割為段,并在不同處理節(jié)點間分布,在處理節(jié)點間無數(shù)據(jù)共享發(fā)生。在處理節(jié)點間分割數(shù)據(jù),使得每個處理節(jié)點具有一個來自數(shù)據(jù)庫各表中的行子集。每個處理節(jié)點僅處理其自己磁盤上的行。所述mpp數(shù)據(jù)庫包括協(xié)調(diào)系統(tǒng),該系統(tǒng)攜帶有所述數(shù)據(jù)庫,但其本身不存儲數(shù)據(jù)庫記錄,而是存儲數(shù)據(jù)庫的元數(shù)據(jù)。所述協(xié)調(diào)系統(tǒng)能攜帶數(shù)據(jù)庫引擎和mpp系統(tǒng)的控制實體,能夠生成查詢計劃,通過處理節(jié)點協(xié)調(diào)查詢執(zhí)行,并聚合系統(tǒng)范圍內(nèi)的數(shù)據(jù)。所有處理節(jié)點和所述協(xié)調(diào)系統(tǒng)通過常見消息接口互聯(lián)在處理節(jié)點和協(xié)調(diào)器之間進行通信。
當數(shù)據(jù)庫查詢到達(例如,來自客戶端系統(tǒng)的)協(xié)調(diào)器時,根據(jù)數(shù)據(jù)分布計劃和優(yōu)化的執(zhí)行計劃劃分查詢并分配給處理節(jié)點。每個處理節(jié)點中的處理實體僅管理各自部分的數(shù)據(jù)。然而,這些處理實體可以在執(zhí)行時與其他實體進行通信以交換任何所需的信息。一個查詢可劃分為多個子查詢,所述多個子查詢可在部分或全部所述處理節(jié)點上并行執(zhí)行或按某種最佳順序執(zhí)行。所述子查詢的結(jié)果可進行聚合并再處理,繼而額外的子查詢可根據(jù)所述結(jié)果執(zhí)行。
在傳統(tǒng)mpp數(shù)據(jù)庫系統(tǒng)中,表項通常通過以下方法之一進行分布:哈希、隨機(例如,循環(huán))、范圍或列表。目前,許多mpp數(shù)據(jù)庫通過哈希分布進行數(shù)據(jù)分布。在哈希分布中,記錄的鍵值哈希至桶,這些桶分配給處理節(jié)點。哈希分布使得可通過鍵來直接定位數(shù)據(jù),其消耗的系統(tǒng)資源最少。這為哈希分布提供了高性能特征,這是因為根據(jù)鍵來查詢值是直接的,僅需要哈希值的計算來判斷哪個節(jié)點攜帶有該指定哈希桶。該查詢僅發(fā)送給該處理節(jié)點,不涉及其他處理節(jié)點。另一種mpp數(shù)據(jù)庫分布的常見方法是循環(huán)分布。在循環(huán)分布的情況下,在所述mpp數(shù)據(jù)庫的所有處理節(jié)點周圍進行數(shù)據(jù)分布,其有助于記錄在系統(tǒng)的這些節(jié)點間的均勻分布。然而,循環(huán)分布的缺點在于數(shù)據(jù)記錄的查詢區(qū)域。一般情況下,在查詢記錄期間,必須訪問該系統(tǒng)中的許多(若不是全部)節(jié)點,以定位指定記錄。因此,與采用哈希分布方案查詢mpp數(shù)據(jù)庫相比,對于采用傳統(tǒng)循環(huán)分布方案的mpp數(shù)據(jù)庫,系統(tǒng)資源利用效率更低。
采用哈希(以及范圍或列表)分布的mpp數(shù)據(jù)庫的一個潛在問題在于傾斜的發(fā)生。在鍵值的分布未傾斜的情況下,通常某些桶較大而其他桶較小。在大部分情況下,有可能將若干大大小小的桶放在一起,并將它們分配給一個處理節(jié)點,其一般目標在于每個節(jié)點均具有基本等大的總數(shù)據(jù)。然而,在某些情況下,數(shù)據(jù)分布可能會傾斜,包含單個鍵值的記錄不適合指定處理節(jié)點中的存儲設備,而其他處理節(jié)點可能具有充足的剩余空間。僅僅調(diào)整進行哈希分布的功能并不能解決該問題,需要額外的措施解決該傾斜,尤其是處理節(jié)點的存儲設備中的傾斜。數(shù)據(jù)傾斜也可能導致執(zhí)行查詢所需的處理時間的增加,尤其是表連接的查詢所需的時間。
技術實現(xiàn)要素:
此處描述動態(tài)分布方法,以用于解決mpp數(shù)據(jù)庫中的數(shù)據(jù)傾斜。本發(fā)明實施例提供了一種mpp數(shù)據(jù)庫記錄的哈希分布和循環(huán)分布的合并方法和系統(tǒng),此處稱作“混合”數(shù)據(jù)分布模式。混合分布用作一種防止僅采用哈希分布的存儲系統(tǒng)中可能出現(xiàn)的存儲不均衡的方式。
在本發(fā)明的一方面,分布鍵的潛在值劃分為兩個集合。一個集合包含高頻率的那些值,稱為“離群點集合”。另一個集合包含剩下的鍵值,稱為“正常集合”?;旌蠑?shù)據(jù)分布模式通過哈希分布對正常集合中包含鍵值的那些記錄進行分布,而通過隨機(例如,循環(huán))方法將離群點集合中包含鍵值的那些記錄在mpp數(shù)據(jù)庫的處理節(jié)點間進行分布。與純哈希(或范圍或列表)分布模式相比,根據(jù)本發(fā)明實施例的方法通過采用循環(huán)方法對包含指示高頻率的鍵(例如,離群點集合中的鍵)的記錄進行分布來避免存儲問題和性能問題。然而,與純循環(huán)分布模式相比,根據(jù)本發(fā)明實施的方法保存有不在離群點集合中的那些鍵值哈希分布的優(yōu)點,該優(yōu)點在于可通過鍵值直接定位數(shù)據(jù),其系統(tǒng)資源消耗在大多數(shù)情況中最小。只有包括高頻鍵的那些查詢將涉及mpp數(shù)據(jù)庫的所有處理節(jié)點,且進一步地,在那些情況下,使所有節(jié)點參與處理是有利的,因為潛在合格的記錄數(shù)目可能超過單個節(jié)點的處理能力。
本發(fā)明內(nèi)容的提供是為了以簡化的形式引入概念的選擇,這些概念將在以下具體實施方式中進行進一步的描述。本發(fā)明內(nèi)容的目的不在于識別權(quán)利要求書保護的主題的鍵特征或必要特征,也不在于限制權(quán)利要求書保護的主題的范圍。
在一方面,本發(fā)明實施例提供了一種大規(guī)模并行處理(massivelyparallelprocessing,簡稱mpp)數(shù)據(jù)庫中混合分布模式的系統(tǒng)和方法,其中,所述混合分布模式防止數(shù)據(jù)傾斜引起的存儲不均衡問題。若鍵的記錄導致數(shù)據(jù)庫傾斜,將所述數(shù)據(jù)庫的那些鍵值視作離群點。在混合模式下,包含離群鍵值的記錄通過隨機分布方案進行分布。其他記錄通過哈希分布方案進行分布。系統(tǒng)中的表的離群點判斷的門限是可配置的。記錄查詢、插入、刪除以及更新根據(jù)查詢計劃進行處理,其中該查詢計劃是針對數(shù)據(jù)庫查詢中參考的記錄的分布模式進行的優(yōu)化。
更具體地,本發(fā)明實施例提供了一種管理大規(guī)模并行處理(massivelyparallelprocessing,簡稱mpp)數(shù)據(jù)庫的方法,其中,所述方法包括確定根據(jù)混合數(shù)據(jù)分布模式為mpp數(shù)據(jù)庫進行數(shù)據(jù)庫記錄分布的標準。所述mpp數(shù)據(jù)庫具有多個處理節(jié)點。所述方法還包括確定滿足所述標準的mpp數(shù)據(jù)庫的離群鍵集合。所述方法還包括更新所述mpp數(shù)據(jù)庫,以根據(jù)所述混合數(shù)據(jù)分布模式進行數(shù)據(jù)庫記錄分布。
以上為發(fā)明內(nèi)容以及因此必須包括的簡化、概括和細節(jié)的省略;因此,本領域的技術人員應當理解本發(fā)明內(nèi)容僅作說明性用途,并不構(gòu)成任何限制。僅由權(quán)利要求書定義的本發(fā)明的其他方面,發(fā)明特征以及優(yōu)點將通過以下非限制性具體實施方式中的詳細描述而變得易于理解。
附圖說明
為了更好地理解本發(fā)明實施例,下文將結(jié)合附圖進行詳細描述,其中,相同參考符號指示相同元素,且:
圖1是描繪本發(fā)明實施例提供的示例性大規(guī)模并行處理(massivelyparallelprocessing,簡稱mpp)數(shù)據(jù)庫架構(gòu)的方框圖;
圖2是描繪本發(fā)明實施例提供的滿足從哈希分布模式轉(zhuǎn)換為混合分布模式標準的數(shù)據(jù)庫節(jié)點的示意圖;
圖3是示出本發(fā)明實施例提供的示例性分布轉(zhuǎn)換過程的流程圖;
圖4是示出本發(fā)明實施例提供的示例性記錄查詢過程的流程圖;
圖5是示出本發(fā)明實施例提供的示例性記錄插入過程的流程圖;
圖6是示出本發(fā)明實施例提供的連接語句的并置狀態(tài)的示例性判斷過程的流程圖;
圖7是示出可實現(xiàn)本發(fā)明實施例的示例性計算機系統(tǒng)的方框圖。
具體實施方式
現(xiàn)將詳細地對本發(fā)明的各種實施例、附圖示出的示例做出參考。雖然會結(jié)合這些實施例進行描述,但可以理解的是它們并不用于將本發(fā)明限制于這些實施例。相反,本發(fā)明公開旨在覆蓋可以包括在由所附權(quán)利要求書限定的本發(fā)明公開的精神和范圍內(nèi)的替代物、修改和等同物。另外,在以下本發(fā)明的詳細描述中,闡述了許多特定細節(jié)以便提供對本發(fā)明的透徹理解。然而,可以理解的是,實際應用中,可以不包括本發(fā)明的這些特定細節(jié)。在其它實例中沒有詳細描述眾所周知的方法、流程、部件和電路,以免對本發(fā)明的各方面造成不必要地模糊。
該具體實施方式的一些部分按照程序、步驟、邏輯塊、處理、以及對計算機存儲器中的數(shù)據(jù)位的操作的其它符號表示來呈現(xiàn)。這些描述和表示是數(shù)據(jù)處理領域技術人員向該領域其他技術人員有效傳達工作實質(zhì)內(nèi)容使用的方法。將程序、計算機產(chǎn)生的步驟、邏輯塊、過程等一般設想為首尾一致的步驟或指令序列,以產(chǎn)生期望的結(jié)果。這些步驟需要物理量的物理操控。通常,并不是完全必須的,這些量以電信號或磁信號的形式存在,可以被存儲、轉(zhuǎn)移、合并和比較,否則將在電腦系統(tǒng)中被操控。有時候這種方法被證明是行之有效的,主要出于常見用法的考慮,將這些信號作為比特位、數(shù)值、元素、符號、字符、術語、或數(shù)字等等。
然而,應牢記,所有這些和類似術語與適當物理量相關聯(lián),且僅為應用于這些量的方便標簽。除非確切地陳述為從以下論述顯而易見,否則應了解,在本請求保護的主題中,利用例如“存儲”、“創(chuàng)建”、“保護”、“接收”、“加密”、“解密”、“破壞”等術語的論述是指將表示為計算機系統(tǒng)的寄存器和存儲器內(nèi)的物理(電子)量的數(shù)據(jù)操控和變換為類似地表示為計算機系統(tǒng)存儲器或寄存器或其它此類信息存儲、傳輸或顯示設備內(nèi)的物理量的其它數(shù)據(jù)的、包括內(nèi)嵌系統(tǒng)的計算機系統(tǒng)或集成電路或類似電子計算設備的動作和進程。
然而,應牢記,所有這些和類似術語與適當物理量相關聯(lián),且僅為應用于這些量的方便標簽。除非確切地陳述為從以下論述顯而易見,否則應了解,遍及本發(fā)明,利用例如“處理”或“存取”或“執(zhí)行”或“存儲”或“呈現(xiàn)”等的術語的論述是指將表示為計算機系統(tǒng)的寄存器和存儲器以及其它計算機可讀媒體內(nèi)的物理(電子)量的數(shù)據(jù)操縱和變換為類似地表示為計算機系統(tǒng)存儲器或寄存器或其它此類信息存儲、傳輸或顯示設備內(nèi)的物理量的其它數(shù)據(jù)的計算機系統(tǒng)或類似電子計算設備的動作和進程。當某一組件出現(xiàn)在若干實施例中時,使用相同的參考標號表示所述組件與原始實施例中所圖示的組件相同。
此處使用的“純”分布方案可指mpp數(shù)據(jù)庫分布方案,其中,mpp數(shù)據(jù)庫的鍵值的分布僅采用一種(例如,哈希、范圍、列表和循環(huán)分布)模式。這是與此處描述的混合分布模式對比而言的,該混合分布模式采用了至少兩種分布模式,例如某些鍵值根據(jù)哈希分布進行分布,而其他鍵值根據(jù)隨機分布進行分布。
圖1示出了本發(fā)明實施例提供的系統(tǒng)100,其能夠減緩大規(guī)模并行處理(massivelyparallelprocessing,簡稱mpp)數(shù)據(jù)庫中傾斜的發(fā)生。所述系統(tǒng)100包括協(xié)調(diào)節(jié)點105,包括存儲由所述協(xié)調(diào)節(jié)點的處理器執(zhí)行的計算機可讀指令110的存儲器。所述mpp數(shù)據(jù)庫系統(tǒng)100包括在所述協(xié)調(diào)節(jié)點105和數(shù)據(jù)處理節(jié)點120、125和130之間提供通信的互聯(lián)115。所述處理節(jié)點120至130中的每一個包括管理所述mpp數(shù)據(jù)庫100的一個或多個表的段的各個存儲器和處理器。所述指令110包括用于針對數(shù)據(jù)傾斜監(jiān)控所述處理節(jié)點120至130的指令,以及用于制定所述mpp數(shù)據(jù)庫系統(tǒng)100的混合數(shù)據(jù)分布方案的指令,以防止/解決所述處理節(jié)點120至130內(nèi)的數(shù)據(jù)傾斜。所述指令110還包括用于在混合數(shù)據(jù)分布環(huán)境中執(zhí)行查詢的指令。本發(fā)明mpp數(shù)據(jù)庫的這些和其他特征在下文將進行更詳細的論述。協(xié)調(diào)節(jié)點和數(shù)據(jù)處理節(jié)點的分離是邏輯性的,所述協(xié)調(diào)節(jié)點和數(shù)據(jù)處理節(jié)點可實現(xiàn)為一個程序,或一個物理機上或甚至上在不同機器上運行的不同程序。
mpp數(shù)據(jù)庫中的混合數(shù)據(jù)分布
參見圖2,描繪了mpp數(shù)據(jù)庫200的一部分,所述mpp數(shù)據(jù)庫200的該部分包括處理節(jié)點205和210。所述處理節(jié)點205和210中的每一個用于存儲數(shù)據(jù)庫的記錄,其中,所述記錄按對應于所述處理節(jié)點205和210中鍵值(例如,鍵值1-8)的分布方式進行組織。在圖2的頂部描繪了所述處理節(jié)點205和210的初始分布。鍵值1、3、5和7在處理節(jié)點205上分布,而鍵值2、4、6和8在處理節(jié)點210上分布。該分布可根據(jù)傳統(tǒng)哈希分布方案進行。
如圖所描繪的,所述哈希分布方案引起了數(shù)據(jù)的傾斜。特別地,鍵值7視為離群點215,比(例如,對應于更多的記錄的)其他鍵值更大。由于傾斜,整個mpp數(shù)據(jù)庫的處理效率可能會減弱,這是因為所述處理節(jié)點205和210之間的處理負載不相等。處理節(jié)點205上存儲的越來越大的數(shù)據(jù)量可能會導致節(jié)點205上存儲空間的不足,而與處理節(jié)點210的相對較少的記錄進行查詢的處理時間相比,其也可能導致對彼時記錄進行查詢的處理時間更長。進一步地,處理節(jié)點205上更大數(shù)目的記錄提高了給定查詢包括處理節(jié)點205上存儲的記錄的可能性,還有助于所述mpp數(shù)據(jù)庫中的不均衡處理。由于mpp數(shù)據(jù)庫的首要目標也是均衡處理的首要目標,優(yōu)選記錄在節(jié)點間的幾乎均等的分布來促成本目標。
根據(jù)本發(fā)明實施例,通過混合數(shù)據(jù)分布模式可以解決(即,解決或防止)mpp數(shù)據(jù)庫的數(shù)據(jù)傾斜。在識別到所述mpp數(shù)據(jù)庫存在數(shù)據(jù)傾斜時,分布模式可從純模式(例如,純哈希分布)轉(zhuǎn)換為混合模式(例如,哈希分布和循環(huán)分布)。圖2的較低部分描繪了轉(zhuǎn)換為混合分布模式之后的所述處理節(jié)點205和210。鍵值7為展示數(shù)據(jù)傾斜的離群鍵值,已分別在節(jié)點205和210間重新分配為段220和225。鍵值7的記錄以隨機分布方式移動——而在該示例中,僅展示了兩個節(jié)點;在具有許多節(jié)點的mpp數(shù)據(jù)庫中,鍵值7的記錄可以在所有節(jié)點間以隨機分布模式例如循環(huán)分布進行分布。其他鍵值未改變,繼續(xù)根據(jù)初始分布計劃——例如,初始哈希分布計劃,進行分布。以下詳細描述了mpp數(shù)據(jù)庫中數(shù)據(jù)傾斜的發(fā)生的監(jiān)控和判斷過程,以及在混合分布系統(tǒng)上進行查詢的過程。
為了解決mpp數(shù)據(jù)庫中發(fā)生傾斜的潛在性,可實現(xiàn)混合分布模式以防止或解決數(shù)據(jù)傾斜導致的存儲不均衡問題。實現(xiàn)混合分布模式的一方面是識別最頻繁的鍵值,這些鍵值導致系統(tǒng)中的不均衡。這些識別的鍵值稱為離群點集合。例如,該離群點集合可由數(shù)據(jù)庫管理員(databaseadministrator,簡稱dba)通過dll語句指定。該離群點集合也可在統(tǒng)計時間由mpp數(shù)據(jù)庫(例如,在協(xié)調(diào)節(jié)點上)自動生成。數(shù)據(jù)庫系統(tǒng)通常統(tǒng)計包括分布鍵值(例如,直方圖)的頻率的信息。進一步如下所述,可通過將數(shù)據(jù)傾斜門限應用于分布鍵值的直方圖來識別所述離群點集合。在mpp數(shù)據(jù)庫的運行時間,在使記錄分布到處理節(jié)點的時間,判斷記錄的鍵值是否屬于離群點集合。若所述鍵值不在所述離群點集合中,通過哈希分布模式進行記錄的分布。若所述鍵值屬于所述離群點集合,通過隨機分布(例如,循環(huán)分布)使所述記錄分布到處理節(jié)點。
以下提供了一種用于生成具有傾斜門限的混合分布表的示例性ddl語句:
創(chuàng)建表t(c1int、c2char(10)、c3文本、c4時戳),通過哈希(c1,c2)分布,例外項:((0、null)、(null、null));
生成的表“t”具有四列,其中通過列1和2的哈希對記錄進行分布。例外子句指定了該離群點集合,其中,通過隨機分布例如循環(huán)進行具有合格的鍵值的記錄的分布。例如,記錄(0、null、1、2)和(null、null、3、4)將通過隨機分布方法分布到數(shù)據(jù)節(jié)點。
以下提供了另一種用于生成具有傾斜門限的混合分布表的示例性ddl語句:
創(chuàng)建表r(c1int,c2char(10),c2文本,c3時戳),通過哈希(c1,c2)分布,例外項:系統(tǒng)每周一檢測門限20%;
生成的表“r”具有三列,通過列1和2的哈希對記錄進行分布。該例外子句指示該系統(tǒng)應對分布鍵(c1、c2)每周進行離群點集合檢測。mpp數(shù)據(jù)庫系統(tǒng)初始時將表“r”標記為處于哈希分布模式。在將數(shù)據(jù)加入系統(tǒng),該系統(tǒng)檢測到與其他節(jié)點相比,一個節(jié)點逐漸過載時,該系統(tǒng)將發(fā)起鍵列上的統(tǒng)計,以判斷是否存在數(shù)據(jù)傾斜(例如,此時,根據(jù)圖3描述的流程300,鍵(c1、c2)的頻率超過20%)。若是,基于鍵值分布選擇鍵的離群點集合,并存儲到系統(tǒng)目錄中。進一步地,將表“r”標記為處于混合分布模式,所述離群點集合中鍵的某些記錄通過循環(huán)算法以異步的方式從過載的節(jié)點移動到其他節(jié)點。進一步地,插入該表的任何新記錄,在變?yōu)榛旌戏植寄J街?,將通過混合分布(例如,隨機分布)進行分布。根據(jù)本發(fā)明實施例,運行檢測算法的頻率以及判斷傾斜的門限均可配置。
支持mpp數(shù)據(jù)庫的混合分布模式需要可選查詢計劃的合理創(chuàng)建。特別地,優(yōu)選地,生成一個查詢計劃,其針對對包含哈希分布的記錄進行的查詢進行優(yōu)化,而生成另一個查詢計劃,其針對對包含隨機分布的記錄進行的查詢進行優(yōu)化。因此,對于混合模式下表的查詢,協(xié)調(diào)節(jié)點的查詢優(yōu)化器(例如,協(xié)調(diào)節(jié)點105)首先判斷包含離群鍵值的記錄是否可能滿足查詢的應答集合。若那些記錄不滿足在離群點集合中的資格,這些記錄不可能通過隨機分布進行分布,該查詢計劃構(gòu)建的方式與查詢標準哈希分布表時方式相同。若該記錄滿足在離群點集合中的資格,該查詢計劃根據(jù)循環(huán)分布表構(gòu)建。
以下為一些示例性查詢計劃,例如,表t(實例化為混合分布表)和r(實例化為純哈希分布表):
創(chuàng)建表t(c1int,c2char(10),c3文本),通過哈希(c1)分布,例外項:((10000);
創(chuàng)建表r(r1int,r2char(10),r3double),通過哈希(r1)分布;
q1:
從t中選擇*,其中c1=10;
計劃1:
返回
(從節(jié)點1)采集//假設鍵(10)哈希至節(jié)點1
表掃描
表:t
謂詞c1=10;
q2:
從t中選擇*,其中c1=10000;
計劃2:
返回
(從所有節(jié)點)采集
表掃描//在所有節(jié)點間分布帶有鍵10000的記錄
表:t
謂詞c1=10000;
q3:
按照c2分組,在c1=r1且c1<10000時,從t連接r中選擇c2和sum(r3)
計劃3:
返回
哈希聚合(sum)
(從所有節(jié)點)采集
哈希聚合(sum)
哈希連接(c1=r1),過濾(c2=r2)
表掃描
表t
表掃描
表r
q4:
按照c2分組,在c1=r1且c<’abc’時,從t左連接r中選擇c2和sum(r3)
計劃4:
返回
哈希聚合(sum)
(從所有節(jié)點)采集
哈希聚合(sum)
哈希連接(c1=r1)
通過哈希重分布
表掃描(過濾c2<’abc’)
表t
表掃描
表r
關于第一選擇語句q1,查詢指定了不符合離群點(離群點為屬于c1=10000的)的記錄;因而,針對哈希分布生成計劃1,該請求僅發(fā)送給一個節(jié)點,其根據(jù)哈希函數(shù)計算(該節(jié)點對應鍵值c10)。
關于第二選擇語句q2,查詢指定了符合離群點的記錄,由于離群鍵=10000符合例外項,在表生成時指定了例外項(10000)。由于這些記錄都滿足在離群點集合中的資格,為了將請求發(fā)送給mpp數(shù)據(jù)庫的所有節(jié)點,且因為記錄將會根據(jù)隨機分布算法在所有節(jié)點中分布,生成計劃2。
關于第三選擇語句q3,查詢是連接查詢,由于t(c1<10000)上的本地謂詞,來自混合分布的t的離群鍵的記錄均不符合該查詢。若t為哈希分布,生成計劃3。若連接在分布鍵上(表t的c1和表r的r1),該連接可以在每個數(shù)據(jù)節(jié)點本地進行,無需在數(shù)據(jù)節(jié)點間進行數(shù)據(jù)交換。
關于最終選擇語句q4,查詢指定從不能排除在符合離群鍵之外的鍵選擇記錄。特別地,未指定“c1”子集的“c1=r1”上的連接可包括c1=10000。因此,計劃4的生成具有保守性且基于表t的循環(huán)分布。需要數(shù)據(jù)移動運算符(重分布或是在一個或這兩個表上的廣播)來解釋所有鍵值。在示例性計劃4中,哈希重分布運算符在表t的表掃描之前指定。根據(jù)本發(fā)明實施例,重分布運算符容易優(yōu)化,以僅將包含離群鍵的記錄傳送給根據(jù)哈希確定的節(jié)點。也就是說,不需要移動所有記錄,因為通過哈希算法分布的那些記錄已經(jīng)存在于通過哈希函數(shù)確定的節(jié)點上了。
根據(jù)本發(fā)明實施例,mpp數(shù)據(jù)庫可自動從具有初始哈希分布模式切換(例如,轉(zhuǎn)換)至具有混合分布模式。mpp數(shù)據(jù)庫能周期性地監(jiān)控系統(tǒng)數(shù)據(jù),在對處理節(jié)點中的傾斜進行檢測時,mpp數(shù)據(jù)庫轉(zhuǎn)換為混合分布模式。
圖3是本發(fā)明實施例提供的mpp數(shù)據(jù)庫中表從哈希分布轉(zhuǎn)為混合模式的過程的流程圖300。步驟305至340描述了構(gòu)成本發(fā)明各個實施例流程圖300描繪的流程的示例性步驟。在一實施例中,流程圖300實現(xiàn)為計算機可讀介質(zhì)中存儲的并由執(zhí)行表分布轉(zhuǎn)換過程的計算設備執(zhí)行的計算機可執(zhí)行指令。流程300能在mpp數(shù)據(jù)庫運行時間執(zhí)行。流程300可由mpp數(shù)據(jù)庫系統(tǒng)自主執(zhí)行。
該過程由協(xié)調(diào)節(jié)點(例如,協(xié)調(diào)節(jié)點105)從步驟305開始,繼續(xù)進行至步驟310,其中,對mpp數(shù)據(jù)庫的表中的一個或多個節(jié)點上的數(shù)據(jù)分布進行了檢查。在步驟315中,判斷步驟310中檢查的任一節(jié)點是否超過所述表的傾斜門限值。若否,所述流程300跳至步驟340,流程結(jié)束。若是,所述流程300轉(zhuǎn)到步驟320。
在步驟320中,為分布鍵列統(tǒng)計列數(shù)據(jù),并對鍵值出現(xiàn)的頻率進行檢查。所述流程300繼續(xù)進行至步驟325,其中,對任意鍵值是否超過mpp系統(tǒng)的傾斜門限進行了判斷。若否,所述流程300跳至步驟340,流程結(jié)束。若是,確定所述mpp數(shù)據(jù)庫中至少一個鍵值傾斜,所述流程300轉(zhuǎn)到步驟330。傾斜門限是可配置的,當節(jié)點大小(例如,記錄的數(shù)目)超過門限時可滿足該傾斜門限。例如,該數(shù)目可以為絕對數(shù)(例如,15000個記錄)或相對數(shù)(例如,100×系統(tǒng)中鍵的記錄的平均數(shù)目)??蛇x地,該門限可基于鍵值的查詢頻率。此外,該門限可包括基于時間的(周期性的)門限、用戶自定義門限、手動觸發(fā)的門限、基于數(shù)據(jù)庫記錄預測數(shù)目(例如,基于相關歷史數(shù)據(jù)記錄)的門限,或其他門限,由dba確定。在安裝系統(tǒng)時,可設置系統(tǒng)默認門限。
在步驟330中,將表標記為處于混合分布模式,混合分布模式是哈希分布和隨機分布(例如,循環(huán)分布)的組合。進一步地,將步驟325中確定為傾斜的特定鍵視作離群鍵。
在步驟335中,將包含離群鍵(步驟330中指定的離群鍵)的部分記錄移至mpp數(shù)據(jù)庫中的其他節(jié)點。所述記錄以隨機方式分布,且能夠異步移出流程300的執(zhí)行。因此,所述mpp數(shù)據(jù)庫轉(zhuǎn)換為混合分布模式,其中,根據(jù)流程300視作離群點的鍵值包括隨機分布在mpp數(shù)據(jù)庫的處理節(jié)點間的記錄,而其他鍵值保持哈希分布。一旦修改了模式,以前的查詢計劃將會無效,且會創(chuàng)建一個新的查詢計劃。對于之前已經(jīng)編譯好的暫存的計劃,存儲的計劃將會被刪除,且會生成新計劃,并繼而被存儲起來。對于事務一致性,步驟330和步驟335優(yōu)選一起作為自動操作執(zhí)行。
雖然所描述的mpp數(shù)據(jù)庫為初始處于哈希分布模式,但也可能為處于其他分布模式(例如,范圍、列表)。在任何一種情況下,mpp數(shù)據(jù)庫只采用了一種分布模式,在這個意義上講初始分布都是“純的”。因此,與mpp數(shù)據(jù)庫的初始分布模式相對應,mpp數(shù)據(jù)庫的查詢計劃將是傳統(tǒng)的。只有根據(jù)指定傾斜門限判斷存在傾斜時才會將分布模式轉(zhuǎn)換為混合分布模式。一旦轉(zhuǎn)換為混合分布模式,即對mpp數(shù)據(jù)庫的查詢計劃進行更新以反映混合性質(zhì)。具體地,流程300識別并記錄(例如,在目錄中)哪些記錄是離群點且需要根據(jù)離群點計劃進行查詢。其他記錄(例如,非離群點)繼續(xù)根據(jù)初始(例如,哈希)計劃進行查詢。
進一步地,在一實施例中,在步驟330中一個或多個視作離群點的鍵的記錄將繼續(xù)以隨機模式分布,即在初始判斷鍵傾斜之后進入mpp數(shù)據(jù)庫的記錄將在mpp數(shù)據(jù)庫的處理節(jié)點間進行隨機分布。
混合分布模式的mpp數(shù)據(jù)庫通過考慮查詢的記錄存儲在何種分布模式下可有效地查詢記錄。即,涉及離群點集合中包括的鍵的記錄的查詢必須考慮mpp數(shù)據(jù)庫中所有的處理節(jié)點,因為這些記錄是根據(jù)隨機(例如,循環(huán))方案分布的。然而,不屬于離群點集合的鍵的記錄根據(jù)哈希分布進行分布,因而,通過哈希值查找(即,僅在處理節(jié)點上存儲查詢的記錄的鍵)可進行有效的查找。
圖4是本發(fā)明實施例提供的混合分布mpp數(shù)據(jù)庫中查詢記錄的過程的流程圖400。步驟405至445描述了構(gòu)成本發(fā)明各個實施例流程圖400描繪的流程的示例性步驟。在一實施例中,流程圖400實現(xiàn)為計算機可讀介質(zhì)中存儲的并由執(zhí)行查詢mpp數(shù)據(jù)庫中記錄的過程的計算設備執(zhí)行的計算機可執(zhí)行指令。
該過程由協(xié)調(diào)節(jié)點(例如,協(xié)調(diào)節(jié)點105)從步驟405開始,繼續(xù)進行至步驟410,其中,對到mpp數(shù)據(jù)庫的數(shù)據(jù)請求的過濾標準進行了檢查。在步驟415中,對數(shù)據(jù)請求參考的任意記錄是否屬于離群點集合(例如,流程300確定的離群點集合)進行判斷。若是,所述流程400轉(zhuǎn)到步驟420。在步驟420中,該請求轉(zhuǎn)發(fā)給所有處理節(jié)點執(zhí)行,因為(屬于離群點集合中鍵的)這些記錄將會在所有處理節(jié)點間進行分布。
若否,這些記錄不屬于任何離群鍵,且流程400轉(zhuǎn)到步驟425。在步驟425中,具有合格的記錄的潛在處理節(jié)點通過哈希函數(shù)進行計算,因為這些記錄將根據(jù)哈希分布模式進行分布。該流程繼續(xù)進行至步驟430,其中,通過哈希函數(shù)對請求的目標數(shù)據(jù)節(jié)點進行計算。
在步驟435中,在參與數(shù)據(jù)節(jié)點接收該請求的結(jié)果,其中,參與節(jié)點根據(jù)步驟420或430(取決于記錄是否屬于離群點集合中的鍵)進行判斷。在步驟440中,產(chǎn)生的記錄寫入存儲設備,且該流程在步驟445結(jié)束。
當插入混合分布表的記錄到達mpp數(shù)據(jù)庫時,判斷記錄對應的鍵是否在離群點集合中。若該鍵在離群點集合中,系統(tǒng)以循環(huán)或隨機方式選擇節(jié)點(例如,目標節(jié)點),并將選擇的處理節(jié)點上的記錄寫到存儲設備上。若該鍵不在離群點集合中,通過哈希函數(shù)選擇節(jié)點,該記錄寫入選擇的處理節(jié)點。若該記錄的分布鍵值在插入語句(例如,無通配符或參數(shù)標記符)中指定為原義,目標節(jié)點的判斷可在語句編譯/優(yōu)化期間靜態(tài)執(zhí)行;否則,由事務的協(xié)調(diào)節(jié)點(例如,協(xié)調(diào)節(jié)點105)在執(zhí)行時間進行動態(tài)判斷。
參見圖5,流程圖500描繪了將記錄插入混合分布表的過程。步驟505至540描述了構(gòu)成本發(fā)明各個實施例流程圖500描繪的流程的示例性步驟。在一實施例中,流程圖500實現(xiàn)為計算機可讀介質(zhì)中存儲的并由執(zhí)行在mpp數(shù)據(jù)庫中插入記錄的過程的計算設備執(zhí)行的計算機可執(zhí)行指令。
該過程由協(xié)調(diào)節(jié)點(例如,協(xié)調(diào)節(jié)點105)從步驟505開始,繼續(xù)進行至步驟510。在步驟510中,對記錄的分布鍵值進行檢查。在步驟515中,對分布鍵值是否屬于離群點集合進行判斷。若是,該流程繼續(xù)進行至步驟520,其中根據(jù)隨機或循環(huán)算法選擇mpp數(shù)據(jù)庫中的處理節(jié)點。若否,該流程繼續(xù)進行至步驟525,其中,根據(jù)哈希分布模式選擇了處理節(jié)點。
在步驟530中,將記錄發(fā)送給選擇的處理節(jié)點,所述處理節(jié)點是根據(jù)步驟520或525(取決于這些記錄是否屬于離群點集合中的鍵)確定的。在步驟535中,將記錄寫入選擇的處理節(jié)點上的存儲設備,該流程在步驟540結(jié)束。
雖然圖5中未描繪,執(zhí)行刪除操作的方式可與插入流程500的方式相似。進一步地,更新操作可分解為刪除和插入的組合,其中,刪除了老記錄且插入了新記錄。因此,通過描述的插入和刪除組合過程來執(zhí)行更新。
混合數(shù)據(jù)分布的表連接
圖6是本發(fā)明實施例提供的混合分布mpp數(shù)據(jù)庫中連接語句的表的并置情況的判斷過程的流程圖600。步驟605至640描述了構(gòu)成本發(fā)明各個實施例流程圖600描繪的流程的示例性步驟。在一實施例中,流程圖600實現(xiàn)為計算機可讀介質(zhì)中存儲的并由執(zhí)行在mpp數(shù)據(jù)庫中執(zhí)行表連接過程的計算設備執(zhí)行的計算機可執(zhí)行指令。一方面,流程圖600中描繪的流程用于判斷當在混合分布表和哈希分布或混合分布表間進行連接時數(shù)據(jù)移動運算符是否必須。
該過程由協(xié)調(diào)節(jié)點(例如,協(xié)調(diào)節(jié)點105)從步驟605開始,繼續(xù)進行至步驟610。在步驟610中,對查詢的連接子句進行檢查。在步驟615中,對查詢中參考的表是否采用兼容的分布模式進行判斷。即,若兩個表均采用哈希分布模式,或兩個表均采用混合分布模式,另外,兩個表所分布的節(jié)點集合是相同的;則兩個表的分布模式視作是兼容的。否則,分布模式視作非兼容的。若分布不是兼容的,可確定連接未能像步驟635中進行的那樣并置,該流程在640結(jié)束。如上所述,涉及未并置記錄的查詢必須根據(jù)保守查詢計劃執(zhí)行,并對mpp數(shù)據(jù)庫中所有的處理節(jié)點的記錄進行重分布或廣播。
若在步驟615中,判斷結(jié)果為是,所述流程繼續(xù)進行至步驟620。在步驟620中,對該連接是否包含兩個表共享的分布鍵上的相等謂詞進行判斷。若否,可確定連接未像步驟635中進行的那樣并置,該流程將在640結(jié)束。若是,在步驟625中,判斷任意離群鍵(根據(jù)隨機模式進行分布的離群鍵)是否滿足連接標準。若是,該記錄將會在所有處理節(jié)點間進行分布,確定該連接不在步驟635中并置,并轉(zhuǎn)到640結(jié)束。若否,確定將并置該連接,因為該連接參考的鍵的記錄將根據(jù)哈希分布模式在同一處理節(jié)點中進行分布。因此,可通過利用哈希值(因為不需要數(shù)據(jù)移動運算符)引導查詢的查詢計劃進行該查詢,且該流程在640結(jié)束。
示例性計算系統(tǒng)
根據(jù)一實施例,此處描述的技術通過一個或多個專用計算設備實現(xiàn)??蓪υ搶S糜嬎阍O備進行硬布線以執(zhí)行該技術,或可包括數(shù)字電子設備,例如,持續(xù)通過編程執(zhí)行這些技術的現(xiàn)場可編程門陣列(fieldprogrammablegatearray,簡稱fpga)或一個或多個專用集成電路(application-specificintegratedcircuit,簡稱asic),或可包括一個或多個通用硬件處理器,用于通過編程并根據(jù)固件、存儲器、其他存儲設備或其組合中的程序指令執(zhí)行這些技術。這些專用計算設備也可將定制的硬布線邏輯、asic或fpga與定制程序合并,以完成該技術。專用計算設備可以為數(shù)據(jù)庫服務器、存儲設備、臺式計算機系統(tǒng)、便攜計算機系統(tǒng)、手持設備、網(wǎng)絡設備或包含硬布線和/或程序邏輯的其他設備,以實現(xiàn)該技術。
圖7示出了本發(fā)明各個實施例提供的裝置700的示例性配置??梢詫崿F(xiàn)本發(fā)明實施例的示例性系統(tǒng)700包括通用計算系統(tǒng)環(huán)境。在其最基本配置中,計算系統(tǒng)700通常包括至少一個處理單元701和存儲器,以及進行信息傳遞的地址/數(shù)據(jù)總線709(或其他接口)。存儲器可為易失性的(例如,ram702)、非易失性的(例如,rom703、閃存等)或其組合,其取決于精確配置以及計算系統(tǒng)環(huán)境的類型。
計算機系統(tǒng)700也可包括可選的圖像子系統(tǒng)705,用于例如通過將信息在通過視頻電纜711連接的附加顯示設備710上顯示信息向計算機用戶顯示信息。根據(jù)本發(fā)明實施例,圖像子系統(tǒng)705可直接通過視頻電纜711耦合至所述顯示設備710。在可選實施例中,視頻設備710可與所述計算系統(tǒng)(例如,筆記本電腦或上網(wǎng)本顯示板)合為一體且不需要視頻電纜711。
此外,計算系統(tǒng)700也可有額外特征/功能。例如,計算系統(tǒng)700也可包括額外存儲介質(zhì)(可移動的和/或不可移動的),包括但不限于磁盤、磁帶、光盤或光帶。圖7中通過數(shù)據(jù)存儲設備704示出了該額外存儲設備。計算機存儲介質(zhì)包括易失性和非易失性介質(zhì)、可移動的和不可移動的介質(zhì),這些介質(zhì)在計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù)等信息的任意存儲方法或技術中實現(xiàn)。ram702、rom703和數(shù)據(jù)存儲設備704都是計算機存儲介質(zhì)的示例。數(shù)據(jù)存儲設備704可包括混合數(shù)據(jù)分布模式指令715,其包括處理器(例如,701)可執(zhí)行的軟件,以為所述計算系統(tǒng)700提供此處描述的部分或全部功能。
計算機系統(tǒng)700也包括可選字母數(shù)字輸入設備706、可選游標控制或引導設備707和一個或多個信號通信接口(輸入/輸出設備,例如網(wǎng)卡和/或發(fā)送器和接收器,也稱為“收發(fā)器”)708??蛇x字母數(shù)字輸入設備706可向中央處理器701發(fā)送信息和指令選擇??蛇x游標控制或引導設備707耦合至總線709以向中央處理器701傳遞用戶輸入信息和指令選擇。信號通信接口(輸入/輸出設備)708也耦合至總線709,可為串口。通信接口708也可包括無線通信機制。通過通信接口708,計算機系統(tǒng)700可通過互聯(lián)網(wǎng)、軟件定義網(wǎng)絡(softwaredefinednetwork,簡稱sdn)或內(nèi)聯(lián)網(wǎng)(例如,局域網(wǎng))等通信網(wǎng)絡通信耦合至其他計算機系統(tǒng),或可以接收數(shù)據(jù)(例如,數(shù)字電視信號)。
在以上本發(fā)明實施例的詳細描述中,闡述了許多特定細節(jié)以便提供對本發(fā)明的透徹理解。然而,所屬領域的普通技術人員將認識到,可以在沒有這些具體細節(jié)的情況下實踐本發(fā)明。在其它實例中沒有詳細描述眾所周知的方法、流程、部件和電路,以免對本發(fā)明實施例的各方面造成不必要地模糊。盡管為了清楚起見可以將一種方法描繪為一系列經(jīng)編號的步驟,但所述編號未必指定步驟的次序。應理解,所述步驟中的一些可以跳過、并行執(zhí)行、或在沒有維持嚴格序列順序的要求下執(zhí)行。示出本發(fā)明的實施例的圖式是半圖解的且不按比例,且特別地,尺寸中的一些是為了呈現(xiàn)的清晰性且在繪制的圖式中放大示出。類似地,盡管在用于易于描述的圖式中的視圖大體上示出類似的定向,但在圖式中的此描述大部分是任意的。
根據(jù)本發(fā)明的實施例如此處所述。盡管本發(fā)明在具體實施例中已經(jīng)描述,希望本發(fā)明將僅限于所附權(quán)利要求書以及可適用法律的規(guī)則和原理所需的范圍。