簡體   English   中英

使用Web API處理大量數據

[英]Handling large volume of data using Web API

我們有一個運行時間很長的數據庫查詢,該查詢將填充一個臨時表(我們不應更改此行為),該表將產生6到1千萬條記錄,大約4到6 GB數據。

我需要使用.NET Web API從SQL DB提取數據,並且該API托管在IIS上。 當請求從客戶端發送到API時,查詢將基於不同聯接表中的數據量運行至少5分鍾,並填充臨時表。 然后,API必須從數據庫臨時表讀取數據並將其發送給客戶端。

在不阻止客戶端,不丟失數據庫臨時表,不阻止IIS的情況下,我們如何實現這一要求?

只是在想,如果我使用異步API,我將能夠實現這一目標嗎?

您需要考慮一些事情並且可以做一些事情。

如果您是通過API調用開始查詢執行的,那么如果您同時獲得對該端點的10個調用,會發生什么情況? 死API,這就是要發生的事情。

您可能能夠找到執行查詢的其他觸發器,因此可以每天(例如)每天一次或每4小時運行一次此查詢,然后將結果存儲在永久表中。 然后,API作業只能查看該表,而無需等待任何操作並返回一些數據。

您可以做的第二件事是只返回顯示屏幕所需的數據。 您不會一口氣顯示4-6 GB的數據量,我懷疑那里有一些分頁,並且您可以稍微調整一下代碼,僅一次返回一頁數據。

您沒有說您擁有什么樣的數據,但是如果它不需要經常運行該查詢,那么您肯定可以進行一些改進。

<----報告澄清后編輯---->

好的,因為這是報告,所以這是另一個想法。

目的是確保API本身不會受到壓力,而這需要快速響應。 讓API接收帶有所需參數的請求。 將實際的報告生成活動卸載到另一個服務。

  1. 跟蹤該服務在做什么,以便您可以報告活動的狀態:活動是否開始,完成了,是否需要其他任何條件。 您可以為此使用隊列,或者只是跟蹤數據庫中的作業。
  2. 生成報告文件並將其存儲在某處。
  3. 通過電子郵件向用戶發送附件文件或通過電子郵件發送鏈接,以便用戶可以下載文件。 另一個選擇是在UI中的某個位置提供指向報表的鏈接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM