報表連 MongoDB,數據量大報表慢,怎麼做分頁?

MongoDB 沒有關係數據庫之類的分頁機制,要實現分頁查詢得硬編碼,可以通過實現 Pageable 接口來自定義分頁類,具體網上有很多介紹。

硬編碼的缺點是實現太複雜了,也不好維護,對報表開發人員的要求有點高。簡單一點的方式是使用支持 MongoDB 分批取數的報表工具,這樣就可以解決大數據量查詢的問題。可以參考這個: 海量清單與分組報表的實現

這裏用了兩個異步線程,取數線程通過封裝好 MongoDB 接口返回查詢遊標將數據分批緩存到本地,呈現線程根據頁數計算出行數到本地緩存中去獲取數據顯示,這樣可以解決頁碼大時翻頁慢問題。

畫個圖感受一下:
imagepng
②和③分別是兩個線程,前者取數線程負責從 MongoDB 裏分批取數緩存,後者呈現線程負責讀緩存做報表呈現。

這樣做以後,除了報表能異步查詢外,還能支持導出 Excel 和打印。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章