2012-12-21 37 views
11

我一直在研究一個項目,該項目從我想要的模擬中生成的輸出量爲10 - 1億個爲未來的分析儲存。數據的組織有幾種自然級別,例如教室舉行採取有少量不同的表現指標的測試的學生。從.net(SQL與平面文件)中存儲10 - 1億個模擬輸出的最佳方式

似乎我的數據是邊界線,因爲它能夠一次裝入內存(假定計算模擬需要在內存中進行相當數量的數據來進行計算),但是我沒有立即需要立即爲我的程序提供所有數據。

我在考慮將計算值輸出到SQL數據庫還是平面文本文件是否更好。我正在尋找關於哪種方法可能更快/更易於維護的建議(或者如果您有另一種存儲我對此公開的數據的建議)。

我不需要能夠與其他人共享數據,或擔心訪問數據年限後的數據。我只需要一種方便的方法來避免每次我想對數值分析進行調整時重新生成模擬結果。

回答

3

不速之客,聽起來好像將每個模擬運行的結果保存到一個平面文件中會更好。它不一定是一個文本文件 - 它可能是二進制文件。

經過一次或多次模擬運行後,可以讀取這些文件並將其放入數據倉庫中供以後分析。

+2

如果數據是在.NET對象,二進制序列化可能會神奇的工作。 – SWeko

4

我會考慮使用數據庫 - 如果沒有某種分類方案的文件系統,1億個文件太多,而數據庫可以輕鬆處理這麼多行。你可以將輸出序列化成一個BLOB列,所以你不必映射它。另外,考慮到SQL Server有file stream access,所以這可能本質上是一種混合方法,SQL爲你管理這些文件。

2

將數據從RDBMS服務器加載到內存中的信封速率大約爲每秒10K條記錄。如果您有100M記錄,並且您必須在某個時間點使用所有數據,則您大約需要三個小時才能加載數據。那是在你做任何計算之前!

普通文件可以快幾個數量級。你可以用基於文本的文件快速獲得;進去的二進制文件將會以犧牲數據文件的可讀性爲代價來提高速度。

相關問題