一種分頁查詢方法及裝置的制造方法
【技術領域】
[0001]本發(fā)明涉及空中固件升級(FOTA,Firmware Over The Air)系統(tǒng)領域,尤其涉及一種分頁查詢方法及裝置。
【背景技術】
[0002]隨著大量移動終端用戶進行FOTA升級,FOTA系統(tǒng)產生的數據也隨之大量增加,并持久化存儲到數據庫(如MongoDB數據庫)中,當數據庫的單表寫入的數據量達到千萬級別時,持久化寫入的性能急劇下降,從而嚴重影響FOTA系統(tǒng)在大用戶量下持續(xù)運行的穩(wěn)定性,同時,查詢相應升級數據耗時也隨之增加,嚴重影響升級數據的統(tǒng)計查詢功能。比如,根據實際測試,對MongoDB數據庫進行多條件分頁查詢時,若源數據量為200萬,需耗時16秒左右才會呈現首頁;若源數據量為1000萬,則需耗時兩分鐘左右;那么,如果源數據量達到億級以上,查詢耗時則更加漫長,無法快速響應用戶的需求,大大降低了用戶的使用體驗。
【發(fā)明內容】
[0003]有鑒于此,本發(fā)明的主要目的在于提供一種分頁查詢方法及裝置,能快速響應查詢結果,減少等待時間,提升用戶的使用體驗。
[0004]為達到上述目的,本發(fā)明的技術方案是這樣實現的:
[0005]本發(fā)明提供了一種分頁查詢方法,數據庫中的數據以分表的形式進行存儲,且數據庫中設置有存儲各分表信息的索引表,所述方法包括:
[0006]獲取查詢閾值;
[0007]按照時間倒序方式從所述索引表中截取滿足所述查詢閾值范圍的分表;
[0008]以所截取的分表作為查詢數據源,進行分頁查詢。
[0009]優(yōu)選地,所述索引表中至少包含每個分表中的下述信息:
[0010]表名、創(chuàng)建時間、最小插入時間、最大插入時間、數據量。
[0011 ] 優(yōu)選地,所述獲取查詢閾值,包括:
[0012]根據系統(tǒng)負載情況設定查詢閾值。
[0013]優(yōu)選地,所述按照時間倒序方式從所述索引表中截取滿足所述查詢閾值范圍的分表,包括:
[0014]當無查詢時間區(qū)間條件且無篩選條件時,直接按照時間倒序方式從所述索引表中截取滿足所述查詢閾值范圍的分表。
[0015]優(yōu)選地,所述按照時間倒序方式從所述索引表中截取滿足所述查詢閾值范圍的分表,包括:
[0016]當有查詢時間區(qū)間條件時,結合索引表中所記錄的最小插入時間、最大插入時間,根據所述查詢時間區(qū)間條件進行分表定位;
[0017]判斷符合所述查詢時間區(qū)間條件的分表的總數據量是否小于等于查詢閾值,如果是,則截取符合所述查詢時間區(qū)間條件的分表,并將所述符合所述查詢時間區(qū)間條件的分表作為查詢數據源;如果否,則在滿足所述查詢時間區(qū)間范圍內的分表中,按照時間倒序方式從所述索引表中截取滿足所述查詢閾值范圍的分表。
[0018]優(yōu)選地,當有查詢時間區(qū)間條件、且符合所述查詢時間區(qū)間條件的分表的總數據量大于查詢閾值時,所述方法還包括:
[0019]在返回查詢結果時,輸出第一提示信息;其中,所述第一提示信息用于提醒用戶所述查詢結果的第一查詢時間區(qū)間。
[0020]上述方案中,優(yōu)選地,所方法還包括:
[0021]在返回查詢結果之前,采用異步查詢技術判斷所述查詢時間區(qū)間所跨分表的個數;
[0022]根據所跨分表的個數生成并輸出相應的提示信息。
[0023]本發(fā)明還提供了一種分頁查詢裝置,數據庫中的數據以分表的形式進行存儲,且數據庫中設置有存儲各分表信息的索引表,所述裝置包括獲取單元、截取單元和查詢單元;其中,
[0024]所述獲取單元,用于獲取查詢閾值;
[0025]所述截取單元,用于按照時間倒序方式從所述索引表中截取滿足所述查詢閾值范圍的分表;
[0026]所述查詢單元,用于以所截取的分表作為查詢數據源,進行分頁查詢。
[0027]優(yōu)選地,所述索引表中至少包含每個分表中的下述信息:
[0028]表名、創(chuàng)建時間、最小插入時間、最大插入時間、數據量。
[0029]優(yōu)選地,所述獲取單元,還用于:
[0030]根據系統(tǒng)負載情況設定查詢閾值。
[0031]優(yōu)選地,所述截取單元包括:
[0032]第一截取子單元,用于當無查詢時間區(qū)間條件且無篩選條件時,直接按照時間倒序方式從所述索引表中截取滿足所述查詢閾值范圍的分表。
[0033]優(yōu)選地,所述截取單元還包括:
[0034]第二截取子單元,用于:
[0035]當有查詢時間區(qū)間條件時,結合索引表中所記錄的最小插入時間、最大插入時間,根據所述查詢時間區(qū)間條件進行分表定位;
[0036]判斷符合所述查詢時間區(qū)間條件的分表的總數據量是否小于等于查詢閾值,如果是,則截取符合所述查詢時間區(qū)間條件的分表,并將所述符合所述查詢時間區(qū)間條件的分表作為查詢數據源;如果否,則在滿足所述查詢時間區(qū)間范圍內的分表中,按照時間倒序方式從所述索引表中截取滿足所述查詢閾值范圍的分表。
[0037]優(yōu)選地,所述查詢單元,還用于:
[0038]若符合所述查詢時間區(qū)間條件的分表的總數據量大于查詢閾值,在返回查詢結果時,輸出第一提示信息;其中,所述第一提示信息用于提醒用戶所述查詢結果的第一查詢時間區(qū)間。
[0039]優(yōu)選地,所述查詢單元,還用于:
[0040]在返回查詢結果之前,采用異步查詢技術判斷所述查詢時間區(qū)間所跨分表的個數;根據所跨分表的個數生成并輸出相應的提示信息。
[0041]本發(fā)明所提供的分頁查詢方法及裝置,獲取查詢閾值;根據所述查詢閾值對索引表進行查詢范圍定位,按照時間倒序方式從所述索引表中截取滿足所述查詢閾值范圍內的分表。如此,能快速響應查詢結果,減少了等待時間,提升了用戶的使用體驗。采用本發(fā)明所述技術方案,即便在面對億萬級數據多條件分頁查詢時,也能在極短的時間內向用戶返回查詢結果,加快了查詢速度,并能在返回查詢結果的同時返回真實的查詢時間范圍,以更好地提醒用戶當前查詢結果是基于哪個時間段的數據范圍,大大提升了用戶的體驗。
【附圖說明】
[0042]圖1為本發(fā)明實施例提供的分頁查詢方法的實現流程示意圖一;
[0043]圖2為本發(fā)明實施例提供的索引表與分表的關系示意圖;
[0044]圖3為本發(fā)明實施例提供的無查詢時間區(qū)間條件時所截取的分表的示意圖;
[0045]圖4為本發(fā)明實施例提供的有查詢時間區(qū)間條件時所截取的分表的示意圖;
[0046]圖5為本發(fā)明實施例提供的分頁查詢方法的實現流程示意圖二 ;
[0047]圖6為本發(fā)明實施例提供的分頁查詢裝置的組成結構示意圖一;
[0048]圖7為本發(fā)明實施例提供的分頁查詢裝置的組成結構示意圖二。
【具體實施方式】
[0049]為了能夠更加詳盡地了解本發(fā)明的特點與技術內容,下面結合附圖對本發(fā)明的實現進行詳細闡述,所附附圖僅供參考說明之用,并非用來限定本發(fā)明。
[0050]圖1為本發(fā)明實施例提供的分頁查詢方法的實現流程示意圖一,所述分頁查詢方法可應用于FOTA系統(tǒng)中,FOTA系統(tǒng)的數據庫中的數據以分表的形式進行存儲,且數據庫中設置有存儲各分表信息的索引表,如圖1所示,該分頁查詢方法主要包括以下步驟:
[0051]步驟101:獲取查詢閾值。
[0052]優(yōu)選地,所述獲取查詢閾值,可以包括:
[0053]根據系統(tǒng)負載情況設定查詢閾值。
[0054]具體地,可以由管理員來設定查詢閾值,也可以由FOTA系統(tǒng)根據實際運行情況自適應設定查詢閾值。
[0055]也就是說,所述查詢閾值是可變的(即動態(tài)的),以便于更好地均衡FOTA系統(tǒng)的負載,更快地向用戶返回查詢結果。
[0056]這里,可以為管理員提供一個能夠修改查詢閾值的UI界面,以由管理員來設定查詢閾值。
[0057]當然,所述Π界面可以是支持觸摸輸入的界面。當支持觸摸輸入時,管理員可通過用手指或觸摸筆等觸摸形式來設定查詢閾值;當不支持觸摸輸入時,可通過對相關按鍵的操作來設定查詢閾值。
[0058]具體地,一旦確定查詢閾值之后,立即生效。
[0059]步驟102:按照時間倒序方式從所述索引表中截取滿足所述查詢閾值范圍的分表。
[0060]優(yōu)選地,所述按照時間倒序方式從所述索引表中截取滿足所述查詢閾值范圍的分表,可以包括:
[0061]當無查詢時間區(qū)間條件且無篩選條件時,直接按照時間倒序方式從所述索引表中截取滿足所述查詢閾值范圍的分表。
[0062]優(yōu)選地,所述按照時間倒序方式從所述索引表中截取滿足所述查詢閾值范圍的分表,可以包括:
[0063]當有查詢時間區(qū)間條件時,結合索引表中所記錄的最小插入時間、最大插入時間,根據所述查詢時間區(qū)間條件進行分表定位;
[0064]判斷符合所述查