2014-01-16 51 views
0

我試圖找到最好的方式來管理內存中的大量數據使用C#而無需訪問數據庫。 (數據庫將用於存儲這些信息的一部分,當他們成爲final)管理內存中大量數據的最佳方式?

當我說「大量的數據」我說的是數百兆字節,我想管理一個複雜的結構,而不是隻有像數百萬條記錄的表。

我需要他們裏面儘可能快地搜索和我需要能夠當他們成爲過時刪除它們的一部分。

幸運的是我可以拆分在不需要某種方式相關的組此數據...所以我並不需要找到或更新數百萬間一排,而是要像找一羣之間可以說另外50,000個,搜索,添加和刪除此組中的數據,並在它過時時刪除所有組。

我有一些項目已經在內存中管理數據,但沒有那麼大,所以我不知道這些方法是否適用於這種情況: -I使用.Net緩存對象,但我從來沒有更多的工作10或20兆字節 -private static List data = new List();我以xml格式存儲數據組,但是我從來沒有使用過幾兆字節的數據對象,一個用於組,另一個用於組最後一種情況,我從來沒有用過超過10兆字節的數據,我有問題需要管理因爲數據表的訪問不是線程安全的

什麼能來管理這種情況的最好方法是什麼?有任何Windows或.NET框架的限制會導致我的問題?

+0

這是一個複雜的任務,如果你真的不覺得有必要寫代碼自己,我認爲你應該看看一些現有的內存數據庫,可以提供這種功能 –

+0

我並不需要寫一些具體的事情如果在內存數據庫中找到可靠的產品......是一個好主意......至少需要考慮的東西。我看到其中一些價格有點貴,其他一些則是免費的,但是從多年的測試版開始。我看到SqLite也可以在內存中工作......也許對我來說可能是一個很好的解決方案。 – user3202167

回答

0

你應該罰款用你的內存將數據存儲在數據結構和數據玩耍。折衷是內存不能用於在同一臺服務器上運行的其他應用程序。另外,當您嘗試將內存中的數據提交到磁盤/數據庫時,大數據所花費的時間更多。

根據您的數據,必須定義結構。如果數據不相關,則應爲每個實體創建不同的對象。

您還需要設備的策略upate /刷新緩存。它可以是每小時,每天,每週;取決於你的需求。