国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      用于搜索數(shù)據(jù)庫(kù)的方法和裝置制造方法

      文檔序號(hào):6501028閱讀:133來(lái)源:國(guó)知局
      用于搜索數(shù)據(jù)庫(kù)的方法和裝置制造方法
      【專利摘要】本發(fā)明提供一種用于搜索數(shù)據(jù)庫(kù)的方法和裝置。該方法包括:基于搜索條件中設(shè)定的數(shù)據(jù)條目之間的連接條件,分組所述數(shù)據(jù)條目;以及基于所述數(shù)據(jù)條目的所述分組執(zhí)行所述搜索。本發(fā)明可以有效地并且高效地解決對(duì)于現(xiàn)有的MapReduce查詢處理系統(tǒng)而言共同的問(wèn)題,從而特別適合于大集群系統(tǒng)中的大數(shù)據(jù)集分析。
      【專利說(shuō)明】用于搜索數(shù)據(jù)庫(kù)的方法和裝置

      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明的實(shí)施方式涉及數(shù)據(jù)庫(kù)領(lǐng)域,更具體地,涉及一種用于搜索數(shù)據(jù)庫(kù)的方法和裝置。

      【背景技術(shù)】
      [0002]隨著數(shù)據(jù)庫(kù)技術(shù)的不斷發(fā)展,對(duì)數(shù)據(jù)庫(kù)的搜索/查詢技術(shù)的要求也日益提升。在實(shí)踐中,MapReduce(映射-合并)框架已經(jīng)被廣泛作為對(duì)在大集群系統(tǒng)中的大數(shù)據(jù)分析的有效方法。MapReduce應(yīng)用開發(fā)要求開發(fā)人員將應(yīng)用程序邏輯編碼為由MapReduce公開的簡(jiǎn)單接口(即map和reduce函數(shù))。盡管這樣的map和reduce接口提供了極高的編程靈活性,但它們非常難以實(shí)現(xiàn)、優(yōu)化和維護(hù),尤其是對(duì)于在實(shí)際生產(chǎn)中涉及到的復(fù)雜和非無(wú)關(guān)緊要的數(shù)據(jù)分析作業(yè)而言。從關(guān)系數(shù)據(jù)庫(kù)技術(shù)(即,SQL)的成功可以明顯看出,如果數(shù)據(jù)處理程序以如下聲明式查詢語(yǔ)言(declarative query language)進(jìn)行編寫,則程序開發(fā)和優(yōu)化將非常高效和有效,前述聲明式查詢語(yǔ)言隱藏了實(shí)現(xiàn)細(xì)節(jié)并且可以進(jìn)行修改以加以優(yōu)化。在這種情況下,用戶可以直接編寫聲明性查詢,該查詢繼而將被轉(zhuǎn)換成待由MapReduce平臺(tái)(例如,Hadoop)執(zhí)行的MapReduce程序(作業(yè))序列。
      [0003]近來(lái),已經(jīng)提出了若干聲明式語(yǔ)言并且集成到了基于MapReduce的系統(tǒng),諸如PigLatin/Pig, HiveQL/Hive。在這些系統(tǒng)中,用戶直接編寫聲明式查詢,其隨后被轉(zhuǎn)換成待由MapReduce平臺(tái)(例如Hadoop)執(zhí)行的MapReduce程序(作業(yè))序列。這些語(yǔ)言極大地改進(jìn)了 MapReduce應(yīng)用開發(fā)人員的生產(chǎn)率。然而,它們的效果和影響受到兩個(gè)主要問(wèn)題的限制。一方面,到目前為止在查詢轉(zhuǎn)換過(guò)程期間,僅已經(jīng)開發(fā)出一些非常專門化的優(yōu)化技術(shù)。因而,實(shí)踐中,觀察到針對(duì)許多查詢而自動(dòng)轉(zhuǎn)換的MapReduce程序與由有經(jīng)驗(yàn)的程序員編寫的手工優(yōu)化的程序相比總是極度低效。例如,現(xiàn)有的語(yǔ)言轉(zhuǎn)換器采用本地化的一個(gè)操作-一個(gè)作業(yè)方法,其簡(jiǎn)單地用預(yù)備好的MapReduce程序來(lái)代替查詢圖中的每個(gè)操作。另一方面,現(xiàn)有的MapReduce語(yǔ)言提供用于操作數(shù)據(jù)集合體的有限的句法,主要以公知的關(guān)系連接(join)和GROUP BY的形式。這樣,這些語(yǔ)言允許用戶能夠?qū)⒍ㄖ频腗apReduce腳本插入到他們的查詢語(yǔ)言中。這實(shí)際上削弱了使用聲明式語(yǔ)言的益處并且可能引起次優(yōu)的、易出錯(cuò)的并且難以維護(hù)的代碼。


      【發(fā)明內(nèi)容】

      [0004]為了解決現(xiàn)有技術(shù)中存在的上述問(wèn)題,本說(shuō)明書提出如下方案。
      [0005]根據(jù)本發(fā)明的一個(gè)方面,提出一種搜索數(shù)據(jù)庫(kù)的方法,包括:基于搜索條件中設(shè)定的數(shù)據(jù)條目之間的連接條件,分組所述數(shù)據(jù)條目;以及基于所述數(shù)據(jù)條目的所述分組執(zhí)行所述搜索。
      [0006]在本發(fā)明的可選實(shí)現(xiàn)中,所述基于搜索條件中設(shè)定的數(shù)據(jù)條目之間的連接條件,分組所述數(shù)據(jù)條目進(jìn)一步包括通過(guò)以下中的至少一種來(lái)變換所述搜索條件的步驟:從所述搜索條件中去除模式、重寫規(guī)則以及去除嵌套。
      [0007]在本發(fā)明的可選實(shí)現(xiàn)中,所述分組還基于所述搜索條件中設(shè)定的所述數(shù)據(jù)條目的值之間的依賴關(guān)系進(jìn)行。
      [0008]在本發(fā)明的可選實(shí)現(xiàn)中,所述搜索條件包括SQL查詢語(yǔ)句。
      [0009]在本發(fā)明的可選實(shí)現(xiàn)中,所述數(shù)據(jù)庫(kù)中的數(shù)據(jù)項(xiàng)的類型包括以下中的一個(gè):記錄類型^111,...^11:如>、序列類型[t]、集合類型{t}、以及映射類型{(tl,t2)};其中,η是自然數(shù),tl,...,tn是遞歸定義類型,Al,...,An是組件名,并且映射類型{(tl,t2)}將類型tl的關(guān)鍵字綁定到類型t2。
      [0010]在本發(fā)明的可選實(shí)現(xiàn)中,所述SQL查詢語(yǔ)句包括如下形式:
      [0011]SELECT[DISTINCT]es
      [0012]FROM pfl in efl,..., pfn in efn
      [0013][WHERE ej
      [0014][GROUP BY pg:eg [HAVING eh]]
      [0015][ORDER BY ej
      [0016]其中,[]中的語(yǔ)句為可選語(yǔ)句;并且其中,61?1,...,6&,6:3、61?、6!;、和6。是任意表達(dá)式;FR0M子句中的pfl,...,Pfn中的每個(gè)是模式,efl,...,efn中的每個(gè)是返回序列、集合或者關(guān)鍵字-值配對(duì)映射的表達(dá)式,“pin e”形式表示模式P匹配e中的每個(gè)元素,并將其模式變量綁定到元素中的對(duì)應(yīng)值;GR0UP BY子句中的pg: %形式表示將查詢結(jié)果劃分成組,從而每個(gè)組內(nèi)的成員具有相同值eg,模式Pg綁定到跨每個(gè)組共同的GROUP BY值。
      [0017]在本發(fā)明的可選實(shí)現(xiàn)中,基于所述數(shù)據(jù)條目的所述分組執(zhí)行所述搜索進(jìn)一步包括以下中的一個(gè)或多個(gè):設(shè)置新的查詢變量以關(guān)聯(lián)到所述查詢語(yǔ)句中的每個(gè)SELECT表達(dá)式;去除所述SQL查詢語(yǔ)句中的所有連接和過(guò)濾謂詞;以及用單個(gè)綁定來(lái)替代每個(gè)SELECT表達(dá)式中的FROM部分,所述單個(gè)綁定使用元組模式來(lái)綁定直接嵌套的SELECT表達(dá)式的查詢變量和FROM部分的變量。
      [0018]在本發(fā)明的可選實(shí)現(xiàn)中,所述搜索基于映射-合并方式并行進(jìn)行。
      [0019]在本發(fā)明的可選實(shí)現(xiàn)中,在針對(duì)所述搜索的所述映射-合并方式多于一種時(shí),評(píng)估所述映射-合并方式中每種所述映射-合并方式的開銷,并且選擇開銷最小的映射-合并方式作為實(shí)際搜索方式。
      [0020]在本發(fā)明的可選實(shí)現(xiàn)中,所述映射-合并方式包括以下步驟中的一個(gè)或多個(gè):減少由映射-合并作業(yè)讀取輸入數(shù)據(jù)和寫入輸出數(shù)據(jù)的I/o開銷、將彼此獨(dú)立的多個(gè)映射-合并作業(yè)組合成單個(gè)映射-合并作業(yè)、以及在產(chǎn)品-消費(fèi)者作業(yè)對(duì)中至少一個(gè)作業(yè)是僅映射的,或者兩個(gè)作業(yè)共享同一映射關(guān)鍵字時(shí)組合所述產(chǎn)品-消費(fèi)者作業(yè)對(duì)。
      [0021]在本發(fā)明的可選實(shí)現(xiàn)中,所述映射-合并方式包括使用如下形式的執(zhí)行方式:
      [0022]REPEAT v = e STEP body [limit η]
      [0023]其中,V是需要重復(fù)的變量,e的類型是某一類型T的集合{T},body的類型是{(T,布爾型)},η為自然數(shù);并且其中,所述REPEAT語(yǔ)句表示首先將v綁定到e的值,然后重復(fù)計(jì)算body,并且從之前的重復(fù)計(jì)算中將新值賦予V,如果重復(fù)的次數(shù)變?yōu)棣?、或者?dāng)所有由body返回的布爾型都為假時(shí),則停止所述執(zhí)行。
      [0024]根據(jù)本發(fā)明的另一方面,提出一種搜索數(shù)據(jù)庫(kù)的裝置,包括:分組裝置,被配置為基于搜索條件中設(shè)定的數(shù)據(jù)條目之間的連接條件,分組所述數(shù)據(jù)條目;以及執(zhí)行裝置,被配置為基于所述數(shù)據(jù)條目的所述分組執(zhí)行所述搜索。
      [0025]在本發(fā)明的可選實(shí)現(xiàn)中,所述分組裝置進(jìn)一步包括通過(guò)以下裝置中的至少一個(gè):模式去除裝置,被配置為從所述搜索條件中去除模式;查詢簡(jiǎn)化裝置,被配置為重寫規(guī)則;以及嵌套去除裝置,被配置為去除嵌套。
      [0026]在本發(fā)明的可選實(shí)現(xiàn)中,所述分組裝置還基于所述搜索條件中設(shè)定的所述數(shù)據(jù)條目的值之間的依賴關(guān)系進(jìn)行所述分組。
      [0027]在本發(fā)明的可選實(shí)現(xiàn)中,所述搜索條件包括SQL查詢語(yǔ)句。
      [0028]在本發(fā)明的可選實(shí)現(xiàn)中,所述數(shù)據(jù)庫(kù)中的數(shù)據(jù)項(xiàng)的類型包括以下中的一個(gè):記錄類型^111,...^11:如>、序列類型[t]、集合類型{t}、以及映射類型{(tl,t2)};其中,η是自然數(shù),tl,...,tn是遞歸定義類型,Al,...,An是組件名,并且映射類型{(tl,t2)}將類型tl的關(guān)鍵字綁定到類型t2。
      [0029]在本發(fā)明的可選實(shí)現(xiàn)中,所述SQL查詢語(yǔ)句包括如下形式:
      [0030]SELECT[DISTINCT]es
      [0031]FROM pfl in efl,..., pfn in efn
      [0032][WHERE ej
      [0033][GROUP BY pg:
      [0034][ORDER BY ej
      [0035]其中,[]中的語(yǔ)句為可選語(yǔ)句;并且其中,efl,..., efn, es、ew、eg、和e。是任意表達(dá)式;FR0M子句中的pfl,...,Pfn中的每個(gè)是模式,efl,...,efn中的每個(gè)是返回序列、集合或者關(guān)鍵字-值配對(duì)映射的表達(dá)式,“pin e”形式表示模式P匹配e中的每個(gè)元素,并將其模式變量綁定到元素中的對(duì)應(yīng)值;GR0UP BY子句中的pg: %形式表示將查詢結(jié)果劃分成組,從而每個(gè)組內(nèi)的成員具有相同值eg,模式Pg綁定到跨每個(gè)組共同的GROUP BY值。
      [0036]在本發(fā)明的可選實(shí)現(xiàn)中,所述執(zhí)行裝置進(jìn)一步包括以下裝置中的一個(gè)或多個(gè):新變量設(shè)置裝置,被配置為設(shè)置新的查詢變量以關(guān)聯(lián)到所述查詢語(yǔ)句中的每個(gè)SELECT表達(dá)式;去除裝置,被配置為去除所述SQL查詢語(yǔ)句中的所有連接和過(guò)濾謂詞;以及替代裝置,被配置為用單個(gè)綁定來(lái)替代每個(gè)SELECT表達(dá)式中的FROM部分,所述單個(gè)綁定使用元組模式來(lái)綁定直接嵌套的SELECT表達(dá)式的查詢變量和FROM部分的變量。
      [0037]在本發(fā)明的可選實(shí)現(xiàn)中,所述執(zhí)行裝置基于映射-合并方式并行進(jìn)行所述搜索。
      [0038]在本發(fā)明的可選實(shí)現(xiàn)中,用于搜索數(shù)據(jù)庫(kù)的裝置還包括:評(píng)估-選擇裝置,被配置為在針對(duì)所述搜索的所述映射-合并的方案多于一種時(shí),評(píng)估所述映射-合并方式中每種所述映射-合并方式的開銷,并且選擇開銷最小的映射-合并方式作為實(shí)際搜索方式。
      [0039]在本發(fā)明的可選實(shí)現(xiàn)中,所述執(zhí)行裝置進(jìn)一步包括以下裝置中的一個(gè)或多個(gè):作業(yè)壓縮裝置,被配置為減少由映射-合并作業(yè)讀取輸入數(shù)據(jù)和寫入輸出數(shù)據(jù)的I/o開銷;水平合并裝置,被配置為將彼此獨(dú)立的多個(gè)映射-合并作業(yè)組合成單個(gè)映射-合并作業(yè);以及垂直合并裝置,被配置為在產(chǎn)品-消費(fèi)者作業(yè)對(duì)中至少一個(gè)作業(yè)是僅映射的,或者兩個(gè)作業(yè)共享同一映射關(guān)鍵字時(shí)組合所述產(chǎn)品-消費(fèi)者作業(yè)對(duì)。
      [0040]在本發(fā)明的可選實(shí)現(xiàn)中,所述映射-合并方式包括使用如下形式的執(zhí)行方式:
      [0041]REPEAT v = e STEP body[limit η]
      [0042]其中,V是需要重復(fù)的變量,e的類型是某一類型T的集合{T},body的類型是{(T,布爾型)},η為自然數(shù);并且其中,所述REPEAT語(yǔ)句表示首先將v綁定到e的值,然后重復(fù)計(jì)算body,并且從之前的重復(fù)計(jì)算中將新值賦予V,如果重復(fù)的次數(shù)變?yōu)棣?、或者?dāng)所有由body返回的布爾型都為假時(shí),則停止所述執(zhí)行。
      [0043]通過(guò)本發(fā)明的上述各種實(shí)現(xiàn),可以在任何位置都允許SQL的嵌套的查詢和用戶定義的函數(shù)(UDF)、允許對(duì)分組數(shù)據(jù)的操作、支持自定義篩選器/聚集作為UDF以及支持聲明式遞歸。此外,根據(jù)本發(fā)明所提供的查詢優(yōu)化框架還有效地將用擴(kuò)展的SQL編寫的聲明式查詢轉(zhuǎn)換成MapReduce作業(yè)的優(yōu)化的流。

      【專利附圖】

      【附圖說(shuō)明】
      [0044]通過(guò)參考附圖閱讀下文的詳細(xì)描述,本發(fā)明實(shí)施方式的上述以及其他目的、特征和優(yōu)點(diǎn)將變得明顯。在附圖中,以示例性而非限制性的方式示出了本發(fā)明的若干實(shí)施方式,其中相同的參考標(biāo)號(hào)表示相同或相似的元素。
      [0045]圖1示出了根據(jù)本發(fā)明實(shí)施方式的用于搜索數(shù)據(jù)庫(kù)的方法100的流程圖;
      [0046]圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施方式的、針對(duì)特定示例所生成的查詢圖;
      [0047]圖3圖示了 MapReduce作業(yè)的計(jì)算流程;
      [0048]圖4圖示了根據(jù)本發(fā)明的查詢優(yōu)化器的架構(gòu)400 ;
      [0049]圖5示出了了根據(jù)本發(fā)明示例性實(shí)施方式的用于搜索數(shù)據(jù)庫(kù)的裝置圖500 ;
      [0050]圖6示出了適于用來(lái)實(shí)現(xiàn)本發(fā)明實(shí)施方式的示例性計(jì)算系統(tǒng)600的框圖。

      【具體實(shí)施方式】
      [0051]為了更為充分和靈活地利用SQL語(yǔ)言的特點(diǎn)以及更為清楚地闡述本發(fā)明的各種實(shí)現(xiàn)方式,首先對(duì)現(xiàn)有的SQL數(shù)據(jù)模型進(jìn)行擴(kuò)展。例如,可以利用除了基本類型(布爾型,整型,字符串型,等)和元組(tl,...tn)之外的如下附加類型對(duì)SQL的數(shù)據(jù)模型進(jìn)行擴(kuò)展:
      [0052]記錄:〈Al:tl,..., An: tn> ;
      [0053]序列:[t];
      [0054]集合:{t};
      [0055]映射:{(tl,t2)};
      [0056]其中,tl, t2,…,tn是(遞歸定義)類型,并且Al,…,An是組件名。此外,映射(tl,t2)將類型tl的關(guān)鍵字綁定到類型t2。
      [0057]本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,上述對(duì)SQL數(shù)據(jù)模型的擴(kuò)展是為了更為充分地利用SQL語(yǔ)言的特點(diǎn),而不能作為對(duì)本發(fā)明的各種實(shí)現(xiàn)方式的限制。實(shí)際上,基本的SQL數(shù)據(jù)模型也完全適合于本發(fā)明的各種實(shí)現(xiàn)方式。
      [0058]由此,在本發(fā)明的系統(tǒng)中,可以將SQL查詢擴(kuò)展如下:
      [0059]SELECT[DISTINCT]es
      [0060]FROM pfl in efl,..., pfn in efn
      [0061][WHERE ej
      [0062][GROUP BY pg:eg [HAVING eh]]
      [0063][ORDER BY ej
      [0064]其中,如本領(lǐng)域技術(shù)人員所熟悉,[]中的語(yǔ)句為可選語(yǔ)句。此外,efl,...,efn,es、ew、eg、和e。是任意表達(dá)式,其可以包含其它的嵌套的SELECT查詢;FROM子句包含“p in e”形式的查詢綁定,其中,P是模式,并且e是返回集合體(即序列、集合或者關(guān)鍵字-值配對(duì)映射)的表達(dá)式。模式P匹配集合體e中的每個(gè)元素,將其模式變量綁定到元素中的對(duì)應(yīng)值。換而言之,這一查詢綁定指定了集合體e上的迭代(一次指定一個(gè)元素),使得模式P與當(dāng)前集合體元素相匹配。例如,以下查詢
      [0065]SELECT (n, mn)
      [0066]FR0M〈name:n, manager:m>in Employees,
      [0067]<name:mn>in m
      [0068]在Employees上迭代,并且針對(duì)每個(gè)employee記錄,其用模式〈name:η,manager:m>匹配記錄,這一匹配將變量η和m分別綁定到記錄組件name和manager,并且忽略掉其余內(nèi)容。
      [0069]GROUP BY子句采用形式p:e以將查詢結(jié)果劃分成分組,從而每個(gè)群組的成員具有相同值e。模式P綁定到跨每個(gè)組共同的GR0UPBY值。因而,GROUP BY操作提升了在FROM子句中定義的、從類型T到集合{T}的所有非GROUP BY模式變量,這表明每個(gè)這樣的變量必須包含多個(gè)值,群組的每個(gè)成員一個(gè)值。
      [0070]ORDER BY子句在可選的GROUP BY之后通過(guò)e。值來(lái)排序查詢結(jié)果。
      [0071]利用上述擴(kuò)展SQL,可以聲明性地表達(dá)如后文所出現(xiàn)的任意MapReduce作業(yè)。
      [0072]一般而言,MapReduce作業(yè)對(duì)于任意類型的α , β , r和k,使用map函數(shù)m和reduce函數(shù)r將類型為{a}的數(shù)據(jù)集合s轉(zhuǎn)換成類型為{ β }的數(shù)據(jù)集合,m和r的類型為:
      [0073]m: α — {(κ,y )}r: (κ , { y }) — β
      [0074]其中,映射函數(shù)m將類型為α的值從輸入數(shù)據(jù)集合變換成類型為{(κ,Υ)}的中間關(guān)鍵字/值配對(duì)。Reduce函數(shù)r將與同一關(guān)鍵字類型κ相關(guān)聯(lián)的中間配對(duì)合并,并且產(chǎn)生類型為β的值的集合,該集合被并入到MapReduce結(jié)果中。上述MapReduce作業(yè)等同于:
      [0075]

      【權(quán)利要求】
      1.一種搜索數(shù)據(jù)庫(kù)的方法,包括: 基于搜索條件中設(shè)定的數(shù)據(jù)條目之間的連接條件,分組所述數(shù)據(jù)條目;以及 基于所述數(shù)據(jù)條目的所述分組執(zhí)行所述搜索。
      2.根據(jù)權(quán)利要求1所述的方法,其中,所述基于搜索條件中設(shè)定的數(shù)據(jù)條目之間的連接條件,分組所述數(shù)據(jù)條目進(jìn)一步包括通過(guò)以下中的至少一種來(lái)變換所述搜索條件的步驟: 從所述搜索條件中去除模式、重寫規(guī)則以及去除嵌套。
      3.根據(jù)權(quán)利要求1所述的方法,其中,所述分組還基于所述搜索條件中設(shè)定的所述數(shù)據(jù)條目的值之間的依賴關(guān)系進(jìn)行。
      4.根據(jù)權(quán)利要求1-3中任一所述的方法,其中,所述搜索條件包括SQL查詢語(yǔ)句。
      5.根據(jù)權(quán)利要求4所述的方法,其中,所述數(shù)據(jù)庫(kù)中的數(shù)據(jù)項(xiàng)的類型包括以下中的一個(gè): 記錄類型<Al:tl,...,An:tn>、序列類型[t]、集合類型{t}、以及映射類型{(tl,t2)}; 其中,η是自然數(shù),tl,...,tn是遞歸定義類型,Al,..., An是組件名,并且映射類型{(tl,t2)}將類型tl的關(guān)鍵字綁定到類型t2。
      6.根據(jù)權(quán)利要求5所述的方法,其中,所述SQL查詢語(yǔ)句包括如下形式:
      SELECT[DISTINCT] es
      FROM pfl in efl,..., pfn in efn
      [WHERE ew]
      [GROUP BY pg:eg [HAVING eh]]
      [ORDER BY ej 其中,[]中的語(yǔ)句為可選語(yǔ)句; 并且其中,efl,..., efn, es、ew、eg、和e。是任意表達(dá)式; FROM子句中的pfl,...,Pfn中的每個(gè)是模式,efl,...,efn中的每個(gè)是返回序列、集合或者關(guān)鍵字-值配對(duì)映射的表達(dá)式,“P in e”形式表示模式P匹配e中的每個(gè)元素,并將其模式變量綁定到元素中的對(duì)應(yīng)值; GROUP BY子句中的pg: %形式表示將查詢結(jié)果劃分成組,從而每個(gè)組內(nèi)的成員具有相同值eg,模式pg綁定到跨每個(gè)組共同的GROUP BY值。
      7.根據(jù)權(quán)利要求6所述的方法,其中,基于所述數(shù)據(jù)條目的所述分組執(zhí)行所述搜索進(jìn)一步包括以下中的一個(gè)或多個(gè): 設(shè)置新的查詢變量以關(guān)聯(lián)到所述查詢語(yǔ)句中的每個(gè)SELECT表達(dá)式; 去除所述SQL查詢語(yǔ)句中的所有連接和過(guò)濾謂詞;以及 用單個(gè)綁定來(lái)替代每個(gè)SELECT表達(dá)式中的FROM部分,所述單個(gè)綁定使用元組模式來(lái)綁定直接嵌套的SELECT表達(dá)式的查詢變量和FROM部分的變量。
      8.根據(jù)權(quán)利要求1-3中任一所述的方法,其中,所述搜索基于映射-合并方式并行進(jìn)行。
      9.根據(jù)權(quán)利要求8所述的方法,其中,在針對(duì)所述搜索的所述映射-合并方式多于一種時(shí),評(píng)估所述映射-合并方式中每種所述映射-合并方式的開銷,并且選擇開銷最小的映射-合并方式作為實(shí)際搜索方式。
      10.根據(jù)權(quán)利要求8所述的方法,其中,所述映射-合并方式包括以下步驟中的一個(gè)或多個(gè): 減少由映射-合并作業(yè)讀取輸入數(shù)據(jù)和寫入輸出數(shù)據(jù)的I/o開銷、將彼此獨(dú)立的多個(gè)映射-合并作業(yè)組合成單個(gè)映射-合并作業(yè)、以及在產(chǎn)品-消費(fèi)者作業(yè)對(duì)中至少一個(gè)作業(yè)是僅映射的,或者兩個(gè)作業(yè)共享同一映射關(guān)鍵字時(shí)組合所述產(chǎn)品-消費(fèi)者作業(yè)對(duì)。
      11.根據(jù)權(quán)利要求8所述的方法,其中,所述映射-合并方式包括使用如下形式的執(zhí)行方式:
      REPEAT V = e STEP body[limit η] 其中,V是需要重復(fù)的變量,e的類型是某一類型T的集合{T},body的類型是{(T,布爾型)},n為自然數(shù); 并且其中,所述REPEAT語(yǔ)句表示首先將V綁定到e的值,然后重復(fù)計(jì)算body,并且從之前的重復(fù)計(jì)算中將新值賦予V,如果重復(fù)的次數(shù)變?yōu)棣?、或者?dāng)所有由body返回的布爾型都為假時(shí),則停止所述執(zhí)行。
      12.一種搜索數(shù)據(jù)庫(kù)的裝置,包括: 分組裝置,被配置為基于搜索條件中設(shè)定的數(shù)據(jù)條目之間的連接條件,分組所述數(shù)據(jù)條目;以及 執(zhí)行裝置,被配置為基于所述數(shù)據(jù)條目的所述分組執(zhí)行所述搜索。
      13.根據(jù)權(quán)利要求12所述的裝置,其中,所述分組裝置進(jìn)一步包括通過(guò)以下裝置中的至少一個(gè): 模式去除裝置,被配置為從所述搜索條件中去除模式; 查詢簡(jiǎn)化裝置,被配置為重寫規(guī)則;以及 嵌套去除裝置,被配置為去除嵌套。
      14.根據(jù)權(quán)利要求12所述的裝置,其中,所述分組裝置還基于所述搜索條件中設(shè)定的所述數(shù)據(jù)條目的值之間的依賴關(guān)系進(jìn)行所述分組。
      15.根據(jù)權(quán)利要求12-14中任一所述的裝置,其中,所述搜索條件包括SQL查詢語(yǔ)句。
      16.根據(jù)權(quán)利要求15所述的裝置,其中,所述數(shù)據(jù)庫(kù)中的數(shù)據(jù)項(xiàng)的類型包括以下中的一個(gè): 記錄類型<Al:tl,...,An:tn>、序列類型[t]、集合類型{t}、以及映射類型{(tl,t2)}; 其中,η是自然數(shù),tl,...,tn是遞歸定義類型,Al,...,An是組件名,并且映射類型{(tl, t2)}將類型tl的關(guān)鍵字綁定到類型t2。
      17.根據(jù)權(quán)利要求16所述的裝置,其中,所述SQL查詢語(yǔ)句包括如下形式:
      SELECT[DISTINCT] es
      FROM pfl in efl,..., pfn in efn
      [WHERE ew]
      [GROUP BY pg:eg [HAVING eh]]
      [ORDER BY ej 其中,[]中的語(yǔ)句為可選語(yǔ)句;并且其中,efl,..., efn, es、ew、eg、和e。是任意表達(dá)式; FROM子句中的pfl,...,Pfn中的每個(gè)是模式,efl,...efn中的每個(gè)是返回序列、集合或者關(guān)鍵字-值配對(duì)映射的表達(dá)式,“P in e”形式表示模式P匹配e中的每個(gè)元素,并將其模式變量綁定到元素中的對(duì)應(yīng)值; GROUP BY子句中的pg: %形式表示將查詢結(jié)果劃分成組,從而每個(gè)組內(nèi)的成員具有相同值eg,模式pg綁定到跨每個(gè)組共同的GROUP BY值。
      18.根據(jù)權(quán)利要求17所述的裝置,其中,所述執(zhí)行裝置進(jìn)一步包括以下裝置中的一個(gè)或多個(gè): 新變量設(shè)置裝置,被配置為設(shè)置新的查詢變量以關(guān)聯(lián)到所述查詢語(yǔ)句中的每個(gè)SELECT表達(dá)式; 去除裝置,被配置為去除所述SQL查詢語(yǔ)句中的所有連接和過(guò)濾謂詞;以及 替代裝置,被配置為用單個(gè)綁定來(lái)替代每個(gè)SELECT表達(dá)式中的FROM部分,所述單個(gè)綁定使用元組模式來(lái)綁定直接嵌套的SELECT表達(dá)式的查詢變量和FROM部分的變量。
      19.根據(jù)權(quán)利要求12-14中任一所述的裝置,其中,所述執(zhí)行裝置基于映射-合并方式并行進(jìn)行所述搜索。
      20.根據(jù)權(quán)利要求19所述的裝置,還包括: 評(píng)估-選擇裝置,被配置 為在針對(duì)所述搜索的所述映射-合并的方案多于一種時(shí),評(píng)估所述映射-合并方式中每種所述映射-合并方式的開銷,并且選擇開銷最小的映射-合并方式作為實(shí)際搜索方式。
      21.根據(jù)權(quán)利要求19所述的裝置,其中,所述執(zhí)行裝置進(jìn)一步包括以下裝置中的一個(gè)或多個(gè): 作業(yè)壓縮裝置,被配置為減少由映射-合并作業(yè)讀取輸入數(shù)據(jù)和寫入輸出數(shù)據(jù)的I/O開銷; 水平合并裝置,被配置為將彼此獨(dú)立的多個(gè)映射-合并作業(yè)組合成單個(gè)映射-合并作業(yè);以及 垂直合并裝置,被配置為在產(chǎn)品-消費(fèi)者作業(yè)對(duì)中至少一個(gè)作業(yè)是僅映射的,或者兩個(gè)作業(yè)共享同一映射關(guān)鍵字時(shí)組合所述產(chǎn)品-消費(fèi)者作業(yè)對(duì)。
      22.根據(jù)權(quán)利要求19所述的裝置,其中,所述映射-合并方式包括使用如下形式的執(zhí)行方式:
      REPEAT V = e STEP body[limit η] 其中,V是需要重復(fù)的變量,e的類型是某一類型T的集合{T},body的類型是{(T,布爾型)},n為自然數(shù); 并且其中,所述REPEAT語(yǔ)句表示首先將V綁定到e的值,然后重復(fù)計(jì)算body,并且從之前的重復(fù)計(jì)算中將新值賦予V,如果重復(fù)的次數(shù)變?yōu)棣恰⒒蛘弋?dāng)所有由body返回的布爾型都為假時(shí),則停止所述執(zhí)行。
      【文檔編號(hào)】G06F17/30GK104050202SQ201310095688
      【公開日】2014年9月17日 申請(qǐng)日期:2013年3月15日 優(yōu)先權(quán)日:2013年3月15日
      【發(fā)明者】曹逾, 周寶曜, 陳齊彥, 陳波, 孫宇熙 申請(qǐng)人:伊姆西公司
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1