報表連 MongoDB,資料量大報表慢,怎麼做分頁?

xiaohuihui發表於2020-06-23

MongoDB 沒有關聯式資料庫之類的分頁機制,要實現分頁查詢得硬編碼,可以透過實現 Pageable 介面來自定義分頁類,具體網上有很多介紹。

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

這裡用了兩個非同步執行緒,取數執行緒透過封裝好 MongoDB 介面返回查詢遊標將資料分批快取到本地,呈現執行緒根據頁數計算出行數到本地快取中去獲取資料顯示,這樣可以解決頁碼大時翻頁慢問題。

畫個圖感受一下:
imagepng
②和③分別是兩個執行緒,前者取數執行緒負責從 MongoDB 裡分批取數快取,後者呈現執行緒負責讀快取做報表呈現。

這樣做以後,除了報表能非同步查詢外,還能支援匯出 Excel 和列印。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69900830/viewspace-2700071/,如需轉載,請註明出處,否則將追究法律責任。

相關文章