2012-07-28 77 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