2010-05-20 60 views
2

問候,從數據記錄器中緩存數據的方法

我一直在研究與數據記錄器交互的C#.NET應用程序。用戶可以查詢和獲取指定時間段的日誌,並查看數據圖。通常,每分鐘創建一個新的數據日誌,並存儲少量參數的測量值。爲了從記錄器中獲得有意義的信息,需要獲取合理數量的日誌 - 數據至少需要幾天。硬件接口是設備上的UART到USB模塊,它將傳輸限制在最大約30個記錄/秒。在讀取數天/數週的數據時,這會變得非常緩慢。

我想要做的是提高用戶的感知性能。我意識到,在硬件速度限制的情況下,用戶至少第一次獲得更大的數據集時必須等待完整的下載週期。我的目標是緩存應用程序看到的所有數據,以便在再次請求時可以更快地獲得數據。我一直在考慮的方法是使用像SqlServerCe這樣的輕量數據庫,它可以在收到數據日誌時存儲它們。然後我希望在查詢設備的日誌之前先搜索緩存。緩存將隨請求獲取的任何尚未緩存的日誌進行更新。

最後我的問題 - 你會認爲這是一個很好的方法嗎?你能想到更好的選擇嗎?我試圖搜索SO和Google來強化這個想法,但我主要討論Web請求/內容緩存。

感謝您的任何反饋!

回答

2

似乎是一個非常合理的方法。就我個人而言,我會使用SQL CE進行存儲,確保您索引包含記錄日期時間的列,然後在索引上使用TableDirect獲取和插入數據,以便快速實現。由於您的數據已按時間順序排列,因此不需要涉及任何緩慢的SQL查詢處理器,只需查找日期(或結束)並使用SqlCeResultSet進行前滾即可。您最終只能通過I/O限制速度。我在一個項目中進行了真正非常類似的工作,並發現使用SQLCE的TableDirect與平面二進制文件一樣快。

1

我想你是在正確的軌道上想要本地存儲在一些可查詢的形式。

我強烈推薦SQLite。有一個.NET類here