簡體   English   中英

ASP.NET 應用程序中的數據處理

[英]Data handling in ASP.NET application

我正在編寫一個 Web 應用程序,該應用程序從連接有光伏電池的逆變器獲取數據。 我從 CSV 文件中讀取數據。 每 20 秒,CSV 文件獲得一行包含相應時間點的數據(行包含以下數據:時間戳、當前性能、能量)。

CSV 文件在應用程序啟動時(在控制器中調用索引操作時)保存到數據庫中。 一切正常。

由於數據庫現在以 20 秒的間隔包含數據,因此它的大小正在迅速增加。 由於我在我的網絡應用程序上使用圖表來顯示光伏系統一年來為我提供的能量,因此我必須匯總 20s 的數據,這也需要計算能力。 我也在索引操作中這樣做。

因此,每當用戶打開頁面時,數據就會更新。 例如,如果我從一個視圖切換到另一個視圖並再次返回,則會在關聯的控制器中再次調用索引操作。 所以再次加載頁面需要時間。 所以我的應用程序變慢了。

我需要做什么來解決這樣的問題?

好吧。

在我們的 IT 行業中,我們經常會遇到“數據倉庫”一詞。

這意味着(在大多數情況下)我們有大量的交易數據。 想想人們在亞馬遜上購物所產生的非常高的交易率。 交易量巨大。

但是,如果我們要報告此類數據呢? 假設我們想要按小時計算銷售額,或者甚至可能只需要按天計算。

好吧,我們不存儲數據“房子”的每個事務,而是存儲總和,以及該數據倉庫系統開發人員在給定“選擇”時間段內的總和。

因此,您可能不需要捕獲每 20 秒的數據點。 (也許你這樣做?????)。

所以,正如我所說,每 20 秒,你就會得到一個數據點。 給定一年有 3100 萬秒? 那么這意味着您每年將擁有 150 萬個數據點。

但是,也許您並不需要如此精細的分辨率。 如果你獲取數據,並按 1 分鍾的間隔求和,那么你現在每年只有 525,000 個數據點。 (如果按月報告,那么每月只有 43,000 點)。

但是,也許 5 分鍾的分辨率更能滿足您的需求。 按照這個分辨率,那么一整年的數據就只有 105,120 個數據點。

因此,對於一個月數據的圖表或顯示,我們只有 8,760 個數據點。

因此,如果我們必須(例如)顯示一個月的圖表,那么我們只需要提取 8,700 個數據點。 這些天對任何數據庫系統的大型查詢都不是。

因此,您可能希望將此數據視為一些“微型”數據倉庫項目,在其中您確實松散了一些數據“粒度”,但因此,它仍然足以滿足您的報告需求。

您選擇的時間段或“間隙”將取決於您的要求或需要。

那么,以上內容暗示了什么?

您需要一個讀取 csv 的例程,然后按您選擇的“時隙”對數據進行分組,然后求和到現有數據點,並追加新數據點。

結果,這不僅會大大減少數據的數據行數,而且當然還會顯着加快此類數據的報告和繪圖速度。

因此,您可以輕松地從每年大約 150 萬行數據減少到每年 100,000 行數據。 有了日期索引,然后每天、每周或每月報告此類數據變得更易於管理,並且您將數據減少了 10 倍。 因此,您在數據庫中有更多的空間,更少的數據,並且在 10 年的數據之后,您將只有大約 100 萬行數據——即使對於 SQL Server 的免費“快速”版本來說也不是很多。

此外,由於您無法控制“設備”何時觸發向該 csv 添加數據,我會考慮在您讀取文件之前重命名該文件,因此在某些讀取過程中(完成后刪除),您將減少在 csv 讀取 + 刪除操作期間丟失數據的可能性。

暫無
暫無

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

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