在 DSS 工作流程中,SQL 管道是一個(gè)混合多個(gè)后續(xù)配方(每個(gè)配方都使用相同 SQL 引擎)的過程。然后,可以執(zhí)行包含這些集成配方(可能是可視配方和“SQL 查詢”配方)的單個(gè)作業(yè)活動(dòng)。
通常,SQL 查詢會(huì)轉(zhuǎn)換為關(guān)系代數(shù)中的表達(dá)式,即一系列關(guān)系運(yùn)算。如果我們一次只執(zhí)行一項(xiàng)操作,則會(huì)產(chǎn)生太多成本,因?yàn)槲覀冃枰诠獗P上創(chuàng)建臨時(shí)文件來存儲(chǔ)這些臨時(shí)操作的結(jié)果。必須創(chuàng)建大型臨時(shí)文件并將其存儲(chǔ)在光盤上,但這需要時(shí)間并且通常不需要,因?yàn)橐韵逻^程將立即使用這些文件作為輸入。通常的做法是生成與查詢中特定操作組合的算法相對應(yīng)的查詢執(zhí)行代碼,以減少臨時(shí)文件的數(shù)量。
示例
例如,一種具有兩個(gè)輸入文件和一個(gè)輸出文件的方法可以對輸入文件執(zhí)行 JOIN 和兩個(gè) SELECT 操作,并對結(jié)果文件執(zhí)行最終的 PROJECT 操作,而不是單獨(dú)實(shí)現(xiàn)這些操作中的每一個(gè)。我們不創(chuàng)建四個(gè)臨時(shí)文件,而是應(yīng)用該方法并僅獲得一個(gè)結(jié)果文件。流水線或基于流的處理是用于此目的的術(shù)語。
結(jié)論
為了執(zhí)行大量操作,通常的做法是動(dòng)態(tài)生成查詢執(zhí)行代碼。查詢由創(chuàng)建的代碼生成,該代碼包含與不同進(jìn)程相對應(yīng)的眾多算法。執(zhí)行操作后,將生成結(jié)果元組并將其用作其他操作的輸入。例如,如果對基本關(guān)系的兩個(gè)選擇操作后跟一個(gè)聯(lián)接操作,則每個(gè) SELECT 操作創(chuàng)建的元組將被饋送到流或管道中并用作聯(lián)接過程的輸入。
以上就是使用管道組合操作的詳細(xì)內(nèi)容,更多請關(guān)注www.92cms.cn其它相關(guān)文章!