2011-12-14 29 views
3

我正在將一個複雜的過程從SQL移動到一個.NET應用程序。我只是通過拉下SQL所需的數據,然後將數據存儲在數據表中來採取暴力方法。通過使用流水線模式,我打破了可以並行處理的流程(不依賴於其他流程,也不處理相同的數據位)。在內存替代數據集

一切都很好,但我想知道是否有內存中的SQL解決方案比DataSet/DataTable結構執行更好。我們一次談論50k行,最多支持1m支持數據行(讀取5b行)。 1行(所有支持的數據行)的行大小可能在1K左右(由於大字符串)。

我的問題是具體關於數據集的性能,內存開銷和持久性。爲了恢復目的,我需要將每個階段的數據序列化到磁盤。

將行映射到強類型模型會更好嗎?我不需要任何關係或數據集的其他好處;我用自己的並行處理替換了大多數搜索功能。

數據只使用基本類型,沒有斑點,溪流,地理等

+0

只要將它轉換爲強類型模型,我會說它取決於您所代表的數據。另外,你在內存中試圖對數據做什麼/一次?瞭解這可能會幫助我和他人確定最佳方法/最佳建議。 – JesseBuesking 2011-12-14 23:57:07

+0

需要發生大約100個不同的過程。檢查重複記錄,數據計算和聚合,更新,刪除等。所得到的最終數據集被推回到SQL。一些進程需要連接和組功能。 – 2011-12-14 23:59:10

回答

3

對於本地SQL操作,看看SQLite的。我不記得它是否可以在內存中獨佔運行,但是在磁盤緩存和事務日誌關閉的情況下,它可能會非常接近。

多年前,Steve Shaunessey在Borland開發了一種快速的內存中SQL引擎。我不知道它是否曾經過產品化。看看Embarcadero.com網站,看看他的工作是否存在殘餘。

我注意到aidaim.com發佈了一個內存中的SQL引擎。沒有經驗,僅供參考。

也考慮LINQ進行內存查詢操作。如果您注意自己在做什麼,那麼LINQ的查詢組合和延遲執行對於大數據IMO來說工作得很好。而且,不需要SQL解析器。