1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        淺談導(dǎo)出Execl的報表數(shù)據(jù)解決方案

        共 1051字,需瀏覽 3分鐘

         ·

        2021-02-20 12:42

        項(xiàng)目中免不了要做一些數(shù)據(jù)導(dǎo)出功能,比如導(dǎo)出前一天的訂單記錄。涉及導(dǎo)出功能可大可小,根據(jù)系統(tǒng)具體的用戶量、一天的訂單量等情況。今天就討論一下怎么設(shè)計(jì)一個合理的導(dǎo)出功能。


        0x01:同步導(dǎo)出

        這個方案最簡單,就只需一個導(dǎo)出接口。這個接口只需實(shí)現(xiàn)根據(jù)用戶條件到數(shù)據(jù)庫查詢相關(guān)數(shù)據(jù),然后在應(yīng)用程序中生成Execl電子表格,最后通過Response把生成的Execl電子表格回寫到客戶端即可

        該方案簡單,因?yàn)槭峭綄?dǎo)出,所以不適用大量數(shù)據(jù)導(dǎo)出。如果使用該方案進(jìn)行大量數(shù)據(jù)導(dǎo)出的話,存在客戶端(瀏覽器)超時的情況,導(dǎo)致導(dǎo)出失敗;因?yàn)闉g覽器與Nginx之間有超時設(shè)置。


        0x02:異步導(dǎo)出

        異步導(dǎo)出一般需要設(shè)計(jì)三個接口。

        • 第一個接口:開啟一個線程對進(jìn)行數(shù)據(jù)查詢,并對查詢到的數(shù)據(jù)進(jìn)行Execl電子表格讀寫操作,同步返回導(dǎo)出狀態(tài)標(biāo)識;

        • 第二個接口:查詢第一個接口的完成狀態(tài),如果完成Execl電子表格操作,則返回true;否則返回false;

        • 第三個接口:根據(jù)第二個接口返回的狀態(tài),如果返回true,就調(diào)用下載Execl電子表格;否則返回false的話繼續(xù)輪詢調(diào)用第二個接口,直到返回true;

        這種方案比較耗服務(wù)器性能,因?yàn)樾枰诙€接口輪詢應(yīng)用服務(wù)器的導(dǎo)出狀態(tài),設(shè)置一個比較合理的輪詢周期顯得非常必要。另外,第一種方案和第二種方案都沒有對導(dǎo)出的結(jié)果進(jìn)行存庫記錄,如果要下載同樣的數(shù)據(jù),要整個流程重新走一遍。這樣的話就引出第三種方案。


        0x03:導(dǎo)出服務(wù)

        該方案需要一張表和兩個接口。

        • 表的作用是用來存儲誰進(jìn)行了數(shù)據(jù)導(dǎo)出,導(dǎo)出的電子表格Execl存放的硬盤目錄

        • 第一個接口:開啟一個線程對進(jìn)行數(shù)據(jù)查詢,并對查詢到的數(shù)據(jù)進(jìn)行Execl電子表格讀寫操作,最后把電子表格的目錄存儲到數(shù)據(jù)庫;同步返回成功;

        • 第二個接口:在導(dǎo)出列表中找出導(dǎo)出的記錄,然后調(diào)用該接口進(jìn)行Execl電子表格下載;

        該方案需要額外做一個管理下載記錄的界面,進(jìn)行下載管理;這個方案的最大好處就是對下載操作進(jìn)行了記錄。如果需要對相同的數(shù)據(jù)導(dǎo)出,只需導(dǎo)出一遍即可。不過增加了存儲的空間,無論數(shù)據(jù)庫還是硬盤,都增加了。


        在實(shí)際項(xiàng)目中使用哪種方案,根據(jù)具體業(yè)務(wù)場景,具體選擇即可。其他文件類型的導(dǎo)出方案也可以參考該文章的方案進(jìn)行操作。

        喜歡,在看



        瀏覽 37
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            成年视频网站在线观看 | 掀起裙子从后面挺进她的身体视频 | 爽娇妻快高h视频 | 成人性生交无码视频 | 成人天堂网 | 日本丰满熟妇69 | 一级A片60分钟免费看 | 男男军警同床互摸同性 | 乱伦大片 | 97超碰免费在线观看 |