專利名稱:基于Datalog的分布式環(huán)境下大圖數(shù)據(jù)查詢方法
技術領域:
本發(fā)明具體涉及分布式環(huán)境下進行大圖數(shù)據(jù)的查詢,具體涉及了一種基于Datalog的分布式環(huán)境下大圖數(shù)據(jù)查詢方法,屬于信息技術領域。
背景技術:
現(xiàn)代社會中,圖的應用越來越廣泛。社交網(wǎng)絡、生物信息、交通導航等領域技術的迅猛發(fā)展產(chǎn)生了規(guī)模龐大的圖數(shù)據(jù)。如何有效的管理這些大圖數(shù)據(jù)面臨著許多挑戰(zhàn)首先是傳統(tǒng)的單機計算模式很難支持大圖數(shù)據(jù)的管理,單機的存儲能力有限,很難將整個大圖數(shù)據(jù)都加載到內存中,同時單機的處理能力也不足,很難有效支持大圖數(shù)據(jù)上各種復雜的操作;其次是大圖數(shù)據(jù)上的應用需求日益復雜,大圖上的操作不僅僅局限于檢索結點和邊這樣簡單的操作,同時還包括各種復雜的查詢,比如最短路徑查詢、子圖模式匹配等。這些操作往往需要循環(huán)迭代,涉及很大的搜索空間和執(zhí)行代價。因此,利用分布式環(huán)境來對大圖 數(shù)據(jù)進行管理成為發(fā)展的必然趨勢。目前出現(xiàn)了一些基于分布式環(huán)境的大圖數(shù)據(jù)管理系統(tǒng),其中具有代表性的系統(tǒng)包括 Google 的 Pregel 系統(tǒng),可具體參考I (Grzegorz Malewicz, Matthew H. Austern, AartJ. C.Bikj James C.Dehnert,Ilan Horn, Naty Leiser,Grzegorz Czajkowski:Pregel: asystem for large-scale graph processing. SIGMOD 2010:135-146)以及 Microsoft 的Trinity系統(tǒng),這兩個系統(tǒng)都不是開源的,主要是針對圖數(shù)據(jù)管理的特點,專門開發(fā)的大圖數(shù)據(jù)分布式管理框架,需要用戶自己使用高級編程語言來實現(xiàn)查詢,對用戶的專業(yè)知識要求較高。目前還出現(xiàn)了基于MapReduce框架支持SQL查詢的工作,如在SIGM0D2007上出現(xiàn)的 Map-Reduce-Merge 的工作,如參考文件2(Hung-chih Yang, Ali Dasdan, Ruey-LungHsiao, Douglas Stott Parker Jr. :Map-reduce-merge:simplified relational dataprocessing on large clusters. SIGMOD 2007:1029-1040),以及在 hadoop 環(huán)境中米用類SQL語言進行分析的Hive系統(tǒng),可參考文件3(Ashish Thusoo, Joydeep Sen Sarma, NamitJain, Zheng Shao, Prasad Chakka, Ning Zhang, Suresh Anthony, Hao Liu,RaghothamMurthy:Hive-a petabyte scale data warehouse using Hadoop. ICDE 2010:996-1005)。但是,此類工作只是考慮單個關系數(shù)據(jù)的操作符號,并沒有考慮圖遞歸Datalog查詢對MapReduce函數(shù)生成和優(yōu)化的影響。針對Datalog查詢的研究曾經(jīng)是數(shù)據(jù)管理領域重點,如參考文件4(SergeAbiteboul, Richard Hull, and Victor Vianu.Foundations of Databases, http://web dam. inria. fr/Alice/. ) Datalog查詢表達能力強,用戶能夠以簡潔的方式表達其查詢要求。本發(fā)明主要是利用Datalog對圖數(shù)據(jù)進行查詢,圖數(shù)據(jù)需要較為復雜的遞歸循環(huán)處理。本發(fā)明擴展了 Datalog查詢語言,所設計的Datalog查詢顯式地給出循環(huán)的終止條件,支持更多的系統(tǒng)函數(shù),在不增加用戶太多負擔的情況下,擴展了圖查詢的表達能力。大圖數(shù)據(jù)管理系統(tǒng)建設的一種方案是充分考慮圖數(shù)據(jù)管理的特點和需求,完全從底層開始的實現(xiàn)。這種方式的優(yōu)點是能夠針對大圖數(shù)據(jù)作出特定的優(yōu)化,系統(tǒng)管理大圖數(shù)據(jù)比較自然。缺點是需要自己專門實現(xiàn)數(shù)據(jù)分布、任務調度、數(shù)據(jù)副本、結點失敗等通用分布式計算框架的功能,這會帶來龐大的工程實現(xiàn)代價,同時也沒有辦法利用已有系統(tǒng)積累的優(yōu)勢。
發(fā)明內容
本發(fā)明針對利用現(xiàn)有相對成熟的MapReduce分布式計算框架來對大圖數(shù)據(jù)進行查詢,針對現(xiàn)有框架下大圖數(shù)據(jù)查詢性能難以滿足應用需求、用戶編寫圖數(shù)據(jù)處理腳本繁瑣低效等問題,設計了一種基于Datalog的MapReduce分布式環(huán)境下大圖數(shù)據(jù)查詢方法。該方法的設計主要包括如下三方面的內容描述性圖查詢語言的設計、描述性查詢語言執(zhí)行計劃的產(chǎn)生和描述性查詢語言執(zhí)行計劃的優(yōu)化。本發(fā)明利用目前已有的相對成熟的MapReduce分布式計算框架對大圖數(shù)據(jù)進行查詢,針對已有大圖數(shù)據(jù)管理系統(tǒng)要求用戶具備較強專業(yè)知識以及現(xiàn)有MapReduce框架下大圖數(shù)據(jù)查詢性能難以滿足應用需求等問題,本發(fā)明提出一種基于Datalog的分布式環(huán)境 下大圖數(shù)據(jù)查詢方法,其步驟包括I)對用戶輸入的大圖查詢指令進行語法分析,產(chǎn)生對應的語法樹;所述查詢指令基于Datalog規(guī)則;2)根據(jù)所述語法樹,建立Datalog查詢規(guī)則的執(zhí)行操作,基于每個Datalog規(guī)則將查詢轉換為Map和Reduce函數(shù)中對應的執(zhí)行操作;2-1)在語法樹中基于當前的圖結點集合和邊集合,導出新的結點集合;2-2)對所述新結點進行遞歸操作,所述遞歸Datalog規(guī)則設定查詢時遞歸操作終止條件,所述Datalog規(guī)則支持聚集函數(shù);3)根據(jù)MapReduce中的等價規(guī)則和查詢統(tǒng)計數(shù)據(jù),執(zhí)行Map和Reduce函數(shù)中操作指令,完成查詢,將查詢得到的結果回傳至用戶。將Datalog查詢規(guī)則轉換為初始執(zhí)行、循環(huán)終止判定和循環(huán)內操作,所述循環(huán)終止判定和循環(huán)內操作對應遞歸查詢;所述初始執(zhí)行操作設定查詢的類型和起、終點;所述循環(huán)終止判定操作根據(jù)查詢終止條件和代價模型查詢請求;所述循環(huán)內操作進行圖上每一層的遞歸操作。對每個Datalog查詢規(guī)則,將其轉換到由關系代數(shù)的選擇、連接、投影、聚集操作的基本操作組成的查詢規(guī)則,并將所述關系代數(shù)基本操作翻譯為Map和Reduce函數(shù)。初始執(zhí)行后,每次遞歸操作處理上一層遞歸變化的部分;獲取遞歸操作中導出視圖的每一層出現(xiàn)的新數(shù)據(jù)。對于產(chǎn)生的Map和Reduce執(zhí)行函數(shù),循環(huán)遞歸操作出現(xiàn)聚集函數(shù)時,通過Hadoop中Counter機制,來產(chǎn)生下一輪規(guī)則中的所需要的聚集函數(shù)值。所述Datalog規(guī)則的查詢轉換為Map和Reduce函數(shù)中對應的執(zhí)行操作時,若一個規(guī)則對應的關系代數(shù)計劃需要選擇和連接操作,可以將選擇和連接放入一個MapReduce函數(shù)中,選擇的邏輯操作在MapReduce函數(shù)的Map端函數(shù)完成。所述Datalog規(guī)則的查詢轉換為Map和Reduce函數(shù)中對應的執(zhí)行操作時,當進行聚集函數(shù)后,實現(xiàn)連接操作,可以將聚集函數(shù)和連接操作放入一個MapReduce函數(shù)中,聚集函數(shù)的邏輯操作在Reduce端函數(shù)完成。在所述遞歸Datalog規(guī)則中,針對連接操作,根據(jù)圖的統(tǒng)計信息和運行數(shù)據(jù)的統(tǒng)計信息,選擇Map端連接或Reduce端連接實現(xiàn)方式。所述查詢終止條件首先執(zhí)行,判斷查詢結果是否為空。所述Map和Reduce函數(shù)中執(zhí)行操作指令在時,將任務的輸出作下一輪遞歸操作的輸入;循環(huán)終止條件在執(zhí)行MapReduce任務時,根據(jù)循環(huán)條件決定是否進入下一輪遞歸循環(huán)操作。本發(fā)明的有益效果I)為了簡化最終用戶編寫圖查詢腳本的代價,本發(fā)明提出了擴展的遞歸DataLog查詢,支持用戶使用簡單的描述性語言來表達對應大圖查詢。2)本發(fā)明提出了遞歸Datalog查詢的MapReduce環(huán)境執(zhí)行計劃的構建方法,使得·Datalog圖查詢能夠在MapReduce框架下執(zhí)行。3)本發(fā)明提出了遞歸Datalog查詢執(zhí)行計劃利用等價規(guī)則和統(tǒng)計數(shù)據(jù),實現(xiàn)規(guī)則間優(yōu)化、規(guī)則內優(yōu)化、操作函數(shù)的優(yōu)化,提高大圖查詢執(zhí)行計劃的效率。
圖I是本發(fā)明基于Datalog的分布式環(huán)境下大圖數(shù)據(jù)查詢方法的系統(tǒng)框架圖。圖2是本發(fā)明基于Datalog圖查詢的基本執(zhí)彳丁計劃不意圖。圖3是本發(fā)明基于Datalog的分布式環(huán)境下大圖數(shù)據(jù)查詢方法實施例中循環(huán)內Datalog規(guī)則生成對應的MapReduce任務示意圖。圖4是本發(fā)明基于Datalog的分布式環(huán)境下大圖數(shù)據(jù)查詢中圖查詢語言執(zhí)行計劃優(yōu)化框架圖。圖5是本發(fā)明基于Datalog的分布式環(huán)境下大圖數(shù)據(jù)查詢方法的實施例中針對循環(huán)內Datalog規(guī)則優(yōu)化的MapReduce任務示意圖。具體實施方法下面說明具體實現(xiàn)步驟和詳細方法。本實施方法是在Hadoop平臺上進行的,主要針對描述性查詢語言的設計、執(zhí)行計劃的構建以及查詢執(zhí)行優(yōu)化等問題進行考慮。這里首先給出整個發(fā)明的設計架構圖,并且說明框架各部分負責的內容,接著詳細說明本發(fā)明特有模塊的設計以及實現(xiàn)方式。本發(fā)明的方法要求在Hadoop上高效地對大圖數(shù)據(jù)進行管理,要求為最終用戶提供描述性的查詢語言,要求盡可能優(yōu)化描述性查詢的執(zhí)行和優(yōu)化。針對上述要求,本發(fā)明提出了如圖I所示的系統(tǒng)框架,從圖I中可以看出,本方法基于MapReduce框架的開源實現(xiàn)Hadoop系統(tǒng),實現(xiàn)描述性圖查詢的解析、優(yōu)化、執(zhí)行等。I. I描述性圖查詢語言描述性圖查詢語言可以簡化用戶編寫大圖數(shù)據(jù)處理腳本的代價,同時為后續(xù)的查詢優(yōu)化提供基礎。本發(fā)明采用基于遞歸Datalog的圖描述性查詢語言,抽象圖代數(shù)系統(tǒng)的基本操作,作為Datalog語言的操作原語,并通過Datalog語言的遞歸機制表達圖查詢中的循環(huán)迭代。這個圖查詢語言的基本描述如下
I)整個Datalog查詢分為兩部分,一個是查詢規(guī)則集合,一個是查詢終止條件。查詢規(guī)則符合標準的Datalog規(guī)則的要求,(具體可參見參考文獻4Serge Abiteboul, Richard Hul I, and Victor Vianu. Foundations ofDatabases, http://webdam. inria.fr/Alice/.)。本發(fā)明中 Datalog 查詢將在系統(tǒng)支持函數(shù)、終止條件方面進行擴展。2)整個查詢的數(shù)據(jù)基礎是結點集合或者是結點序列的集合。產(chǎn)生對應的語法樹,基于目前的圖結點集合和邊集合,導出新的結點集合。新的結點集合中的屬性和查詢目標相關。3)查詢規(guī)則是一個Datalog規(guī)則,包括規(guī)則頭和規(guī)則體,基本思路是基于規(guī)則體中的基本關系或者導出視圖得到規(guī)則頭中的另一個導出視圖。在規(guī)則體和規(guī)則頭中,支持聚集函數(shù),或者分組聚集函數(shù)。
3. I)如果是遞歸的操作,系統(tǒng)默認為是按照層次執(zhí)行。初始化執(zhí)行后,每次遞歸操作僅僅處理上一層遞歸變化的部分。3. 2)系統(tǒng)提供Datalog查詢過程中分層執(zhí)行過程中,針對遞歸導出視圖的每一層出現(xiàn)的新的數(shù)據(jù)集合和全部數(shù)據(jù)集合的獲取。4)查詢終止條件使用一個Datalog規(guī)則,并通過Exist函數(shù)判定導出視圖是否為空作為循環(huán)的終止判定。本發(fā)明用兩個例子說明這兩個語言,包括I)判定a和b是否可達Reach (y) : -edge (x, y), x=aReach (z) : -reach (x), edge (x, z)終止條件Exists (Result (z) : -Reach (z), z=b)對上述查詢例子的解釋終止條件Exists (Result (b) :-Reach (z),z=b)含義是首先執(zhí)行Result (z) :-Reach(z),z=b這個Datalog查詢規(guī)則,其導出視圖為Result (z)。Exists判定Result (z)是否為空。2 )獲取a和b之間的最短路Path (y, x, cost) : -Edge (x, y, cost), x=aPath (y, (pre, min (cost))) : -Path (x, prel, costl), edge (x, y, cost2), cost=costl+cost2, pre=prel+x終止條件Exists (Result (x, pre, cost) : -Path (x, pre, cost), x=b, cost〈min (Path, cost, Last))對上述查詢例子的解釋第二個表達式中,Path (y, (pre, min (cost)))表示按照y分組,求所有路徑的最小cost值min(cost),同時保存最小cost值和其pre結點。Edge (x, y, cost)表示邊的基本表,從x結點到y(tǒng)結點的權重為cost。在終止條件中,min (Path, Cost, Last)表示在Path數(shù)據(jù)集合當前最后一次(Last)擴展中,Cost數(shù)據(jù)的最小值(Min)。Last是一個標識,表示是遞歸操作的當前最后一次擴展。Last的設置和Datalog的執(zhí)行相關。由于本發(fā)明Datalog是按照層次執(zhí)行,所以Last就表示在Path這個導出視圖中,當前最后一次擴展變化的結點集合。I. 2圖查詢語言的解析器
圖查詢語言的Parser利用現(xiàn)有的解析技術如參考文獻5(Alfred V. Aho,Monica S. Lam, Ravi Sethi and Jeffrey Ullman:Compilers:Principles, Techniques, and Tools (2ndEdition). Publisher :Prentice Hall; 2 edition (September 10,2006))將圖查詢語言進行語法分析,保證所提交的圖查詢語言符合語法規(guī)范,同時產(chǎn)生對應的語法樹,作為查詢執(zhí)行計劃的基礎。I. 3圖查詢語言執(zhí)行計劃的構造器針對圖查詢的每個Datalog查詢規(guī)則和終止規(guī)則,本發(fā)明構造其對應的執(zhí)行塊。每個執(zhí)行塊對應一個Datalog的規(guī)則。由于Datalog規(guī)則可以等價的使用關系代數(shù)來執(zhí)行(參見前述參考文件4Serge Abiteboul, Richard Hull, and Victor Vianu. Foundationsof Databases, http://webdam. inria. fr/Alice/.),可以將每個 Datalog 規(guī)則使用關系代數(shù)中的選擇、連接、投影、聚集操作等來執(zhí)行。對于每個具體的關系代數(shù)操作,有其固定的對應的MapRedue函數(shù)。
在本發(fā)明中稱Datalog規(guī)則頭出現(xiàn)的視圖為導出視圖。導出視圖在分布式框架中對應一個文件。導出視圖中的每個數(shù)據(jù)是文件的一項,每個數(shù)據(jù)增加一個標記itr,標記這個數(shù)據(jù)在第幾次遞歸中被增加和處理。在第i次遞歸操作中,只有變化的部分才被追加到數(shù)據(jù)文件中,這些新被追加的數(shù)據(jù)項的itr為i。如果第i次遞歸操作使得某些數(shù)據(jù)值發(fā)生改變,那么這新改變的數(shù)據(jù)項的itr重新標記為i。本發(fā)明舉例說明圖查詢語言在MapReduce分布式環(huán)境下的翻譯工作。針對最短路查詢的例子,本發(fā)明在構造遞歸執(zhí)行計劃圖2是經(jīng)過語法分析后,最短路徑Datalog查詢翻譯之后的結果。執(zhí)行計劃包括三個執(zhí)行塊,初始執(zhí)行、循環(huán)終止判定和循環(huán)內操作。每個執(zhí)行塊都是由關系代數(shù)基本操作來實現(xiàn)。本發(fā)明可以用MapReduce實現(xiàn)關系代數(shù)的基本操作圖3是針對圖2執(zhí)行計劃中循環(huán)內規(guī)則翻譯得到的關系代數(shù)基本操作和對應的 MapReduce 函數(shù)的示意。以 Path (x, prel, costl, itr)和 edge (x, y, cost2)的連接操作為例,本發(fā)明啟動右子圖下面那個MapReduce函數(shù)。在Map函數(shù)中,對于導出視圖Path (x, prel, costl, itr)按照x為鍵,判定其擴展次數(shù)itr,假定是新擴展訪問的點(其itr和遞歸次數(shù)i等價),直接輸出,對于基本表Edge (X,y, cost2)按照x為鍵,直接輸出。在 Reduce 函數(shù)中,得到 Path (X,prel, costl, itr)的數(shù)據(jù)項和邊 Edge (x, y, cost2),新的pre數(shù)據(jù)項設置為pre+x,新的cost設置為costl+cost2,新的擴展標記itr設置為itr+1,按照I為鍵進行輸出。右子圖上圖描述了按照I為鍵,獲得不同I結點路徑代價cost最小值的MapReduce函數(shù)。通過按照圖2的執(zhí)行流程,每個執(zhí)行塊執(zhí)行對應的MapReduce任務,任務的輸出作為文件寫回存儲單元,作為下一輪遞歸操作的輸入。循環(huán)終止塊執(zhí)行MapReduce任務,判定循環(huán)條件是否終止。如果沒有終止,則進入下一輪遞歸循環(huán)操作。I. 5圖查詢語言執(zhí)行計劃的優(yōu)化器給定一個Datalog的圖查詢執(zhí)行計劃,本發(fā)明的優(yōu)化分為三大類規(guī)則間的優(yōu)化、規(guī)則內的優(yōu)化、操作符號的優(yōu)化。如圖4所示,這些優(yōu)化源于某些MapReduce函數(shù)的等價規(guī)貝U。某些優(yōu)化策略需要圖數(shù)據(jù)自身和運行數(shù)據(jù)的各類統(tǒng)計數(shù)據(jù)。規(guī)則間的優(yōu)化如果聚集函數(shù)出現(xiàn)在遞歸規(guī)則中,一種方式是對這個聚集函數(shù)啟動一次MapReduce任務,這種方式處理代價較高。針對這一1清況,本發(fā)明可以在循環(huán)中通過Hadoop的Counter機制,來產(chǎn)生下一輪規(guī)則中的所需要的聚集函數(shù)值。規(guī)則內的優(yōu)化基本思想就是通過等價性,來減少翻譯之后的MapReduce任務。例如,如果一個規(guī)則對應的關系代數(shù)計劃需要選擇和連接操作,查詢計劃中包含針對選擇和連接各自產(chǎn)生MapReduce函數(shù)。優(yōu)化策略不必為選擇單獨產(chǎn)生一個MapReduce函數(shù),而是將選擇和連接放入一個MapReduce函數(shù)中,選擇的邏輯在MapReduce函數(shù)的Map端完成。再比如,如果本發(fā)明聚集函數(shù)之后,實現(xiàn)連接操作,本發(fā)明也不需要針對聚集函數(shù)單獨設置MapReduce函數(shù),而是將聚集函數(shù)和連接操作放入一個MapReduce函數(shù)中,聚集函數(shù)的邏輯在Reduce端完成。 以圖3翻譯之后的MapReduce函數(shù)為例,直接翻譯將產(chǎn)生二個MapReduce任務,其中第二個MapReduce任務就是對y變量獲取其最小值的聚集函數(shù)操作。由于下一輪操作是以y為連接元素實現(xiàn)擴展表和邊表的連接,那么,可以將上述兩個MapReduce 函數(shù)簡化為一個函數(shù)。以圖5下側的MapReduce為例,在Map函數(shù)中,輸出導出視圖Path (x, prel, costl, itr)的數(shù)據(jù)項和邊的集合,針對同一個x的不同示例,在reduce函數(shù)中首先計算其最小值,判定最小值是否是最新擴展發(fā)現(xiàn)的(根據(jù)itr標記)。如果是,則根據(jù)這條最新發(fā)現(xiàn)的代價最小的路徑和邊的信息進一步擴展X鄰接結點的路徑。第三類的優(yōu)化是操作符號的優(yōu)化在遞歸Datalog規(guī)則中,非常核心的操作是連接操作,就是結點集合和邊集合之間的連接。在這一步驟中,可以使用現(xiàn)有連接操作的各種可能實現(xiàn),如Map端連接和Reduce端連接等。具體選擇何種實現(xiàn)方法依賴于對于圖的統(tǒng)計信息和運行數(shù)據(jù)的統(tǒng)計信息(可以采用參考文獻3Ashish Thusoo, JoydeepSen Sarma,Namit Jain,Zheng Shao,Prasad Chakka,Ning Zhang,Suresh Anthony, HaoLiu,Raghotham Murthy:Hive-apetabyte scale data warehouse using Hadoop. ICDE2010:996-1005 中的方法)。
權利要求
1.一種基于Datalog的分布式環(huán)境下大圖數(shù)據(jù)查詢方法,其步驟包括 1)對用戶輸入的大圖查詢指令進行語法分析,產(chǎn)生對應的語法樹;所述查詢指令基于Datalog規(guī)貝丨J ; 2)根據(jù)所述語法樹,建立Datalog查詢規(guī)則的執(zhí)行操作,基于每個Datalog規(guī)則將查詢轉換為Map和Reduce函數(shù)中對應的執(zhí)行操作; 2-1)在語法樹中基于當前的圖結點集合和邊集合,導出新的結點集合; 2-2)對所述新結點進行遞歸操作,所述遞歸Datalog規(guī)則設定查詢時遞歸操作終止條件,所述Datalog規(guī)則支持聚集函數(shù); 3)根據(jù)MapReduce中的等價規(guī)則和查詢統(tǒng)計數(shù)據(jù),執(zhí)行Map和Reduce函數(shù)中操作指令,完成查詢,將查詢得到的結果回傳至用戶。
2.如權利要求I所述的基于Datalog的分布式環(huán)境下大圖數(shù)據(jù)查詢方法,其特征在于,將Datalog查詢規(guī)則轉換為初始執(zhí)行、循環(huán)終止判定和循環(huán)內操作,所述循環(huán)終止判定和循環(huán)內操作對應遞歸查詢;所述初始執(zhí)行操作設定查詢的類型和起、終點;所述循環(huán)終止判定操作根據(jù)查詢終止條件和代價模型查詢請求;所述循環(huán)內操作進行圖上每一層的遞歸操作。
3.如權利要求2所述的基于Datalog的分布式環(huán)境下大圖數(shù)據(jù)查詢方法,其特征在于,對每個Datalog查詢規(guī)則,將其轉換到由關系代數(shù)的選擇、連接、投影、聚集操作的基本操作組成的查詢規(guī)則,并將所述關系代數(shù)基本操作翻譯為Map和Reduce函數(shù)。
4.如權利要求2所述的基于Datalog的分布式環(huán)境下大圖數(shù)據(jù)查詢方法,其特征在于,初始執(zhí)行后,每次遞歸操作處理上一層遞歸變化的部分;獲取遞歸操作中導出視圖的每一層出現(xiàn)的新數(shù)據(jù)。
5.如權利要求I所述的基于Datalog的分布式環(huán)境下大圖數(shù)據(jù)查詢方法,其特征在于,對于產(chǎn)生的Map和Reduce執(zhí)行函數(shù),循環(huán)遞歸操作出現(xiàn)聚集函數(shù)時,通過Hadoop中Counter機制,來產(chǎn)生下一輪規(guī)則中的所需要的聚集函數(shù)值。
6.如權利要求I所述的基于Datalog的分布式環(huán)境下大圖數(shù)據(jù)查詢方法,其特征在于,所述Datalog規(guī)則的查詢轉換為Map和Reduce函數(shù)中對應的執(zhí)行操作時,若一個規(guī)則對應的關系代數(shù)計劃需要選擇和連接操作,可以將選擇和連接放入一個MapReduce函數(shù)中,選擇的邏輯操作在MapReduce函數(shù)的Map端函數(shù)完成。
7.如權利要求I所述的基于Datalog的分布式環(huán)境下大圖數(shù)據(jù)查詢方法,其特征在于,所述Datalog規(guī)則的查詢轉換為Map和Reduce函數(shù)中對應的執(zhí)行操作時,當進行聚集函數(shù)后,實現(xiàn)連接操作,可以將聚集函數(shù)和連接操作放入一個MapReduce函數(shù)中,聚集函數(shù)的邏輯操作在Reduce端函數(shù)完成。
8.如權利要求I所述的基于Datalog的分布式環(huán)境下大圖數(shù)據(jù)查詢方法,其特征在于,在所述遞歸Datalog規(guī)則中,針對連接操作,根據(jù)圖的統(tǒng)計信息和運行數(shù)據(jù)的統(tǒng)計信息,選擇Map端連接或Reduce端連接實現(xiàn)方式。
9.如權利要求I所述的基于Datalog的分布式環(huán)境下大圖數(shù)據(jù)查詢方法,其特征在于,所述查詢終止條件首先執(zhí)行,判斷查詢結果是否為空。
10.如權利要求I所述的基于Datalog的分布式環(huán)境下大圖數(shù)據(jù)查詢方法,其特征在于,所述Map和Reduce函數(shù)中執(zhí)行操作指令在時,將任務的輸出作下一輪遞歸操作的輸入;循環(huán) 終止條件在執(zhí)行MapReduce任務時,根據(jù)循環(huán)條件決定是否進入下一輪遞歸循環(huán)操作。
全文摘要
本發(fā)明涉及一種基于Datalog的分布式環(huán)境下大圖數(shù)據(jù)查詢方法,其步驟包括1)對用戶輸入的基于Datalog規(guī)則集合的大圖查詢指令進行語法分析,產(chǎn)生對應的語法樹;2)根據(jù)語法樹,構建以Datalog規(guī)則為單位的執(zhí)行計劃。針對每個Datalog規(guī)則,構造對應的Map和Reduce執(zhí)行函數(shù)。3)利用等價規(guī)則和統(tǒng)計數(shù)據(jù),實現(xiàn)規(guī)則間優(yōu)化、規(guī)則內優(yōu)化、操作函數(shù)的優(yōu)化,提高大圖查詢執(zhí)行計劃的效率。本發(fā)明為了簡化最終用戶編寫圖查詢腳本的代價,提出了擴展的遞歸DataLog查詢,支持用戶使用簡單的描述性語言來表達對應大圖查詢。本發(fā)明還提出了遞歸Datalog查詢的MapReduce環(huán)境執(zhí)行計劃的構建方法,使得Datalog圖查詢能夠在MapReduce框架下執(zhí)行。
文檔編號G06F17/30GK102799624SQ20121021024
公開日2012年11月28日 申請日期2012年6月19日 優(yōu)先權日2012年6月19日
發(fā)明者高軍, 周家?guī)? 王騰蛟, 楊冬青, 唐世渭 申請人:北京大學