[發(fā)明專利]一種時(shí)間密集大數(shù)據(jù)量的B/S分區(qū)間分頁查詢方法有效
| 申請(qǐng)?zhí)枺?/td> | 201210338858.X | 申請(qǐng)日: | 2012-09-13 |
| 公開(公告)號(hào): | CN102880685A | 公開(公告)日: | 2013-01-16 |
| 發(fā)明(設(shè)計(jì))人: | 李倩倩;呂江花;田徑;文喬;馬世龍 | 申請(qǐng)(專利權(quán))人: | 北京航空航天大學(xué) |
| 主分類號(hào): | G06F17/30 | 分類號(hào): | G06F17/30 |
| 代理公司: | 北京永創(chuàng)新實(shí)專利事務(wù)所 11121 | 代理人: | 周長琪 |
| 地址: | 100191*** | 國省代碼: | 北京;11 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 時(shí)間 密集 數(shù)據(jù)量 區(qū)間 分頁 查詢 方法 | ||
1.一種時(shí)間密集大數(shù)據(jù)量的B/S分區(qū)間分頁查詢方法,其特征在于,用戶通過瀏覽器端輸入初始查詢條件,在請(qǐng)求某一頁或某一區(qū)間時(shí),服務(wù)器端根據(jù)以下步驟獲取請(qǐng)求結(jié)果數(shù)據(jù):
步驟1:收集本次用戶在瀏覽器端輸入的查詢條件,放入查詢條件queryCondition中,并獲取每個(gè)區(qū)間包含的最多頁數(shù)cacheSize,每頁包含的最多數(shù)據(jù)條目數(shù)pageSize,以及兩條數(shù)據(jù)間最短時(shí)間間隔span(ms),每個(gè)區(qū)間最多的結(jié)果條目數(shù)intervalTimeNum=cacheSize*pageSize;所述的查詢條件queryCondition為一數(shù)據(jù)結(jié)構(gòu),設(shè)置的參數(shù)包括:期望查詢的數(shù)據(jù)的起始時(shí)間startTime、結(jié)束時(shí)間endTime、期望查詢的參數(shù)編號(hào)、期望查詢的數(shù)據(jù)頁page、已查詢過的區(qū)間集合qIntervals、本次查詢的查詢編號(hào)qNum、以及本次查詢的區(qū)間的總頁數(shù)pageNum,除pageNum僅在服務(wù)器端設(shè)置和使用外,其他參數(shù)均由瀏覽器端設(shè)置并傳遞到服務(wù)器端;當(dāng)前查詢的頁page=queryCondition.page,當(dāng)前查詢編號(hào)qNum=queryCondition.qNum;首次請(qǐng)求,queryCondition.page為1;
步驟2:設(shè)置本次查詢的緩存文件qNum.txt存放于web服務(wù)器下該用戶的目錄中,用filepath表示文件的完整路徑;緩存文件qNum.txt的每行對(duì)應(yīng)已查詢過的區(qū)間的一頁數(shù)據(jù)的起始時(shí)間和結(jié)束時(shí)間以及該頁所屬區(qū)間編號(hào),每行的格式為:第一個(gè)時(shí)間,最后一個(gè)時(shí)間,所屬區(qū)間;
步驟3:根據(jù)當(dāng)前查詢的頁page及cacheSize,獲得當(dāng)前查詢的頁所在的區(qū)間interval:interval=(page-1)/cacheSize+1,然后判斷是否是第一次查詢?cè)搮^(qū)間,若是,執(zhí)行步驟4;若否,打開本次查詢對(duì)應(yīng)的緩存文件,定位到第page行,讀出該行數(shù)據(jù),將該行中記錄的第一個(gè)時(shí)間賦值給queryConditon.startTime,第二個(gè)時(shí)間賦值給查詢條件的結(jié)束時(shí)間queryCondition.endTime,執(zhí)行步驟10;
步驟4:若page=1,直接執(zhí)行步驟5;若page>1,從本次查詢的緩存文件中讀出第page-1行中的最后一個(gè)時(shí)間,然后設(shè)置查詢條件的開始時(shí)間queryCondition.startTime為該最后一個(gè)時(shí)間+span(ms),然后執(zhí)行步驟5;若page<1,返回有0條數(shù)據(jù)的結(jié)果集,本次請(qǐng)求結(jié)束;
步驟5:根據(jù)查詢條件queryCondition進(jìn)行查詢分解,構(gòu)造SQL語句,去每個(gè)相關(guān)的數(shù)據(jù)庫表中分別獲取符合查詢條件的最小的前intervalTimeNum個(gè)時(shí)間點(diǎn);
步驟6:將步驟5得到的所有時(shí)間點(diǎn)集合進(jìn)行歸并排序,結(jié)果放入臨時(shí)數(shù)組tempTimeArray中;若tempTimeArray中有0個(gè)時(shí)間點(diǎn),則返回有0條數(shù)據(jù)的結(jié)果集,本次請(qǐng)求結(jié)束,否則執(zhí)行步驟7;
步驟7:用length表示tempTimeArray中時(shí)間點(diǎn)個(gè)數(shù),size表示當(dāng)前區(qū)間總數(shù)據(jù)條數(shù),若length>=intervalTimeNum,則size=intervalTimeNum,當(dāng)前區(qū)間有cacheSize頁;否則,size=length,若size%pageSize=0,則當(dāng)前區(qū)間有size/pageSize頁,若size%pageSize≠0,則當(dāng)前區(qū)間有size/pageSize+1頁,將當(dāng)前區(qū)間的總頁數(shù)暫存于queryCondition.pageNum中;
步驟8:打開緩存文件qNum.txt,根據(jù)步驟6記錄的臨時(shí)數(shù)組tempTimeArray,以追加的方式在緩存文件中順序?qū)懭氘?dāng)前區(qū)間每一頁第一條數(shù)據(jù)和最后一條數(shù)據(jù)的時(shí)間點(diǎn),并記錄每一頁所屬的區(qū)間;
具體第i(i從1遞增到queryCondition.pageNum)頁的第一個(gè)時(shí)間為tempTimeArray[(i-1)*pageSize],若1<=i<queryCondition.pageNum,則最后一個(gè)時(shí)間為tempTimeArray[i*pageSize-1],若i=queryCondition.pageNum,則最后一個(gè)時(shí)間為tempTimeArray[size-1];
步驟9:將查詢條件中的開始時(shí)間queryCondition.startTime設(shè)置為當(dāng)前區(qū)間第一頁的第一個(gè)時(shí)間,結(jié)束時(shí)間queryCondition.endTime設(shè)置為當(dāng)前區(qū)間第一頁的最后一個(gè)時(shí)間;
步驟10:根據(jù)查詢條件queryCondition進(jìn)行查詢分解,構(gòu)造SQL語句,去每個(gè)相關(guān)的數(shù)據(jù)表中分別獲取數(shù)據(jù);
步驟11:將得到的所有數(shù)據(jù)集進(jìn)行結(jié)果拼接,不同數(shù)據(jù)集相同時(shí)間點(diǎn)的數(shù)據(jù)拼接到一條結(jié)果數(shù)據(jù)中,保存在以時(shí)間點(diǎn)為key,該時(shí)間點(diǎn)上的結(jié)果數(shù)據(jù)為value值的哈希表resHash中;每條結(jié)果數(shù)據(jù)也是一個(gè)哈希表,以結(jié)果集列名為key,結(jié)果數(shù)據(jù)在該列上的值為value;
步驟12:將所得的resHash構(gòu)造成最終返回到前臺(tái)的結(jié)果列表resList;判斷是否是第一次查詢當(dāng)前區(qū)間,若是,將該區(qū)間的總頁數(shù)queryCondition.pageNum插入resList的第一條數(shù)據(jù)前,然后執(zhí)行步驟13,若否,直接執(zhí)行步驟13;
步驟13:將結(jié)果列表resList返回前臺(tái)顯示,本次請(qǐng)求結(jié)束。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于北京航空航天大學(xué),未經(jīng)北京航空航天大學(xué)許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201210338858.X/1.html,轉(zhuǎn)載請(qǐng)聲明來源鉆瓜專利網(wǎng)。
- 同類專利
- 專利分類
G06F 電數(shù)字?jǐn)?shù)據(jù)處理
G06F17-00 特別適用于特定功能的數(shù)字計(jì)算設(shè)備或數(shù)據(jù)處理設(shè)備或數(shù)據(jù)處理方法
G06F17-10 .復(fù)雜數(shù)學(xué)運(yùn)算的
G06F17-20 .處理自然語言數(shù)據(jù)的
G06F17-30 .信息檢索;及其數(shù)據(jù)庫結(jié)構(gòu)
G06F17-40 .數(shù)據(jù)的獲取和記錄
G06F17-50 .計(jì)算機(jī)輔助設(shè)計(jì)
- 時(shí)間同步裝置、時(shí)間同步系統(tǒng)和時(shí)間同步方法
- 時(shí)間校準(zhǔn)裝置和時(shí)間校準(zhǔn)方法
- 時(shí)間同步系統(tǒng)及時(shí)間同步方法
- 時(shí)間同步方法、時(shí)間同步系統(tǒng)、時(shí)間主設(shè)備以及時(shí)間從設(shè)備
- 時(shí)間控制裝置和時(shí)間控制方法
- 時(shí)間測試電路及時(shí)間測試方法
- 時(shí)間的飛行時(shí)間
- 局部激活時(shí)間的時(shí)間變換
- 時(shí)間測量電路、時(shí)間測量芯片及時(shí)間測量裝置
- 時(shí)間同步方法與時(shí)間同步系統(tǒng)
- 控制壓縮數(shù)據(jù)量
- 一種基于數(shù)據(jù)庫的數(shù)據(jù)更新方法和系統(tǒng)
- 數(shù)據(jù)量的處理
- 視頻播放方法、裝置及終端
- 一種實(shí)現(xiàn)時(shí)鐘恢復(fù)的方法及裝置
- 用于監(jiān)測端口數(shù)據(jù)量的方法及裝置
- 降低視頻播放延時(shí)的方法、裝置、計(jì)算機(jī)設(shè)備和存儲(chǔ)介質(zhì)
- 一種數(shù)據(jù)處理方法及裝置
- 文件讀取方法、裝置、計(jì)算設(shè)備及存儲(chǔ)介質(zhì)
- 數(shù)據(jù)量處理方法以及系統(tǒng)、額度分配方法以及系統(tǒng)





