用于演進分析的系統(tǒng)的制作方法
【專利摘要】一種用于演進分析的系統(tǒng)通過下述操作來支持三個維度(分析工作流、用戶和數(shù)據(jù)):通過使用物化為系統(tǒng)中的先前工作流執(zhí)行運行的一部分的答案,重寫工作流以便更高效。
【專利說明】用于演進分析的系統(tǒng)
[0001]本申請是于2012年6月27日提交的序列號為61664971的臨時申請的非臨時申請并要求該臨時申請的優(yōu)先權(quán),該臨時申請的內(nèi)容通過弓I用而并入。
【背景技術(shù)】
[0002]本發(fā)明涉及演進分析。
[0003]知識驅(qū)動的企業(yè)采用了運用其業(yè)務的每個方面的進取型策略,并鼓勵雇員在所收集的大量原始數(shù)據(jù)中找到價值。數(shù)據(jù)驅(qū)動的決策(DDD)沒有給不受改變影響的知識驅(qū)動的企業(yè)留余地,只要在數(shù)據(jù)中存在足夠的證據(jù)對其進行支持即可。組織收集數(shù)據(jù)作為可能具有未知價值的日志,因而,執(zhí)行提取-變換-加載(ETL)由于ETL的高支出而不可行。ETL需要昂貴的正式過程,并需要數(shù)據(jù)看起來像什么以及價值駐留于何處的先驗知識。典型地,日志是大的、平的且具有低結(jié)構(gòu),增加了典型數(shù)據(jù)庫的ETL的復雜度,這是由于這需要一種數(shù)據(jù)庫設(shè)計,其中其結(jié)構(gòu)完全是預定義的。出于這些原因,許多數(shù)據(jù)從未被徹底地評估,并且需要數(shù)據(jù)分析者來分析現(xiàn)代組織所收集的不斷增長的數(shù)據(jù)量并產(chǎn)生可付諸行動的見解。如所期望的那樣,這種類型的分析本質(zhì)上是高度探索性的并涉及下述迭代過程:數(shù)據(jù)分析者以對數(shù)據(jù)的初始查詢開始,檢查結(jié)果,然后重新制定查詢,且甚至可以將附加數(shù)據(jù)源帶進來,等等。典型地,這些查詢涉及與數(shù)據(jù)的類型和分析的目的相聯(lián)系的完善的、域?qū)S玫牟僮?,例如,通過推特消息(tweets)來執(zhí)行情感分析或者計算每個節(jié)點在大社交網(wǎng)絡內(nèi)的影響。
[0004]大規(guī)模系統(tǒng)(諸如MapReduce (MR)和Hadoop)執(zhí)行中間作業(yè)結(jié)果的進取型物化,以支持容錯。當作業(yè)與由數(shù)據(jù)分析者提交的探索性查詢相對應時,這些物化產(chǎn)生物化視圖的大集合,其典型地捕獲來自相同分析者的接續(xù)查詢當中或者甚至跨越對類似假設(shè)進行測試的不同分析者的查詢的公共計算。不出所料的是,如果MapReduce是原始框架,則其開源化身Hadoop或衍生系統(tǒng)(諸如供應說明性查詢語言的Pig和Hive)已變成用于這種類型的分析的實際的工具。除了供應對大數(shù)據(jù)集的可擴縮性外,MR便于并入新數(shù)據(jù)源,這是由于不存在在最前面定義綱要和導入數(shù)據(jù)的需要,并且MR通過可在數(shù)據(jù)上應用的用戶定義函數(shù)(UDF)的機制提供可擴展性。
[0005]UDF是處于在關(guān)系數(shù)據(jù)庫和存儲裝置(諸如SQL)中可用的標準操作的范圍外的那些UDF。典型UDF的示例是分類函數(shù)。這可能將user_id和某文本當作輸入,然后從該文本提取一些實體(對象,專有名詞)并將用戶的周圍文本分類為與那些實體有關(guān)的正面或負面情感。由于數(shù)據(jù)值是未知的,因此分析者最初通常缺乏對數(shù)據(jù)的完整理解,并將需要提出初始查詢(工作流),然后隨著當前答案通知查詢的向著最終期望成果的下一演進,改善該初始查詢。此外,諸如UDF之類的復雜函數(shù)通常需要通過反復試驗(trial and error)而憑經(jīng)驗調(diào)諧,分析者通常將需要重復和改善分析任務多次,直到他們對關(guān)于數(shù)據(jù)的成果滿意為止。
[0006]由于單個MR作業(yè)的計算范圍有限,因此科學家典型地把查詢實現(xiàn)為將數(shù)據(jù)饋送至彼此的全體MR作業(yè)。相當頻繁地,以說明性查詢語言(例如,使用HiveQL和PigLatin)編寫這種查詢,并且然后將這種查詢自動翻譯成MR作業(yè)的集合。
[0007]不管MR系統(tǒng)的普及度如何,查詢性能仍是關(guān)鍵問題,其進而直接影響數(shù)據(jù)分析者可測試假設(shè)和匯集成結(jié)論的“速度”??梢酝ㄟ^減小MR的開銷來實現(xiàn)一些增益,但是,性能的關(guān)鍵阻礙是吸收大數(shù)據(jù)集且跨越若干MR作業(yè)(實踐中,公共類別)的查詢的內(nèi)在復雜度。先驗調(diào)諧(例如,通過對數(shù)據(jù)重新組織或預處理)由于探索性分析的流動性和不確定性而相當富有挑戰(zhàn)性。
【發(fā)明內(nèi)容】
[0008]在一個方面中,一種用于演進分析的系統(tǒng)通過下述操作來支持三個維度(分析工作流、用戶和數(shù)據(jù)演進):通過使用物化為系統(tǒng)中的先前工作流執(zhí)行運行的一部分的答案,重寫工作流以便更高效。
[0009]在另一方面中,一種用于演進分析的系統(tǒng)通過下述操作來支持該三個維度:通過使用物化為系統(tǒng)中的先前工作流執(zhí)行運行的一部分的答案,重寫工作流以便更高效。該系統(tǒng)將查詢重寫部件與由分析者使用的現(xiàn)有查詢執(zhí)行引擎進行集成。優(yōu)化器采取以某說明性語言編寫的查詢并將其翻譯成由MR作業(yè)構(gòu)成的執(zhí)行計劃。通過將重寫器14以及物化的視圖元數(shù)據(jù)存儲裝置16進行集成來擴展目標執(zhí)行引擎。
[0010]上述系統(tǒng)的實現(xiàn)可以包括下面的一項或多項。針對作為大日志的基本數(shù)據(jù)來表達查詢,并且查詢包含UDF。每個MR作業(yè)對其向穩(wěn)定存儲裝置(例如,Hadoop中的HDFS )的輸出進行物化。在一個實施例中,優(yōu)化器可以提供針對允許進入系統(tǒng)的UDF的代價估計。為了令重寫器與目標引擎的優(yōu)化器進行通信,將優(yōu)化器進行擴展以生成在每個計劃節(jié)點上具有下述兩種類型的注釋的計劃:(1)其計算的邏輯表達式;以及(2)所估計的執(zhí)行代價。重寫器在搜索針對節(jié)點的輸出的重寫時在注釋中使用邏輯表達式。該表達式由關(guān)系算子或UDF構(gòu)成。對于在搜索期間找到的每個重寫,重寫器利用優(yōu)化器來獲得計劃和所估計的代價。在查詢執(zhí)行期間,保留查詢處理的所有副產(chǎn)品作為機會性物化視圖,并將該所有副產(chǎn)品存儲在系統(tǒng)中,變成其機會性物理設(shè)計配置的一部分。物化視圖元數(shù)據(jù)存儲裝置包含與當前處于系統(tǒng)中的物化視圖有關(guān)的信息(諸如視圖定義)以及在查詢優(yōu)化中使用的標準數(shù)據(jù)統(tǒng)計。
[0011]優(yōu)選實施例的優(yōu)勢可以包括下面的一項或多項。系統(tǒng)較不復雜。從用戶的角度來看,重寫是在沒有用戶的引導或暗示的情況下自動完成的。從系統(tǒng)的角度來看,物理設(shè)計是自動化的且在沒有提供者的引導的情況下連續(xù)調(diào)諧的。系統(tǒng)在算法上以工作高效的方式找到最優(yōu)重寫。此外,實現(xiàn)了更快速的運算。從用戶和系統(tǒng)的角度來看,該方法保證了系統(tǒng)使用系統(tǒng)中的現(xiàn)有人工產(chǎn)物提供分析者查詢的可能的最便宜(最優(yōu))重寫。從算法的角度來看,由于0PTC0ST,該算法搜索最小量的解空間以找到最優(yōu)重寫,這是在不精簡解空間的情況下完成的。工作流重寫技術(shù)通過產(chǎn)生使用系統(tǒng)中的所有可用人工產(chǎn)物減少工作流執(zhí)行時間的重寫,以工作高效的方式找到演進工作流的最優(yōu)重寫。這導致從用戶的觀點來看更快的性能以及從系統(tǒng)提供者的觀點來看回答查詢所消耗的系統(tǒng)資源的量減少。樂觀代價函數(shù)(optimistic cost funct1n)0PTC0ST的使用使工作流重寫算法能夠遞增地搜索重寫的空間,這使系統(tǒng)能夠創(chuàng)建(激增)和搜索找到最優(yōu)重寫所必需的最小量的解空間。UDF的灰盒模型是具有表現(xiàn)力的,但有利于重寫?;液蟹椒ㄔ试S任何用戶以少量的努力將UDF添加至系統(tǒng)。這允許系統(tǒng)搜索UDF的重寫,并允許任何其他分析者使用該UDF。此外,系統(tǒng)操作者還可以選擇將重寫語言擴展成包括UDF,但利用更大量的努力。該模型比單獨暗示更通用且更富有表現(xiàn)性。
【專利附圖】
【附圖說明】
[0012]圖1示出了可同時支持演進的三個維度的靈活系統(tǒng)。
[0013]圖2示出了示出控制流程的系統(tǒng)框架的示例性高級總覽。
[0014]圖3示出了支持系統(tǒng)中的工作流的演進和新數(shù)據(jù)集的示例性過程。
[0015]圖4示出了系統(tǒng)中的新用戶的演進的示例性過程。
[0016]圖5示出了重寫的示例性過程。
[0017]圖6示出了內(nèi)部處理和維持工作流以支持有效且高效的演進的示例性系統(tǒng)。
[0018]圖7示出了精簡空間的示例性過程。
【具體實施方式】
[0019]圖1示出了可同時支持演進的三個維度的靈活系統(tǒng),這三個維度是工作流、用戶和數(shù)據(jù)。我們把該系統(tǒng)稱為演進系統(tǒng)。演進查詢工作流是由分析者隨著他們迭代地探索數(shù)據(jù)而編寫的工作流。演進工作流W的結(jié)果可能最初不產(chǎn)生期望的答案,這是由于用戶缺乏對數(shù)據(jù)的足以能夠?qū)⑺?她的意圖翻譯成查詢的理解。典型地,W將被重新制定為新工作流W’,并且該過程重復。工作流演進是通過下述操作來定義的:單個分析者對工作流進行調(diào)整、修改和重新目的化,以更好地對準工作流的結(jié)果,以便匹配分析者的意圖。用戶演進被定義為新分析者到達,該新分析者利用新工作流開始查詢系統(tǒng)。數(shù)據(jù)演進被定義為下述過程:分析者將新數(shù)據(jù)源(例如,日志)添加至系統(tǒng)。
[0020]在該系統(tǒng)中,工作流演進是通過下述操作來定義的:單個分析者對工作流進行調(diào)整、修改和重新目的化,以更好地對準工作流的結(jié)果,以便匹配分析者的意圖。用戶演進被定義為新分析者到達,該新分析者利用新工作流開始查詢系統(tǒng)。數(shù)據(jù)演進被定義為下述過程:分析者將新數(shù)據(jù)源(例如,日志)添加至系統(tǒng)。
[0021]系統(tǒng)通過下述操作來支持這三個維度:通過從系統(tǒng)中的先前查詢/工作流執(zhí)行運行無縫地保留和重用人工產(chǎn)物(中間和最終答案),重寫工作流以便更高效,這減少了新查詢的執(zhí)行時間。這些人工產(chǎn)物可以被稱作物化視圖。
[0022]典型地,在我們的使用情況中,分析者通過檢查先前結(jié)果和修改原始工作流來修訂工作流多次。這樣,分析者具有下述自由度:隨著他們向他們期望的答案移動,在任何方向上探索他們的直覺。工作流修改可以包括:添加新數(shù)據(jù)源;改變子目標;改變參數(shù);或者利用m)F來替換工作流中的一些操作。一個實施例在我們的微基準中捕獲這些類型的修改。分析者可以通過將新UDF添加至系統(tǒng)來擴展工作流的語言,然后,UDF變?yōu)閷λ衅渌治稣邅碚f可用。
[0023]服務提供者是系統(tǒng)中的另一參與者,且作為平臺管理者,想要確保良好的系統(tǒng)性能。提供者必須考慮最大化單個用戶的性能相對于用戶的社區(qū)的性能之間的折衷。提供者可以通過添加更多UDF來擴展重寫的語言。利用UDF擴展重寫語言可以通過找到更好的重寫來使分析者受益,但使重寫搜索空間更大,這增加了找到良好重寫所耗費的時間。即使重寫語言包括豐富且可擴展的變換集合,也將期望重寫的語言沒有工作流的語言昂貴。提供者還必須決定要保留哪些物化視圖。由于存儲空間不是無限的,因此需要垃圾收集器。
[0024]在我們的場景中,查詢很可能包括表達為UDF的復雜分析操作。為了在我們的系統(tǒng)中有效地重用先前的計算,我們需要一種用于在語義上對UDF進行建模的方式。
[0025]對UDF進行建模的可能性可以包括對系統(tǒng)來說具有變化級別的開銷和復雜度的白盒、灰盒或黑盒方法。白盒方法需要UDF的完整描述,使得系統(tǒng)理解UDF如何變換輸入。當將新UDF添加至系統(tǒng)時,該方法具有針對分析者的高開銷。黑盒方法具有針對分析者的非常低的開銷,但產(chǎn)生對系統(tǒng)來說完全不透明的輸出,因此可能不適于我們的重用結(jié)果的目標。由于UDF可以涉及對數(shù)據(jù)的相當復雜的操作,因此我們的系統(tǒng)采用灰盒方法,灰盒方法僅捕獲由UDF執(zhí)行的端對端變換。通過端對端變換,我們意指:我們的模型可以捕獲輸入和輸出元組之間的細粒度依賴性,盡管我們的UDF模型不知道與計算有關(guān)的任何更多事情。這需要附加的工作來在添加新M)F時提供灰盒模型,但允許系統(tǒng)以有用的方式理解UDF的變換。另一方面,黑盒模型僅可以總體上跟蹤輸入和輸出之間的粗粒度依賴性。
[0026]在我們的灰盒模型中,UDF被編寫為局部函數(shù)的合成(composit1n)。局部函數(shù)指代對單個元組或元組的單個組操作的函數(shù)。一個實施例將局部函數(shù)限制成執(zhí)行下述操作:
1.丟棄或添加屬性;
2.通過應用過濾器來丟棄元組;
3.執(zhí)行元組的分組。
[0027]灰盒模型不理解由局部函數(shù)執(zhí)行的變換的性質(zhì),然而,其理解每個局部函數(shù)所供給的變換??梢酝ㄟ^合成由UDF中的每個局部函數(shù)執(zhí)行的操作來獲得UDF的端對端變換。
[0028]遵循灰盒模型,通過下述三個屬性來捕獲計劃中的每個節(jié)點的輸入和輸出:屬性A、過濾器F和分組依據(jù)G。F是對輸入數(shù)據(jù)應用的所有過濾器的聯(lián)合,G是所應用的當前分組,并且A捕獲綱要??梢允褂镁植亢瘮?shù)的合成將UDF的端對端變換表達為輸入到輸出的變換。注意,該合成使用三個操作而不是實際計算且不是為了描述內(nèi)部過程,來捕獲端對端變換的語義。通過將這些與分組進行組合,模型可以表達豐富UDF以及關(guān)系算子,諸如選擇、投影、聯(lián)接、分組依據(jù)和聚合。在MapReduce中以標準方式對聯(lián)接進行建模,其是關(guān)于公共關(guān)鍵字對多個關(guān)系進行分組。
[0029]圖2示出了示出控制流程的系統(tǒng)框架的示例性高級總覽。系統(tǒng)通過下述操作來支持這三個維度:通過使用物化為系統(tǒng)中的先前工作流執(zhí)行運行的一部分的答案,重寫工作流以便更高效。系統(tǒng)把查詢重寫部件與由分析者10使用的現(xiàn)有查詢執(zhí)行引擎進行集成。優(yōu)化器12采取以某說明性語言編寫的查詢并將其翻譯成由MR作業(yè)構(gòu)成的執(zhí)行計劃。針對作為大日志的基本數(shù)據(jù)來表達查詢,并且查詢包含UDF。每個MR作業(yè)把其向穩(wěn)定存儲裝置(例如,Hadoop中的HDFS)的輸出進行物化。在該實施例中,優(yōu)化器可以提供針對許可進入系統(tǒng)的UDF的代價估計。通過將重寫器14以及物化視圖元數(shù)據(jù)存儲裝置16進行集成來擴展目標執(zhí)行引擎。為了令重寫器14與目標引擎的優(yōu)化器進行通信,把優(yōu)化器12擴展以生成在每個計劃節(jié)點上具有下述兩種類型的注釋的計劃:(I)其計算的邏輯表達式;以及(2)所估計的執(zhí)行代價。重寫器在搜索針對節(jié)點的輸出的重寫時在注釋中使用邏輯表達式。該表達式由關(guān)系算子或UDF構(gòu)成。對于在搜索期間找到的每個重寫,重寫器利用優(yōu)化器來獲得計劃和所估計的代價。在查詢執(zhí)行期間,保留查詢處理的所有副產(chǎn)品作為機會性物化視圖,并將該所有副產(chǎn)品存儲在系統(tǒng)中,變成其機會性物理設(shè)計配置的一部分。物化視圖元數(shù)據(jù)存儲裝置包含與當前處于系統(tǒng)中的物化視圖有關(guān)的信息(諸如視圖定義)以及在查詢優(yōu)化中使用的標準數(shù)據(jù)統(tǒng)計。
[0030]系統(tǒng)可以通過利用MR的內(nèi)置容錯機制作為機會性物理設(shè)計來極大地改進查詢性能。每個MR作業(yè)涉及出于故障恢復的目的而對中間結(jié)果(映射器的輸出、縮減器的輸入和縮減器的輸出)的物化。更一般地,多階段作業(yè)(諸如,由Pig或Hive生成的作業(yè))將涉及若干個這種物化。我們將這些物化結(jié)果稱為查詢執(zhí)行的人工產(chǎn)物,并注意它們被自動地生成為查詢處理的副產(chǎn)品。
[0031]給定數(shù)據(jù)探索的演進性質(zhì),那么可能的是,每個查詢具有與由相同分析者進行的先前查詢的相似性,且甚至具有與對相同數(shù)據(jù)進行檢查的其他分析者的查詢的相似性。例如,若干數(shù)據(jù)分析者可以對特定類別的推特消息(例如,處于特定地理區(qū)域中的)執(zhí)行情感分析,但在心里有不同假設(shè)。因此,在所生成的人工產(chǎn)物中捕獲的由系統(tǒng)中的先前查詢執(zhí)行的計算可以對新查詢來說相關(guān)。
[0032]人工產(chǎn)物被視為機會性創(chuàng)建的物化視圖,并使用它們來重寫系統(tǒng)中的新查詢。技術(shù)的機會性性質(zhì)具有若干美好特性:物化視圖被生成為查詢執(zhí)行的副產(chǎn)品,即,沒有附加開銷;視圖的集合被自然地適應于當前工作負載;并且給定大規(guī)模分析系統(tǒng)典型地執(zhí)行大量查詢,那么由此得出,將存在同等大量的物化視圖,且因此存在針對新查詢找到良好重寫的好機會。該技術(shù)在工業(yè)數(shù)據(jù)分析系統(tǒng)內(nèi)的實現(xiàn)的結(jié)果指示可以極大節(jié)省查詢執(zhí)行時間:重寫可以將執(zhí)行時間減少多達兩個量級。
[0033]查詢重寫技術(shù)以MR系統(tǒng)內(nèi)的機會性物化視圖的場景為目標。算法采用由空間數(shù)據(jù)庫激發(fā)的技術(shù)(具體地,度量空間中的最近鄰搜索),以便進取性地精簡候選重寫的巨大空間并以高效方式生成最優(yōu)重寫。系統(tǒng)使用簡單但足夠富有表現(xiàn)力以捕獲許多常見類型的UDF的灰盒UDF模型。這給我們供給了對UDF的有限理解,以實現(xiàn)對先前結(jié)果的有效重用。重寫過程將查詢和視圖集合當作輸入,并輸出最優(yōu)重寫。該技術(shù)是工作高效的,這是因為其考慮了在特定假設(shè)下找到最優(yōu)重寫所必需的視圖的最小集合。應用這些方法的實驗結(jié)果使用真實世界數(shù)據(jù)和現(xiàn)實復雜查詢來提供多達兩個量級的執(zhí)行時間改進。來自該方法的節(jié)省歸因于移動少得多的數(shù)據(jù),從而在可能時避免從原始日志重新讀取數(shù)據(jù)的高支出并重用/重新目的化來自包括UDF的長期運行計算的結(jié)果。
[0034]查詢重寫過程提出了兩個主要挑戰(zhàn):如何搜索重寫的大空間;以及如何推斷包含UDF的視圖(大規(guī)模數(shù)據(jù)分析中的公共特征)??勺C明地找到最小代價重寫的算法由非度量空間中的最近鄰搜索激發(fā)。我們基于Hive來向?qū)φ鎸嵤澜鐢?shù)據(jù)集的大范圍實驗研究呈現(xiàn)原型數(shù)據(jù)分析系統(tǒng)。結(jié)果展示:該方法可以導致對復雜數(shù)據(jù)分析查詢的極大性能改進,從而把總執(zhí)行時間減少平均61%且高達兩個量級。
[0035]圖3示出了支持系統(tǒng)中的工作流的演進和新數(shù)據(jù)集的示例性過程。分析者編寫一個或多個演進工作流100。系統(tǒng)在120中得到新UDF,并且系統(tǒng)在122中添加新數(shù)據(jù)集。系統(tǒng)在124中重寫工作流,在110中執(zhí)行來自工作流的演進工作流。在126中,系統(tǒng)給物化視圖編目錄。提供者可以使系統(tǒng)在128中丟棄物化視圖。可替換地,可以在130中通過重寫語言來擴展系統(tǒng)。
[0036]圖4示出了系統(tǒng)中的新用戶的演進的示例性過程。最初,新分析者使用系統(tǒng)。分析者在140中編寫工作流W。系統(tǒng)進而在142中重寫工作流并在144中執(zhí)行工作流。分析者在146中檢查結(jié)果,并且如果他/她不滿意,則分析者可以修訂工作流并回環(huán)到140??商鎿Q地,如果分析者滿意,則該過程退出。
[0037]圖5示出了重寫工作流的示例性過程。該過程在160中接收工作流W和一個或多個現(xiàn)有物化視圖V作為輸入。該過程在162中將W分解為η個子工作流。該過程在164中找到針對每個子工作流的最佳重寫。然后,該過程在166中將重寫進行組合以找到針對W
的重寫。
[0038]圖6示出了內(nèi)部處理和維持工作流以支持有效且高效的演進的示例性系統(tǒng)。在170中,該過程接收工作流W和現(xiàn)有物化視圖V作為輸入。該過程在172中將W分解為η個子工作流。該過程在174中并發(fā)地枚舉針對所有η個子工作流的重寫。在176中,該過程在子工作流不能以代價c找到重寫時精簡搜索。該過程在178中維持到目前為止找到的最佳重寫。接著,該過程在180中檢驗以查看是否所有搜索問題都已被精簡。如果未都被精簡,則該過程回環(huán)到174,并且否則,該過程在182中返回針對W的最佳重寫。
[0039]圖7示出了對空間進行精簡的示例性過程。在該過程中,在190中針對分析系統(tǒng)選擇新使用情況。系統(tǒng)在192中同時捕獲演進的3個維度(工作流、用戶和數(shù)據(jù))。該過程在194中應用有利于重寫的灰盒UDF建模技術(shù)。該過程還在196中執(zhí)行最優(yōu)且工作高效的工作流重寫。使用OptCost函數(shù),該OptCost函數(shù)在198中允許對有希望的候選視圖的遞增枚舉。然后,在200中,該過程重寫搜索問題并將該問題轉(zhuǎn)換為η個搜索問題,使用該η個搜索問題來對搜索空間進行精簡。
[0040]在一個實施例中,工作高效的查詢重寫算法在按使用視圖的重寫的代價的下限排序的每個目標處搜索空間。該下限不應當要求找到有效重寫,這是由于這在計算上是昂貴的。我們定義了樂觀代價函數(shù)辦W,其將候選視圖K和目標K當作輸入并提供使用K的Wi的重寫r,.的下限。r,.是使用候選視圖K的Wj的重寫。下限的特性是:
OptCost (Wi, v) ^ Cost Cri)
下限代價的使用由度量空間中的最近鄰查找問題激發(fā),度量空間中,計算對象之間的距離可能在計算上是昂貴的,因此優(yōu)選容易計算的交替距離函數(shù),交替距離函數(shù)具有其始終小于或等于實際距離的期望特性。
[0041]給定OptCost函數(shù),那么重寫算法通過將問題分解為下述兩個分量來找到r的最優(yōu)重寫
1.BfRewrite執(zhí)行針對F中的所有目標的重寫的高效搜索,并輸出針對Wn的全局最優(yōu)重寫。
2.ViewFinder基于針對單個目標的候選視圖的產(chǎn)生單個目標的低代價重寫的潛力來枚舉針對單個目標的候選視圖,并被BfRewri te利用。
[0042]算法產(chǎn)生可由在/f中的多個目標處找到的重寫構(gòu)成的W的重寫r。所計算出的重寫Z可證明地具有相同類別中的所有可能重寫當中的最小代價。此外,該算法是工作高效的:即使不是先驗已知的,其也將從不會檢查具有比最優(yōu)代價更高的辦iCbW的任何候選視圖。直覺上,該算法僅探索搜索空間中的可證明地找到最優(yōu)重選所需的部分。
[0043]該算法開始于r自身是針對計劃的最佳重寫。然后,其在r中的每個目標處引起η個并發(fā)的搜索問題,并以迭代方式工作以找到最佳重寫。在每次迭代中,該算法選擇一個目標Wj并檢查Wj處的候選視圖。該算法利用該步驟的結(jié)果來輔助精簡r中的其他目標的搜索空間。為了工作高效,該算法必須正確地選擇下一候選視圖來進行檢查。如我們下面將示出的那樣,OptCost功能在選擇下一目標以進行改善中起到必不可少的作用。
[0044]BfRewrite使用ViewFinder的實例來搜索每個目標處的重寫的空間。 ViewFinder是提供下述功能的黑盒:(I)Init創(chuàng)建按候選視圖的辦if1si排序的候選視圖的搜索空間;
(2)Peek提供下一候選視圖的辦iCbW ;以及(3)Refine嘗試使用下一候選視圖來找到目標的重寫。Refine的一個重要特性是下述內(nèi)容:不存在針對對應目標被找到的具有比Peek的值更小的代價的剩余重寫。
[0045]ViewFinder的關(guān)鍵特征是其辦tCos ?功能,該辦tCos ?功能被BFRewri ?e使用以便以遞增的方式探索空間并如4.1節(jié)中所示的那樣精簡非必要的子空間。如前所指出的,已知使用視圖來重寫查詢是困難的問題。傳統(tǒng)地,用于使用SPJG查詢的類別的視圖來重寫查詢的方法使用兩階段方法。精簡階段確定哪些視圖與查詢相關(guān),并且在相關(guān)視圖當中,包含所有所需聯(lián)接謂詞(predicate)的那些視圖被稱作完全解,否則,它們被稱為部分解。典型地,這之后是合并階段,合并階段按所有聯(lián)接順序、使用所有可能的同等聯(lián)接方法來聯(lián)接部分解以形成附加相關(guān)視圖。該算法重復,直到僅剩余對回答查詢有用的那些視圖。
[0046]我們采取類似的方法,其中我們識別部分和完全解,然后接下來是合并階段。當搜索目標的重寫時,ViewFinder考慮候選視圖C。C包括K中的視圖以及通過使用Merge函數(shù)“合并” K中的視圖而形成的視圖,該Merge函數(shù)是標準視圖合并過程的實現(xiàn)。傳統(tǒng)方法合并所有部分解以創(chuàng)建完全解,并繼續(xù)直到?jīng)]有部分解剩余。這以指數(shù)方式“激增”候選視圖的空間。該方法在需要時允許空間的逐步激增,這導致比所考慮的少得多的候選視圖。
[0047]在沒有早期終止條件的情況下,現(xiàn)有方法本來會在所有目標處詳盡地探索空間。因此,我們期望一種重寫算法,其可以枚舉空間并僅按需要那么多以遞增方式探索,從而如BfRewrite所請求的那樣頻繁地停止和重新開始搜索。我們注意到,盡管可能存在針對目標的等效重寫,但是可能從不要求ViewFinder找到它。
[0048]在算法4中呈現(xiàn)了 FiewFinder。在高級別處,KiewFinder是有狀態(tài)的,這使BfRewrite能夠在每個目標處開始、停止和重新開始遞增搜索。ViewFinder使用候選視圖的優(yōu)先級隊列來維持狀態(tài)。ViewFinder實現(xiàn)了我們接下來描述的三個函數(shù)Init、Peek和Refine。
[0049]Init函數(shù)利用來對ViewFinder的實例進行例示,其中,目標的邏輯表示Vi ^ F和物化視圖的集合K存在于系統(tǒng)中。接著,將指派給<7,并使用OptCost (q, v)作為排序關(guān)鍵詞將K中的每個視圖添加至優(yōu)先級隊列。在Init的結(jié)尾處,PQ中的候選視圖僅包括V中的那些視圖。
[0050]Peek函數(shù)被BfRewri te使用以獲得/?*中的首部項的OptCost。當BfRewri te要求ViewFinder檢查下一候選視圖時,調(diào)用Refine函數(shù)。在該階段處,ViewFinder將首部項V彈出PQ。然后,ViewFinder通過將r與先前彈出的候選視圖(即,fee/?中的視圖)合并來生成新候選視圖的集合#,從而遞增地激增候選視圖的空間。注意,包含辦iCbW小于或等于r的OptCost的候選視圖。#僅保留尚未處于中的那些候選,這些候選然后被插入到/?中。稍后作為定理而提供的OptCost的特性是:#中的候選視圖所具有的OptCost大于K的辦iibw,并且因此,這些視圖都不應當在K之前已被檢查。該特性實現(xiàn)了候選視圖的空間的逐步激增。然后,V被添加到Seen。
[0051]如果^被猜測為完全的,則我們通過調(diào)用函數(shù)來嘗試使用^找到<7的重寫。在通過TfefrriteEnum找到的重寫當中,作為結(jié)果,將最便宜的重寫返回到te。為了確定視圖r相對于查詢7是部分的還是完全的,我們采取樂觀方法。該方法表示下述猜測:使用r的完全重寫存在。猜測需要下面的必要條件:視圖必須滿足參與7的重寫;盡管這些條件不足以確認使用r的等效重寫的存在。
(a>包含所需要的所有屬性;或者包含產(chǎn)生中的不處于r中的那些屬性的所有必需屬性;
(b)^包含比弱的選擇謂詞;
(c)^比<7更不聚合。
[0052]^MlGuessComplete、q, v)執(zhí)行這些檢驗,并在^滿足相對于<7的特性的情況下返回真。這些條件部分指定確定有效重寫存在的需求,因此,猜測可能導致假肯定,但從不會導致假否定。
[0053]RewriteEnum算法嘗試使用被猜測是完全的視圖來產(chǎn)生查詢的有效重寫。所返回的重寫表示使用r的^的所有可能等效重寫當中最便宜的重寫。重寫的代價由Cost函數(shù)評估,且與實現(xiàn)重寫的最便宜執(zhí)行計劃相對應。等效性是通過確保重寫和查詢包含相同屬性、過濾器和分組依據(jù)來確定的。
[0054]我們通過使用4對被猜測為的完全視圖K應用補償來枚舉7的等效重寫。我們通過下述操作來完成這一點:生成所需補償?shù)乃信帕胁⑨槍Φ刃赃M行測試,這相當于在給定4的情況下所有可能重寫的強力枚舉。這造成了系統(tǒng)將I4I保持為較小的情況。當4被限制于已知、固定的算子集合時,其可能足以檢查重寫嘗試的多項式數(shù),如針對涉及分組依據(jù)的簡單聚合的特定情況的[?]中那樣。這些方法不適用于該情況,這是由于當系統(tǒng)導致總體系統(tǒng)收益時,系統(tǒng)應當具有利用UDF從~擴展4的靈活性。
[0055]給定找到有效重寫的計算代價,那么BfRewrite使用兩種策略來限制RewriteEnum算法的調(diào)用。首先,我們避免必須在每個候選視圖上應用RewriteEnum,基于早先描述的三個特性來針對視圖的完整性進行猜測。其次,我們通過確定使用r的重寫(如果存在這種重寫的話)的代價的下限來延遲對每個完全視圖的應用。對于下限,我們使用辦其在下一節(jié)中描述。
[0056]系統(tǒng)基于候選視圖的提供低代價重寫的潛力來執(zhí)行候選視圖的枚舉。OptCost依賴于Cbw函數(shù)的不可歸入的代價特性,以達到下限。給定皮猜測為相對于^完全,那么^和^的屬性、過濾器和分組依據(jù)表示之間的所設(shè)置的差異被稱為定位。定位表示可將r的表示變換成7的表示的假設(shè)局部函數(shù)。注意,包含這種局部函數(shù)的UDF可能實際上不存在。我們必須調(diào)用產(chǎn)生包含來自Lr的補償?shù)闹貙懙腞ewriteEnum。補償中局部函數(shù)的合成將r的表示變換成&最后,注意,定位的存在保證了 r將導致有效重寫,出于被猜測為完全可導致假肯定的相同原因。這兩者均假定:可以彼此獨立地將所需的補償運算應用于^
[0057]OptCost函數(shù)具有下述兩個特性:其是由Rewri teEnum (q, v)返回的任何計劃的代價的下限,且在計算上不昂貴。如果r是物化視圖,則C1等于訪問r的代價。否則,如果r產(chǎn)生自視圖的合并,則C1是訪問r的構(gòu)成視圖的總代價。如果r尚不是物化的,則我們將C2表示為合并K中的構(gòu)成視圖的代價(即,創(chuàng)建代價),否則,如果K已經(jīng)是物化的,則C2 = O。我們將C3表示為在K上的定位中應用最不昂貴的運算的代價,其通過調(diào)用Cost以獲得在K上的定位中執(zhí)行每個運算的代價而獲得。通過minWosiCr,κ))來獲得C3,使得ζ是定位中的運算。
[0058]r相對于<7的OptCost由下式給定:c = C1 + C2 + C3,其中,c小于使用r的重寫的任何計劃的代價。如果r相對于<7是部分的,則C3 = O,這是由于不應當應用補償。
[0059]優(yōu)化器可以生成下述計劃:其中,可以在對一些補償進行物化之前將其推送到候選視圖r中。在這種情況下,OptCost可以提供更弱的下限,這是由于其可以僅考慮訪問r的所有構(gòu)成視圖的代價(C1)加上在r的任何構(gòu)成視圖上或可在創(chuàng)建r的過程中創(chuàng)建的任何中間視圖上的定位中應用最不昂貴運算的最小代價c/。如果r相對于q是部分的,則辦iCbW僅包括Cl。一般地,c是關(guān)于由使用^的的等效重寫r (如果其存在的話)產(chǎn)生的任何計劃的代價的下限。為了找到最低代價r, RewriteEnum應用補償運算的所有排列,以實現(xiàn)等效重寫。不管在補償中使用多少運算,通過定義1,應用補償?shù)拇鷥r必須至少與定位中的最便宜運算C3同樣昂貴。
[0060]接著,針對涉及補償?shù)南峦频那闆r分析辦if1si函數(shù)。對于該情況,K的構(gòu)成視圖的合并的排序以及可適用的補償二者到現(xiàn)在為止均未知。下限保持,這是由于其未作出關(guān)于r中的構(gòu)成視圖的排序(即,通過使用C1)以及r的任何計劃中的任何補償算子的位置(即,C3' )的任何假設(shè)。M中的不處于fee/?中的每個候選視圖的OptCost大于或等于r的OptCost ο
[0061]下面示出算法1-4的偽代碼。
Algorithfii I Oprimal re?Tite of W using ViewFinder
1: fiiurl1ii EiiRj-_Wft|T1-:<If, Vi
2: for tatii W\ € W doIsii Step
3: ¥lEWFiNDERiKIT4lii, V)
4: bstPlMs^ original plan to jroiace Wi
5; bstPlkCst.^ -hCost(Wi)"> flmi
if- cttil fin*
7: repeat
8: (HO, d) 1- FlKDNEXlMlNTARGHTiiriil)
9: IHFIMElARGETiirf) if 十 NULL
10; until Wi MTLL
11:W uxmg iis*iP!,nh
12: end fiiiiict1ii
【權(quán)利要求】
1.一種用于支持演進查詢的方法,包括: 保留來自先前查詢或工作流執(zhí)行運行的人工產(chǎn)物(物化視圖); 提供用戶定義函數(shù)(M)F)的灰盒模型以支持針對UDF的重寫的搜索; 自動地產(chǎn)生使用人工產(chǎn)物減少工作流執(zhí)行時間的重寫;以及 遞增地搜索要創(chuàng)建(激增)的重寫的空間并搜索最小量的解空間以找到最優(yōu)重寫。
2.根據(jù)權(quán)利要求1所述的方法,包括:支持沿包括工作流、用戶和數(shù)據(jù)演進的三個維度的同時演進。
3.根據(jù)權(quán)利要求1所述的方法,包括:將重寫語言擴展成包括UDF。
4.根據(jù)權(quán)利要求1所述的方法,包括:確定樂觀代價函數(shù)OptCost(W1, V),其將候選視圖r和目標Zfi當作輸入;以及提供使用r的Wi的重寫r,.的下限,其中r,.是使用候選視圖r的巧的重寫,并且其中下限的特性被確定為:
OptCost (Wi, v) ^ Cost Cri)。
5.根據(jù)權(quán)利要求4所述的方法,包括:創(chuàng)建按辦Kosi排序的候選視圖的搜索空間;提供下一候選視圖的辦iCbW ;以及使用所述下一候選視圖來確定目標的重寫。
6.根據(jù)權(quán)利要求1所述的方法,包括通過下述操作來確定r的最優(yōu)重寫Z: 執(zhí)行針對r中的所有目標的重寫的高效搜索,并輸出針對黽的全局最優(yōu)重寫;以及基于針對單個目標的一個或多個候選視圖的產(chǎn)生所述目標的低代價重寫的潛力來枚舉針對單個目標的一個或多個候選視圖。
7.根據(jù)權(quán)利要求1所述的方法,包括:產(chǎn)生由在r中的多個目標處找到的重寫構(gòu)成的r的重寫其中,所計算的Z具有在相同類別中的重寫當中最小的代價。
8.根據(jù)權(quán)利要求1所述的方法,包括: 使用r作為針對計劃的重寫; 在r中的每個目標處引起/7個并發(fā)的搜索問題,并迭代地找到更好的重寫,其中,每次迭代選擇一個目標K并檢查Zfi處的候選視圖;以及 把更好的重寫結(jié)果用于精簡r中的其他目標的搜索空間。
9.根據(jù)權(quán)利要求1所述的方法,包括:優(yōu)化UDF在非結(jié)構(gòu)化數(shù)據(jù)集上的執(zhí)行。
10.根據(jù)權(quán)利要求1所述的方法,包括:針對用戶工作流的演進進行優(yōu)化。
11.一種用于支持演進分析查詢的系統(tǒng),包括: 優(yōu)化器,接收查詢并將所述查詢翻譯成執(zhí)行計劃; 查詢重寫器,耦合至所述優(yōu)化器以支持沿包括工作流、用戶和數(shù)據(jù)演進的三個維度的同時演進; 物化視圖元數(shù)據(jù)存儲裝置,耦合至所述查詢重寫器,所述存儲裝置包含與包括查詢優(yōu)化中使用的視圖定義和標準數(shù)據(jù)統(tǒng)計的物化視圖有關(guān)的信息;以及查詢執(zhí)行引擎,耦合至所述查詢重寫器以執(zhí)行所述查詢。
12.根據(jù)權(quán)利要求11所述的系統(tǒng),其中,針對包括大日志的基本數(shù)據(jù)來表達查詢,并且查詢包含UDF。
13.根據(jù)權(quán)利要求11所述的系統(tǒng),其中,所述優(yōu)化器提供針針對允許進入系統(tǒng)的UDF的代價估計。
14.根據(jù)權(quán)利要求11所述的系統(tǒng),其中,所述優(yōu)化器生成在每個計劃節(jié)點上具有下述兩種類型的注釋的計劃:(1)其計算的邏輯表達式;以及(2)所估計的執(zhí)行代價。
15.根據(jù)權(quán)利要求11所述的系統(tǒng),其中,所述重寫器在搜索針對節(jié)點的輸出的重寫時在注釋中使用邏輯表達式。
16.根據(jù)權(quán)利要求15所述的系統(tǒng),其中,表達式由關(guān)系算子或UDF構(gòu)成。
17.根據(jù)權(quán)利要求11所述的系統(tǒng),針對在搜索期間找到的每個重寫,所述重寫器利用所述優(yōu)化器來獲得計劃和所估計的代價。
18.根據(jù)權(quán)利要求11所述的系統(tǒng),其中,在查詢執(zhí)行期間查詢處理的副產(chǎn)品被保留為機會性物化視圖且被存儲為機會性物理設(shè)計配置。
19.根據(jù)權(quán)利要求11所述的系統(tǒng),包括用于執(zhí)行下述操作的計算機代碼:確定樂觀代價函數(shù)辦(W1, V),其將候選視圖K和目標Wj當作輸入;以及提供使用K的Wj的重寫r,.的下限,其中r,.是使用候選視圖r的巧的重寫,并且其中下限的特性被確定為:
OptCost (Wi, v) ^ Cost Cri)。
20.根據(jù)權(quán)利要求19所述的系統(tǒng),包括用于執(zhí)行下述操作的計算機代碼:創(chuàng)建按OptCost排序的候選視圖的搜索空間;提供下一候選視圖的OptCost ;以及使用所述下一候選視圖來確定目標的重寫。
21.根據(jù)權(quán)利要求11所述的系統(tǒng),包括用于執(zhí)行下述操作的計算機代碼: 使用r作為針對計劃的重寫; 在r中的每個目標處引起/7個并發(fā)的搜索問題,并迭代地找到更好的重寫,其中,每次迭代選擇一個目標K并檢查Zfi處的候選視圖;以及 將更好的重寫結(jié)果用于精簡r中的其他目標的搜索空間。
【文檔編號】G06F17/00GK104137095SQ201380011695
【公開日】2014年11月5日 申請日期:2013年5月31日 優(yōu)先權(quán)日:2012年6月27日
【發(fā)明者】V.H.哈奇古穆斯, J.??ɡ{拉亞南, J.勒菲弗爾, J.塔特穆拉, N.波利佐蒂斯 申請人:美國日本電氣實驗室公司