亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種針對(duì)多數(shù)據(jù)庫(kù)表的跨庫(kù)分頁(yè)查詢方法_2

文檔序號(hào):8258550閱讀:來(lái)源:國(guó)知局
]從結(jié)合附圖的以下詳細(xì)說(shuō)明中,將會(huì)使本發(fā)明的上述和其他目的及優(yōu)點(diǎn)更加完整清楚,其中,相同或相似的要素采用相同的標(biāo)號(hào)表示。
[0021]圖1是按照本發(fā)明一實(shí)施例的針對(duì)多數(shù)據(jù)庫(kù)表的跨庫(kù)分頁(yè)查詢方法的流程示意圖。
[0022]圖2是按照本發(fā)明一實(shí)施例的SQL指令拆分示意圖。
[0023]圖3是按照本發(fā)明又一實(shí)施例的SQL指令拆分示意圖。
【具體實(shí)施方式】
[0024]下面介紹的是本發(fā)明的多個(gè)可能實(shí)施例中的一些,旨在提供對(duì)本發(fā)明的基本了解,并不旨在確認(rèn)本發(fā)明的關(guān)鍵或決定性的要素或限定所要保護(hù)的范圍。容易理解,根據(jù)本發(fā)明的技術(shù)方案,在不變更本發(fā)明的實(shí)質(zhì)精神下,本領(lǐng)域的一般技術(shù)人員可以提出可相互替換的其他實(shí)現(xiàn)方式。因此,以下【具體實(shí)施方式】以及附圖僅是對(duì)本發(fā)明的技術(shù)方案的示例性說(shuō)明,而不應(yīng)當(dāng)視為本發(fā)明的全部或者視為對(duì)本發(fā)明技術(shù)方案的限定或限制。
[0025]圖1所示為按照本發(fā)明一實(shí)施例的針對(duì)多數(shù)據(jù)庫(kù)表的跨庫(kù)分頁(yè)查詢方法的流程示意圖。在該實(shí)施例中,以每個(gè)四個(gè)數(shù)據(jù)庫(kù)(數(shù)據(jù)庫(kù)A、B、C、D)為例進(jìn)行示例性地說(shuō)明,每個(gè)數(shù)據(jù)庫(kù)中至少對(duì)應(yīng)有一張數(shù)據(jù)庫(kù)表。需要理解是,數(shù)據(jù)庫(kù)個(gè)數(shù)、每個(gè)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)表的張數(shù)不是限制性的,但是,在需要查詢的數(shù)據(jù)庫(kù)越多、查詢的數(shù)據(jù)庫(kù)表的張數(shù)越多的情況下,越能體現(xiàn)本發(fā)明的分頁(yè)查詢方法的效率優(yōu)勢(shì)。
[0026]并且,該實(shí)施例的數(shù)據(jù)分頁(yè)查詢方法可以以SQL (結(jié)構(gòu)化查詢語(yǔ)言)的程序模塊來(lái)實(shí)現(xiàn),該程序接口可以輸入調(diào)用者(該程序模塊的調(diào)用者)的SQL指令以及所需查詢的頁(yè)數(shù)、分頁(yè)查詢時(shí)每頁(yè)輸出的查詢記錄的條數(shù)Q等參數(shù)。在該實(shí)施例中,以Q=1示例進(jìn)行說(shuō)明。
[0027]在該實(shí)施例的程序模塊中,包括Reducer (分拆/合并)模塊以及多個(gè)Split (表示子任務(wù))模塊。
[0028]如圖1所示,首先步驟S10,接收到需要執(zhí)行4庫(kù)查詢的SQL指令,此時(shí),每個(gè)數(shù)據(jù)庫(kù)至少需要查詢一張數(shù)據(jù)庫(kù)表。需要理解的是,在進(jìn)行多頁(yè)查詢時(shí),每頁(yè)對(duì)應(yīng)的SQL指令是相同的,只是所需查詢的頁(yè)數(shù)不相同。
[0029]在該實(shí)施例中,SQL指令按消息摘要算法5 (Message Digest Algorithm 5, MD5)處理以得出其MD5摘要信息。因此,在其后的S20步驟中,可以以該MD5摘要信息為關(guān)鍵特征在緩存中查詢統(tǒng)計(jì)信息(統(tǒng)計(jì)信息將在其后說(shuō)明)。
[0030]進(jìn)一步,步驟S20,判斷該SQL指令在緩存中是否有統(tǒng)計(jì)信息。統(tǒng)計(jì)信息反映每個(gè)該SQL指令的查詢記錄情況,在該實(shí)施例中,如其后中所定義,統(tǒng)計(jì)信息將反映每個(gè)Split的查詢記錄情況。在緩存中,數(shù)據(jù)的存儲(chǔ)周期是相對(duì)較短的,例如在銀行卡行業(yè)一般不超過(guò)一天,因此,統(tǒng)計(jì)信息在一天的數(shù)據(jù)存儲(chǔ)周期中,可以基于該統(tǒng)計(jì)信息來(lái)判斷接收的SQL指令是否與該統(tǒng)計(jì)信息相對(duì)應(yīng)(統(tǒng)計(jì)信息與SQL指令之間的具體對(duì)應(yīng)查詢方法將在其后介紹),如果不對(duì)應(yīng),表示該SQL指令在緩存中不存在相應(yīng)的統(tǒng)計(jì)信息,從而可以判斷該SQL指令在緩存的數(shù)據(jù)存儲(chǔ)周期內(nèi)不是第一次接收。
[0031]如果判斷為否,進(jìn)入步驟SllO至步驟S150,以完成第一頁(yè)查詢并形成相應(yīng)的統(tǒng)計(jì)信息存儲(chǔ)在緩存中。
[0032]步驟S110,將SQL指令按不同的數(shù)據(jù)庫(kù)拆分成4個(gè)Split。SQL指令的拆分是按查詢?nèi)蝿?wù)來(lái)實(shí)現(xiàn)的,不同的數(shù)據(jù)庫(kù)至少對(duì)應(yīng)一個(gè)Split,每個(gè)Split可以對(duì)應(yīng)一個(gè)數(shù)據(jù)庫(kù)中一張或多張數(shù)據(jù)庫(kù)表的查詢。
[0033]圖2所示為按照本發(fā)明一實(shí)施例的SQL指令拆分示意圖。在該實(shí)施例中,Reducer(簡(jiǎn)化模塊)將SQL指令拆分成SplitO、Splitl、Split2和Split3四個(gè)子任務(wù),分別對(duì)應(yīng)數(shù)據(jù)庫(kù)A、數(shù)據(jù)庫(kù)B、數(shù)據(jù)庫(kù)C、數(shù)據(jù)庫(kù)D中的一張或多張數(shù)據(jù)庫(kù)表的查詢,這樣,查詢?nèi)蝿?wù)被差分,每個(gè)子任務(wù)的查詢速度將更快。
[0034]圖3所示為按照本發(fā)明又一實(shí)施例的SQL指令拆分示意圖。在該實(shí)施例中,數(shù)據(jù)庫(kù)D中對(duì)應(yīng)需要查詢的數(shù)據(jù)庫(kù)表的張數(shù)可能較多,需要拆分成多個(gè)子任務(wù),因此,Split3和Split4兩個(gè)子任務(wù)對(duì)應(yīng)數(shù)據(jù)庫(kù)D中的多個(gè)數(shù)據(jù)庫(kù)表的查詢。在其他實(shí)施例中,其他數(shù)據(jù)庫(kù)也可以對(duì)應(yīng)多個(gè)子任務(wù),子任務(wù)的個(gè)數(shù)在大于或等于跨庫(kù)的數(shù)據(jù)庫(kù)個(gè)數(shù)的情況下,其個(gè)數(shù)不是限制性的。
[0035]繼續(xù)如圖1所示,步驟S120,并行執(zhí)行4個(gè)Split。這樣,每個(gè)Split可在相應(yīng)數(shù)據(jù)庫(kù)的相應(yīng)數(shù)據(jù)庫(kù)表中查詢,查詢速度相對(duì)較快。
[0036]進(jìn)一步,步驟S130,在每個(gè)Split執(zhí)行完成后,返回查詢記錄的總的條數(shù)和前10條查詢記錄。在該實(shí)施例中,查詢記錄的總的條數(shù)G可能不夠返回10條查詢記錄,如果不夠,則表示一頁(yè)查詢即可結(jié)束該指令的查詢?nèi)蝿?wù),所有查詢記錄將返回至Reducer ;如果G大于10,則表示需要多頁(yè)(即多次)查詢才可完成該指令的查詢?nèi)蝿?wù)。具體的查詢次數(shù)K等于將G除以10的結(jié)果向上取整得到的整數(shù),例如,如果總的條數(shù)為22,K=22/10=3。
[0037]進(jìn)一步,步驟S140, Reducer記錄該SQL指令的統(tǒng)計(jì)信息,其包含每個(gè)Split返回的查詢記錄的條數(shù)。在該實(shí)施例中,統(tǒng)計(jì)信息被表述為如下格式:
〈MD5 (SQL),?SplitO, 5>,〈Splitl, 6>,<Split2, 17>,<Split3, 8? > ;
在該統(tǒng)計(jì)信息中,還反映了每個(gè)子任務(wù)對(duì)應(yīng)的查詢記錄的條數(shù),例如,SplitO對(duì)應(yīng)的5條查詢記錄,Splitl對(duì)應(yīng)的6條查詢記錄,Split2對(duì)應(yīng)的17條查詢記錄,Split3對(duì)應(yīng)的8條查詢記錄;總的條數(shù)為36條,該總的條數(shù)信息也包括在統(tǒng)計(jì)信息中。
[0038]在該統(tǒng)計(jì)信息中,MD5 (SQL)為該SQL指令的MD5摘要信息,以其來(lái)標(biāo)識(shí)統(tǒng)計(jì)信息,因此,在每個(gè)SQL指令輸入并生成其相應(yīng)的MD5摘要信息時(shí),在一實(shí)施例中,在步驟S20中可以基于MD5摘要信息來(lái)判斷統(tǒng)計(jì)信息與SQL指令之間是否具體對(duì)應(yīng)。
[0039]進(jìn)一步,步驟S145,判斷是否是查詢第一頁(yè)。
[0040]在該實(shí)施例中,有可能直接跳過(guò)第一頁(yè)查詢,例如,用戶輸入SQL指令是需要直接得到第二頁(yè)查詢記錄(直接跳過(guò)第一頁(yè)查詢記錄)。如果判斷為“是”,則進(jìn)入步驟S150 ;如果判斷為“否”,則進(jìn)入步驟S210來(lái)進(jìn)一步得到第一頁(yè)之后的其他頁(yè)查詢記錄。
[0041]進(jìn)一步,步驟S150, Reducer合并相應(yīng)SplitO和Splitl返回的查詢記錄,輸出第一頁(yè)查詢結(jié)果。在該實(shí)施例中,將SplitO返回的全部查詢記錄(5條)以及Splitl返回的查詢記錄的前5條合并,從而可以輸出10條查詢記錄,也即第一頁(yè)查詢結(jié)果。
[0042]如果在步驟S20中判斷為“是”,表示該次查詢對(duì)應(yīng)的SQL指令在緩存的數(shù)據(jù)存儲(chǔ)周期內(nèi)不是第一次接收,因此,之前對(duì)該SQL指令進(jìn)行的步驟SllO至步驟S140的結(jié)果可以繼續(xù)至少部分地被利用。
[0043]步驟S210,根據(jù)統(tǒng)計(jì)信息判斷SQL查詢需要相應(yīng)執(zhí)行的Split。
[0044]在該實(shí)施例中,以第二頁(yè)查詢?yōu)槔?,基于步驟S140的統(tǒng)計(jì)信息,可以判斷需要執(zhí)行的Split為Splitl和Split2,這是因?yàn)轭A(yù)計(jì)的第10-20條查詢記錄是對(duì)應(yīng)分布在Splitl和Split2對(duì)應(yīng)的子任務(wù)的查詢記錄中,也即Splitl的第6條查詢記錄以及Split2的前9條查詢記錄。類(lèi)似地,第三頁(yè)查詢對(duì)應(yīng)需要執(zhí)行的Split為Split2和Split3,第四頁(yè)查詢對(duì)應(yīng)需要執(zhí)行的Split為Split3。
[0045]步驟S220,并行執(zhí)行一個(gè)或多個(gè)相應(yīng)的Split。以第二頁(yè)查詢?yōu)槔?,并行?zhí)行Sitl和Split2,從而可以分別得到6條查詢記錄和17條查詢記錄;在此過(guò)程中,僅需要訪問(wèn)數(shù)據(jù)庫(kù)B
...
當(dāng)前第2頁(yè)1 2 3 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1