本發(fā)明涉及信息技術(shù)領(lǐng)域,并且更具體地,涉及一種數(shù)據(jù)查詢的方法、查詢服務(wù)設(shè)備、客戶端設(shè)備和數(shù)據(jù)系統(tǒng)。
背景技術(shù):
分頁查詢技術(shù)可以支持用戶查看某一頁面的數(shù)據(jù)記錄。在目前的分頁查詢技術(shù)中,一種方式是將所有符合查詢條件的記錄先緩存在內(nèi)存中,當(dāng)用戶再提交了某一頁的查詢請求之后,直接從內(nèi)存中拿到用戶想要的數(shù)據(jù)快速返回給用戶。這種方式在查詢涉及到的數(shù)據(jù)量過大,或者并發(fā)請求量過大時,對內(nèi)存的壓力比較大,尤其是在大數(shù)據(jù)領(lǐng)域內(nèi)是不適用的。
另一種方式是將數(shù)據(jù)直接按照行號(ROW_NUM)進(jìn)行組織排序,在查詢時按照ROW_NUM快速定位到想要查詢的數(shù)據(jù)。然而這種排序在很大程度上并不是用戶所期望的排序,而且這種排序在大數(shù)據(jù)領(lǐng)域內(nèi),可能會導(dǎo)致數(shù)據(jù)入庫性能過低,因為不能很好地將數(shù)據(jù)打散到對應(yīng)的數(shù)據(jù)分區(qū)中。
因此,提高分頁查詢的效率成為大數(shù)據(jù)領(lǐng)域內(nèi)亟待解決的一個技術(shù)問題。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例提供了一種數(shù)據(jù)查詢的方法、查詢服務(wù)設(shè)備、客戶端設(shè)備和數(shù)據(jù)系統(tǒng),能夠提高分頁查詢的效率。
第一方面,提供了一種數(shù)據(jù)查詢的方法,包括:
接收客戶端設(shè)備發(fā)送的第一查詢請求,該第一查詢請求包括查詢條件和頁面提示信息,該頁面提示信息用于指示第一頁面中的第一數(shù)據(jù)記錄,該第一頁面為滿足該查詢條件的至少一個數(shù)據(jù)頁面中的數(shù)據(jù)頁面;
根據(jù)該頁面提示信息,確定該第一數(shù)據(jù)記錄;
根據(jù)該第一數(shù)據(jù)記錄和該查詢條件,向該客戶端設(shè)備發(fā)送該第一頁面中的數(shù)據(jù)記錄。
本發(fā)明實施例的數(shù)據(jù)查詢的方法,根據(jù)頁面提示信息可以快速地定位到第一頁面中的第一數(shù)據(jù)記錄進(jìn)而獲取第一頁面中的數(shù)據(jù)記錄,實現(xiàn)快速地分頁查詢,從而能夠提高分頁查詢的效率。
在一些可能設(shè)計中,該第一數(shù)據(jù)記錄為該第一頁面中的第一條數(shù)據(jù)記錄。
在一些可能設(shè)計中,該第一數(shù)據(jù)記錄也可以為該第一頁面中的其他條數(shù)據(jù)記錄,例如,最后一條記錄,或者確定的某一條記錄。
在一些可能設(shè)計中,根據(jù)該第一數(shù)據(jù)記錄和該查詢條件,向該客戶端設(shè)備發(fā)送該第一頁面中的數(shù)據(jù)記錄,包括:
向該客戶端設(shè)備發(fā)送從該第一數(shù)據(jù)記錄開始的,滿足該查詢條件的預(yù)定數(shù)量的數(shù)據(jù)記錄,該預(yù)定數(shù)量為一個頁面中的數(shù)據(jù)記錄的數(shù)量。
在一些可能設(shè)計中,查詢服務(wù)設(shè)備可以在查詢到該第一頁面中的全部數(shù)據(jù)記錄后,再向該客戶端設(shè)備返回該第一頁面中的數(shù)據(jù)記錄;查詢服務(wù)設(shè)備也可以在每查詢到該第一頁面中的一條數(shù)據(jù)記錄后,就向該客戶端設(shè)備返回該數(shù)據(jù)記錄。
在一些可能設(shè)計中,該頁面提示信息包括該第一數(shù)據(jù)記錄的主鍵信息。
這種方式適合于按照主鍵查詢的方式,查詢服務(wù)設(shè)備可以根據(jù)該第一數(shù)據(jù)記錄的主鍵信息快速定位到該第一數(shù)據(jù)記錄。
在一些可能設(shè)計中,該頁面提示信息包括該第一數(shù)據(jù)記錄的主鍵信息和與該查詢條件對應(yīng)的索引信息。
這種方式適合于根據(jù)索引查詢的方式,可以使查詢服務(wù)設(shè)備快速地在相應(yīng)的索引中定位到該第一數(shù)據(jù)記錄對應(yīng)的索引記錄,進(jìn)而得到該第一數(shù)據(jù)記錄。
在一些可能設(shè)計中,該頁面提示信息中的具體內(nèi)容可以是該第一數(shù)據(jù)記錄的信息,也可以是其他數(shù)據(jù)記錄的信息,只要其他數(shù)據(jù)記錄與該第一數(shù)據(jù)記錄的關(guān)系確定即可。
在一些可能設(shè)計中,在接收客戶端設(shè)備發(fā)送的第一查詢請求之前,該方法還包括:
接收該客戶端設(shè)備發(fā)送的第二查詢請求,該第二查詢請求包括該查詢條件;
根據(jù)該第二查詢請求,向該客戶端設(shè)備發(fā)送滿足該查詢條件的至少一個數(shù)據(jù)頁面的數(shù)據(jù)記錄,以及向該客戶端設(shè)備發(fā)送該頁面提示信息。
在一些可能設(shè)計中,在向該客戶端設(shè)備發(fā)送該頁面提示信息之前,該方法還包括:
接收該客戶端設(shè)備發(fā)送的頁面提示信息請求,該頁面提示信息請求用于請求該頁面提示信息。
第二方面,提供了一種數(shù)據(jù)查詢的方法,包括:
向查詢服務(wù)設(shè)備發(fā)送第一查詢請求,該第一查詢請求包括查詢條件和頁面提示信息,該頁面提示信息用于指示第一頁面中的第一數(shù)據(jù)記錄,該第一頁面為滿足該查詢條件的至少一個數(shù)據(jù)頁面中的數(shù)據(jù)頁面;
接收該查詢服務(wù)設(shè)備根據(jù)該第一查詢請求發(fā)送的該第一頁面中的數(shù)據(jù)記錄。
本發(fā)明實施例的數(shù)據(jù)查詢的方法,采用頁面提示信息指示所請求頁面中的第一數(shù)據(jù)記錄,可以實現(xiàn)快速地分頁查詢,從而能夠提高分頁查詢的效率。
在一些可能設(shè)計中,該第一數(shù)據(jù)記錄為該第一頁面中的第一條數(shù)據(jù)記錄。
在一些可能設(shè)計中,該第一頁面中的數(shù)據(jù)記錄為從該第一數(shù)據(jù)記錄開始的,滿足該查詢條件的預(yù)定數(shù)量的數(shù)據(jù)記錄,該預(yù)定數(shù)量為一個頁面中的數(shù)據(jù)記錄的數(shù)量。
在一些可能設(shè)計中,該頁面提示信息包括該第一數(shù)據(jù)記錄的主鍵信息。
這種方式適合于按照主鍵查詢的方式,查詢服務(wù)設(shè)備可以根據(jù)該第一數(shù)據(jù)記錄的主鍵信息快速定位到該第一數(shù)據(jù)記錄。
在一些可能設(shè)計中,該頁面提示信息包括該第一數(shù)據(jù)記錄的主鍵信息和與該查詢條件對應(yīng)的索引信息。
這種方式適合于根據(jù)索引查詢的方式,可以使查詢服務(wù)設(shè)備快速地在相應(yīng)的索引中定位到該第一數(shù)據(jù)記錄對應(yīng)的索引記錄,進(jìn)而得到該第一數(shù)據(jù)記錄。
在一些可能設(shè)計中,在向查詢服務(wù)設(shè)備發(fā)送第一查詢請求之前,該方法還包括:
向該查詢服務(wù)設(shè)備發(fā)送第二查詢請求,該第二查詢請求包括該查詢條件;
接收該查詢服務(wù)設(shè)備根據(jù)該第二查詢請求發(fā)送的滿足該查詢條件的至少一個數(shù)據(jù)頁面的數(shù)據(jù)記錄;
接收該查詢服務(wù)設(shè)備發(fā)送該頁面提示信息;
存儲該頁面提示信息。
在一些可能設(shè)計中,該方法還包括:
向該查詢服務(wù)設(shè)備發(fā)送頁面提示信息請求,該頁面提示信息請求用于請求該頁面提示信息。
第三方面,提供了一種查詢服務(wù)設(shè)備,包括執(zhí)行第一方面或第一方面的任意可能設(shè)計中的方法的模塊。
第四方面,提供了一種客戶端設(shè)備,包括執(zhí)行第二方面或第二方面的任意可能設(shè)計中的方法的模塊。
第五方面,提供了一種查詢服務(wù)設(shè)備。該查詢服務(wù)設(shè)備包括處理器、存儲器和通信接口。處理器與存儲器和通信接口連接。存儲器用于存儲指令,處理器用于執(zhí)行該指令,通信接口用于在處理器的控制下與其他網(wǎng)元進(jìn)行通信。該處理器執(zhí)行該存儲器存儲的指令時,該執(zhí)行使得該處理器執(zhí)行第一方面或第一方面的任意可能設(shè)計中的方法。
第六方面,提供了一種客戶端設(shè)備。該客戶端設(shè)備包括處理器、存儲器和通信接口。處理器與存儲器和通信接口連接。存儲器用于存儲指令,處理器用于執(zhí)行該指令,通信接口用于在處理器的控制下與其他網(wǎng)元進(jìn)行通信。該處理器執(zhí)行該存儲器存儲的指令時,該執(zhí)行使得該處理器執(zhí)行第二方面或第二方面的任意可能設(shè)計中的方法。
第七方面,提供了一種數(shù)據(jù)系統(tǒng),包括:
第三方面或第五方面的查詢服務(wù)設(shè)備;以及
數(shù)據(jù)庫,該數(shù)據(jù)庫中包括待查詢的數(shù)據(jù)。
在一些可能設(shè)計中,該數(shù)據(jù)系統(tǒng)還包括:
第四方面或第六方面的客戶端設(shè)備。
第八方面,提供了一種計算機(jī)可讀介質(zhì),用于存儲計算機(jī)程序,該計算機(jī)程序包括:用于執(zhí)行第一方面或第一方面的任意可能設(shè)計中的方法的指令,和/或用于執(zhí)行第二方面或第二方面的任意可能設(shè)計中的方法的指令。
附圖說明
為了更清楚地說明本發(fā)明實施例的技術(shù)方案,下面將對本發(fā)明實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明實施例的應(yīng)用場景的示意圖。
圖2是本發(fā)明一個實施例的數(shù)據(jù)查詢的方法的示意性流程圖。
圖3是本發(fā)明另一實施例的數(shù)據(jù)查詢的方法的示意性流程圖。
圖4是本發(fā)明一個實施例的查詢服務(wù)設(shè)備的示意性框圖。
圖5是本發(fā)明一個實施例的客戶端設(shè)備的示意性框圖。
圖6是本發(fā)明另一實施例的查詢服務(wù)設(shè)備的結(jié)構(gòu)示意圖。
圖7是本發(fā)明另一實施例的客戶端設(shè)備的結(jié)構(gòu)示意圖。
圖8是本發(fā)明一個實施例的數(shù)據(jù)系統(tǒng)的示意圖。
圖9是本發(fā)明另一實施例的數(shù)據(jù)系統(tǒng)的示意圖。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明的一部分實施例,而不是全部實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動的前提下所獲得的所有其他實施例,都應(yīng)屬于本發(fā)明保護(hù)的范圍。
應(yīng)理解,本發(fā)明實施例中,數(shù)據(jù)記錄在本領(lǐng)域中也可以稱為記錄或數(shù)據(jù)。
本發(fā)明實施例的技術(shù)方案可以應(yīng)用于數(shù)據(jù)系統(tǒng)中。圖1是本發(fā)明實施例的應(yīng)用場景的示意圖。
在圖1中,數(shù)據(jù)庫103可以是分布式的,即分布于多個服務(wù)器中;數(shù)據(jù)庫103也可以為單服務(wù)器式的,即位于單服務(wù)器中。
客戶端設(shè)備101用于向查詢服務(wù)設(shè)備102發(fā)送查詢請求并接收查詢服務(wù)設(shè)備102返回的查詢結(jié)果。
查詢服務(wù)設(shè)備102用于處理客戶端設(shè)備101的查詢請求并向客戶端設(shè)備101返回查詢結(jié)果。例如,將客戶端設(shè)備101的查詢請求解析、轉(zhuǎn)換成數(shù)據(jù)庫查詢請求,以查詢數(shù)據(jù)庫103中的數(shù)據(jù)。查詢服務(wù)設(shè)備102可以設(shè)置于單服務(wù)器中的數(shù)據(jù)庫管理系統(tǒng)中,或者設(shè)置于分布式數(shù)據(jù)庫系統(tǒng)中的分布式管理系統(tǒng)中。
應(yīng)理解,客戶端設(shè)備101和查詢服務(wù)設(shè)備102可以是物理設(shè)備,也可以是設(shè)置于物理設(shè)備中的裝置、單元或模塊;另外,客戶端設(shè)備101和查詢服務(wù)設(shè)備102可以在同一物理設(shè)備上實現(xiàn),也可以分別在不同的物理設(shè)備上實現(xiàn)。
圖2示出了根據(jù)本發(fā)明實施例的數(shù)據(jù)查詢的方法的示意性流程圖。圖2中的客戶端設(shè)備可以為圖1中的客戶端設(shè)備101;查詢服務(wù)設(shè)備可以為圖1中的查詢服務(wù)設(shè)備102。
210,客戶端設(shè)備向查詢服務(wù)設(shè)備發(fā)送第一查詢請求。
該第一查詢請求包括查詢條件和頁面提示信息,該頁面提示信息用于指示第一頁面中的第一數(shù)據(jù)記錄,該第一頁面為滿足該查詢條件的至少一個數(shù)據(jù)頁面中的數(shù)據(jù)頁面。
該第一查詢請求用于請求該第一頁面中的數(shù)據(jù)記錄。也就是說,該第一查詢請求為分頁查詢請求。在本發(fā)明實施例中,在第一查詢請求中除了包括查詢條件外,還包括頁面提示信息,該頁面提示信息用于指示第一頁面中的第一數(shù)據(jù)記錄,這樣,查詢服務(wù)設(shè)備可以根據(jù)該頁面提示信息快速定位到該第一數(shù)據(jù)記錄,進(jìn)而得到該第一頁面中的數(shù)據(jù)記錄。
可選地,該第一數(shù)據(jù)記錄可以為該第一頁面中的第一條數(shù)據(jù)記錄。
應(yīng)理解,該第一數(shù)據(jù)記錄也可以為該第一頁面中的其他條數(shù)據(jù)記錄,例如,最后一條記錄,或者確定的某一條記錄。
還應(yīng)理解,在本發(fā)明實施例中,該頁面提示信息用于指示第一頁面中的第一數(shù)據(jù)記錄,該頁面提示信息中的具體內(nèi)容可以是該第一數(shù)據(jù)記錄的信息,也可以是其他數(shù)據(jù)記錄的信息,只要其他數(shù)據(jù)記錄與該第一數(shù)據(jù)記錄的關(guān)系確定即可。例如,該頁面提示信息中的具體內(nèi)容可以是上一頁面中的最后一條數(shù)據(jù)記錄的信息,這樣也可以指示下一頁面中的第一條數(shù)據(jù)記錄。
可選地,該頁面提示信息可以包括該第一數(shù)據(jù)記錄的主鍵(Primary Key)信息。這種方式適合于按照主鍵查詢的方式,查詢服務(wù)設(shè)備可以根據(jù)該第一數(shù)據(jù)記錄的主鍵信息快速定位到該第一數(shù)據(jù)記錄。
可選地,該頁面提示信息可以包括該第一數(shù)據(jù)記錄的主鍵信息和與該查詢條件對應(yīng)的索引信息。該索引信息用于確定該查詢條件對應(yīng)的索引。這種方式適合于根據(jù)索引查詢的方式。
在數(shù)據(jù)庫中存儲有數(shù)據(jù)表對應(yīng)的一個或多個索引時,可以采用根據(jù)索引查詢的方式。索引中的索引字段可以為與數(shù)據(jù)表的主鍵不同的字段,索引中的其他字段可以包括主鍵字段。根據(jù)索引查詢的方式為,根據(jù)查詢條件確定待查詢的索引,先在數(shù)據(jù)庫中查詢該索引,根據(jù)索引查詢結(jié)果再在數(shù)據(jù)表中查詢相應(yīng)的數(shù)據(jù)記錄。例如,若查詢條件為“姓名為張”,若數(shù)據(jù)庫中有按照姓名建立的索引,則可以先查詢該索引,再根據(jù)索引查詢結(jié)果,例如查詢到的“張”對應(yīng)的“ID”,查詢數(shù)據(jù)表,獲取相應(yīng)的數(shù)據(jù)記錄。
在根據(jù)索引查詢時,數(shù)據(jù)記錄的排序和分頁都按照在索引中的順序進(jìn)行。在這種情況下,在頁面提示信息包括該第一數(shù)據(jù)記錄的主鍵信息和與該查詢條件對應(yīng)的索引信息可以使查詢服務(wù)設(shè)備快速地在相應(yīng)的索引中定位到該第一數(shù)據(jù)記錄對應(yīng)的索引記錄,進(jìn)而得到該第一數(shù)據(jù)記錄。
220,查詢服務(wù)設(shè)備根據(jù)該頁面提示信息,確定該第一數(shù)據(jù)記錄。
查詢服務(wù)設(shè)備接收到客戶端設(shè)備發(fā)送的第一查詢請求后,根據(jù)該第一查詢請求中的頁面提示信息,確定該第一數(shù)據(jù)記錄。如前所述,由于該頁面提示信息指示第一頁面中的第一數(shù)據(jù)記錄,查詢服務(wù)設(shè)備可以快速定位到該第一數(shù)據(jù)記錄。
230,查詢服務(wù)設(shè)備根據(jù)該第一數(shù)據(jù)記錄和該查詢條件,向該客戶端設(shè)備發(fā)送該第一頁面中的數(shù)據(jù)記錄。
在確定該第一數(shù)據(jù)記錄后,查詢服務(wù)設(shè)備根據(jù)該第一數(shù)據(jù)記錄和該查詢條件,向該客戶端設(shè)備返回該第一頁面中的數(shù)據(jù)記錄。可選地,查詢服務(wù)設(shè)備可以在查詢到該第一頁面中的全部數(shù)據(jù)記錄后,再向該客戶端設(shè)備返回該第一頁面中的數(shù)據(jù)記錄;查詢服務(wù)設(shè)備也可以在每查詢到該第一頁面中的一條數(shù)據(jù)記錄后,就向該客戶端設(shè)備返回該數(shù)據(jù)記錄。
可選地,該查詢服務(wù)設(shè)備可以向該客戶端設(shè)備發(fā)送從該第一數(shù)據(jù)記錄開始的,滿足該查詢條件的預(yù)定數(shù)量的數(shù)據(jù)記錄,該預(yù)定數(shù)量為一個頁面中的數(shù)據(jù)記錄的數(shù)量。
具體而言,該查詢服務(wù)設(shè)備從該第一數(shù)據(jù)記錄開始,查詢滿足該查詢條件的數(shù)據(jù)記錄,并返回給該客戶端設(shè)備。返回方式可以是,查詢到預(yù)定數(shù)量的數(shù)據(jù)記錄后,一次性返回給該客戶端設(shè)備;也可以是每查詢到滿足該查詢條件的一條數(shù)據(jù)記錄后,就返回給該客戶端設(shè)備,直到返回預(yù)定數(shù)量的數(shù)據(jù)記錄為止。
應(yīng)理解,上述從該第一數(shù)據(jù)記錄開始的,滿足該查詢條件的預(yù)定數(shù)量的數(shù)據(jù)記錄為按照查詢過程先后得到的預(yù)定數(shù)量的數(shù)據(jù)記錄。例如,在該第一數(shù)據(jù)記錄為該第一頁面中的第一條數(shù)據(jù)記錄的情況下,該預(yù)定數(shù)量的數(shù)據(jù)記錄為從該第一條數(shù)據(jù)記錄往后查詢得到的數(shù)據(jù)記錄;在該第一數(shù)據(jù)記錄為該第一頁面中的最后第一條數(shù)據(jù)記錄的情況下,該預(yù)定數(shù)量的數(shù)據(jù)記錄為從該第一條數(shù)據(jù)記錄往前查詢得到的數(shù)據(jù)記錄;在該第一數(shù)據(jù)記錄為該第一頁面中的確定的某一條記錄的情況下,該預(yù)定數(shù)量的數(shù)據(jù)記錄為從該第一條數(shù)據(jù)記錄開始按照確定的查詢順序查詢得到的第一頁面的數(shù)據(jù)記錄。
客戶端設(shè)備接收到該查詢服務(wù)設(shè)備根據(jù)該第一查詢請求發(fā)送的該第一頁面中的數(shù)據(jù)記錄后,將該第一頁面中的數(shù)據(jù)記錄呈現(xiàn)給用戶,從而完成分頁查詢。
因此,本發(fā)明實施例的數(shù)據(jù)查詢的方法,采用頁面提示信息指示所請求頁面中的第一數(shù)據(jù)記錄,可以快速地定位到該第一數(shù)據(jù)記錄進(jìn)而獲取所請求頁面中的數(shù)據(jù)記錄,實現(xiàn)快速地分頁查詢,從而能夠提高分頁查詢的效率。
在本發(fā)明實施例中,頁面提示信息可以在之前的查詢過程中存儲到客戶端設(shè)備中,以便于后續(xù)的分頁查詢。下面結(jié)合圖3進(jìn)行說明。
圖3示出了根據(jù)本發(fā)明另一實施例的數(shù)據(jù)查詢的方法的示意性流程圖。同樣地,圖3中的客戶端設(shè)備可以為圖1中的客戶端設(shè)備101;查詢服務(wù)設(shè)備可以為圖1中的查詢服務(wù)設(shè)備102。
圖3的流程可以發(fā)生在圖2的流程之前。
310,客戶端設(shè)備向查詢服務(wù)設(shè)備發(fā)送第二查詢請求。
該第二查詢請求包括查詢條件。
也就是說,該第二查詢請求為普通的查詢請求,即不是分頁查詢請求。
320,查詢服務(wù)設(shè)備根據(jù)該第二查詢請求,向該客戶端設(shè)備發(fā)送滿足該查詢條件的至少一個數(shù)據(jù)頁面的數(shù)據(jù)記錄,以及向該客戶端設(shè)備發(fā)送該頁面提示信息。
具體而言,查詢服務(wù)設(shè)備根據(jù)該第二查詢請求進(jìn)行查詢,向該客戶端設(shè)備返回滿足該查詢條件的數(shù)據(jù)記錄。返回的數(shù)據(jù)記錄或頁面的數(shù)量可以基于用戶的請求。例如,若返回了兩個頁面后,用戶不在需要繼續(xù)查詢,則查詢結(jié)束。另外,在返回該第一數(shù)據(jù)記錄后,例如,返回每個頁面的第一條記錄后,再向該客戶端設(shè)備發(fā)送頁面提示信息。可選地,頁面提示信息可以在該第一數(shù)據(jù)記錄之后發(fā)送,也可以與該第一數(shù)據(jù)記錄同時發(fā)送,本發(fā)明對此并不限定。
可選地,頁面提示信息可以是主動發(fā)送,也可以是基于請求而發(fā)送。
具體地,該客戶端設(shè)備先向該查詢服務(wù)設(shè)備發(fā)送頁面提示信息請求,該頁面提示信息請求用于請求該頁面提示信息;該查詢服務(wù)設(shè)備接收到該客戶端設(shè)備發(fā)送的頁面提示信息請求后,再向該客戶端設(shè)備發(fā)送該頁面提示信息。
可選地,該客戶端設(shè)備可以在接收到該查詢服務(wù)設(shè)備發(fā)送的該第一數(shù)據(jù)記錄后,向該查詢服務(wù)設(shè)備發(fā)送該頁面提示信息請求。
330,客戶端設(shè)備存儲該頁面提示信息。
客戶端設(shè)備接收到該查詢服務(wù)設(shè)備發(fā)送的該頁面提示信息后,存儲該頁面提示信息。這樣,在后續(xù)進(jìn)行分頁查詢時,可以將該頁面提示信息包括到第一查詢請求中,從而實現(xiàn)前述本發(fā)明實施例中的分頁查詢。
下面將結(jié)合具體的例子詳細(xì)描述本發(fā)明實施例。應(yīng)注意,這些例子只是為了幫助本領(lǐng)域技術(shù)人員更好地理解本發(fā)明實施例,而非限制本發(fā)明實施例的范圍。
假設(shè)用戶數(shù)據(jù)如下所示:
{ID=I0000,NAME=NM0000,ADDR=ADDR0000}
{ID=I0001,NAME=NM0001,ADDR=ADDR0001}
{ID=I0002,NAME=NM0002,ADDR=ADDR0002}
{ID=I0003,NAME=NM0003,ADDR=ADDR0003}
{ID=I0004,NAME=NM0004,ADDR=ADDR0004}
{ID=I0005,NAME=NM0005,ADDR=ADDR0005}
{ID=I0006,NAME=NM0006,ADDR=ADDR0006}
{ID=I0007,NAME=NM0007,ADDR=ADDR0007}
{ID=I0008,NAME=NM0008,ADDR=ADDR0008}
{ID=I0009,NAME=NM0009,ADDR=ADDR0009}
{ID=I0010,NAME=NM0010,ADDR=ADDR0010}
........................
{ID=I9998,NAME=NM9998,ADDR=ADDR9998}
{ID=I9999,NAME=NM9999,ADDR=ADDR9999}
字段ID為Primary Key,該字段可以唯一的決定一行數(shù)據(jù)記錄,數(shù)據(jù)記錄也可以稱為記錄。
查詢條件(Condition)為Condition1:{ID=I00%},也就是說,ID=I0000~I(xiàn)0099的所有記錄都是滿足條件的記錄。
假設(shè)每一頁查詢記錄的條數(shù)為5。
1、客戶端設(shè)備(例如可以通過其中的查詢發(fā)起模塊)基于查詢條件Condition1:{ID=I00%}發(fā)起第1頁查詢時,查詢服務(wù)設(shè)備根據(jù)該查詢條件進(jìn)行查詢。例如,查詢服務(wù)設(shè)備會為客戶端設(shè)備初始化一個查詢結(jié)果掃描器Scanner1,通過不斷地調(diào)用查詢結(jié)果掃描器的next(下一條)請求,返回如下五條記錄:
{ID=I0000,NAME=NM0000,ADDR=ADDR0000}
{ID=I0001,NAME=NM0001,ADDR=ADDR0001}
{ID=I0002,NAME=NM0002,ADDR=ADDR0002}
{ID=I0003,NAME=NM0003,ADDR=ADDR0003}
{ID=I0004,NAME=NM0004,ADDR=ADDR0004}
客戶端設(shè)備在讀取第一條記錄時,可通過調(diào)用查詢服務(wù)設(shè)備的接口,獲取第一條記錄的頁面提示信息(StartKeyHint):StartKeyHint_Page1,在StartKeyHint_Page1中可以包括如下信息:查詢時所用到的索引信息,以及Primary Key信息{ID=I0000}。該信息被存儲在客戶端設(shè)備中。
查詢結(jié)果掃描器的每一次next請求,指針都會移動一次。當(dāng)?shù)?頁的5條記錄讀取完成之后,查詢結(jié)果掃描器的指針定位到了第6條結(jié)果的開始位置。
假設(shè)要繼續(xù)查詢下一頁的記錄,則暫時緩存該Scanner1(否則,關(guān)閉該Scanner1,查詢結(jié)束)。
2、假設(shè)基于前面的查詢結(jié)果掃描器Scanner1,繼續(xù)查詢下5條記錄的結(jié)果,即第2頁的結(jié)果。通過不斷地調(diào)用查詢結(jié)果掃描器的next請求,返回如下五條記錄:
{ID=I0005,NAME=NM0005,ADDR=ADDR0005}
{ID=I0006,NAME=NM0006,ADDR=ADDR0006}
{ID=I0007,NAME=NM0007,ADDR=ADDR0007}
{ID=I0008,NAME=NM0008,ADDR=ADDR0008}
{ID=I0009,NAME=NM0009,ADDR=ADDR0009}
客戶端設(shè)備在讀取第一條記錄時,通過調(diào)用查詢服務(wù)設(shè)備的接口,獲取第一條記錄的StartKeyHint信息:StartKeyHint_Page2,在StartKeyHint_Page2中可以包括如下信息:查詢時所用到的索引信息,以及Primary Key信息{ID=I0005}。該信息被存儲在客戶端設(shè)備中。
當(dāng)?shù)?頁的5條記錄讀取完成之后,查詢結(jié)果掃描器Scanner1的指針定位到了第11條結(jié)果的開始位置。
假設(shè)要繼續(xù)查詢下一頁的記錄,則暫時緩存該Scanner1(否則,關(guān)閉該Scanner1,查詢結(jié)束)。
3、假設(shè)基于前面的查詢結(jié)果掃描器Scanner1,繼續(xù)查詢下5條記錄的結(jié)果,即第3頁的結(jié)果。通過不斷地調(diào)用查詢結(jié)果掃描器的next請求,返回如下五條記錄:
{ID=I0010,NAME=NM0010,ADDR=ADDR0010}
{ID=I0011,NAME=NM0011,ADDR=ADDR0011}
{ID=I0012,NAME=NM0012,ADDR=ADDR0012}
{ID=I0013,NAME=NM0013,ADDR=ADDR0013}
{ID=I0014,NAME=NM0014,ADDR=ADDR0014}
客戶端設(shè)備在讀取第一條記錄時,通過調(diào)用查詢服務(wù)設(shè)備的接口,獲取第一條記錄的StartKeyHint信息:StartKeyHint_Page3,在StartKeyHint_Page3中可以包括如下信息:查詢時所用到的索引信息,以及Primary Key信息{ID=I0010}。該信息被存儲在客戶端設(shè)備中。
當(dāng)?shù)?頁的5條記錄讀取完成之后,查詢結(jié)果掃描器Scanner1的指針定位到了第16條結(jié)果的開始位置。
如果此時不再繼續(xù)查詢下一頁的記錄,則關(guān)閉Scanner1,查詢結(jié)束。
4、客戶端設(shè)備基于同樣的查詢條件Condition1:{ID=I00%},以及分頁提示信息StartKeyHint_Page2去查詢已經(jīng)查詢過的第2頁的數(shù)據(jù)。查詢服務(wù)設(shè)備根據(jù)該查詢條件和該分頁提示信息StartKeyHint_Page2進(jìn)行查詢。例如,查詢服務(wù)設(shè)備會為客戶端設(shè)備初始化一個新的查詢結(jié)果掃描器Scanner2,Scanner2在初始化時直接將指針定位在了StartKeyHint_Page2所指示的記錄,即第6條記錄的開始位置,從第6條記錄開始,通過不斷地調(diào)用查詢結(jié)果掃描器的next請求,返回如下五條記錄:
{ID=I0005,NAME=NM0005,ADDR=ADDR0005}
{ID=I0006,NAME=NM0006,ADDR=ADDR0006}
{ID=I0007,NAME=NM0007,ADDR=ADDR0007}
{ID=I0008,NAME=NM0008,ADDR=ADDR0008}
{ID=I0009,NAME=NM0009,ADDR=ADDR0009}
因此,通過上述方案,在查詢已經(jīng)查詢過的頁面的數(shù)據(jù)時,可以快速地定位到該頁面,從而能夠提高查詢的效率。
應(yīng)理解,在本發(fā)明的各種實施例中,上述各過程的序號的大小并不意味著執(zhí)行順序的先后,各過程的執(zhí)行順序應(yīng)以其功能和內(nèi)在邏輯確定,而不應(yīng)對本發(fā)明實施例的實施過程構(gòu)成任何限定。
上文中詳細(xì)描述了根據(jù)本發(fā)明實施例的數(shù)據(jù)查詢的方法,下面將描述根據(jù)本發(fā)明實施例的查詢服務(wù)設(shè)備、客戶端設(shè)備和數(shù)據(jù)系統(tǒng)。
圖4示出了根據(jù)本發(fā)明實施例的查詢服務(wù)設(shè)備400的示意性框圖。
該查詢服務(wù)設(shè)備400可以對應(yīng)于各方法實施例中的查詢服務(wù)設(shè)備,可以具有方法中的查詢服務(wù)設(shè)備的任意功能。
如圖4所示,該查詢服務(wù)設(shè)備400包括:
接收模塊410,用于接收客戶端設(shè)備發(fā)送的第一查詢請求,該第一查詢請求包括查詢條件和頁面提示信息,該頁面提示信息用于指示第一頁面中的第一數(shù)據(jù)記錄,該第一頁面為滿足該查詢條件的至少一個數(shù)據(jù)頁面中的數(shù)據(jù)頁面;
處理模塊420,用于根據(jù)該頁面提示信息,確定該第一數(shù)據(jù)記錄,以及根據(jù)該第一數(shù)據(jù)記錄和該查詢條件,確定該第一頁面中的數(shù)據(jù)記錄;
發(fā)送模塊430,用于向該客戶端設(shè)備發(fā)送該第一頁面中的數(shù)據(jù)記錄。
本發(fā)明實施例的查詢服務(wù)設(shè)備,根據(jù)頁面提示信息可以快速地定位到第一頁面中的第一數(shù)據(jù)記錄進(jìn)而獲取第一頁面中的數(shù)據(jù)記錄,實現(xiàn)快速地分頁查詢,從而能夠提高分頁查詢的效率。
可選地,該第一數(shù)據(jù)記錄為該第一頁面中的第一條數(shù)據(jù)記錄。
可選地,該發(fā)送模塊430具體用于,向該客戶端設(shè)備發(fā)送從該第一數(shù)據(jù)記錄開始的,滿足該查詢條件的預(yù)定數(shù)量的數(shù)據(jù)記錄,該預(yù)定數(shù)量為一個頁面中的數(shù)據(jù)記錄的數(shù)量。
可選地,該頁面提示信息包括該第一數(shù)據(jù)記錄的主鍵信息;或者,
該頁面提示信息包括該第一數(shù)據(jù)記錄的主鍵信息和與該查詢條件對應(yīng)的索引信息。
可選地,該接收模塊410還用于,在接收該客戶端設(shè)備發(fā)送的該第一查詢請求之前,接收該客戶端設(shè)備發(fā)送的第二查詢請求,該第二查詢請求包括該查詢條件;
該處理模塊420還用于,根據(jù)該第二查詢請求,確定滿足該查詢條件的至少一個數(shù)據(jù)頁面的數(shù)據(jù)記錄;
該發(fā)送模塊430還用于,向該客戶端設(shè)備發(fā)送滿足該查詢條件的至少一個數(shù)據(jù)頁面的數(shù)據(jù)記錄,以及向該客戶端設(shè)備發(fā)送該頁面提示信息。
可選地,該接收模塊410還用于,接收該客戶端設(shè)備發(fā)送的頁面提示信息請求,該頁面提示信息請求用于請求該頁面提示信息。
根據(jù)本發(fā)明實施例的查詢服務(wù)設(shè)備400可對應(yīng)于根據(jù)本發(fā)明實施例的數(shù)據(jù)查詢的方法中的查詢服務(wù)設(shè)備,并且查詢服務(wù)設(shè)備400中的各個模塊的上述和其它操作和/或功能分別為了實現(xiàn)前述各個方法的相應(yīng)流程,為了簡潔,在此不再贅述。
圖5示出了根據(jù)本發(fā)明實施例的客戶端設(shè)備500的示意性框圖。
該客戶端設(shè)備500可以對應(yīng)于各方法實施例中的客戶端設(shè)備,可以具有方法中的客戶端設(shè)備的任意功能。
如圖5所示,該客戶端設(shè)備包括:
發(fā)送模塊510,用于向查詢服務(wù)設(shè)備發(fā)送第一查詢請求,該第一查詢請求包括查詢條件和頁面提示信息,該頁面提示信息用于指示第一頁面中的第一數(shù)據(jù)記錄,該第一頁面為滿足該查詢條件的至少一個數(shù)據(jù)頁面中的數(shù)據(jù)頁面;
接收模塊520,用于接收該查詢服務(wù)設(shè)備根據(jù)該第一查詢請求發(fā)送的該第一頁面中的數(shù)據(jù)記錄。
本發(fā)明實施例的客戶端設(shè)備,采用頁面提示信息指示所請求頁面中的第一數(shù)據(jù)記錄,可以實現(xiàn)快速地分頁查詢,從而能夠提高分頁查詢的效率。
可選地,該第一數(shù)據(jù)記錄為該第一頁面中的第一條數(shù)據(jù)記錄。
可選地,該第一頁面中的數(shù)據(jù)記錄為從該第一數(shù)據(jù)記錄開始的,滿足該查詢條件的預(yù)定數(shù)量的數(shù)據(jù)記錄,該預(yù)定數(shù)量為一個頁面中的數(shù)據(jù)記錄的數(shù)量。
可選地,該頁面提示信息包括該第一數(shù)據(jù)記錄的主鍵信息;或者,
該頁面提示信息包括該第一數(shù)據(jù)記錄的主鍵信息和與該查詢條件對應(yīng)的索引信息。
可選地,該發(fā)送模塊510還用于,在向該查詢服務(wù)設(shè)備發(fā)送該第一查詢請求之前,向該查詢服務(wù)設(shè)備發(fā)送第二查詢請求,該第二查詢請求包括該查詢條件;
該接收模塊520還用于,接收該查詢服務(wù)設(shè)備根據(jù)該第二查詢請求發(fā)送的滿足該查詢條件的至少一個數(shù)據(jù)頁面的數(shù)據(jù)記錄,以及接收該查詢服務(wù)設(shè)備發(fā)送該頁面提示信息;
該客戶端設(shè)備500還包括:
處理模塊530,用于存儲該頁面提示信息。
可選地,該發(fā)送模塊510還用于,向該查詢服務(wù)設(shè)備發(fā)送頁面提示信息請求,該頁面提示信息請求用于請求該頁面提示信息。
根據(jù)本發(fā)明實施例的客戶端設(shè)備500可對應(yīng)于根據(jù)本發(fā)明實施例的數(shù)據(jù)查詢的方法中的客戶端設(shè)備,并且客戶端設(shè)備500中的各個模塊的上述和其它操作和/或功能分別為了實現(xiàn)前述各個方法的相應(yīng)流程,為了簡潔,在此不再贅述。
圖6示出了本發(fā)明的又一實施例提供的查詢服務(wù)設(shè)備的結(jié)構(gòu),包括至少一個處理器602(例如CPU),至少一個網(wǎng)絡(luò)接口605或者其他通信接口,存儲器606,和至少一個通信總線603;通信總線603用于實現(xiàn)這些部件之間的連接通信。處理器602用于執(zhí)行存儲器606中存儲的可執(zhí)行模塊,例如計算機(jī)程序。存儲器606可能包含高速隨機(jī)存取存儲器(Random Access Memory,RAM),也可能還包括非不穩(wěn)定的存儲器(non-volatile memory),例如至少一個磁盤存儲器。通過至少一個網(wǎng)絡(luò)接口605(可以是有線或者無線)實現(xiàn)與至少一個其他網(wǎng)元之間的通信連接。
在一些實施方式中,存儲器606存儲了程序6061,處理器602執(zhí)行程序6061,用于執(zhí)行前述本發(fā)明實施例的各個方法。
圖7示出了本發(fā)明的又一實施例提供的客戶端設(shè)備的結(jié)構(gòu),包括至少一個處理器702(例如CPU),至少一個網(wǎng)絡(luò)接口705或者其他通信接口,存儲器706,和至少一個通信總線703;通信總線703用于實現(xiàn)這些部件之間的連接通信。處理器702用于執(zhí)行存儲器706中存儲的可執(zhí)行模塊,例如計算機(jī)程序。存儲器706可能包含高速隨機(jī)存取存儲器(Random Access Memory,RAM),也可能還包括非不穩(wěn)定的存儲器(non-volatile memory),例如至少一個磁盤存儲器。通過至少一個網(wǎng)絡(luò)接口705(可以是有線或者無線)實現(xiàn)與至少一個其他網(wǎng)元之間的通信連接。
在一些實施方式中,存儲器706存儲了程序7061,處理器702執(zhí)行程序7061,用于執(zhí)行前述本發(fā)明實施例的各個方法。
本發(fā)明實施例還提供了一種數(shù)據(jù)系統(tǒng)。如圖8所示,數(shù)據(jù)系統(tǒng)800包括:
查詢服務(wù)設(shè)備810,該查詢服務(wù)設(shè)備810可以是前述本發(fā)明實施例中的查詢服務(wù)設(shè)備;以及
數(shù)據(jù)庫820,該數(shù)據(jù)庫820中包括待查詢的數(shù)據(jù)。
該實施例中的數(shù)據(jù)系統(tǒng)可以對應(yīng)于圖1中的查詢服務(wù)設(shè)備102和數(shù)據(jù)庫103組成的數(shù)據(jù)系統(tǒng),用于處理客戶端設(shè)備的查詢請求并向客戶端設(shè)備返回查詢結(jié)果。
可選地,如圖9所示,該數(shù)據(jù)系統(tǒng)800還可以包括:
客戶端設(shè)備830,該客戶端設(shè)備830可以是前述本發(fā)明實施例中的客戶端設(shè)備。
該實施例中的數(shù)據(jù)系統(tǒng)可以對應(yīng)于圖1中的客戶端設(shè)備101、查詢服務(wù)設(shè)備102和數(shù)據(jù)庫103組成的數(shù)據(jù)系統(tǒng)。
應(yīng)理解,在本發(fā)明實施例中,術(shù)語“和/或”僅僅是一種描述關(guān)聯(lián)對象的關(guān)聯(lián)關(guān)系,表示可以存在三種關(guān)系。例如,A和/或B,可以表示:單獨存在A,同時存在A和B,單獨存在B這三種情況。另外,本文中字符“/”,一般表示前后關(guān)聯(lián)對象是一種“或”的關(guān)系。
本領(lǐng)域普通技術(shù)人員可以意識到,結(jié)合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、計算機(jī)軟件或者二者的結(jié)合來實現(xiàn),為了清楚地說明硬件和軟件的可互換性,在上述說明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計約束條件。專業(yè)技術(shù)人員可以對每個特定的應(yīng)用來使用不同方法來實現(xiàn)所描述的功能,但是這種實現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。
所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為了描述的方便和簡潔,上述描述的系統(tǒng)、裝置和單元的具體工作過程,可以參考前述方法實施例中的對應(yīng)過程,在此不再贅述。
在本申請所提供的幾個實施例中,應(yīng)該理解到,所揭露的系統(tǒng)、裝置和方法,可以通過其它的方式實現(xiàn)。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另外,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口、裝置或單元的間接耦合或通信連接,也可以是電的,機(jī)械的或其它的形式連接。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本發(fā)明實施例方案的目的。
另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以是兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能單元的形式實現(xiàn)。
所述集成的單元如果以軟件功能單元的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在一個計算機(jī)可讀取存儲介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分,或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機(jī)軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機(jī)設(shè)備(可以是個人計算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:U盤、移動硬盤、只讀存儲器(ROM,Read-Only Memory)、隨機(jī)存取存儲器(RAM,Random Access Memory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
以上所述,僅為本發(fā)明的具體實施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到各種等效的修改或替換,這些修改或替換都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以權(quán)利要求的保護(hù)范圍為準(zhǔn)。