過濾/投影操作的硬件實現(xiàn)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本公開內(nèi)容一般涉及用于執(zhí)行數(shù)據(jù)庫操作的技術(shù),并且更具體地,涉及用于執(zhí)行 過濾和投影操作的技術(shù)。
【背景技術(shù)】
[0002] 在本節(jié)中描述的方法是可以實行的方法,但不一定是先前已被構(gòu)想或?qū)嵭械姆?法。因此,除非另有指示,否則不應(yīng)當(dāng)假設(shè)本節(jié)中描述的任何方法僅僅因為它們被包括在本 節(jié)中就算作現(xiàn)有技術(shù)。
[0003] 數(shù)據(jù)庫包括存儲在諸如硬盤組的一個或多個存儲設(shè)備上的數(shù)據(jù)和元數(shù)據(jù)。根據(jù)實 現(xiàn)方式,數(shù)據(jù)庫中的數(shù)據(jù)可以按照各種數(shù)據(jù)模型進行邏輯上的組織。例如,關(guān)系數(shù)據(jù)庫系統(tǒng) 通常將數(shù)據(jù)存儲在表的集合中,其中每張表被組織成一組行和列。在大多數(shù)情況下,每一行 代表不同的對象,并且每一列代表不同的屬性。但是,其它數(shù)據(jù)模型也可用來組織數(shù)據(jù)。
[0004] 為了訪問和操縱數(shù)據(jù)庫中的數(shù)據(jù),數(shù)據(jù)庫管理系統(tǒng)(DBMS) -般被配置為接收和 處理各種數(shù)據(jù)庫命令,這些命令通常被稱為查詢。在許多實現(xiàn)方式中,DBMS支持遵循數(shù)據(jù) 操縱語言(DML)的查詢,諸如結(jié)構(gòu)化查詢語言(SQL)。當(dāng)DBMS接收到查詢時,DBMS執(zhí)行由 該查詢指定的一個或多個數(shù)據(jù)庫操作并且可以輸出查詢結(jié)果。示例數(shù)據(jù)庫操作包括過濾、 投影、聚合和分組操作,這些將在以下進一步詳細(xì)描述。
[0005] 過濾和投影操作
[0006] 過濾和投影操作是從特定行的特定列輸出值的數(shù)據(jù)庫操作,其中行是基于一些被 稱為謂詞的準(zhǔn)則進行過濾的。在SQL中,投影和過濾操作使用SELECT和WHERE語法。具體 而言,SELECT語句指示什么數(shù)據(jù)被投影(即,從哪些列中檢索輸出值)并且WHERE子句包 括謂詞來過濾輸出(即,指示從哪些行中檢索輸出值)。用于WHERE子句的運算符的例子包 括但不限于以下表1中示出的運算符。
[0007]
【主權(quán)項】
1. 一種方法包括: 用謂詞編程過濾單元,所述謂詞指定用于過濾針對表的查詢的結(jié)果的準(zhǔn)則; 其中所述謂詞為所述表的特定列指定條件; 通過將來自所述特定列的值加載到輸入高速緩存并且使得過濾單元將所述謂詞應(yīng)用 到所述值來生成謂詞結(jié)果; 其中所述謂詞結(jié)果識別所述表中在所述特定列中具有滿足由所述謂詞指定的條件的 值的行; 至少部分地基于所述謂詞結(jié)果來選擇作為所述查詢的結(jié)果而返回的行; 返回所選擇的行作為所述查詢的結(jié)果; 其中所述方法由一個或多個計算設(shè)備執(zhí)行。
2. 如權(quán)利要求1所述的方法,其中所述謂詞結(jié)果是位向量并且所述位向量的每一位都 對應(yīng)于特定行并且識別所述特定行是否滿足由第一謂詞指定的條件。
3. 如權(quán)利要求1所述的方法,其中: 所述謂詞是與所述查詢相關(guān)聯(lián)的謂詞集合中的第一謂詞; 所述謂詞結(jié)果是第一謂詞結(jié)果; 所述方法還包括: 用所述謂詞集合中的第二謂詞編程過濾單元,第二謂詞指定用于過濾所述查詢的結(jié)果 的第二準(zhǔn)則; 其中第二謂詞為所述表的第二列指定第二條件; 通過將來自第二列的值加載到輸入高速緩存并使得過濾單元將第二謂詞應(yīng)用到所述 值來生成第二謂詞結(jié)果; 其中第二謂詞結(jié)果識別所述表中在第二列中具有滿足由第二謂詞指定的第二條件的 值的行; 其中至少部分地基于所述謂詞結(jié)果來選擇作為結(jié)果而返回的行包括: 合并第一謂詞結(jié)果和第二謂詞結(jié)果W生成合并的結(jié)果; 利用所述合并的結(jié)果來識別同時滿足第一謂詞和第二謂詞的行; 選擇由作為同時滿足第一謂詞和第二謂詞的所述合并的結(jié)果識別的行。
4. 如權(quán)利要求1所述的方法,還包括: 對于所述謂詞集合中的每個謂詞: 用所述謂詞集合中的所述每個謂詞編程過濾單元,其中所述每個謂詞指定用于過濾所 述查詢的結(jié)果的特定準(zhǔn)則; 通過將來自列的至少一部分的值加載到過濾單元并且使得過濾單元將所述每個謂詞 應(yīng)用到所述值來生成謂詞結(jié)果; 其中選擇作為結(jié)果而返回的行包括: 合并每個謂詞結(jié)果W生成最終結(jié)果,該最終結(jié)果識別滿足由所述謂詞集合指定的所有 準(zhǔn)則的行; 選擇由作為滿足所述謂詞集合指定的準(zhǔn)則的所述最終結(jié)果識別的行。
5. 如權(quán)利要求4所述的方法, 其中為所述每個謂詞生成的謂詞結(jié)果被用來確定給過濾單元提供哪些行值來用于進 行下一謂詞的評估; 其中所述謂詞集合W順序次序進行評估; 其中所述順序次序基于謂詞將過濾掉大量行的可能性; 其中較高可能過濾掉大量行的謂詞在較小可能過濾掉大量行的謂詞之前進行評估。
6. 如權(quán)利要求4所述的方法,其中選擇行作為結(jié)果還包括: 將最終結(jié)果轉(zhuǎn)換為存儲器地址集合; 其中存儲器地址集合中的每個存儲器地址都識別滿足由所述謂詞集合指定的準(zhǔn)則的 行的存儲器位置。
7. 如權(quán)利要求1所述的方法,其中使過濾單元將所述謂詞應(yīng)用到所述值包括: 如果所述特定列的對應(yīng)行的值滿足條件,則為該對應(yīng)行生成第一位值; 如果所述對應(yīng)行的值不滿足條件,則為該對應(yīng)行生成不同于第一位值的第二位值。
8. 如權(quán)利要求1所述的方法,其中通過將來自所述特定列的值加載到輸入高速緩存并 使得過濾單元將所述謂詞應(yīng)用到所述值來生成謂詞結(jié)果包括: 加載在存儲器的第一塊中存儲的來自所述特定列的第一組值; 使過濾單元將所述謂詞應(yīng)用到第一組值W生成第一位向量,該第一位向量識別所述表 中具有在存儲器的第一塊內(nèi)存儲的滿足由所述謂詞指定的條件的值的行; 加載在存儲器的第二塊中存儲的來自所述特定列的第二組值; 使過濾單元將所述謂詞應(yīng)用到第二組值W生成第二位向量,該第二位向量識別所述表 中具有在存儲器的第二塊內(nèi)存儲的滿足由所述謂詞指定的條件的值的行。
9. 如權(quán)利要求1所述的方法,其中使過濾單元將所述謂詞應(yīng)用到所述值包括使過濾單 元并行地將所述謂詞應(yīng)用到來自所述特定列的多個值。
10. -種或多種存儲指令的非瞬時計算機可讀介質(zhì),其中當(dāng)指令被一個或多個處理器 執(zhí)行時,使得一個或多個計算設(shè)備執(zhí)行W下操作,包括: 用謂詞編程過濾單元,該謂詞指定用于過濾針對表的查詢的結(jié)果的準(zhǔn)則; 其中所述謂詞為所述表的特定列指定條件; 通過將來自所述特定列的值加載到輸入高速緩存并且使得過濾單元將所述謂詞應(yīng)用 到所述值來生成謂詞結(jié)果; 其中謂詞結(jié)果識別所述表中在所述特定列中具有滿足由所述謂詞指定的條件的值的 行; 至少部分地基于謂詞結(jié)果來選擇作為所述查詢的結(jié)果而返回的