旁路信息傳遞的制作方法【專利摘要】用于使用旁路信息傳遞進(jìn)行查詢優(yōu)化的方法、系統(tǒng)和程序產(chǎn)品。在一個(gè)實(shí)現(xiàn)中,識(shí)別查詢中的連接語(yǔ)句,該連接語(yǔ)句指定要與內(nèi)表連接的具有元組的外表,外表具有一個(gè)或多個(gè)屬性,外表的每個(gè)屬性具有存儲(chǔ)在屬性文件中的值,該屬性文件不同于存儲(chǔ)其它屬性的值的屬性文件?;谙騼?nèi)表應(yīng)用的一個(gè)或多個(gè)謂詞,創(chuàng)建用于查詢的計(jì)劃,該計(jì)劃在執(zhí)行時(shí)引起外表的元組的子集的選擇來(lái)代替外表充當(dāng)向連接語(yǔ)句的輸入?!緦@f(shuō)明】旁路信息傳遞【
背景技術(shù):
】[0001]本公開涉及數(shù)字?jǐn)?shù)據(jù)處理,具體涉及使用旁路信息傳遞的數(shù)據(jù)庫(kù)查詢優(yōu)化。[0002]結(jié)構(gòu)化查詢語(yǔ)言(SQL)是以用于對(duì)關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)中的數(shù)據(jù)進(jìn)行查詢和管理的關(guān)系代數(shù)為基礎(chǔ)的計(jì)算機(jī)語(yǔ)言。關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS)是基于關(guān)系模型的數(shù)據(jù)庫(kù)系統(tǒng),其中將數(shù)據(jù)組織成表并且保持表間的關(guān)系。能夠壓縮RDBMS中的數(shù)據(jù),以縮減其存儲(chǔ)空間。旁路信息傳遞(SIP)是一種技術(shù),其用于通過(guò)在分析時(shí)盡可能早地過(guò)濾掉不需要的數(shù)據(jù)來(lái)提高早物化的SQL連接語(yǔ)句的性能?!?br/>發(fā)明內(nèi)容】[0003]一般來(lái)說(shuō),本說(shuō)明書中描述的主題的一個(gè)方面能夠體現(xiàn)在下面的方法中,該方法包括如下動(dòng)作:識(shí)別查詢中的連接語(yǔ)句,所述連接語(yǔ)句指定要與內(nèi)表連接的具有元組的外表,所述外表具有一個(gè)或多個(gè)屬性,所述外表的屬性中每個(gè)屬性具有存儲(chǔ)在屬性文件中的值,該屬性文件不同于存儲(chǔ)其它屬性的值的屬性文件;以及在用于所述查詢的計(jì)劃中包括過(guò)濾器,所述過(guò)濾器在運(yùn)行時(shí)引起所述外表的元組的合適子集的選擇來(lái)代替所述外表充當(dāng)向所述連接語(yǔ)句的輸入,其中所述元組的選擇包括讀取用于所述屬性之一的屬性文件的多個(gè)部分而不讀取該屬性文件的其它部分并且識(shí)別所讀取的部分中符合向所述內(nèi)表應(yīng)用的一個(gè)或多個(gè)謂詞的屬性值。該方面的其它實(shí)施例包括相應(yīng)系統(tǒng)、裝置和計(jì)算機(jī)程序。[0004]這些和其它方面能夠可選地包括下列特征中的一個(gè)或多個(gè)特征。資源能夠是視頻。第一部分能夠包括代表重復(fù)的屬性值的第一屬性值。所述第一屬性值符合所述謂詞中一個(gè)或多個(gè)謂詞的確定滿足相同的屬性值。所述第一屬性值包括行程長(zhǎng)度編碼的屬性值。所述元組的選擇使用布隆過(guò)濾器。由所述連接語(yǔ)句指定所述謂詞。所述連接語(yǔ)句能夠包括向所述外表或所述內(nèi)表應(yīng)用的一個(gè)或多個(gè)附加謂詞。所述連接語(yǔ)句能夠包括內(nèi)連接或右外連接。其中,所述元組的選擇使用哈希表或布隆過(guò)濾器。所述內(nèi)表具有一個(gè)或多個(gè)屬性,該一個(gè)或多個(gè)屬性中每個(gè)屬性具有存儲(chǔ)在屬性文件中的值,該屬性文件不同于存儲(chǔ)所述內(nèi)表的其它屬性的值的屬性文件。能夠以一種分類的順序存儲(chǔ)內(nèi)表屬性文件或外表屬性文件中的值。能夠跨節(jié)點(diǎn)分割內(nèi)表屬性文件或外表屬性文件。[0005]一般來(lái)說(shuō),本說(shuō)明書中描述主題的一個(gè)方面能夠體現(xiàn)在下面的方法中,該方法包括如下動(dòng)作:識(shí)別查詢中的合并連接語(yǔ)句,該合并連接語(yǔ)句指定要與具有元組的內(nèi)表連接的具有元組的外表,所述合并連接語(yǔ)句包括使所述外表的第一屬性等于所述內(nèi)表的第二屬性相等的同等謂詞,所述第一屬性和所述第二屬性具有以各自的分類順序存儲(chǔ)在各自的屬性文件中的值;在用于所述查詢的計(jì)劃中包括過(guò)濾器,所述過(guò)濾器在運(yùn)行時(shí)引起所述外表的元組的合適子集的選擇來(lái)代替所述外表充當(dāng)向所述合并連接語(yǔ)句的輸入,其中所述元組的選擇包括對(duì)用于符合向所述內(nèi)表應(yīng)用的一個(gè)或多個(gè)謂詞的多個(gè)內(nèi)表元組的第二屬性值創(chuàng)建哈希表、確定用于所述多個(gè)內(nèi)表元組的各個(gè)第二屬性值的最小值和最大值、以及從所述外表中具有與所確定的最小值相等的第一屬性值的元組開始選擇所述外表的具有小于所確定的最大值且在所述哈希表中的各自第一屬性值的一個(gè)或多個(gè)元組。該方面的其它實(shí)施例包括相應(yīng)的系統(tǒng)、裝置和計(jì)算機(jī)程序。[0006]這些和其它方面能夠可選地包括下列特征中的ー個(gè)或多個(gè)。資源能夠是視頻。使用各自的屬性文件的二分法捜索能夠定位所述外表中的開始元組。能夠選擇所述外表的、具有大于所確定的最大值的各自第一屬性值的ー個(gè)或多個(gè)元組。所述外表的被選擇的元組具有大于或等于所確定的最小值的各自第一屬性值??绻?jié)點(diǎn)分割各自的屬性文件。所述第一屬性值被行程長(zhǎng)度編碼。[0007]能夠?qū)崿F(xiàn)本說(shuō)明書中描述的主題的特定方面來(lái)實(shí)現(xiàn)下列優(yōu)點(diǎn)中的ー個(gè)或多個(gè)優(yōu)點(diǎn)。SIP與諸如列定向、壓縮和分類之類的物理存儲(chǔ)格式的特征相結(jié)合,以減少數(shù)據(jù)檢索(輸入/輸出和緩存)成本,同時(shí)還減少執(zhí)行數(shù)據(jù)分析所需的計(jì)算。列定向允許從存儲(chǔ)器中檢索表的屬性值的子集,而沒(méi)有檢索其它屬性的開銷。壓縮,如行程長(zhǎng)度編碼,允許用與處理單行所需的計(jì)算資源相當(dāng)?shù)挠?jì)算資源來(lái)處理大量行。將相關(guān)行一起設(shè)置在持久存儲(chǔ)器中以增加可壓縮性的分類,減少設(shè)置和處理行所需的計(jì)算資源。[0008]在附圖和下面的描述中闡述ー個(gè)或多個(gè)實(shí)施例的細(xì)節(jié)。其它特征、方面和優(yōu)點(diǎn)將從描述、附圖和權(quán)利要求變得顯而易見(jiàn)。【專利附圖】【附圖說(shuō)明】[0009]圖1是與示例SQL查詢的兩個(gè)表的內(nèi)連接相關(guān)的旁路信息傳遞的圖示。[0010]圖2圖示用于列容器的示例索引。[0011]圖3是示例關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)的示意圖。[0012]圖4是示例列存儲(chǔ)系統(tǒng)的示意圖。[0013]圖5A-圖5C圖示示例SIP過(guò)濾器部署。[0014]圖6A-圖6C圖示另一示例SIP過(guò)濾器部署。[0015]圖7A-7B圖示用于SIP過(guò)濾器的自適應(yīng)關(guān)閉特征。[0016]圖8圖示在合并連接背景下的SIP。[0017]圖9是圖示用于在列存儲(chǔ)數(shù)據(jù)庫(kù)中使用SIP的示例技術(shù)的流程圖。[0018]各圖中相同的附圖標(biāo)記和標(biāo)號(hào)表不相同兀件?!揪唧w實(shí)施方式】[0019]在各實(shí)現(xiàn)中,本說(shuō)明書中描述的技術(shù)能夠適用于具有內(nèi)連接或右外連接的查詢。內(nèi)連接的結(jié)果是以在查詢中指定的捜索條件為基礎(chǔ)的兩個(gè)表(外和內(nèi))的列值(或“屬性值”)的結(jié)合。搜索條件包括ー個(gè)或多個(gè)謂詞。謂詞是被評(píng)估為真、假或未知的布爾表達(dá)式。用內(nèi)表的每個(gè)元組測(cè)試外表的每行(或“元組”),以找出符合內(nèi)連接的捜索條件的所有元組對(duì)。例如,如果外表的元組Tl與內(nèi)表的元組T2符合搜索條件,則結(jié)合這兩個(gè)元組的屬性值,以形成在內(nèi)連接的輸出中包含的新元組T3。[0020]在右外連接的情況下,用外表的每個(gè)元組T2測(cè)試內(nèi)表的每個(gè)元組Tl,以找出符合捜索條件的所有元組對(duì)。將符合捜索條件的每個(gè)對(duì)的屬性值進(jìn)行結(jié)合,以形成在右外連接的輸出中包含的新元組T3。如果對(duì)于內(nèi)表的給定元組Tl來(lái)說(shuō),沒(méi)有符合捜索條件的外表的元組,則用Tl的屬性值和空值(NULL)代替外表的屬性值生成在右外連接的輸出中包含的新元組。[0021]圖1是與示例SQL查詢中的兩個(gè)表的內(nèi)連接相關(guān)的旁路信息傳遞的圖示:[0022]SELECT*FROMfactHASHJOINdim[0023]ONfact.a=dim.bANDdim.b=5;[0024]上面的哈希連接操作是用哈希表實(shí)現(xiàn)的內(nèi)連接操作。例如,能夠通過(guò)將哈希函數(shù)應(yīng)用于內(nèi)表的每個(gè)元組的連接屬性值來(lái)創(chuàng)建哈希表,該內(nèi)表是在連接語(yǔ)句的右手側(cè)指定的表。然后,能夠掃描外表(在連接語(yǔ)句的左手側(cè)指定),以通過(guò)在哈希表中進(jìn)行查找來(lái)找到符合搜索條件的相關(guān)元組。該示例中的搜索條件是“fact.a=dim.bANDdim.b=5”。[0025]在各實(shí)現(xiàn)中,能夠?qū)⒉樵儽硎緸橛邢驘o(wú)環(huán)圖(DAG)或者其它數(shù)據(jù)結(jié)構(gòu)。能夠根據(jù)DAG生成查詢計(jì)劃。查詢計(jì)劃是用于訪問(wèn)或修改RDBMS中的信息的一套有序步驟。作為說(shuō)明,DAG104是前面的SQL查詢的代表。DAG104的節(jié)點(diǎn)104a代表“哈希連接”操作以及搜索條件的連接兩個(gè)表(即外表fact100和內(nèi)表dim102)的那部分(例如,“fact.a=dim.a”)。外表100具有兩個(gè)屬性:“fk”100a和“a”100b。屬性IOOa是代表內(nèi)表102的主關(guān)鍵字102a的外關(guān)鍵字。將外表100表示為節(jié)點(diǎn)104b,內(nèi)表102由DAG104中的節(jié)點(diǎn)104c表示。節(jié)點(diǎn)104c指定dim表102的元組必須符合謂詞“dim.b=5”。在不用SIP的情況下,在生成的查詢計(jì)劃中向哈希連接操作104a的輸入會(huì)包括fact表100中的每個(gè)元組。[0026]DAG108代表前面的查詢并且利用SIP來(lái)減少向連接操作輸入的元組的數(shù)量。列存儲(chǔ)數(shù)據(jù)庫(kù)的優(yōu)點(diǎn)是晚物化的連接一即,對(duì)于表的傳遞搜索條件的那些元組取得后連接列的能力。(下面參照?qǐng)D2進(jìn)一步描述列存儲(chǔ))。一般而言,連接語(yǔ)句起過(guò)濾器的作用,以阻止將表的元組中的一些元組提供給連接操作。對(duì)于完全選擇性的連接而言,由晚物化(latematerialization)提供的節(jié)省能夠是可觀的。通過(guò)將信息從內(nèi)連接輸入(例如,節(jié)點(diǎn)108c)傳遞到外連接輸入(例如,節(jié)點(diǎn)108b)來(lái)早應(yīng)用過(guò)濾器,SIP在早物化連接中允許晚物化的優(yōu)點(diǎn),因此,能夠避免取得那些與其相關(guān)的搜索條件(例如,“fact.a=dim.a”)會(huì)評(píng)估為假的元組。[0027]作為說(shuō)明,除代表外表fact100的節(jié)點(diǎn)108b指定SIP過(guò)濾器之外,DAG108的節(jié)點(diǎn)與DAG104的節(jié)點(diǎn)相同:[0028]hash(fk)IN<hashtable106〉[0029]謂詞“IN”檢查在旁路信息傳遞信息數(shù)據(jù)結(jié)構(gòu)106(其在該情況下是哈希表)中是否出現(xiàn)特定值,如果出現(xiàn)則返回“真(TRUE)”,否則返回“假(FALSE)”。當(dāng)SIP過(guò)濾器作為查詢計(jì)劃的一部分執(zhí)行時(shí),SIP過(guò)濾器操作來(lái)從fact表100中過(guò)濾掉會(huì)不符合搜索條件(例如,“fact.a=dim.a”)的元組。在運(yùn)行用于DAG108的查詢計(jì)劃中的連接操作之前,對(duì)內(nèi)表102的、僅用于與屬性‘b’102b的等于值5的值相對(duì)應(yīng)的那些主關(guān)鍵字的主關(guān)鍵字102a值,生成旁路信息傳遞數(shù)據(jù)結(jié)構(gòu)106。用于節(jié)點(diǎn)108b的SIP過(guò)濾器,檢查對(duì)外表100中的每個(gè)元組而言該元組的外關(guān)鍵字值IOOa在旁路信息傳遞數(shù)據(jù)結(jié)構(gòu)106中。如果不在,則不提供該元組作為向由節(jié)點(diǎn)108代表的連接操作的輸入。能夠使用例如像布隆過(guò)濾器(bloomfilter)和魔集(magicset)這樣的其它類型的SIP過(guò)濾器來(lái)代替所說(shuō)明的哈希過(guò)濾器。[0030]在各實(shí)現(xiàn)中,將表的每個(gè)屬性的值存儲(chǔ)在與存儲(chǔ)該表的其它屬性的值的文件分離的電子文件中。也就是說(shuō),將表的每列存儲(chǔ)在RDBMS中分離的文件中。每個(gè)文件中的屬性值還以分類的順序物理地存儲(chǔ)。對(duì)每列具有分離的文件使得能以一種分類順序存儲(chǔ)表的列中的一些列,以不同的分類順序存儲(chǔ)表的列中的其它列。[0031]圖2圖示用于屬性容器的示例索引。容器存儲(chǔ)與投影的一套元組相關(guān)的ー個(gè)或多個(gè)屬性。索引是用于將來(lái)自不同屬性的數(shù)據(jù),即屬性值,聯(lián)系在一起的位置索引。作為說(shuō)明,位置索引200包括與ー個(gè)或多個(gè)塊相關(guān)的條目(entry)。在容器中,按照ー種分類順序在單獨(dú)文件中將每個(gè)屬性的數(shù)據(jù)存儲(chǔ)作為一系列塊,并且每個(gè)文件具有其自身的索引。在該示例中,將列I的數(shù)據(jù)存儲(chǔ)在塊202、206、208和210中,并且通過(guò)索引200索引這些塊。(存在與每個(gè)屬性值關(guān)聯(lián)的隱含位置號(hào))。索引存儲(chǔ)下面的范圍:與起始位置號(hào)相關(guān)的條目以及與包括用于該位置的數(shù)據(jù)的塊的文件偏移相關(guān)的條目。例如,索引條目200a表示與列I相關(guān)的位置0到999,999被存儲(chǔ)在塊202中,條目200b表示位置I,000,000到I,999,999被存儲(chǔ)在塊206中,等等。[0032]同樣地,屬性列2的數(shù)據(jù)被存儲(chǔ)在塊214、216、218和220中,并且通過(guò)索引212索引這些塊。索引條目212a表示與列2相關(guān)的位置0到9,999存儲(chǔ)在塊214中,條目212b表示位置10,000到19,999存儲(chǔ)在塊216中,等等。例如,為了訪問(wèn)列2的位置645,首先檢查索引212以確定包括該位置的塊的偏移。索引條目212a表示塊214包括位置645。然后對(duì)塊214進(jìn)行掃描,以定位該塊中的位置數(shù)據(jù)。注意,如果查詢僅需要列2的數(shù)據(jù),那么既不觸及列I的索引也不觸及列I的塊。通過(guò)依次查找每個(gè)屬性的位置索引,能夠檢索與表中的特定元組相關(guān)的所有屬性值一因此位置索引起到連接跨越多個(gè)文件的不同屬性的作用。其它塊索引是可能的。[0033]用于實(shí)現(xiàn)SIP的過(guò)濾器能夠通過(guò)使用索引范圍值來(lái)利用該存儲(chǔ)格式的優(yōu)勢(shì),以避免讀取外表的、不包括評(píng)估過(guò)濾器所需的屬性值的塊。例如,如果SIP過(guò)濾器需要檢查屬性文件中特定屬性值的存在,則SIP過(guò)濾器能夠使用索引范圍和屬性文件中的值的分類順序,以避免讀取屬性文件的、可能不包括給定屬性值的部分。作為說(shuō)明,能夠?qū)?jīng)分類的列使用二分法捜索,以避免取得不需要的塊。這能夠?qū)ε月沸畔鬟f數(shù)據(jù)結(jié)構(gòu)(例如,而不是圖1的屬于哈希表的結(jié)構(gòu)106)使用,該旁路信息傳遞數(shù)據(jù)結(jié)構(gòu)包括來(lái)自內(nèi)表的所有連接關(guān)鍵字的列表。用這樣的列表,能夠?qū)?jīng)分類的列使用二分法捜索算法一例如取得列fk的第ー值、中間值和最后值。假設(shè)第一值是0,中間值是500,并且最后一個(gè)值是1000。那么,由于“fact.fkIN(5)”在中間至最后的范圍之間永遠(yuǎn)不能夠是真(由于那里的“fk”值在500到1000之間),所以能夠跳過(guò)整個(gè)范圍。不再?gòu)脑摲秶〉酶鄩K。能夠?qū)Φ谝灰恢虚g的范圍(即,fk列的0-500)遞歸地重復(fù)該過(guò)程。[0034]在一些實(shí)現(xiàn)中,能夠使用行程長(zhǎng)度編碼(RLE)壓縮屬性文件中的屬性值,該行程長(zhǎng)度編碼用包括行程中的屬性值和發(fā)生次數(shù)的單個(gè)對(duì)來(lái)代替相同屬性值的序列(行程)。由于以分類的順序物理地存儲(chǔ)屬性文件,所以屬性值行程是更可能的。在一些實(shí)現(xiàn)中,SIP過(guò)濾器能夠?qū)⒅貜?fù)屬性值的序列視作由RLE對(duì)表示,好像該重復(fù)屬性值的序列是單ー屬性值。這能減少SIP過(guò)濾器處理屬性值所需的時(shí)間量。[0035]圖3是示例RDMBS的示意圖。RDMBS包括可通過(guò)ー個(gè)或多個(gè)計(jì)算機(jī)網(wǎng)絡(luò)305訪問(wèn)的一個(gè)或多個(gè)數(shù)據(jù)庫(kù)服務(wù)器309(例如,數(shù)據(jù)處理裝置),該ー個(gè)或多個(gè)數(shù)據(jù)庫(kù)服務(wù)器309用于優(yōu)化數(shù)據(jù)庫(kù)查詢,產(chǎn)生查詢運(yùn)行計(jì)劃,運(yùn)行查詢計(jì)劃,歸檔數(shù)據(jù)庫(kù)事務(wù),以及在有數(shù)據(jù)庫(kù)毀壞或硬件故障時(shí)提供恢復(fù)過(guò)程來(lái)恢復(fù)數(shù)據(jù)庫(kù)中的數(shù)據(jù)。數(shù)據(jù)庫(kù)服務(wù)器309還包括實(shí)現(xiàn)下面描述的RDMBS的軟件應(yīng)用程序。與數(shù)據(jù)庫(kù)服務(wù)器309相關(guān)的其它功能是可能的。[0036]存儲(chǔ)節(jié)點(diǎn)301是起到用于在RDBMS中存儲(chǔ)的數(shù)據(jù)的存儲(chǔ)設(shè)備功能的數(shù)據(jù)處理裝置。對(duì)RDBMS能夠使用任何數(shù)量的存儲(chǔ)節(jié)點(diǎn)。每個(gè)存儲(chǔ)節(jié)點(diǎn)301訪問(wèn)本地?cái)?shù)據(jù)存儲(chǔ)設(shè)備或非本地?cái)?shù)據(jù)存儲(chǔ)設(shè)備303(例如,大容量存儲(chǔ)設(shè)備),以存儲(chǔ)和檢索數(shù)據(jù)。例如,能夠?qū)?shù)據(jù)庫(kù)表的數(shù)據(jù)分配給可通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)305訪問(wèn)的存儲(chǔ)節(jié)點(diǎn)301中的一個(gè)或多個(gè)存儲(chǔ)節(jié)點(diǎn)。在這樣的實(shí)現(xiàn)中,能夠?qū)Πㄓ蒘IP過(guò)濾器需要的屬性文件的每個(gè)節(jié)點(diǎn)并行地運(yùn)行SIP過(guò)濾器。例如,并且參考圖2,能夠?qū)⒘?的數(shù)據(jù)塊中的一些數(shù)據(jù)塊存儲(chǔ)在一個(gè)存儲(chǔ)節(jié)點(diǎn)上的屬性文件中,并且能夠?qū)⑵渌鼣?shù)據(jù)塊存儲(chǔ)在不同存儲(chǔ)節(jié)點(diǎn)上的屬性文件中。位置索引212能夠同樣地在這兩個(gè)存儲(chǔ)節(jié)點(diǎn)間分裂。[0037]在一些實(shí)現(xiàn)中,存儲(chǔ)節(jié)點(diǎn)用于存儲(chǔ)數(shù)據(jù)的冗余版本,使得只要例如不多于預(yù)定數(shù)量的存儲(chǔ)節(jié)點(diǎn)當(dāng)機(jī),數(shù)據(jù)就能夠被應(yīng)用服務(wù)器309恢復(fù)。[0038]通常,用戶與諸如聯(lián)接至存儲(chǔ)節(jié)點(diǎn)301或另一計(jì)算機(jī)的鍵盤和顯示器這樣的終端設(shè)備307交互,以向數(shù)據(jù)庫(kù)服務(wù)器309提出查詢。作為響應(yīng),數(shù)據(jù)庫(kù)服務(wù)器309優(yōu)化查詢,生成各個(gè)查詢運(yùn)行計(jì)劃,對(duì)存儲(chǔ)節(jié)點(diǎn)301實(shí)施運(yùn)行計(jì)劃,并且將結(jié)果提供給終端設(shè)備307。[0039]圖4是示例列存儲(chǔ)系統(tǒng)400的示意圖。數(shù)據(jù)庫(kù)軟件在被稱為節(jié)點(diǎn)(例如,402)的一個(gè)或多個(gè)數(shù)據(jù)處理裝置上運(yùn)行。作為說(shuō)明,數(shù)據(jù)處理裝置包括例如一個(gè)或多個(gè)個(gè)人計(jì)算機(jī)或工作站、機(jī)架上安裝的計(jì)算機(jī)或?qū)S糜?jì)算機(jī)。用于表的數(shù)據(jù)被物理地存儲(chǔ)在包括來(lái)自該表的列的子集的一個(gè)或多個(gè)投影中。投影是來(lái)自一個(gè)或多個(gè)表的按照相同分類順序分類的一組列。節(jié)點(diǎn)402能夠與用于存儲(chǔ)和檢索數(shù)據(jù)的一個(gè)或多個(gè)存儲(chǔ)設(shè)備(如磁盤驅(qū)動(dòng)器404和406、內(nèi)存和存儲(chǔ)還沒(méi)寫入磁盤的數(shù)據(jù)的寫優(yōu)存儲(chǔ)(WOS))通信。WOS410充當(dāng)緩存。在一些實(shí)現(xiàn)中,節(jié)點(diǎn)402包括用于每個(gè)投影的WOS410。[0040]將投影存儲(chǔ)在讀優(yōu)存儲(chǔ)(ROS)中的磁盤上。ROS包括一個(gè)或多個(gè)容器。定期地或者例如如果數(shù)據(jù)超過(guò)特定可配置的年齡或大小閾值時(shí),能夠?qū)?shù)據(jù)移出WOS410到一個(gè)或多個(gè)容器。容器以列的格式存儲(chǔ)與投影的一組行相關(guān)的一個(gè)或多個(gè)列(例如,404a-404c)。其它存儲(chǔ)格式是可能的。在列格式中,能夠與其它列的數(shù)據(jù)分離地從容器中檢索特定列的數(shù)據(jù)。在進(jìn)一步的實(shí)現(xiàn)中,經(jīng)驗(yàn)性能數(shù)據(jù)和關(guān)于磁盤的其它性能相關(guān)信息能夠用于智能地放置容器,以便實(shí)現(xiàn)更好的性能。作為說(shuō)明,具有慢訪問(wèn)時(shí)間和大量存儲(chǔ)空間的磁盤404容納來(lái)自容器404a-404c的信息,而具有較快吞吐速率的小磁盤406存儲(chǔ)容器406a_406b。[0041]系統(tǒng)400圖示對(duì)數(shù)據(jù)庫(kù)執(zhí)行的兩個(gè)常見(jiàn)操作:查詢(例如,SQL查詢)和數(shù)據(jù)加載。被稱為元組移動(dòng)器412的后臺(tái)過(guò)程負(fù)責(zé)將數(shù)據(jù)從WOS410轉(zhuǎn)移至容器(例如,404a-404c)并且負(fù)責(zé)合并ROS容器。虛線箭頭說(shuō)明在數(shù)據(jù)加載期間的處理和數(shù)據(jù)流的方向。將數(shù)據(jù)記錄434加載到WOS410中,最終,元組移動(dòng)器412將數(shù)據(jù)分類、壓縮和編碼到容器430中。在一些實(shí)現(xiàn)中,元組移動(dòng)器412還將選擇適當(dāng)?shù)拇疟P位置來(lái)用于存儲(chǔ)每個(gè)容器。[0042]實(shí)線箭頭說(shuō)明在查詢處理期間的查詢440的過(guò)程和數(shù)據(jù)流的方向。終端用戶或者運(yùn)行軟件程序向系統(tǒng)400提出查詢440。SQL解析器對(duì)查詢440進(jìn)行解析,查詢440被提供給查詢優(yōu)化器414,查詢優(yōu)化器414通過(guò)參考投影的目錄408為查詢選擇最好的投影424。[0043]將生成的查詢計(jì)劃426提供給運(yùn)行引擎416,該運(yùn)行引擎416與存儲(chǔ)訪問(wèn)層(SAL)418交互,以在將結(jié)果記錄422返回給終端用戶以前響應(yīng)于查詢440從WOS410或容器或WOS410和容器中檢索數(shù)據(jù)428,并且處理該數(shù)據(jù)。SAL418提供對(duì)WOS410和容器存儲(chǔ)的讀和寫訪問(wèn)。在一些實(shí)現(xiàn)中,運(yùn)行引擎416是被設(shè)計(jì)為處理列中的數(shù)據(jù)428而不是以逐行的方式處理數(shù)據(jù)428的列優(yōu)化引擎。在更進(jìn)一步的實(shí)現(xiàn)中,運(yùn)行引擎416能夠以數(shù)據(jù)的編碼形式處理數(shù)據(jù)428,而無(wú)需首先對(duì)數(shù)據(jù)進(jìn)行解碼。[0044]優(yōu)化器414將ー個(gè)或多個(gè)SIP過(guò)濾器添加至查詢440的DAG表示,該查詢440的DAG表示將被包括在要由運(yùn)行引擎416運(yùn)行的查詢計(jì)劃426中。在各實(shí)現(xiàn)中,優(yōu)化器414根據(jù)連接的類型,將零個(gè)或更多個(gè)SIP過(guò)濾器添加至DAG的連接語(yǔ)句。對(duì)于具有如下格式的內(nèi)連接或右外連接來(lái)說(shuō):[0045]OuterExprl=InnerExprlAND***OuterExprn=InnerExprn,[0046]創(chuàng)建n+1個(gè)SIP過(guò)濾器-為每ノ卜OuterExpr(I<=k〈=n)以及合集(OuterExprl,…OuterExprn)各創(chuàng)建一個(gè)。[0047]作為說(shuō)明,假設(shè)在兩個(gè)表“fact”和“dim”之間存在連接:[0048]“fact.al=dim.blANDfact.a2=dim.b2ANDfact.a3=dim.b3,,。[0049]那么,OuterExprl、0uterExpr2、0uterExpr3分別是al、a2、a3,并且InnerExprl、InnerExpr2、InnerExpr3分別是bl、b2、b3。優(yōu)化器414創(chuàng)建4個(gè)SIP過(guò)濾器-為al、a2和a3每個(gè)創(chuàng)建ー個(gè),并且為集合(al,a2,a3)創(chuàng)建ー個(gè)。這些SIP過(guò)濾器代表下列謂詞:[0050]fact,alIN(像圖1中的項(xiàng)106—樣的某結(jié)構(gòu)SI)[0051]fact.a2IN(像圖1中的項(xiàng)106—樣的某結(jié)構(gòu)S2)[0052]fact.a3IN(像圖1中的項(xiàng)106—樣的某結(jié)構(gòu)S3)[0053](fact,al,fact.a2,fact.a3)IN(像圖1中的項(xiàng)106一樣的某結(jié)構(gòu)S4)[0054]然后,將這些SIP過(guò)濾器添加到查詢的DAG表示的根并且在保持正確性的同時(shí)下推。(下面進(jìn)ー步描述保持正確性)。根據(jù)有多少內(nèi)存可用于連接操作符的運(yùn)行,在一些實(shí)現(xiàn)中將創(chuàng)建比上面描述的所有結(jié)構(gòu)S1-S4更少的結(jié)構(gòu)。例如,如果有足夠的存儲(chǔ)器使得“dim”表的整個(gè)哈希表裝在存儲(chǔ)器中,那么將僅創(chuàng)建S4。如果沒(méi)有足夠的存儲(chǔ)器用于在存儲(chǔ)器中容納S4,但是例如,列“dim.b2”的所有值裝在存儲(chǔ)器中(列表中或布隆過(guò)濾器中),那么對(duì)連接操作符僅需創(chuàng)建結(jié)構(gòu)S2。注意,對(duì)哈希連接來(lái)說(shuō),在取得外輸入的第一元組之前,處理全部?jī)?nèi)輸入。因此,到運(yùn)行引擎416準(zhǔn)備開始掃描“fact”表時(shí),其已建立結(jié)構(gòu)S1-S4之一。例如,假設(shè)創(chuàng)建結(jié)構(gòu)S2。那么,當(dāng)對(duì)“fact”表的掃描開始時(shí),其將應(yīng)用謂詞“fact.a2INS2”。這將以與圖1所示的方式(對(duì)結(jié)構(gòu)106中的謂詞“hash(fk)”)相似的方式起作用。[0055]一旦已經(jīng)為查詢創(chuàng)建SIP過(guò)濾器,就將它們添加到該查詢的DAG表示的根并在保持正確性的同時(shí)將它們?cè)贒AG中盡可能遠(yuǎn)地下推。作為說(shuō)明,考慮圖5A所示的DAG。該DAG包括兩個(gè)哈希連接操作符:502和504。連接操作符504是關(guān)于搜索條件“fact.fkl=diml.pk”的并且具有代表“fact”表掃描的外輸入508和代表“diml”表掃描的內(nèi)輸入510。連接操作符502是關(guān)于捜索條件“fact.fk2=dim2.pk”的并且具有外輸入,該外輸入是連接操作符504的輸出。向連接操作符502的內(nèi)輸入506代表表“dim2”的掃描。[0056]如圖5B中所示,優(yōu)化器414為每個(gè)連接操作符創(chuàng)建SIP過(guò)濾器。連接操作符502具有SIP過(guò)濾器512“fact.fk2INS2”,連接操作符504具有SIP過(guò)濾器514“fact,fklINSI”。SIP過(guò)濾器數(shù)據(jù)結(jié)構(gòu)SI和S2分別是用于表“diml”和“dim2”的哈希表。最初,將SIP過(guò)濾器512和SIP過(guò)濾器514添加到與它們對(duì)應(yīng)的每個(gè)連接操作符。然后,下推過(guò)程開始ー該過(guò)程根據(jù)下面表1中描述的規(guī)則,嘗試將SIP過(guò)濾器512和SIP過(guò)濾器514下推到每個(gè)各自的連接操作符的外輸入內(nèi)。[0057]【權(quán)利要求】1.一種由數(shù)據(jù)處理裝置實(shí)現(xiàn)的方法,該方法包括:識(shí)別查詢中的連接語(yǔ)句,所述連接語(yǔ)句指定要與內(nèi)表連接的具有元組的外表,所述外表具有ー個(gè)或多個(gè)屬性,所述外表的屬性中的每個(gè)屬性具有存儲(chǔ)在屬性文件中的值,該屬性文件不同于存儲(chǔ)其它屬性的值的屬性文件;和在用于所述查詢的計(jì)劃中包括過(guò)濾器,所述過(guò)濾器在運(yùn)行時(shí)引起所述外表的元組的合適子集的選擇來(lái)代替所述外表充當(dāng)向所述連接語(yǔ)句的輸入,其中所述元組的選擇包括:讀取用于所述屬性之一的屬性文件的多個(gè)部分而不讀取該屬性文件的其它部分并且識(shí)別所讀取的部分中符合向所述內(nèi)表應(yīng)用的一個(gè)或多個(gè)謂詞的屬性值。2.如權(quán)利要求1所述的方法,其中第一部分包括代表重復(fù)的屬性值的第一屬性值。3.如權(quán)利要求2所述的方法,其中所述第一屬性值符合所述謂詞中一個(gè)或多個(gè)謂詞的確定滿足相同屬性值。4.如權(quán)利要求2所述的方法,其中所述第一屬性值包括行程長(zhǎng)度編碼的屬性值。5.如權(quán)利要求4所述的方法,其中所述元組的選擇使用布隆過(guò)濾器。6.如權(quán)利要求1所述的方法,其中由所述連接語(yǔ)句指定所述謂詞。7.如權(quán)利要求1所述的方法,其中所述連接語(yǔ)句包括向所述外表或所述內(nèi)表應(yīng)用的一個(gè)或多個(gè)附加謂詞。8.如權(quán)利要求1所述的方法,其中所述連接語(yǔ)句包括內(nèi)連接或右外連接。9.如權(quán)利要求1所述的方法,其中所述元組的選擇使用哈希表或布隆過(guò)濾器。10.如權(quán)利要求1所述的方法,其中所述內(nèi)表具有ー個(gè)或多個(gè)屬性,該ー個(gè)或多個(gè)屬性中每個(gè)屬性具有存儲(chǔ)在屬性文件中的值,該屬性文件不同于存儲(chǔ)所述內(nèi)表的其它屬性的值的屬性文件。11.如權(quán)利要求10所述的方法,其中以分類的順序存儲(chǔ)內(nèi)表屬性文件中或外表屬性文件中的值。12.如權(quán)利要求10所述的方法,其中跨節(jié)點(diǎn)分割內(nèi)表屬性文件或外表屬性文件。13.—種系統(tǒng),包括:存儲(chǔ)系統(tǒng),具有存儲(chǔ)在該存儲(chǔ)系統(tǒng)上的指令;以及數(shù)據(jù)處理裝置,被規(guī)劃為運(yùn)行所述指令來(lái)執(zhí)行操作,所述操作包括:識(shí)別查詢中的連接語(yǔ)句,所述連接語(yǔ)句指定要與內(nèi)表連接的具有元組的外表,所述外表具有ー個(gè)或多個(gè)屬性,所述外表的屬性中的每個(gè)屬性具有存儲(chǔ)在屬性文件中的值,該屬性文件不同于存儲(chǔ)其它屬性的值的屬性文件;和在用于所述查詢的計(jì)劃中包括過(guò)濾器,所述過(guò)濾器在運(yùn)行時(shí)引起所述外表的元組的合適子集的選擇來(lái)代替所述外表充當(dāng)向所述連接語(yǔ)句的輸入,其中所述元組的選擇包括:讀取用于所述屬性之一的屬性文件的多個(gè)部分而不讀取該屬性文件的其它部分并且識(shí)別所讀取的部分中符合向所述內(nèi)表應(yīng)用的一個(gè)或多個(gè)謂詞的屬性值。14.如權(quán)利要求13所述的系統(tǒng),其中第一部分包括代表重復(fù)的屬性值的第一屬性值。15.如權(quán)利要求14所述的系統(tǒng),其中所述第一屬性值符合所述謂詞中一個(gè)或多個(gè)謂詞的確定滿足相同屬性值。16.如權(quán)利要求14所述的系統(tǒng),其中所述第一屬性值包括行程長(zhǎng)度編碼的屬性值。17.如權(quán)利要求16所述的系統(tǒng),其中所述元組的選擇使用布隆過(guò)濾器。18.如權(quán)利要求13所述的系統(tǒng),其中所述謂詞由所述連接語(yǔ)句指定。19.如權(quán)利要求13所述的系統(tǒng),其中所述連接語(yǔ)句包括向所述外表或所述內(nèi)表應(yīng)用的一個(gè)或多個(gè)附加謂詞。20.如權(quán)利要求13所述的系統(tǒng),其中所述連接語(yǔ)句包括內(nèi)連接或右外連接。21.如權(quán)利要求13所述的系統(tǒng),其中所述元組的選擇使用哈希表或布隆過(guò)濾器。22.如權(quán)利要求13所述的系統(tǒng),其中所述內(nèi)表具有一個(gè)或多個(gè)屬性,該一個(gè)或多個(gè)屬性中每個(gè)屬性具有存儲(chǔ)在屬性文件中的值,該屬性文件不同于存儲(chǔ)所述內(nèi)表的其它屬性的值的屬性文件。23.如權(quán)利要求13所述的系統(tǒng),其中內(nèi)表屬性文件中或外表屬性文件中的值是以分類的順序存儲(chǔ)的。24.如權(quán)利要求13所述的系統(tǒng),其中內(nèi)表屬性文件或外表屬性文件被跨節(jié)點(diǎn)分割。25.一種存儲(chǔ)系統(tǒng),具有存儲(chǔ)在該存儲(chǔ)系統(tǒng)上的指令,該指令在由數(shù)據(jù)處理裝置運(yùn)行時(shí)引起所述數(shù)據(jù)處理裝置來(lái)執(zhí)行操作,所述操作包括:識(shí)別查詢中的連接語(yǔ)句,所述連接語(yǔ)句指定要與內(nèi)表連接的具有元組的外表,所述外表具有一個(gè)或多個(gè)屬性,所述外表的屬性中的每個(gè)屬性具有存儲(chǔ)在屬性文件中的值,該屬性文件不同于存儲(chǔ)其它屬性的值的屬性文件;和在用于所述查詢的計(jì)劃中包括過(guò)濾器,所述過(guò)濾器在運(yùn)行時(shí)引起所述外表的元組的合適子集的選擇來(lái)代替所述外表充當(dāng)向所述連接語(yǔ)句的輸入,其中所述元組的選擇包括:讀取用于所述屬性之一的屬性文件的多個(gè)部分而不讀取該屬性文件的其它部分并且識(shí)別所讀取的部分中符合向所述內(nèi)表應(yīng)用的一個(gè)或多個(gè)謂詞的屬性值。26.一種由數(shù)據(jù)處理裝置實(shí)現(xiàn)的方法,該方法包括:識(shí)別查詢中的合并連接語(yǔ)句,所述合并連接語(yǔ)句指定要與具有元組的內(nèi)表連接的具有元組的外表,所述合并連接語(yǔ)句包括使所述外表的第一屬性等于所述內(nèi)表的第二屬性的同等謂詞,所述第一屬性和所述第二屬性具有以各自的分類順序存儲(chǔ)在各自的屬性文件中的值;在用于所述查詢的計(jì)劃中包括過(guò)濾器,所述過(guò)濾器在運(yùn)行時(shí)引起所述外表的元組的合適子集的選擇來(lái)代替所述外表充當(dāng)向所述合并連接語(yǔ)句的輸入,其中所述元組的選擇包括:對(duì)用于符合向所述內(nèi)表應(yīng)用的一個(gè)或多個(gè)謂詞的多個(gè)內(nèi)表元組的第二屬性值創(chuàng)建哈希表;確定用于所述多個(gè)內(nèi)表元組的各個(gè)第二屬性值的最小值和最大值;和從所述外表中具有與所確定的最小值相等的第一屬性值的元組開始,選擇所述外表的、具有小于所述確定的最大值并且在所述哈希表中的各自第一屬性值的一個(gè)或多個(gè)元組。27.如權(quán)利要求26所述的方法,其中使用所述各自的屬性文件的二分法查找定位所述外表中的開始元組。28.如權(quán)利要求26所述的方法,進(jìn)一步包括選擇所述外表的、具有大于所確定的最大值的各自第一屬性值的一個(gè)或多個(gè)元組。29.如權(quán)利要求26所述的方法,其中所述外表的所選擇的元組具有大于或等于所確定的最小值的各自第一屬性值。30.如權(quán)利要求26所述的方法,其中跨節(jié)點(diǎn)分割各自的屬性文件。31.如權(quán)利要求26所述的方法,其中所述第一屬性值被行程長(zhǎng)度編碼。32.—種系統(tǒng),包括:存儲(chǔ)系統(tǒng),具有存儲(chǔ)在該存儲(chǔ)系統(tǒng)上的指令;以及數(shù)據(jù)處理裝置,被規(guī)劃為運(yùn)行所述指令來(lái)執(zhí)行操作,所述操作包括:識(shí)別查詢中的合并連接語(yǔ)句,所述合并連接語(yǔ)句指定要與具有元組的內(nèi)表連接的具有元組的外表,所述合并連接語(yǔ)句包括使所述外表的第一屬性等于所述內(nèi)表的第二屬性的同等謂詞,所述第一屬性和所述第二屬性具有以各自的分類順序存儲(chǔ)在各自的屬性文件中的值;在用于所述查詢的計(jì)劃中包括過(guò)濾器,所述過(guò)濾器在運(yùn)行時(shí)引起所述外表的元組的合適子集的選擇來(lái)代替所述外表充當(dāng)向所述合并連接語(yǔ)句的輸入,其中所述元組的選擇包括:對(duì)用于符合向所述內(nèi)表應(yīng)用的一個(gè)或多個(gè)謂詞的多個(gè)內(nèi)表元組的第二屬性值創(chuàng)建哈希表;確定用于所述多個(gè)內(nèi)表元組的各個(gè)第二屬性值的最小值和最大值;和從所述外表中具有與所確定的最小值相等的第一屬性值的元組開始,選擇所述外表的、具有小于所述確定的最大值并且在所述哈希表中的各自第一屬性值的ー個(gè)或多個(gè)元組。33.如權(quán)利要求32所述的系統(tǒng),其中使用所述各自的屬性文件的二分法查找定位所述外表中的開始元組。34.如權(quán)利要求32所述的系統(tǒng),進(jìn)一歩包括選擇所述外表的、具有大于所確定的最大值的各自第一屬性值的ー個(gè)或多個(gè)元組。35.如權(quán)利要求32所述的系統(tǒng),其中所述外表的所選擇的元組具有大于或等于所確定的最小值的各自第一屬性值。36.如權(quán)利要求32所述的系統(tǒng),其中各自的屬性文件被跨節(jié)點(diǎn)分割。37.如權(quán)利要求32所述的系統(tǒng),其中所述第一屬性值被行程長(zhǎng)度編碼。38.ー種存儲(chǔ)系統(tǒng),具有存儲(chǔ)在該存儲(chǔ)系統(tǒng)上的指令,該指令在由數(shù)據(jù)處理裝置運(yùn)行時(shí)引起所述數(shù)據(jù)處理裝置執(zhí)行操作,所述操作包括:識(shí)別查詢中的合并連接語(yǔ)句,所述合并連接語(yǔ)句指定要與具有元組的內(nèi)表連接的具有元組的外表,所述合并連接語(yǔ)句包括使所述外表的第一屬性等于所述內(nèi)表的第二屬性的同等謂詞,所述第一屬性和所述第二屬性具有以各自的分類順序存儲(chǔ)在各自的屬性文件中的值;在用于所述查詢的計(jì)劃中包括過(guò)濾器,所述過(guò)濾器在運(yùn)行時(shí)引起所述外表的元組的合適子集的選擇來(lái)代替所述外表充當(dāng)向所述合并連接語(yǔ)句的輸入,其中所述元組的選擇包括:對(duì)用于符合向所述內(nèi)表應(yīng)用的一個(gè)或多個(gè)謂詞的多個(gè)內(nèi)表元組的第二屬性值創(chuàng)建哈希表;確定用于所述多個(gè)內(nèi)表元組的各個(gè)第二屬性值的最小值和最大值;和從所述外表中具有與所確定的最小值相等的第一屬性值的元組開始,選擇所述外表的、具有小于所述確定的最大值并且在所述哈希表中的各自第一屬性值的一個(gè)或多個(gè)元組?!ぁ疚臋n編號(hào)】G06F17/30GK103597472SQ201180071504【公開日】2014年2月19日申請(qǐng)日期:2011年7月29日優(yōu)先權(quán)日:2011年6月7日【發(fā)明者】丘克·比爾,拉克希米坎特·什里尼瓦斯,安德魯·拉姆申請(qǐng)人:惠普開發(fā)有限公司