和C即可。
[0046]步驟S231,每個Split執(zhí)行完成后返回指定的查詢記錄。以第二頁查詢?yōu)槔?返回Splitl的第6條查詢記錄以及Split2的前9條查詢記錄。
[0047]步驟S232, Reducer合并相應(yīng)Split返回的查詢記錄,按頁輸出查詢結(jié)果。以第二頁查詢?yōu)槔?,Splitl的第6條查詢記錄以及Split2的前9條查詢記錄被合并,以得到I頁包括10條查詢記錄的查詢結(jié)果,從而完成第二頁查詢。需要理解的是,如果是第四頁查詢,Split3的后6條查詢記錄可以作為一頁輸出,因此,不再需要進行合并即可按頁輸出(一頁為6條)。因此,該步驟是為了輸出一個或多個對應(yīng)任務(wù)的前10條查詢記錄,從而實現(xiàn)按頁查詢。在不足10條的條的情況下,前10條即指所有返回的查詢記錄。
[0048]需要理解的是,通過重復(fù)執(zhí)行以上步驟S210至步驟S232,可以實現(xiàn)逐頁查詢。
[0049]因此,通過緩存存儲相應(yīng)指令的統(tǒng)計信息,在進行分頁查詢時,可以通過任務(wù)分解和查詢記錄合并的方法,實現(xiàn)定位查詢,最大限度地減少對數(shù)據(jù)庫的訪問,大大提高分頁查詢的效率,尤其適用于多數(shù)據(jù)庫表的跨庫分頁查詢。并且,數(shù)據(jù)庫之間在查詢過程中也相互獨立,能保證跨庫查詢的安全性。因此,該實施例的跨庫分頁查詢方法尤其適用于安全性要求較高的行業(yè),例如,銀行業(yè)的交易數(shù)據(jù)查詢。
[0050]以上例子主要說明了本發(fā)明的跨庫分頁查詢方法。盡管只對其中一些本發(fā)明的實施方式進行了描述,但是本領(lǐng)域普通技術(shù)人員應(yīng)當(dāng)了解,本發(fā)明可以在不偏離其主旨與范圍內(nèi)以許多其他的形式實施。因此,所展示的例子與實施方式被視為示意性的而非限制性的,在不脫離如所附各權(quán)利要求所定義的本發(fā)明精神及范圍的情況下,本發(fā)明可能涵蓋各種的修改與替換。
【主權(quán)項】
1.一種數(shù)據(jù)分頁查詢方法,其中,每頁查詢記錄的輸出對應(yīng)一次查詢,對M個數(shù)據(jù)庫中的N張數(shù)據(jù)庫表進行數(shù)據(jù)查詢的指令對應(yīng)至少一頁查詢,其中M和N為整數(shù),M ^ 2,N^M,每個數(shù)據(jù)庫至少對應(yīng)一張數(shù)據(jù)庫表; 其特征在于,所述數(shù)據(jù)分頁查詢方法包括以下步驟: 接收到需要對M個數(shù)據(jù)庫中的N張數(shù)據(jù)庫表進行數(shù)據(jù)查詢的所述指令; 判斷在緩存中是否存儲有對應(yīng)該指令的反映查詢記錄情況的統(tǒng)計信息,從而判斷該指令在緩存的數(shù)據(jù)存儲周期內(nèi)是否是第一次接收; 如果緩存中沒有存儲所述統(tǒng)計信息,執(zhí)行以下步驟: S110,將該指令按查詢?nèi)蝿?wù)拆分為F個子任務(wù),每個子任務(wù)對應(yīng)一個數(shù)據(jù)庫的一張或多張數(shù)據(jù)庫表的查詢,其中F為整數(shù),N^F^M; S120,并行地執(zhí)行F個子任務(wù); S130,在執(zhí)行完成后返回所有F個子任務(wù)對應(yīng)的查詢記錄的總的條數(shù)G,并返回第一前Q條查詢記錄,其中,Q為分頁查詢時每頁輸出的查詢記錄的條數(shù),G^Q; S140,生成所述統(tǒng)計信息并將該統(tǒng)計信息存儲至所述緩存,所述統(tǒng)計信息包括每個子任務(wù)對應(yīng)的查詢記錄的條數(shù); S150,將第一前Q條查詢記錄輸出以輸出第一頁查詢結(jié)果; 如果緩存中存儲有所述統(tǒng)計信息,執(zhí)行以下步驟: S210,根據(jù)所述統(tǒng)計信息獲知預(yù)計的查詢記錄對應(yīng)的一個或多個子任務(wù); S220,并行執(zhí)行所述F個子任務(wù)中的該一個或多個子任務(wù); S230,返回第二前Q條查詢記錄并將該Q條查詢記錄按一頁查詢結(jié)果輸出。
2.如權(quán)利要求1所述的數(shù)據(jù)分頁查詢方法,其特征在于,所述第一或第二前Q條查詢記錄為對應(yīng)于多個子任務(wù)所返回的查詢記錄時,合并該多個子任務(wù)所返回的查詢記錄。
3.如權(quán)利要求1所述的數(shù)據(jù)分頁查詢方法,其特征在于,基于所述總的條數(shù)G以及每頁輸出的查詢記錄的條數(shù)Q,如果G大于Q,則返回所述接收步驟,并在所述判斷步驟中判斷為緩存中存儲有所述統(tǒng)計信息,以重復(fù)執(zhí)行所述步驟S210至S230,從而總共輸出K頁查詢結(jié)果,其中K為將G除以Q的結(jié)果向上取整得到的整數(shù)。
4.如權(quán)利要求1所述的數(shù)據(jù)分頁查詢方法,其特征在于,所述指令為SQL指令,所述SQL指令按消息摘要算法5 (MD5)處理以得出其MD5摘要信息。
5.如權(quán)利要求4所述的數(shù)據(jù)分頁查詢方法,其特征在于,所述統(tǒng)計信息被表述為以下格式:<MD5(SQL), ?SplitO, F1), <Splitl, F2>,…,〈Split (F_l),F(xiàn)f>) > ; 其中,MD5(SQL)為SQL指令的MD5摘要信息,SplitO至Split (F-1)依次表示拆分形成的第一子任務(wù)至第F子任務(wù),F1至Ff依次表示第一子任務(wù)至第F子任務(wù)分別所對應(yīng)的查詢記錄的條數(shù)。
6.如權(quán)利要求5所述的數(shù)據(jù)分頁查詢方法,其特征在于,在所述判斷步驟,根據(jù)接收的SQL指令的MD5摘要信息與統(tǒng)計信息中的MD5摘要信息是否向?qū)?yīng)來判斷是否存儲有對應(yīng)該SQL指令的反映查詢記錄的統(tǒng)計信息。
7.如權(quán)利要求1所述的數(shù)據(jù)分頁查詢方法,其特征在于,所述緩存的數(shù)據(jù)存儲周期不超過一天。
8.如權(quán)利要求1所述的數(shù)據(jù)分頁查詢方法,其特征在于,F(xiàn)=M,每個子任務(wù)對應(yīng)一個數(shù)據(jù)庫的一張或多張數(shù)據(jù)庫表的查詢。
9.一種數(shù)據(jù)分頁查詢裝置,其中,每頁查詢記錄的輸出對應(yīng)一次查詢,對M個數(shù)據(jù)庫中的N張數(shù)據(jù)庫表進行數(shù)據(jù)查詢的指令對應(yīng)至少一頁查詢,其中M和N為整數(shù),M ^ 2, N ^M,每個數(shù)據(jù)庫至少對應(yīng)一張數(shù)據(jù)庫表; 其特征在于,所述數(shù)據(jù)分頁查詢裝置包括以下部件: 指令接收部件,用于接收到需要對M個數(shù)據(jù)庫中的N張數(shù)據(jù)庫表進行數(shù)據(jù)查詢的所述指令; 統(tǒng)計信息判斷部件,用于判斷在緩存中是否存儲有對應(yīng)該指令的反映查詢記錄情況的統(tǒng)計信息,從而判斷該指令在緩存的數(shù)據(jù)存儲周期內(nèi)是否是第一次接收; 第一部件,在緩存中沒有存儲所述統(tǒng)計信息的情況下用于執(zhí)行以下步驟: S110,將該指令按查詢?nèi)蝿?wù)拆分為F個子任務(wù),每個子任務(wù)對應(yīng)一個數(shù)據(jù)庫的一張或多張數(shù)據(jù)庫表的查詢,其中F為整數(shù),N^F^M; S120,并行地執(zhí)行F個子任務(wù); S130,在執(zhí)行完成后返回所有F個子任務(wù)對應(yīng)的查詢記錄的總的條數(shù)G,并返回第一前Q條查詢記錄,其中,Q為分頁查詢時每頁輸出的查詢記錄的條數(shù),G^Q; S140,生成所述統(tǒng)計信息并將該統(tǒng)計信息存儲至所述緩存,所述統(tǒng)計信息包括每個子任務(wù)對應(yīng)的查詢記錄的條數(shù); S150,將第一前Q條查詢記錄輸出以輸出第一頁查詢結(jié)果; 第二部件,在緩存中存儲有所述統(tǒng)計信息的情況下用于執(zhí)行以下步驟: S210,根據(jù)所述統(tǒng)計信息獲知預(yù)計的查詢記錄對應(yīng)的一個或多個子任務(wù); S220,并行執(zhí)行所述F個子任務(wù)中的該一個或多個子任務(wù); S230,返回第二前Q條查詢記錄并將該Q條查詢記錄按一頁查詢結(jié)果輸出。
10.如權(quán)利要求9所述的數(shù)據(jù)分頁查詢裝置,其特征在于,所述第一或第二前Q條查詢記錄為對應(yīng)于多個子任務(wù)所返回的查詢記錄時,合并該多個子任務(wù)所返回的查詢記錄。
【專利摘要】本發(fā)明提供一種針對多數(shù)據(jù)庫表的跨庫分頁查詢方法,屬于數(shù)據(jù)查詢技術(shù)領(lǐng)域。該方法用于對多個數(shù)據(jù)庫中的多數(shù)據(jù)庫表進行數(shù)據(jù)查詢,首先判斷在緩存中是否存儲有對應(yīng)查詢指令的反映查詢記錄情況的統(tǒng)計信息;如果判斷為“沒有”,將該指令按查詢?nèi)蝿?wù)拆分為多個子任務(wù),并行地執(zhí)行該多個子任務(wù),從而返回多個子任務(wù)對應(yīng)的查詢記錄的總的條數(shù)并生該統(tǒng)計信息,將其存儲在緩存中;如果判斷為“有”,根據(jù)所述統(tǒng)計信息獲知預(yù)計的查詢記錄對應(yīng)的子任務(wù)并且并行執(zhí)行該對應(yīng)的子任務(wù)。該方法查詢效率高,安全性好,適用于多數(shù)據(jù)庫表跨庫分頁查詢。
【IPC分類】G06F17-30
【公開號】CN104572676
【申請?zhí)枴緾N201310483564
【發(fā)明人】唐真, 周繼恩, 湯茂安, 李偉
【申請人】中國銀聯(lián)股份有限公司
【公開日】2015年4月29日
【申請日】2013年10月16日...