一種查詢數(shù)據(jù)的方法及裝置制造方法
【專利摘要】本申請公開了一種查詢數(shù)據(jù)的方法及裝置,用以解決現(xiàn)有技術(shù)中的分頁查詢方法會增大網(wǎng)絡(luò)的壓力的問題。該方法客戶端根據(jù)輸入的查詢頁碼以及每頁中包含的數(shù)據(jù)的數(shù)量,確定要從每個分庫中獲取的數(shù)據(jù)的數(shù)量N,再根據(jù)輸入的條件區(qū)間和排序規(guī)則,從每個分庫中獲取該條件區(qū)間內(nèi)按照該排序規(guī)則排序后的前N條數(shù)據(jù),最后按照該排序規(guī)則對獲取到的數(shù)據(jù)排序,并根據(jù)查詢頁碼提供相應(yīng)的數(shù)據(jù)。通過上述方法,客戶端在分庫分表的場景下進行分頁查詢時,無需從各分庫中獲取條件區(qū)間內(nèi)的所有數(shù)據(jù),而只需從各分庫中獲取條件區(qū)間內(nèi)的一部分數(shù)據(jù)即可,從而可以減少客戶端獲取數(shù)據(jù)時所產(chǎn)生的網(wǎng)絡(luò)通信,有效的減輕了網(wǎng)絡(luò)的壓力。
【專利說明】一種查詢數(shù)據(jù)的方法及裝置
【技術(shù)領(lǐng)域】
[0001]本申請涉及互聯(lián)網(wǎng)【技術(shù)領(lǐng)域】,尤其涉及一種查詢數(shù)據(jù)的方法及裝置。
【背景技術(shù)】
[0002]目前,在數(shù)據(jù)庫中查詢數(shù)據(jù)時,經(jīng)常采用分頁查詢的方法進行查詢。在采用分頁查詢的方法進行數(shù)據(jù)查詢時,用戶需要輸入條件區(qū)間、排序規(guī)則、查詢頁碼,數(shù)據(jù)庫則先提取出條件區(qū)間內(nèi)的所有數(shù)據(jù),再根據(jù)排序規(guī)則對提取出的數(shù)據(jù)進行排序,最后在排序后的數(shù)據(jù)中,確定相應(yīng)頁碼的數(shù)據(jù)返回給用戶。
[0003]例如,輸入的條件區(qū)間為最近兩天,排序規(guī)則為時間的先后順序,查詢頁碼為第2頁,則數(shù)據(jù)庫先提取出最近兩天內(nèi)的所有數(shù)據(jù),再按照時間先后順序?qū)μ崛〕龅臄?shù)據(jù)進行排序,假設(shè)每一頁包括10條數(shù)據(jù),則第2頁包括的數(shù)據(jù)即為第If 20條,從而數(shù)據(jù)庫將排序后的第If 20條數(shù)據(jù)返回給用戶。
[0004]上述分頁查詢的方法是應(yīng)用在單個數(shù)據(jù)庫中的查詢方法。
[0005]在現(xiàn)有技術(shù)中,為了解決單個數(shù)據(jù)庫的容量有限、訪問壓力大的問題,通常采用分庫分表的方法存儲數(shù)據(jù)。具體的,將數(shù)據(jù)進行水平拆分,把數(shù)據(jù)按照一定的規(guī)則離散到多個分庫中的方法進行數(shù)據(jù)的存儲。
[0006]例如,部署兩個分庫:A庫、B庫。對于要存儲的一個數(shù)據(jù)來說,如果該數(shù)據(jù)的流水號是奇數(shù),則存儲在A庫中,如果該數(shù)據(jù)的流水號是偶數(shù),則存儲在B庫中。
[0007]采用A庫和B庫存儲數(shù)據(jù)時,如果仍要采用分頁查詢的方法查詢最近兩天內(nèi)的第2頁數(shù)據(jù),則需要通過客戶端分別獲取存儲在A庫和B庫中的最近兩天內(nèi)的所有數(shù)據(jù),再將獲取的A庫和B庫中分別存儲的最近兩天內(nèi)的數(shù)據(jù)按照時間先后順序進行排序,最后將排序后的第2頁數(shù)據(jù)提供給用戶。
[0008]可見,在現(xiàn)有技術(shù)中,在分庫分表的場景下進行分頁查詢時,客戶端需要獲取各分庫中存儲的條件區(qū)間內(nèi)的所有數(shù)據(jù),由于各分庫中存儲的條件區(qū)間內(nèi)的數(shù)據(jù)往往是大量的,因此這必然會產(chǎn)生大量的網(wǎng)絡(luò)通信,從而增大網(wǎng)絡(luò)的壓力。
【發(fā)明內(nèi)容】
[0009]本申請?zhí)峁┮环N查詢數(shù)據(jù)的方法及裝置,用以解決現(xiàn)有技術(shù)中的分頁查詢方法會增大網(wǎng)絡(luò)的壓力的問題。
[0010]本申請實施例提供一種查詢數(shù)據(jù)的方法,包括:
[0011]客戶端根據(jù)輸入的查詢頁碼以及預(yù)設(shè)的每頁中包含的數(shù)據(jù)的數(shù)量,確定要從每個分庫中獲取的數(shù)據(jù)的數(shù)量N ;并
[0012]根據(jù)輸入的條件區(qū)間以及排序規(guī)則,從每個分庫中獲取所述條件區(qū)間內(nèi)按照所述排序規(guī)則排序后的前N條數(shù)據(jù);以及
[0013]按照所述排序規(guī)則,對獲取到的數(shù)據(jù)進行排序,并根據(jù)所述查詢頁碼提供相應(yīng)的數(shù)據(jù)。[0014]本申請實施例提供一種查詢數(shù)據(jù)的裝置,包括:
[0015]確定模塊,用于根據(jù)輸入的查詢頁碼以及預(yù)設(shè)的每頁中包含的數(shù)據(jù)的數(shù)量,確定要從每個分庫中獲取的數(shù)據(jù)的數(shù)量N ;
[0016]獲取模塊,用于根據(jù)輸入的條件區(qū)間以及排序規(guī)則,從每個分庫中獲取所述條件區(qū)間內(nèi)按照所述排序規(guī)則排序后的前N條數(shù)據(jù);
[0017]提供模塊,用于按照所述排序規(guī)則,對獲取到的數(shù)據(jù)進行排序,并根據(jù)所述查詢頁碼提供相應(yīng)的數(shù)據(jù)。
[0018]本申請實施例提供一種查詢數(shù)據(jù)的方法及裝置,該方法客戶端根據(jù)輸入的查詢頁碼以及每頁中包含的數(shù)據(jù)的數(shù)量,確定要從每個分庫中獲取的數(shù)據(jù)的數(shù)量N,再根據(jù)輸入的條件區(qū)間和排序規(guī)則,從每個分庫中獲取該條件區(qū)間內(nèi)按照該排序規(guī)則排序后的前N條數(shù)據(jù),最后按照該排序規(guī)則對獲取到的數(shù)據(jù)排序,并根據(jù)查詢頁碼提供相應(yīng)的數(shù)據(jù)。通過上述方法,客戶端在分庫分表的場景下進行分頁查詢時,無需從各分庫中獲取條件區(qū)間內(nèi)的所有數(shù)據(jù),而只需從各分庫中獲取條件區(qū)間內(nèi)的一部分數(shù)據(jù)即可,從而可以減少客戶端獲取數(shù)據(jù)時所產(chǎn)生的網(wǎng)絡(luò)通信,有效的減輕了網(wǎng)絡(luò)的壓力。
【專利附圖】
【附圖說明】
[0019]圖1為本申請實施例提供的查詢數(shù)據(jù)的過程;
[0020]圖2為本申請實施例提供的查詢數(shù)據(jù)的裝置結(jié)構(gòu)示意圖。
【具體實施方式】
[0021]由于現(xiàn)有技術(shù)中在分庫分表的場景下進行分頁查詢時,客戶端需要從各分庫中獲取條件區(qū)間內(nèi)的所有數(shù)據(jù),而各分庫中存儲的條件區(qū)間內(nèi)的所有數(shù)據(jù)往往是大量的,因此客戶端獲取這些大量的數(shù)據(jù)必然會產(chǎn)生大量的網(wǎng)絡(luò)通信,造成網(wǎng)絡(luò)壓力的增大。本申請實施例的核心思想在于:在能夠滿足向用戶提供其所要查詢的數(shù)據(jù)的條件下,盡量減少從各個分庫中獲取的數(shù)據(jù)的數(shù)量,從而達到減少獲取數(shù)據(jù)所產(chǎn)生的網(wǎng)絡(luò)通信的目的,以減輕網(wǎng)絡(luò)的壓力。
[0022]下面結(jié)合說明書附圖,對本申請實施例進行詳細描述。
[0023]圖1為本申請實施例提供的查詢數(shù)據(jù)的過程,包括以下步驟:
[0024]SlOl:客戶端根據(jù)輸入的查詢頁碼以及預(yù)設(shè)的每頁中包含的數(shù)據(jù)的數(shù)量,確定要從每個分庫中獲取的數(shù)據(jù)的數(shù)量N。
[0025]在本申請實施例中,采用分頁查詢的方法查詢某一頁的數(shù)據(jù)時,用戶仍需要向客戶端輸入所要查詢的條件區(qū)間[S,E]、排序規(guī)則、查詢頁碼p,其中,S為輸入的該條件區(qū)間的區(qū)間起始點,E為輸入的該條件區(qū)間的區(qū)間結(jié)束點。輸入的該條件區(qū)間[S,E]、排序規(guī)則、查詢頁碼P則表示:要查詢的數(shù)據(jù)為條件區(qū)間[S,E]內(nèi)按照該排序規(guī)則進行排序后的第P頁數(shù)據(jù)。
[0026]由于每一頁所包含的數(shù)據(jù)的數(shù)量是固定的,因此可以在客戶端中預(yù)設(shè)每頁中包含的數(shù)據(jù)的數(shù)量,例如設(shè)置為n,即表示每頁包含η條數(shù)據(jù)??蛻舳讼雀鶕?jù)用戶輸入的查詢頁碼P以及預(yù)設(shè)的每頁中包含的數(shù)據(jù)的數(shù)量η,確定要從每個分庫中獲取的數(shù)據(jù)的數(shù)量N。其中,可以將用戶輸入的查詢頁碼P與預(yù)設(shè)的每頁中包含的數(shù)據(jù)的數(shù)量η的乘積ρΧη,確定為要從每個分庫中獲取的數(shù)據(jù)的數(shù)量N,也即N為ρΧη。
[0027]S102:根據(jù)輸入的條件區(qū)間以及排序規(guī)則,從每個分庫中獲取該條件區(qū)間內(nèi)按照該排序規(guī)則排序后的前N條數(shù)據(jù)。
[0028]確定了要從每個分庫中獲取的數(shù)據(jù)的數(shù)量N之后,客戶端則從每個分庫中獲取該條件區(qū)間[S,E]內(nèi)按照該排序規(guī)則排序后的前N條數(shù)據(jù)。具體的,客戶端可以將該條件區(qū)間[S,E]、排序規(guī)則,以及確定出的數(shù)量N發(fā)送給每個分庫,用以通知每個分庫分別對自身存儲的在該條件區(qū)間[S,E]內(nèi)的所有數(shù)據(jù)按照該排序規(guī)則排序,并將排序后的前N條數(shù)據(jù)返回給客戶端??蛻舳藙t分別接收各個分庫返回的N條數(shù)據(jù)。
[0029]S103:按照該排序規(guī)則,對獲取到的數(shù)據(jù)進行排序,并根據(jù)該查詢頁碼提供相應(yīng)的數(shù)據(jù)。
[0030]客戶端從每個分庫中都獲取到N條數(shù)據(jù)后,則匯總獲取到的所有數(shù)據(jù),按照用戶輸入的排序規(guī)則,對獲取到的所有數(shù)據(jù)進行排序,并根據(jù)用戶輸入的查詢頁碼,向用戶提供相應(yīng)的數(shù)據(jù)。
[0031]在上述過程中,客戶端只需從每個分庫中獲取N條數(shù)據(jù),而無需獲取在條件區(qū)間[S, E]內(nèi)的所有數(shù)據(jù),因此減少了獲取的數(shù)據(jù)的數(shù)量,從而減少了獲取數(shù)據(jù)時所產(chǎn)生的網(wǎng)絡(luò)通信,有效的減輕了網(wǎng)絡(luò)的壓力。
[0032]下面以一個具體的應(yīng)用場景為例,分三種情況對本申請實施例提供的查詢數(shù)據(jù)方法進行詳細說明。
[0033]例如,假設(shè)共有兩個分庫:A庫和B庫。對于要存儲的一個數(shù)據(jù)來說,如果該數(shù)據(jù)的流水號是奇數(shù),則存儲在A庫中,如果該數(shù)據(jù)的流水號是偶數(shù),則存儲在B庫中。當前A庫中存儲的最近兩天內(nèi)的數(shù)據(jù)的流水號按照時間先后順序分別是:1、3、5、7、……、99。當前B庫中存儲的最近兩天內(nèi)的數(shù)據(jù)的流水號按照時間先后順序分別是:2、4、6、8、……、100。也即,最近兩天內(nèi)的數(shù)據(jù)共有100條,A庫存儲了其中流水號為奇數(shù)的50條,B庫存儲了其中流水號為偶數(shù)的50條。
[0034]在上述應(yīng)用場景下,如果用戶要查詢的數(shù)據(jù)是最近兩天內(nèi)的數(shù)據(jù)(也即這100條數(shù)據(jù))中,按照時間先后順序進行排序后的某一頁數(shù)據(jù),則分為以下三種情況。
[0035]情況一、用戶輸入了條件區(qū)間[S,E]、排序規(guī)則、查詢頁碼后,如果客戶端確定基于輸入的該條件區(qū)間[S,E]以及排序規(guī)則未查詢過任何數(shù)據(jù),則在上述步驟SlOl中,客戶端將輸入的查詢頁碼P與預(yù)設(shè)的每頁中包含的數(shù)據(jù)的數(shù)量η的乘積pXn,確定為要從每個分庫中獲取的數(shù)據(jù)的數(shù)量N。
[0036]然后,客戶端再執(zhí)行上述步驟S102,即,客戶端根據(jù)輸入的條件區(qū)間以及排序規(guī)貝U,從每個分庫中獲取該條件區(qū)間[S,E]內(nèi)按照該排序規(guī)則排序后的前N條數(shù)據(jù)。
[0037]最后,客戶端執(zhí)行上述步驟S103,即,客戶端按照該排序規(guī)則,對獲取到的數(shù)據(jù)進行排序,根據(jù)用戶輸入的查詢頁碼P提供相應(yīng)的數(shù)據(jù)。其中,客戶端根據(jù)用戶輸入的查詢頁碼P提供相應(yīng)的數(shù)據(jù)的方法具體為:根據(jù)查詢頁碼P以及預(yù)設(shè)的每頁中包含的數(shù)據(jù)的數(shù)量Π,確定查詢頁碼P對應(yīng)的序號區(qū)間[(P-1)η+1,ρη],并在排序后的數(shù)據(jù)中,提供序號在查詢頁碼P對應(yīng)的序號區(qū)間[(ρ-1)η+1,ρη]中的數(shù)據(jù)。
[0038]繼續(xù)以上述應(yīng)用場景為例進行說明,假設(shè)用戶要查詢的數(shù)據(jù)是最近兩天內(nèi)的數(shù)據(jù)中,按照時間先后順序進行排序后第2頁的數(shù)據(jù),則:[0039]用戶輸入要查詢的條件區(qū)間[S,E],該條件區(qū)間[S,E]即為最近兩天的時間區(qū)間。假設(shè)最近兩天為9月I日和9月2日,則S為該條件區(qū)間的區(qū)間起始點,也即9月I日的O點,E為該條件區(qū)間的區(qū)間結(jié)束點,也即9月2日的24點(或者說9月3日的O點);
[0040]用戶輸入排序規(guī)則為按時間先后順序;
[0041]用戶輸入查詢頁碼為2,也即P = 2。
[0042]預(yù)設(shè)每頁中包含的數(shù)據(jù)的數(shù)量為10,也即η = 10,亦即每頁中包括10條數(shù)據(jù),則如果客戶端確定此時尚未基于該用戶輸入的條件區(qū)間[S,E]以及排序規(guī)則(按時間先后順序)查詢過任何數(shù)據(jù),也即,確定本次查詢是基于用戶輸入的該條件區(qū)間[S,E]和排序規(guī)則(按時間先后順序)進行的第一次查詢,則將用戶輸入的查詢頁碼2與預(yù)設(shè)的每頁中包含的數(shù)據(jù)的數(shù)量10的乘積20, 確 定為要從每個分庫中獲取的數(shù)據(jù)的數(shù)量N,也即N為20。
[0043]客戶端在A庫中獲取條件區(qū)間[S,E]內(nèi)按照時間先后順序排序后的前20條數(shù)據(jù),在B庫中獲取條件區(qū)間[S,E]內(nèi)按照時間先后順序排序后的前20條數(shù)據(jù)。
[0044]其中,由于A庫中存儲的最近兩天內(nèi)的數(shù)據(jù)的流水號按照時間先后順序分別是1、3、5、7、……、99,也即,A庫中存儲的在條件區(qū)間[S,E]內(nèi)的數(shù)據(jù)的流水號按照時間先后順序分別是1、3、5、7、……、99,因此,客戶端從A庫中獲取的條件區(qū)間[S,E]內(nèi)按照時間先后順序排序后的前20條數(shù)據(jù)的流水號按照時間先后順序分別是:1、3、5、7、……、39。類似的,客戶端從B庫中獲取的條件區(qū)間[S,E]內(nèi)按照時間先后順序排序后的前20條數(shù)據(jù)的流水號按照時間先后順序分別是:2、4、6、8、……40??梢?,客戶端共獲取了流水號分別為1~40的40條數(shù)據(jù)。
[0045]客戶端從A庫和B庫中都獲取了 20條數(shù)據(jù)后,則按照用戶輸入的排序規(guī)則,也即按照時間先后順序,對獲取到的所有數(shù)據(jù)進行排序。
[0046]假設(shè)客戶端獲取到的流水號分別為f 40的40條數(shù)據(jù)按照時間先后順序分別為:1、2、3、4、……40,則客戶端根據(jù)用戶輸入的查詢頁碼2以及預(yù)設(shè)的每頁中包含的數(shù)據(jù)的數(shù)量10,確定該查詢頁碼2對應(yīng)的序號區(qū)間[(2- 1爹1?H)丨。
[0047]由于客戶端獲取到的流水號分別為f 40的40條數(shù)據(jù)按照時間先后順序分別為:1、2、3、4、……40,因此,在對這40條數(shù)據(jù)按照時間先后順序排序后,序號在該查詢頁碼2對應(yīng)的序號區(qū)間[11,20]中的數(shù)據(jù)即為:流水號分別為11、12、13、……20的數(shù)據(jù)。從而,客戶端向用戶提供流水號分別為11、12、13、……20的數(shù)據(jù),作為該用戶要查詢的最近兩天內(nèi)、按照時間先后順序排序后的第2頁數(shù)據(jù)。
[0048]由此可見,在情況一中,也即當客戶端確定基于用戶輸入的條件區(qū)間以及排序規(guī)則未查詢過任何數(shù)據(jù)時,只需要從A庫和B庫中獲取共40條數(shù)據(jù)(分別從A庫和B庫中獲取20條數(shù)據(jù)),即可向用戶提供其所要查詢的最近兩天內(nèi)、按照時間先后順序排序后的第2頁數(shù)據(jù)。相比于現(xiàn)有技術(shù)中需要從A庫和B庫中共獲取條件區(qū)間[S,E]內(nèi)的100條數(shù)據(jù)而言,本申請實施例提供的查詢數(shù)據(jù)的方法減少了客戶端從各分庫中獲取的數(shù)據(jù)的數(shù)量,因此減少了客戶端獲取數(shù)據(jù)時所產(chǎn)生的網(wǎng)絡(luò)通信,有效的減輕了網(wǎng)絡(luò)壓力。
[0049]進一步的,為了在后續(xù)查詢數(shù)據(jù)的過程中進一步減輕網(wǎng)絡(luò)壓力,本申請實施例中客戶端在基于用戶輸入的條件區(qū)間[S,E]、排序規(guī)則、查詢頁碼p,向用戶提供了相應(yīng)的數(shù)據(jù)之后,還要針對不大于該查詢頁碼P的頁碼ρ-1,確定頁碼P-1對應(yīng)的序號區(qū)間[(p-1-1)n+1, (p-1) η],其中,i為O到p-1的正整數(shù);根據(jù)排序后的數(shù)據(jù)以及頁碼p_i對應(yīng)的序號區(qū)間[(p-1_l)n+l, (p-1)n],采用指定方法確定頁碼p-1對應(yīng)的條件子區(qū)間并記錄;其中,該指定方法包括:在排序后的數(shù)據(jù)中,將序號為(p-1-l)n+l的數(shù)據(jù)的條件確定為頁碼p-1對應(yīng)的條件子區(qū)間的區(qū)間起始點,將序號為(p-1)n的數(shù)據(jù)的條件確定為頁碼p-1對應(yīng)的條件子區(qū)間的區(qū)間結(jié)束點。
[0050]繼續(xù)沿用上例,客戶端向用戶提供了該用戶要查詢的最近兩天內(nèi)、按照時間先后順序排序后的第2頁數(shù)據(jù)之后,確定不大于該查詢頁碼P = 2的頁碼包括頁碼p-1 = 2- 3=,因此,確定該頁碼I對應(yīng)的序號區(qū)間[(p-1-1)n+1, (p-1)η] = [1,10]。
[0051]由于客戶端獲取到的流水號分別為f 40的40條數(shù)據(jù)按照時間先后順序分別為:
1、2、3、4、......40,因此,在對這40條數(shù)據(jù)按照時間先后順序排序后,序號為(p-1-l)n+l =
I的數(shù)據(jù)即為流水號為I的數(shù)據(jù),序號為(p-1)n = 10的數(shù)據(jù)即為流水號為10的數(shù)據(jù),假設(shè)該流水號為I的數(shù)據(jù)對應(yīng)的時間為R1S,流水號為10的數(shù)據(jù)對應(yīng)的時間為R1E,則該頁碼I對應(yīng)的條件子區(qū)間即為[R1S,RlE],該頁碼I對應(yīng)的條件子區(qū)間[R1S,RlE]表示:將條件區(qū)間[S,E]內(nèi)(最近兩天內(nèi))的所有數(shù)據(jù)按照時間先后順序排序后,條件子區(qū)間[R1S,R1E]內(nèi)的數(shù)據(jù)就是第I頁數(shù)據(jù)。
[0052]類似的,假設(shè)流水號為11的數(shù)據(jù)對應(yīng)的時間為R2S,流水號為20的數(shù)據(jù)對應(yīng)的時間為R2E,則查詢頁碼2對應(yīng)的條件子區(qū)間為[R2S,R2E]。
[0053]記錄了各個不大于該查詢頁碼的頁碼對應(yīng)的條件子區(qū)間后,后續(xù)如果該用戶繼續(xù)采用相同的條件區(qū)間和排序規(guī)則查詢其他頁碼的數(shù)據(jù),則可以根據(jù)記錄的各頁碼對應(yīng)的條件子區(qū)間進行查詢,具體如下述的情況二和情況三。
[0054]情況二、用戶輸入了條件區(qū)間[S,E]、排序規(guī)則、查詢頁碼P后,如果客戶端確定基于輸入的該條件區(qū)間[S,E]以及排序規(guī)則查詢過頁碼小于該查詢頁碼的數(shù)據(jù),則在上述步驟SlOl中,客戶端確定要從每個分庫中獲取的數(shù)據(jù)的數(shù)量N的方法為:在查詢過的、且小于查詢頁碼P的各頁碼p-1中,確定最大頁碼max (p-1),其中,i為O到p-Ι的正整數(shù);確定輸入的查詢頁碼P與最大頁碼max (p-1)的差值p-max (p-1),將確定的差值p-max (p-1)與預(yù)設(shè)的每頁中包含的數(shù)據(jù)的數(shù)量η的乘積(p-max(p-1)) Xn,確定為要從每個分庫中獲取的數(shù)據(jù)的數(shù)量N。
[0055]然后,客戶端在執(zhí)行上述步驟S102時,根據(jù)輸入的條件區(qū)間[S,E]以及排序規(guī)則,從每個分庫中獲取條件區(qū)間[S,E]內(nèi)按照該排序規(guī)則排序后的前N條數(shù)據(jù)的方法具體為:確定基于該條件區(qū)間[S,E]以及該排序規(guī)則查詢該最大頁碼max (p-1)的數(shù)據(jù)時所記錄的該最大頁碼max (p-1)對應(yīng)的條件子區(qū)間;根據(jù)該最大頁碼max (p-1)對應(yīng)的條件子區(qū)間,將輸入的條件區(qū)間[S,E]的區(qū)間起始點調(diào)整為該最大頁碼max(p-1)對應(yīng)的條件子區(qū)間的區(qū)間結(jié)束點;從每個分庫中獲取調(diào)整后的條件區(qū)間內(nèi)按照該排序規(guī)則排序后的前N條數(shù)據(jù)。
[0056]最后,客戶端執(zhí)行上述步驟S103,即,客戶端按照該排序規(guī)則,對獲取到的數(shù)據(jù)進行排序,根據(jù)用戶輸入的查詢頁碼P提供相應(yīng)的數(shù)據(jù)。其中,客戶端根據(jù)用戶輸入的查詢頁碼P提供相應(yīng)的數(shù)據(jù)的方法具體為:根據(jù)查詢頁碼P、最大頁碼max (P-1)、預(yù)設(shè)的每頁中包含的數(shù)據(jù)的數(shù)量η,確定該查詢頁碼P對應(yīng)的序號區(qū)間[(p-max (p-1)-1) n+1, (p-max (p-1))n],并在排序后的數(shù)據(jù)中,提供序號在該查詢頁碼p對應(yīng)的序號區(qū)間[(p-max(p-1)-1)n+1, (p-max(p-1))n]中的數(shù)據(jù)。
[0057]繼續(xù)以上述應(yīng)用場景為例進行說明,假設(shè)用戶已經(jīng)查詢了最近兩天內(nèi)的數(shù)據(jù)中,按照時間先后順序進行排序后第2頁的數(shù)據(jù),現(xiàn)在要繼續(xù)查詢最近兩天內(nèi)的數(shù)據(jù)中,按照時間先后順序進行排序后的第5頁的數(shù)據(jù),則:
[0058]用戶輸入要查詢的條件區(qū)間仍是[S,E],該條件區(qū)間[S,E]即為最近兩天的時間區(qū)間;
[0059]用戶輸入排序規(guī)則仍是按時間先后順序;
[0060]用戶輸入查詢頁碼為5,也即P = 5。
[0061]此時,客戶端確定基于該用戶輸入的條件區(qū)間[S,E]以及排序規(guī)則(按時間先后順序)查詢過頁碼小于當前查詢頁碼5的數(shù)據(jù),查詢過的小于當前查詢頁碼5的頁碼即為頁碼2。因此,客戶端在查詢過的、且小于當前查詢頁碼5的各頁碼中,確定的最大頁碼即為頁碼2,也即max (p-1) =2。當前輸入的查詢頁碼5與最大頁碼2的差值為p-max (p-1)=3。該差值3與預(yù)設(shè)的每頁中包含的數(shù)據(jù)的數(shù)量10的乘積為(p-max(p-1))Xn = 30。因此,客戶端確定的要從每個分庫中獲取的數(shù)據(jù)的數(shù)量N為30。
[0062]由于在上述情況一中,客戶端已經(jīng)查詢過頁碼2的數(shù)據(jù),因此此時客戶端已經(jīng)記錄了該頁碼2對應(yīng)的條件子區(qū)間[R2S,R2E],從而,客戶端將輸入的條件區(qū)間[S,E]的區(qū)間起始點S調(diào)整為該頁碼2對應(yīng)的條件子區(qū)間的區(qū)間結(jié)束點R2E,調(diào)整后的條件區(qū)間即為(R2E,E]。調(diào)整了條件區(qū)間后,客戶端則從A庫中獲取調(diào)整后的條件區(qū)間(R2E,E]內(nèi)按照時間先后順序排序后的前30條數(shù)據(jù),從B庫中獲取條件區(qū)間(R2E,E]內(nèi)按照時間先后順序排序后的前30條數(shù)據(jù)。[0063]其中,由于在A庫中,將條件區(qū)間[S,E]內(nèi)的所有數(shù)據(jù)(流水號分別為1、3、5、7……99的數(shù)據(jù))按照時間先后順序排序后,頁碼I對應(yīng)的條件子區(qū)間[R1S,R1E]內(nèi)的數(shù)據(jù)是流水號分別為1、3、5、7、9的數(shù)據(jù),頁碼2對應(yīng)的條件子區(qū)間[R2S,R2E]內(nèi)的數(shù)據(jù)是流水號分別為11、13、15、17、19的數(shù)據(jù),因此,客戶端從A庫中獲取的調(diào)整后的條件區(qū)間(R2E,E]內(nèi)按照時間先后順序排序后的前30條數(shù)據(jù)即為:流水號分別為21、23、25、27、……、79的數(shù)據(jù)。類似的,客戶端從B庫中獲取的調(diào)整后的條件區(qū)間(R2E,E]內(nèi)按照時間先后順序排序后的前30條數(shù)據(jù)即為:流水號分別為22、24、26、28、……80的數(shù)據(jù)??梢?,客戶端共獲取了流水號分別為2廣80的60條數(shù)據(jù)。
[0064]客戶端從A庫和B庫中都獲取了 30條數(shù)據(jù)后,則按照用戶輸入的排序規(guī)則,也即按照時間先后順序,對獲取到的所有數(shù)據(jù)進行排序。
[0065]假設(shè)客戶端獲取到的流水號分別為21~80的60條數(shù)據(jù)按照時間先后順序分別為:21、22、23、24、……80,則客戶端根據(jù)當前的查詢頁碼5、最大頁碼2、預(yù)設(shè)的每頁中包含的數(shù)據(jù)的數(shù)量10,確定當前該查詢頁碼5對應(yīng)的序號區(qū)間[(p-max (p-1)-1) n+1, (p-max (p-1))n] = [21,30]。
[0066]由于將獲取的流水號分別為80的60條數(shù)據(jù)按照時間先后順序分別為:21、22、23、24、……、80,因此,在對這60條數(shù)據(jù)按照時間先后順序排序后,序號在當前該查詢頁碼5對應(yīng)的序號區(qū)間[21,30]中的數(shù)據(jù)即為:流水號分別為41、42、43、……、50的數(shù)據(jù)。從而,客戶端向用戶提供流水號分別為41、42、43、……、50的數(shù)據(jù)。
[0067]由此可見,在情況二中,用戶在已經(jīng)查詢過第2頁數(shù)據(jù)的情況下,繼續(xù)基于相同的條件區(qū)間和相同的排序規(guī)則查詢第5頁數(shù)據(jù)時,如果按照情況一的方法進行查詢,則客戶端需要在A庫和B庫中均獲取50條數(shù)據(jù),也即共獲取100條數(shù)據(jù),而如果按照情況二的方法進行查詢,則客戶端可以根據(jù)在查詢第2頁數(shù)據(jù)時所記錄的頁碼2對應(yīng)的條件子區(qū)間,縮小要查詢的條件區(qū)間的范圍,并進一步減少從A庫和B庫中獲取的數(shù)據(jù)的數(shù)量,只需要從A庫和B庫中分別獲取30條,即共獲取60條數(shù)據(jù),即可向用戶提供其所要查詢的最近兩天內(nèi)、按照時間先后順序排序后的第5頁數(shù)據(jù),從而進一步減少了獲取數(shù)據(jù)時所產(chǎn)生的網(wǎng)絡(luò)通信,進一步減輕了網(wǎng)絡(luò)的壓力。
[0068]當然,在上述情況二中,客戶端向用戶提供了第5頁數(shù)據(jù)后,也要分別確定不大于當前的查詢頁碼5的各頁碼對應(yīng)的條件子區(qū)間并記錄,也即分別確定頁碼f 5對應(yīng)的條件子區(qū)間并記錄,而實際上客戶端已經(jīng)確定并記錄了頁碼I和頁碼2對應(yīng)的條件子區(qū)間,因此向用戶提供了第5頁數(shù)據(jù)后,只要確定并記錄頁碼:1~5對應(yīng)的條件子區(qū)間即可,這里就不再
--贅述。 [0069]情況三、用戶輸入了條件區(qū)間[S,E]、排序規(guī)則、查詢頁碼P后,如果客戶端確定基于輸入的該條件區(qū)間[S,E]以及排序規(guī)則查詢過頁碼大于該查詢頁碼的數(shù)據(jù),則在上述步驟SlOl中,客戶端確定要從每個分庫中獲取的數(shù)據(jù)的數(shù)量N的方法為:將預(yù)設(shè)的每頁中包含的數(shù)據(jù)的數(shù)量n,確定為要從每個分庫中獲取的數(shù)據(jù)的數(shù)量N。
[0070]然后,客戶端在執(zhí)行上述步驟S102時,根據(jù)輸入的條件區(qū)間[S,E]以及排序規(guī)則,從每個分庫中獲取條件區(qū)間[S,E]內(nèi)按照該排序規(guī)則排序后的前N條數(shù)據(jù)的方法具體為:確定基于該條件區(qū)間[S,E]以及該排序規(guī)則對頁碼大于該查詢頁碼的數(shù)據(jù)進行查詢時所記錄的該查詢頁碼對應(yīng)的條件子區(qū)間;將輸入的該條件區(qū)間[S,E]調(diào)整為該查詢頁碼對應(yīng)的條件子區(qū)間;從每個分庫中獲取調(diào)整后的條件區(qū)間內(nèi)按照該排序規(guī)則排序后的前N條數(shù)據(jù)。
[0071]最后,客戶端執(zhí)行上述步驟S103,即,客戶端按照該排序規(guī)則,對獲取到的數(shù)據(jù)進行排序,根據(jù)用戶輸入的查詢頁碼P提供相應(yīng)的數(shù)據(jù)。其中,客戶端根據(jù)用戶輸入的該查詢頁碼P提供相應(yīng)的數(shù)據(jù)的方法具體為:在排序后的數(shù)據(jù)中,提供前η條數(shù)據(jù)。
[0072]繼續(xù)以上述應(yīng)用場景為例進行說明,假設(shè)用戶已經(jīng)查詢了最近兩天內(nèi)的數(shù)據(jù)中,按照時間先后順序進行排序后第2頁的數(shù)據(jù),現(xiàn)在要繼續(xù)查詢最近兩天內(nèi)的數(shù)據(jù)中,按照時間先后順序進行排序后的第I頁的數(shù)據(jù),則:
[0073]用戶輸入要查詢的條件區(qū)間仍是[S,Ε],該條件區(qū)間[S,E]即為最近兩天的時間區(qū)間;
[0074]用戶輸入排序規(guī)則仍是按時間先后順序;
[0075]用戶輸入查詢頁碼為1,也即P = I。
[0076]此時,客戶端確定基于該用戶輸入的條件區(qū)間[S,E]以及排序規(guī)則(按時間先后順序)查詢過頁碼大于當前查詢頁碼I的數(shù)據(jù),查詢過的大于當前查詢頁碼I的頁碼即為頁碼2。因此,客戶端直接將預(yù)設(shè)的每頁中包含的數(shù)據(jù)的數(shù)量10,確定為要從每個分庫中獲取的數(shù)據(jù)的數(shù)量N,也即N為10。
[0077]由于在上述情況一中,客戶端已經(jīng)查詢過頁碼2的數(shù)據(jù),因此此時客戶端已經(jīng)記錄了頁碼I (當前的查詢頁碼)對應(yīng)的條件子區(qū)間[R1S,RlE],從而,客戶端直接將輸入的條件區(qū)間[S,E]調(diào)整為當前的該查詢頁碼對應(yīng)的條件子區(qū)間,調(diào)整后的條件區(qū)間即為頁碼I對應(yīng)的條件子區(qū)間[R1S,R1E]。
[0078]調(diào)整了條件區(qū)間后,客戶端從A庫中獲取調(diào)整后的條件區(qū)間[R1S,R1E]內(nèi)按照該排序規(guī)則排序后的前10條數(shù)據(jù),從B庫中獲取調(diào)整后的條件區(qū)間[R1S,R1E]內(nèi)按照該排序規(guī)則排序后的前10條數(shù)據(jù)。
[0079]其中,由于在A庫中,將條件區(qū)間[S,E]內(nèi)的所有數(shù)據(jù)(流水號分別為1、3、5、7……99的數(shù)據(jù))按照時間先后順序排序后,頁碼I對應(yīng)的條件子區(qū)間[R1S,R1E]內(nèi)的數(shù)據(jù)是流水號分別為1、3、5、7、9的數(shù)據(jù),因此,客戶端從A庫中獲取的調(diào)整后的條件區(qū)間[R1S,R1E]內(nèi)按照該排序規(guī)則排序后的前10條數(shù)據(jù)即為:流水號分別為1、3、5、7、9的數(shù)據(jù)。類似的,客戶端從B庫中獲取的調(diào)整后的條件區(qū)間[R1S,R1E]內(nèi)按照該排序規(guī)則排序后的前10條數(shù)據(jù)即為:流水號分別為2、4、6、8、10的數(shù)據(jù)。
[0080]需要說明的是,實際上客戶端從一個分庫中獲取到的調(diào)整后的條件區(qū)間[RlS1RlE]內(nèi)的數(shù)據(jù)是不可能超過10條的,如上例中,客戶端從A庫中實際上只獲取到了 5條數(shù)據(jù),從B庫中也只獲取到了 5條數(shù)據(jù)。可見,客戶端共獲取了流水號分別為廣10的10條數(shù)據(jù)。
[0081]客戶端從A庫和B庫中都獲取了 5條數(shù)據(jù)后,則按照用戶輸入的排序規(guī)則,也即按照時間先后順序,對獲取到的所有數(shù)據(jù)進行排序。
[0082]假設(shè)客戶端獲取到的流水號分別為f 10的10條數(shù)據(jù)按照時間先后順序分別為:
1、2、3、4、……10,則客戶端直接提供排序后的前10條數(shù)據(jù),也即提供的數(shù)據(jù)就是流水號分別為1~10的10條數(shù)據(jù)。
[0083]由此可見,在情況三中,用戶在已經(jīng)查詢過第2頁數(shù)據(jù)的情況下,繼續(xù)基于相同的條件區(qū)間和相同的排序規(guī)則查詢第I頁數(shù)據(jù)時,如果按照情況一的方法進行查詢,則客戶端需要在A庫和B庫中均獲取10條數(shù)據(jù),也即共獲取20條數(shù)據(jù),而如果按照情況三的方法進行查詢,則客戶端可以根據(jù)`在查詢第2頁數(shù)據(jù)時所記錄的頁碼I對應(yīng)的條件子區(qū)間,直接將用戶輸入的條件區(qū)間的范圍縮小到頁碼I對應(yīng)的條件子區(qū)間的范圍,并進一步減少從A庫和B庫中獲取的數(shù)據(jù)的數(shù)量,客戶端實際從A庫和B庫中共獲取了 10條數(shù)據(jù),即可向用戶提供其所要查詢的最近兩天內(nèi)、按照時間先后順序排序后的第I頁數(shù)據(jù),從而進一步減少了獲取數(shù)據(jù)時所產(chǎn)生的網(wǎng)絡(luò)通信,進一步減輕了網(wǎng)絡(luò)的壓力。
[0084]以上是分三種情況對本申請實施例提供的查詢數(shù)據(jù)的方法進行的詳細說明,基于同樣的思路,本申請實施例還提供一種查詢數(shù)據(jù)的裝置,如圖2所示。
[0085]圖2為本申請實施例提供的查詢數(shù)據(jù)的裝置結(jié)構(gòu)示意圖,具體包括:
[0086]確定模塊201,用于根據(jù)輸入的查詢頁碼以及預(yù)設(shè)的每頁中包含的數(shù)據(jù)的數(shù)量,確定要從每個分庫中獲取的數(shù)據(jù)的數(shù)量N ;
[0087]獲取模塊202,用于根據(jù)輸入的條件區(qū)間以及排序規(guī)則,從每個分庫中獲取所述條件區(qū)間內(nèi)按照所述排序規(guī)則排序后的前N條數(shù)據(jù);
[0088]提供模塊203,用于按照所述排序規(guī)則,對獲取到的數(shù)據(jù)進行排序,并根據(jù)所述查詢頁碼提供相應(yīng)的數(shù)據(jù)。
[0089]所述確定模塊201具體用于,當確定基于輸入的條件區(qū)間以及排序規(guī)則未查詢過任何數(shù)據(jù)時,將輸入的所述查詢頁碼P與預(yù)設(shè)的每頁中包含的數(shù)據(jù)的數(shù)量η的乘積pXn,確定為要從每個分庫中獲取的數(shù)據(jù)的數(shù)量N ;
[0090]所述提供模塊203具體用于,根據(jù)所述查詢頁碼P以及預(yù)設(shè)的每頁中包含的數(shù)據(jù)的數(shù)量n,確定所述查詢頁碼P對應(yīng)的序號區(qū)間[(p-1) η+1, ρη],并在排序后的數(shù)據(jù)中,提供序號在所述查詢頁碼P對應(yīng)的序號區(qū)間[(p-l)n+l,pn]中的數(shù)據(jù)。
[0091]所述裝置還包括:
[0092]記錄模塊204,用于針對不大于所述查詢頁碼P的頁碼p_i,確定頁碼p_i對應(yīng)的序號區(qū)間[(p-1-l)n+l,(p-1)n],其中,i為O到p-1的正整數(shù);根據(jù)排序后的數(shù)據(jù)以及頁碼p-1對應(yīng)的序號區(qū)間[(p-1-1)n+1, (p_i)η],采用指定方法確定頁碼p-1對應(yīng)的條件子區(qū)間并記錄;其中,所述指定方法包括:在排序后的數(shù)據(jù)中,將序號為(p-1-l)n+l的數(shù)據(jù)的條件確定為頁碼P-1對應(yīng)的條件子區(qū)間的區(qū)間起始點,將序號為(p-1)n的數(shù)據(jù)的條件確定為頁碼p-1對應(yīng)的條件子區(qū)間的區(qū)間結(jié)束點。
[0093]所述確定模塊201具體用于,當確定基于輸入的條件區(qū)間以及排序規(guī)則查詢過頁碼小于所述查詢頁碼的數(shù)據(jù)時,在查詢過的、且小于所述查詢頁碼P的各頁碼p-1中,確定最大頁碼max (p-1),其中,i為O到p-Ι的正整數(shù);確定輸入的所述查詢頁碼P與所述最大頁碼max (p-1)的差值p-max (p-1),將確定的所述差值p-max (p-1)與預(yù)設(shè)的每頁中包含的數(shù)據(jù)的數(shù)量η的乘積(p-max(p-1)) Xn,確定為要從每個分庫中獲取的數(shù)據(jù)的數(shù)量N ;
[0094]所述獲取模塊202具體用于,確定基于所述條件區(qū)間以及所述排序規(guī)則查詢所述最大頁碼max (p-1)的數(shù)據(jù)時所記錄的所述最大頁碼max (p-1)對應(yīng)的條件子區(qū)間;根據(jù)所述最大頁碼max(p-1)對應(yīng)的條件子區(qū)間,將輸入的所述條件區(qū)間的區(qū)間起始點調(diào)整為所述最大頁碼max (p-1)對應(yīng)的條件子區(qū)間的區(qū)間結(jié)束點;從每個分庫中獲取調(diào)整后的條件區(qū)間內(nèi)按照所述排序規(guī)則排序后的前N條數(shù)據(jù);
[0095]所述提供模塊203具體用于,根據(jù)所述查詢頁碼p、所述最大頁碼max (p-1)、預(yù)設(shè)的每頁中包含的數(shù)據(jù)的數(shù)量n,確定所述查詢頁碼P對應(yīng)的序號區(qū)間[(p-max(p-1)-1)n+1, (p-max(p-1))n],并在排序后的數(shù)據(jù)中,提供序號在所述查詢頁碼p對應(yīng)的序號區(qū)間[(p-max(p-1)-1)n+1, (p-max(p-1))n]中的數(shù)據(jù)。
[0096]所述確定模塊201具體用于,當確定基于輸入的條件區(qū)間以及排序規(guī)則查詢過頁碼大于所述查詢頁碼的數(shù)據(jù)時,將預(yù)設(shè)的每頁中包含的數(shù)據(jù)的數(shù)量η,確定為要從每個分庫中獲取的數(shù)據(jù)的數(shù)量N;
[0097]所述獲取模塊202具體用于,確定基于所述條件區(qū)間以及所述排序規(guī)則對頁碼大于所述查詢頁碼的數(shù)據(jù)進行查詢時所記錄的所述查詢頁碼對應(yīng)的條件子區(qū)間;將輸入的所述條件區(qū)間調(diào)整為所述查詢頁碼對應(yīng)的條件子區(qū)間;從每個分庫中獲取調(diào)整后的條件區(qū)間內(nèi)按照所述排序規(guī)則排序后的前N條數(shù)據(jù);
[0098]所述提供模塊203具體用于,在排序后的數(shù)據(jù)中,提供前η條數(shù)據(jù)。
[0099]具體的上述查詢數(shù)據(jù)的裝置可以位于客戶端中。
[0100]本申請實施例提供一種查詢數(shù)據(jù)的方法及裝置,該方法客戶端根據(jù)輸入的查詢頁碼以及每頁中包含的數(shù)據(jù)的數(shù)量,確定要從每個分庫中獲取的數(shù)據(jù)的數(shù)量N,再根據(jù)輸入的條件區(qū)間和排序規(guī)則,從每個分庫中獲取該條件區(qū)間內(nèi)按照該排序規(guī)則排序后的前N條數(shù)據(jù),最后按照該排序規(guī)則對獲取到的數(shù)據(jù)排序,并根據(jù)查詢頁碼提供相應(yīng)的數(shù)據(jù)。通過上述方法,客戶端在分庫分表的場景下進行分頁查詢時,無需從各分庫中獲取條件區(qū)間內(nèi)的所有數(shù)據(jù),而只需從各分庫中獲取條件區(qū)間內(nèi)的一部分數(shù)據(jù)即可,從而可以減少客戶端獲取數(shù)據(jù)時所產(chǎn)生的網(wǎng)絡(luò)通信,有效的減輕了網(wǎng)絡(luò)的壓力。
[0101]本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本申請的實施例可提供為方法、系統(tǒng)、或計算機程序產(chǎn)品。因此,本申請可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本申請可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、CD-ROM、光學(xué)存儲器等)上實施的計算機程序產(chǎn)品的形式。
[0102]本申請是參照根據(jù)本申請實施例的方法、設(shè)備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
[0103]這些計算機程序指令也可存儲在能引導(dǎo)計算機或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
[0104]這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
[0105]盡管已描述了本申請的優(yōu)選實施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例做出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實施例以及落入本申請范圍的所有變更和修改。
[0106]顯然,本領(lǐng)域的技術(shù)人員可以對本申請進行各種改動和變型而不脫離本申請的精神和范圍。這樣,倘若本申請的這些修改和變型屬于本申請權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本申請也意圖包含這些改動和變型在內(nèi)。
【權(quán)利要求】
1.一種查詢數(shù)據(jù)的方法,其特征在于,包括: 客戶端根據(jù)輸入的查詢頁碼以及預(yù)設(shè)的每頁中包含的數(shù)據(jù)的數(shù)量,確定要從每個分庫中獲取的數(shù)據(jù)的數(shù)量N ;并 根據(jù)輸入的條件區(qū)間以及排序規(guī)則,從每個分庫中獲取所述條件區(qū)間內(nèi)按照所述排序規(guī)則排序后的前N條數(shù)據(jù);以及 按照所述排序規(guī)則,對獲取到的數(shù)據(jù)進行排序,并根據(jù)所述查詢頁碼提供相應(yīng)的數(shù)據(jù)。
2.如權(quán)利要求1所述 的方法,其特征在于,客戶端根據(jù)輸入的查詢頁碼以及預(yù)設(shè)的每頁中包含的數(shù)據(jù)的數(shù)量,確定要從每個分庫中獲取的數(shù)據(jù)的數(shù)量N,具體包括: 當確定基于輸入的條件區(qū)間以及排序規(guī)則未查詢過任何數(shù)據(jù)時,將輸入的所述查詢頁碼P與預(yù)設(shè)的每頁中包含的數(shù)據(jù)的數(shù)量η的乘積ρΧη,確定為要從每個分庫中獲取的數(shù)據(jù)的數(shù)量N ; 根據(jù)所述查詢頁碼提供相應(yīng)的數(shù)據(jù),具體包括: 根據(jù)所述查詢頁碼P以及預(yù)設(shè)的每頁中包含的數(shù)據(jù)的數(shù)量η,確定所述查詢頁碼P對應(yīng)的序號區(qū)間[(P-1) η+1,ρη],并在排序后的數(shù)據(jù)中,提供序號在所述查詢頁碼P對應(yīng)的序號區(qū)間[(P-1) η+1,ρη]中的數(shù)據(jù)。
3.如權(quán)利要求2所述的方法,其特征在于,所述方法還包括: 針對不大于所述查詢頁碼P的頁碼p-1,確定頁碼p-1對應(yīng)的序號區(qū)間[(p-1-1)n+1, (p-1) η],其中,i為O到p_l的正整數(shù); 根據(jù)排序后的數(shù)據(jù)以及頁碼P-1對應(yīng)的序號區(qū)間[(p-1-l)n+l,(p-1)n],采用指定方法確定頁碼p-1對應(yīng)的條件子區(qū)間并記錄; 其中,所述指定方法包括:在排序后的數(shù)據(jù)中,將序號為(p-1-l)n+l的數(shù)據(jù)的條件確定為頁碼P-1對應(yīng)的條件子區(qū)間的區(qū)間起始點,將序號為(p-1)n的數(shù)據(jù)的條件確定為頁碼P-1對應(yīng)的條件子區(qū)間的區(qū)間結(jié)束點。
4.如權(quán)利要求1所述的方法,其特征在于,客戶端根據(jù)輸入的查詢頁碼以及預(yù)設(shè)的每頁中包含的數(shù)據(jù)的數(shù)量,確定要從每個分庫中獲取的數(shù)據(jù)的數(shù)量N,具體包括: 當確定基于輸入的條件區(qū)間以及排序規(guī)則查詢過頁碼小于所述查詢頁碼的數(shù)據(jù)時,在查詢過的、且小于所述查詢頁碼P的各頁碼p-1中,確定最大頁碼max (p-1),其中,i為O到P-1的正整數(shù); 確定輸入的所述查詢頁碼P與所述最大頁碼max (p-1)的差值p-max (p-1),將確定的所述差值p-max(p-1)與預(yù)設(shè)的每頁中包含的數(shù)據(jù)的數(shù)量η的乘積(p-max(p-1)) Xn,確定為要從每個分庫中獲取的數(shù)據(jù)的數(shù)量N ; 根據(jù)輸入的條件區(qū)間以及排序規(guī)則,從每個分庫中獲取所述條件區(qū)間內(nèi)按照所述排序規(guī)則排序后的前N條數(shù)據(jù),具體包括: 確定基于所述條件區(qū)間以及所述排序規(guī)則查詢所述最大頁碼max (p-1)的數(shù)據(jù)時所記錄的所述最大頁碼max (p-1)對應(yīng)的條件子區(qū)間; 根據(jù)所述最大頁碼max (p-1)對應(yīng)的條件子區(qū)間,將輸入的所述條件區(qū)間的區(qū)間起始點調(diào)整為所述最大頁碼max (p-1)對應(yīng)的條件子區(qū)間的區(qū)間結(jié)束點; 從每個分庫中獲取調(diào)整后的條件區(qū)間內(nèi)按照所述排序規(guī)則排序后的前N條數(shù)據(jù); 根據(jù)所述查詢頁碼提供相應(yīng)的數(shù)據(jù),具體包括:根據(jù)所述查詢頁碼P、所述最大頁碼max (P-1)、預(yù)設(shè)的每頁中包含的數(shù)據(jù)的數(shù)量n,確定所述查詢頁碼P對應(yīng)的序號區(qū)間[(P- m ap^t (/ - )n+ I )p-1,],并在排序后的數(shù)據(jù)中,提供序號在所述查詢頁碼P對應(yīng)的序號區(qū)間[(p-max(p-1)-1)n+1, (p-max(p-1))n]中的數(shù)據(jù)。
5.如權(quán)利要求1所述的方法,其特征在于,客戶端根據(jù)輸入的查詢頁碼以及預(yù)設(shè)的每頁中包含的數(shù)據(jù)的數(shù)量,確定要從每個分庫中獲取的數(shù)據(jù)的數(shù)量N,具體包括: 當確定基于輸入的條件區(qū)間以及排序規(guī)則查詢過頁碼大于所述查詢頁碼的數(shù)據(jù)時,將預(yù)設(shè)的每頁中包含的數(shù)據(jù)的數(shù)量n,確定為要從每個分庫中獲取的數(shù)據(jù)的數(shù)量N ; 根據(jù)輸入的條件區(qū)間以及排序規(guī)則,從每個分庫中獲取所述條件區(qū)間內(nèi)按照所述排序規(guī)則排序后的前N條數(shù)據(jù),具體包括: 確定基于所述條件區(qū)間以及所述排序規(guī)則對頁碼大于所述查詢頁碼的數(shù)據(jù)進行查詢時所記錄的所述查詢頁碼對應(yīng)的條件子區(qū)間; 將輸入的所述條件區(qū)間調(diào)整為所述查詢頁碼對應(yīng)的條件子區(qū)間; 從每個分庫中獲取調(diào)整后的條件區(qū)間內(nèi)按照所述排序規(guī)則排序后的前N條數(shù)據(jù); 根據(jù)所述查詢頁碼提供相應(yīng)的數(shù)據(jù),具體包括: 在排序后的數(shù)據(jù)中, 提供前η條數(shù)據(jù)。
6.一種查詢數(shù)據(jù)的裝置,其特征在于,包括: 確定模塊,用于根據(jù)輸入的查詢頁碼以及預(yù)設(shè)的每頁中包含的數(shù)據(jù)的數(shù)量,確定要從每個分庫中獲取的數(shù)據(jù)的數(shù)量N ; 獲取模塊,用于根據(jù)輸入的條件區(qū)間以及排序規(guī)則,從每個分庫中獲取所述條件區(qū)間內(nèi)按照所述排序規(guī)則排序后的前N條數(shù)據(jù); 提供模塊,用于按照所述排序規(guī)則,對獲取到的數(shù)據(jù)進行排序,并根據(jù)所述查詢頁碼提供相應(yīng)的數(shù)據(jù)。
7.如權(quán)利要求6所述的裝置,其特征在于,所述確定模塊具體用于,當確定基于輸入的條件區(qū)間以及排序規(guī)則未查詢過任何數(shù)據(jù)時,將輸入的所述查詢頁碼P與預(yù)設(shè)的每頁中包含的數(shù)據(jù)的數(shù)量η的乘積ρΧη,確定為要從每個分庫中獲取的數(shù)據(jù)的數(shù)量N; 所述提供模塊具體用于,根據(jù)所述查詢頁碼P以及預(yù)設(shè)的每頁中包含的數(shù)據(jù)的數(shù)量η,確定所述查詢頁碼P對應(yīng)的序號區(qū)間[(P_l)n+1,ρη],并在排序后的數(shù)據(jù)中,提供序號在所述查詢頁碼P對應(yīng)的序號區(qū)間[(ρ_1)η+1,ρη]中的數(shù)據(jù)。
8.如權(quán)利要求7所述的裝置,其特征在于,所述裝置還包括: 記錄模塊,用于針對不大于所述查詢頁碼P的頁碼P_i,確定頁碼P-1對應(yīng)的序號區(qū)間[(P-1-1) n+1, (p-1) η],其中,i為O到p-1的正整數(shù);根據(jù)排序后的數(shù)據(jù)以及頁碼p_i對應(yīng)的序號區(qū)間[(p-1-l)n+l,(p-1)n],采用指定方法確定頁碼p-1對應(yīng)的條件子區(qū)間并記錄;其中,所述指定方法包括:在排序后的數(shù)據(jù)中,將序號為(p-1-l)n+l的數(shù)據(jù)的條件確定為頁碼p-1對應(yīng)的條件子區(qū)間的區(qū)間起始點,將序號為(p-1)n的數(shù)據(jù)的條件確定為頁碼p-1對應(yīng)的條件子區(qū)間的區(qū)間結(jié)束點。
9.如權(quán)利要求6所述的裝置,其特征在于,所述確定模塊具體用于,當確定基于輸入的條件區(qū)間以及排序規(guī)則查詢過頁碼小于所述查詢頁碼的數(shù)據(jù)時,在查詢過的、且小于所述查詢頁碼P的各頁碼p-1中,確定最大頁碼max (p-1),其中,i為O到p_l的正整數(shù);確定輸入的所述查詢頁碼P與所述最大頁碼max (p-1)的差值p-max (p-1),將確定的所述差值p-max (p-1)與預(yù)設(shè)的每頁中包含的數(shù)據(jù)的數(shù)量η的乘積(p-max (p-1)) Xn,確定為要從每個分庫中獲取的數(shù)據(jù)的數(shù)量N ; 所述獲取模塊具體用于,確定基于所述條件區(qū)間以及所述排序規(guī)則查詢所述最大頁碼max (p-1)的數(shù)據(jù)時所記錄的所述最大頁碼max (p-1)對應(yīng)的條件子區(qū)間;根據(jù)所述最大頁碼max(p-1)對應(yīng)的條件子區(qū)間,將輸入的所述條件區(qū)間的區(qū)間起始點調(diào)整為所述最大頁碼max (p-1)對應(yīng)的條件子區(qū)間的區(qū)間結(jié)束點;從每個分庫中獲取調(diào)整后的條件區(qū)間內(nèi)按照所述排序規(guī)則排序后的前N條數(shù)據(jù); 所述提供模塊具體用于,根據(jù)所述查詢頁碼P、所述最大頁碼max (p-1)、預(yù)設(shè)的每頁中包含的數(shù)據(jù)的數(shù)量n,確定所述查詢頁碼P對應(yīng)的序號區(qū)間[(p-max (p-1)-1)n+1, (p-max(p-1))n],并在排序后的數(shù)據(jù)中,提供序號在所述查詢頁碼p對應(yīng)的序號區(qū)間[(p-max(p-1)-1)n+1, (p-max(p-1))n]中的數(shù)據(jù)。
10.如權(quán)利要求6所述的裝置,其特征在于,所述確定模塊具體用于,當確定基于輸入的條件區(qū)間以及排序規(guī)則查詢過頁碼大于所述查詢頁碼的數(shù)據(jù)時,將預(yù)設(shè)的每頁中包含的數(shù)據(jù)的數(shù)量η,確定為要從每個分庫中獲取的數(shù)據(jù)的數(shù)量N ; 所述獲取模塊具體用于,確定基于所述條件區(qū)間以及所述排序規(guī)則對頁碼大于所述查詢頁碼的數(shù)據(jù)進行查詢時所記錄的所述查詢頁碼對應(yīng)的條件子區(qū)間;將輸入的所述條件區(qū)間調(diào)整為所述查詢頁碼對應(yīng)的條件子區(qū)間;從每個分庫中獲取調(diào)整后的條件區(qū)間內(nèi)按照所述排序規(guī)則排序后的前N條數(shù)據(jù); 所述提供模塊具體用于,在排序后`的數(shù)據(jù)中,提供前η條數(shù)據(jù)。
【文檔編號】G06F17/30GK103678408SQ201210359116
【公開日】2014年3月26日 申請日期:2012年9月21日 優(yōu)先權(quán)日:2012年9月21日
【發(fā)明者】陳銳發(fā) 申請人:阿里巴巴集團控股有限公司