2012-07-28 96 views
0

我希望你能幫助我解決這個問題。 我目前正在重新設計一個應用程序(.NET),現在我已經到了部分是我 必須過時的數據存儲。處理大量的二維數據

基本上每10秒左右(可以變化,但這是最快的)我得到一個新的數據集,包含一個浮點數值和一個timeStamp數組。 (這些數組可能非常大,所以我必須處理大量數據[可以達到數百MB或甚至GB)。數組的長度在每個過程中都是固定的(讓它調用它),但在不同的過程中會有所不同運行。我一次只能看一次。

所以我的問題是:

如何保存這些數據,如何處理它在我的應用程序?

特別是,如果我想與特定的時間戳來讀出的數據集,

從一個給定的索引

和給定的索引範圍的浮點值的2D列表和時間戳範圍浮點值的列表。

[編輯:數據需要被存儲在本地]

回答

0

Azure的表存儲...........

+0

感謝您的回答,但我應該補充說,數據需要存儲在本地。 – McMonkey 2012-07-28 01:44:51

+0

即使是免費的SQL Express也能達到10 GB http://www.microsoft.com/sqlserver/en/us/editions/2012-editions/express.aspx – Paparazzi 2012-07-28 02:24:53

0

我會使用一個數據庫建議。

Run(int Id, datetime Timestamp) - PK: Id 
Entry(int RunId, int Index, float Value) - PK: RunId, Index 

然後,您可以

SELECT Index, Value 
FROM Entry E 
    INNER JOIN Run R 
     ON E.RunId = R.Id 
WHERE R.Timestamp = '00-00-00 00:00:00' 

而且

SELECT RunId, Value 
FROM Entry 
WHERE Index = 0 

而且

SELECT Timestamp, Index, Value 
FROM Entry E 
    INNER JOIN Run R 
     ON E.RunId = R.Id 
WHERE 
    R.Timestamp <= '00-00-00 00:00:00' AND 
    R.Timestamp >= '00-00-00 00:00:00' AND 
    E.Index <= 0 AND 
    E.Index >= 0 

更換0和'00 -00-00 00:00:00' 與適當的數據。

+0

並確保您將所有正確的約束,例如外部從Entry.RunId到Run.Id的關鍵約束以及Run.Id上的標識 – kd8azz 2012-07-28 01:55:01