一種數(shù)據(jù)查詢方法及數(shù)據(jù)查詢裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及數(shù)據(jù)查詢技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)查詢方法及數(shù)據(jù)查詢裝置。
【背景技術(shù)】
[0002] 為了便于用戶對數(shù)據(jù)進(jìn)行查詢,數(shù)據(jù)查詢系統(tǒng)應(yīng)運而生,不同的數(shù)據(jù)查詢系統(tǒng)一 般建立有不同的查詢機(jī)制,用戶可以根據(jù)需要查詢的數(shù)據(jù)類型和/或數(shù)據(jù)量等因素選擇合 適的數(shù)據(jù)查詢系統(tǒng)以滿足查詢需求。
[0003] 在目前的數(shù)據(jù)查詢系統(tǒng)中,整個查詢流程一般是服務(wù)器(例如電腦)的CPU (Central Processing Unit,中央處理器)通過調(diào)度軟件執(zhí)行完成,然而,隨著數(shù)據(jù)量的逐 漸增大,用戶對海量數(shù)據(jù)的查詢需求也越來越大,此時通過CHJ對于軟件的調(diào)度也就更加頻 繁,CPU的處理負(fù)荷也就越來越重。在CPU的時鐘頻率為定值的前提下,對于數(shù)據(jù)量越大的數(shù) 據(jù),例如對于TB(TeraByte,太字節(jié)或百萬兆字節(jié))級別或PB(PetaByte,拍字節(jié)或千萬億字 節(jié))級別的數(shù)據(jù)進(jìn)行查詢所花費的時間也會越來越長,由于CPU時鐘頻率的限制,將會導(dǎo)致 查詢效率相對降低,并且在數(shù)據(jù)查詢系統(tǒng)的查詢算法方面已經(jīng)過多年優(yōu)化,發(fā)展較為成熟, 優(yōu)化空間較小,所以較難滿足用戶對于查詢效率的需求。
[0004] 可見,目前數(shù)據(jù)查詢系統(tǒng)的查詢效率較低,較難滿足用戶對于海量數(shù)據(jù)的查詢需 求。
【發(fā)明內(nèi)容】
[0005] 本申請?zhí)峁┮环N數(shù)據(jù)查詢方法及數(shù)據(jù)查詢裝置,用于解決目前在進(jìn)行數(shù)據(jù)查詢時 的查詢效率較低的技術(shù)問題。
[0006] 第一方面,提供一種數(shù)據(jù)查詢方法,該方法可以應(yīng)用于數(shù)據(jù)查詢裝置(例如服務(wù) 器)。在該方法中,首先獲取用于指示查詢?nèi)蝿?wù)的查詢命令,再根據(jù)獲取到的查詢命令確定 執(zhí)行所述查詢?nèi)蝿?wù)所需要的操作算子,進(jìn)而可以從需要的操作算子中確定需要硬件處理器 件執(zhí)行的操作算子,并通過向硬件處理器件發(fā)送硬件執(zhí)行命令的方式,以指示硬件處理器 件執(zhí)行需要由硬件處理器件執(zhí)行的操作算子。在向硬件處理器件發(fā)送硬件執(zhí)行命令之后, 可以接收來自硬件處理器件執(zhí)行需要由硬件處理器件執(zhí)行的操作算子所得到的數(shù)據(jù)查詢 結(jié)果,并根據(jù)硬件處理器件執(zhí)行需要由硬件處理器件執(zhí)行的操作算子對應(yīng)的數(shù)據(jù)查詢結(jié) 果,獲得與查詢?nèi)蝿?wù)對應(yīng)的數(shù)據(jù)查詢結(jié)果。
[0007] 其中,操作算子(Operator)用于表明執(zhí)行查詢操作所需進(jìn)行的操作的類型,例如 Hive (-種數(shù)據(jù)系統(tǒng))系統(tǒng)中的Filter (過濾)操作算子或Select (投影)操作算子,等等。
[0008] 其中,硬件處理器件可以是用于邏輯運算的器件,也就是說,硬件處理器件可以是 指某些特定的硬件處理器件,例如硬件處理器件可以是FPGA(Field-Programmable Gate Array,現(xiàn)場可編程門陣列)、GPU (Graphic Processing Unit,圖像處理器)、DSP (Digital Signal Processor,數(shù)字信號處理器),等等。另外,硬件處理器件可以是數(shù)據(jù)查詢裝置中原 本設(shè)置的器件,或者也可以是通過例如PCIE(Peripheral Component Interconnect Express,外部設(shè)備互連總線)插槽新接入的器件,等等。
[0009]本申請中,在獲取到用于指示查詢?nèi)蝿?wù)的查詢命令之后,可以根據(jù)查詢命令確定 執(zhí)行查詢?nèi)蝿?wù)所需要的操作算子,進(jìn)而再從執(zhí)行查詢?nèi)蝿?wù)所需要的操作算子中確定需要硬 件處理器件執(zhí)行的操作算子,并將需要硬件處理器件執(zhí)行的操作算子通過硬件執(zhí)行命令的 方式指示硬件處理器件進(jìn)行執(zhí)行,也就是說,可以將原本全部由CPU調(diào)度軟件執(zhí)行的查詢操 作中的部分操作或全部操作發(fā)送給硬件處理器件執(zhí)行,再根據(jù)硬件處理器件需要硬件處理 器件執(zhí)行的操作算子獲得的數(shù)據(jù)查詢結(jié)果以獲得最終的數(shù)據(jù)查詢結(jié)果,即獲得與數(shù)據(jù)查詢 任務(wù)對應(yīng)的數(shù)據(jù)查詢結(jié)果。通過本申請的技術(shù)方案,可以利用特定硬件處理器件相對于調(diào) 度軟件執(zhí)行操作算子的運算速度更快的硬件特性,通過執(zhí)行查詢?nèi)蝿?wù)所需要的操作算子中 的部分操作算子或全部操作算子發(fā)送給特定硬件處理器件執(zhí)行,以提高數(shù)據(jù)查詢的效率。 [0010]同時,由于將部分操作操作算子或全部操作算子發(fā)送給了硬件處理器件執(zhí)行,自 然可以減少CPU對于軟件的調(diào)度次數(shù),從而可以降低CPU的工作負(fù)荷,這樣可以在一定程度 上降低對于CHJ的消耗,延長CPU的使用時間。
[0011] 結(jié)合第一方面,在第一方面的第一種可能的實現(xiàn)方式中,查詢?nèi)蝿?wù)包括至少一個 子任務(wù);從需要的操作算子中確定需要硬件處理器件執(zhí)行的操作算子,包括:確定至少一個 子任務(wù)中執(zhí)行時間大于第一閾值的子任務(wù);確定執(zhí)行時間大于第一閾值的子任務(wù)所需要的 操作算子為需要硬件處理器件執(zhí)行的操作算子。
[0012] 當(dāng)查詢?nèi)蝿?wù)只包含一個子任務(wù)時,即子任務(wù)即為查詢?nèi)蝿?wù)本身。
[0013] 本申請中,通過將多個子任務(wù)的執(zhí)行時間與第一閾值進(jìn)行比較的方式,可以確定 出操作相對比較耗時的一些子任務(wù),而操作比較耗時的子任務(wù)說明占用CHJ的資源越多,所 以可以將執(zhí)行這些子任務(wù)所需要的操作算子中的部分操作算子或全部操作算子發(fā)送給硬 件處理器件執(zhí)行,這樣可以在較大程度上縮短查詢?nèi)蝿?wù)的執(zhí)行總時間,達(dá)到提高查詢效率 的目的。
[0014] 結(jié)合第一方面的第一種可能的實現(xiàn)方式,在第一方面的第二種可能實現(xiàn)的方式 中,在執(zhí)行時間大于第一閾值的子任務(wù)所需要的操作算子為至少兩種操作算子時,確定執(zhí) 行時間大于第一閾值的子任務(wù)所需要的操作算子為需要硬件處理器件執(zhí)行的操作算子,包 括:確定至少兩種操作算子中操作耗時比值大于或等于第一比值的操作算子為需要硬件處 理器件執(zhí)行的操作算子,至少兩種操作算子中任一操作算子的操作耗時比值為執(zhí)行任一操 作算子所花費的時長與執(zhí)行至少兩種操作算子所花費的總時長的比值。
[0015] 結(jié)合第一方面,在第一方面的第三種可能的實現(xiàn)方式中,在需要的操作算子為至 少兩種操作算子時,從需要的操作算子中確定需要硬件處理器件執(zhí)行的操作算子,包括:確 定至少兩種操作算子中操作耗時比值大于等于第一比值的操作算子為需要硬件處理器件 執(zhí)行的操作算子,至少兩種操作算子中任一操作算子的操作耗時比值為執(zhí)行任一操作算子 所花費的時長與執(zhí)行至少兩種操作算子所花費的總時長的比值。
[0016] 結(jié)合第一方面,在第一方面的第四種可能的實現(xiàn)方式中,從需要的操作算子中確 定需要硬件處理器件執(zhí)行的操作算子,包括:從需要的操作算子中確定屬于預(yù)定的操作算 子集合的操作算子為需要硬件處理器件執(zhí)行的操作算子。
[0017] 本申請中,可以通過直接比對的方式從Μ種操作算子中確定出需要發(fā)送給硬件處 理器件的操作算子,這樣可以在提高查詢效率的前提下,盡量簡化在查詢過程中的計算,用 戶可以根據(jù)自己的實際需求對預(yù)定的操作算子集合進(jìn)行設(shè)置,可以盡量滿足用戶的差異化 要求。
[0018] 結(jié)合第一方面或第一方面的第一種至第四種可能的實現(xiàn)方式中的任意一種,在第 一方面的第五種可能的實現(xiàn)方式中,在需要硬件處理器件執(zhí)行的操作算子是需要的操作算 子中的一部分時,在根據(jù)所述數(shù)據(jù)查詢結(jié)果,獲得與查詢?nèi)蝿?wù)對應(yīng)的數(shù)據(jù)查詢結(jié)果之前,所 述方法還包括:執(zhí)行需要的操作算子中除需要硬件處理器件執(zhí)行的操作算子之外的其余操 作算子,從而獲得其余操作算子對應(yīng)的數(shù)據(jù)查詢結(jié)果;根據(jù)數(shù)據(jù)查詢結(jié)果,獲得與查詢?nèi)蝿?wù) 對應(yīng)的數(shù)據(jù)查詢結(jié)果,包括:根據(jù)其余操作算子對應(yīng)的數(shù)據(jù)查詢結(jié)果和硬件處理器件執(zhí)行 需要由硬件處理器件執(zhí)行的操作算子所指示的操作所得到的數(shù)據(jù)查詢結(jié)果,獲得與查詢?nèi)?務(wù)對應(yīng)的數(shù)據(jù)查詢結(jié)果。
[0019] 本申請中,在確定將需要硬件處理器件執(zhí)行的操作算子發(fā)送給硬件處理器件執(zhí)行 之后,數(shù)據(jù)查詢裝置就不會再執(zhí)行需要硬件處理器件執(zhí)行的操作算子了,而只執(zhí)行除需要 硬件處理器件執(zhí)行的操作算子之外的其余操作算子,這樣可以減少對需要硬件處理器件執(zhí) 行的操作算子的重復(fù)執(zhí)行,進(jìn)而可以避免查詢出錯,提高準(zhǔn)確性,同時還可以避免由于重復(fù) 操作而導(dǎo)致的更低的查詢效率。
[0020] 結(jié)合第一方面或第一方面的第一種至第五種可能的實現(xiàn)方式中的任意一種,在第 一方面的第六種可能的實現(xiàn)方式中,所述方法還包括:根據(jù)查詢命令,確定待查詢的數(shù)據(jù) 塊;從待查詢的數(shù)據(jù)塊中確定有效的數(shù)據(jù)塊;向硬件處理器件發(fā)送有效的數(shù)據(jù)塊,或者,向 硬件處理器件發(fā)送數(shù)據(jù)塊獲取指令。其中,所述待查詢的數(shù)據(jù)塊是執(zhí)行所述需要硬件處理 器件執(zhí)行的操作算子時所需查詢的數(shù)據(jù)區(qū)域;有效的數(shù)據(jù)塊的地址范圍與由查詢命令對應(yīng) 的需要查詢的地址范圍存在交集。
[0021] 本申請中,可以先對待查詢的數(shù)據(jù)塊進(jìn)行初過濾以獲得有效的數(shù)據(jù)塊,再指示硬 件處理器件獲得篩選過的有效的數(shù)據(jù)塊進(jìn)行處理,這樣可以盡量避免將無效的數(shù)據(jù)塊發(fā)送 給硬件處理器件,減少無效數(shù)據(jù)的傳輸。
[0022] 結(jié)合第一方面的第六種可能的實現(xiàn)方式,在第一方面的第七種可能的實現(xiàn)方式 中,從待查詢的數(shù)據(jù)塊中確定有效的數(shù)據(jù)塊,包括:
[0023] 確定Stripe數(shù)據(jù)塊對應(yīng)在索引數(shù)據(jù)中的最小索引值和最大索引值;
[0024] 若最小索引值和最大索引值所代表的地址范圍與需要查詢的地址范圍存在交集 時,將Stripe數(shù)據(jù)塊確定為有效的數(shù)據(jù)塊。
[0025] 本申請中,主要說明針對0RC格式的待查詢的數(shù)據(jù)塊進(jìn)行有效的數(shù)據(jù)塊的具體篩 選方式,只要數(shù)據(jù)存儲格式是0RC格式的待查詢的數(shù)據(jù)塊,均可以采用本申請中的篩選方 式,并且通過最小索引值和最大索引值可以對Stripe數(shù)據(jù)塊是否是有效的數(shù)據(jù)塊進(jìn)行快速 判斷,以對待查詢的數(shù)據(jù)塊進(jìn)行快速篩選,在避免無效數(shù)據(jù)傳輸?shù)那疤嵯?,可以提高篩選的 速度,進(jìn)一步地提高查詢效率。
[0026] 結(jié)合第一方面或第一方面的第一種至第五種可能的實現(xiàn)方式,在第一方面的第八 種可能的實現(xiàn)方式中,硬件處理器件包括FPGA,所述方法還包括:
[0027] 向FPGA發(fā)送真值表執(zhí)行指令,真值表執(zhí)行指令用于指示FPGA根據(jù)真值表執(zhí)行需要 硬件處理器件執(zhí)行的操作算子所指示的操作,真值表是根據(jù)查詢命令生成的。
[0028] 本申請中,為了保證FPGA對于邏輯表達(dá)式也能夠快速地進(jìn)行處理,可以讓FPGA通 過查找真值表的方式執(zhí)行需要硬件處理器件執(zhí)行的操作算子所指示的操作,進(jìn)而在待查詢 的數(shù)據(jù)塊中進(jìn)行查詢,以盡量保證較高的查詢效率。
[0029] 結(jié)合第一方面的第八種可能的實現(xiàn)方式,在第一方面的第九種可能的實現(xiàn)方式 中,真值表包括:2Q行二進(jìn)制數(shù),Q為根據(jù)查詢命令所確定的查詢條件的數(shù)量,Q為正整數(shù);
[0030] 其中,真值表中的第N行中存儲的二進(jìn)制數(shù)的數(shù)值為N-1的二進(jìn)制形式,真值表中 的二進(jìn)制數(shù)按數(shù)值預(yù)定順序存儲在真值表中,N為小于或等于2 Q的正整數(shù);和/或,
[0031] 真值表中的第N行中存儲的二進(jìn)制數(shù)的數(shù)值為通過將N-ι的二進(jìn)制形式按照從高 位到低位的順序代入查詢命令對應(yīng)的邏輯表達(dá)式中進(jìn)行邏輯運算獲得的邏輯計算結(jié)果。
[0032] 本申請中,可以確定多種形式的真值表,進(jìn)而方便FPGA可以通過不同形式的真值 表采用不同的查詢方式,可以為FPGA提供較多查詢方式進(jìn)行選擇。
[0033] 結(jié)合第一方面或第一方面的第一種至第五種可能的實現(xiàn)方式中的任意一種,在第 一方面的第十種可能的實現(xiàn)方式中,本發(fā)明實施例中的數(shù)據(jù)查詢方法還包括:指示硬件處 理器件獲得待查詢的數(shù)據(jù)塊。其中,待查詢的數(shù)據(jù)塊是執(zhí)行需要硬件處理器件執(zhí)行的操作 算子時所需查詢的數(shù)據(jù),也就是說,需要確定硬件處理器件究竟是對哪些數(shù)據(jù)塊執(zhí)行查詢 操作,以使硬件處理器件能夠真正完成對數(shù)據(jù)的查詢處理,以滿足用戶的查詢需求。
[0034]結(jié)合第一方面的第十種可能的實現(xiàn)方式,在第一方面的第十一種可能的實現(xiàn)方式 中,向硬件處理器件發(fā)送硬件執(zhí)行命令,包括:根據(jù)查詢命令,獲得針對需要硬件處理器件 執(zhí)行的操作算子的硬件執(zhí)行計劃信息;根據(jù)硬件執(zhí)行計劃信息,生成硬件執(zhí)行命令,并向硬 件處理器件發(fā)送硬件執(zhí)行命令。
[0035] 其中,硬件執(zhí)行計劃信息是指用于表示硬件處理器件需要執(zhí)行哪些操作算子的配 置文件,例如是文件名為plan.xml的配置文件。通過硬件執(zhí)行計劃信息,可以將需要硬件處 理器件執(zhí)行的操作算子和需要繼續(xù)由數(shù)據(jù)查詢裝置執(zhí)行的操作算子進(jìn)行區(qū)別劃分。
[0036] 結(jié)合第一方面的第十一種可能的實現(xiàn)方式中,在第一方面的第十二種可能的實現(xiàn) 方式中,根據(jù)硬件執(zhí)行計劃信息,生成硬件執(zhí)行命令,包括:根據(jù)查詢命令,生成針對Μ種操 作算子的原始執(zhí)行計劃信息;從原始執(zhí)行計劃信息中,確定針對需要硬件處理器件執(zhí)行的 操作算子的硬件執(zhí)行計劃信息。
[0037] 結(jié)合第一方面的第十一種可能的實現(xiàn)方式中,在第一方面的第十三種可能的實現(xiàn) 方式中,根據(jù)硬件執(zhí)行計劃信息,生成硬件執(zhí)行命令,包括:根據(jù)查詢命令,直接生成針對需 要硬件處理器件執(zhí)行的操作算子的硬件執(zhí)行計劃信息。
[0038]本申請中,由硬件處理器件通過直接讀取的方式獲取待查詢的數(shù)據(jù)區(qū)的數(shù)據(jù)傳輸 效率較快,并不需要CPU的干預(yù),所以如果待查詢的數(shù)據(jù)區(qū)包括的數(shù)據(jù)量較大的話,可以獲 得較快的數(shù)據(jù)傳輸速率。
[0039] 結(jié)合第一方面或第一方面的第一種至第五種可能的實現(xiàn)方式中的任意一種,在第 一方面的第十四種可能的實現(xiàn)方式中,向硬件處理器件發(fā)送需要硬件處理器件執(zhí)行的操作 算子,包括:若確定查詢條件的數(shù)量小于等于預(yù)定數(shù)量,則向硬件處理器件發(fā)送需要硬件處 理器件執(zhí)行的,其中,查詢條件是根據(jù)查詢命令確定得到的。
[0040] 其中,預(yù)定數(shù)量的取值可以用于衡量硬件處理器件的硬件執(zhí)行能力。例如為了能 夠充分利用硬件處理器件的硬件性能,可以將預(yù)定數(shù)量設(shè)置為等于或盡量趨近于硬件處理 器件能夠處理的查詢條件的最大數(shù)量。
[0041] 本申請中,在向硬件處理器件發(fā)送需要硬件處理器件執(zhí)行的之前,還可以先判斷 硬件處理器件是否具有執(zhí)行需要硬件處理器件執(zhí)行的的能力,這是考慮到硬件處理器件本 身硬件性能的限制,通過在向硬件處理器件發(fā)送操作算子之前執(zhí)行本申請的判斷步驟,可 以盡量減少操作算子的無效發(fā)送,提高數(shù)據(jù)傳輸效率。
[0042] 結(jié)合第一方面的第八種可能的實現(xiàn)方式,在第一方面的第十五種可能的實現(xiàn)方式 中,在向FPGA發(fā)送真值表執(zhí)行指令之前,還包括:
[0043] 根據(jù)查詢命令,確定Q個查詢條件;Q個查詢條件是根據(jù)查詢命令所確定的所有查 詢條件;
[0044] 判斷Q個查詢條件是否超過FPGA能夠執(zhí)行的查詢條件的最大數(shù)量;
[0045] 若未超過,生成能夠?qū)?Q個二進(jìn)制數(shù)分行進(jìn)行存儲的空真值表;
[0046] 確定Q個查詢條件的所有真假值組合,獲得2?個真假值組合;
[0047] 根據(jù)空真值表和2Q個真假值組合確定真值表。
[0048] 第二方面,提供一種數(shù)據(jù)查詢裝置,該數(shù)據(jù)查詢裝置包括用于執(zhí)行第一方面中所 述的數(shù)據(jù)查詢方法的模塊。
[0049] 第三方面,提供一種數(shù)據(jù)查詢裝置,在一個可能的設(shè)計中,所述數(shù)據(jù)查詢裝置的結(jié) 構(gòu)中包括處理器、發(fā)送器和接收器,所述處理器被配置為支持?jǐn)?shù)據(jù)查詢裝置執(zhí)行第一方面 的方法中相應(yīng)的功能。所述發(fā)送器用于向硬件處理器件發(fā)送硬件執(zhí)行命令,所述接收器用 于接收來自硬件處理器件執(zhí)行需要由硬件處理器件執(zhí)行的操作算子對應(yīng)的數(shù)據(jù)查詢結(jié)果。 所述據(jù)查詢裝置還可以包括存儲器,所述存儲器與處理器耦合,用于保存數(shù)據(jù)查詢裝置必 要的程序指令和數(shù)據(jù)。
【附圖說明】
[0050] 為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使 用的附圖作簡要介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本 領(lǐng)域的普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其 他的附圖。
[0051 ]圖1為Hive系統(tǒng)的架構(gòu)示意圖;
[0052]圖2為本發(fā)明實施例中數(shù)