有沒有人有關於在磁盤上存儲數據的經驗?我有一個內存建模應用程序,可以進行計算等。基本上,數據存儲爲對象列表,具有嵌套鍵值集合,如Dictionary < int,字典< int,T >>。磁盤存儲的陣列等
現在我使用SQL-Server作爲持久層,但我使用它的很少的功能。所以我想我可以自己寫入/讀取數據到磁盤,以減少依賴並簡化安裝。
所以我寫了一個小程序,以大致這種格式將每個數組寫入磁盤,其中「ObjId」,「Type」,「Valid」和「Count」字樣實際上並不在文件中,它們是第一,第二,第三和第四個int在字節[]中,然後來到< int,T>對。 52來自4 * 4 + 3 *(4 + 8)。 (4個字節整型,8雙)
Bytes: 52
ObjId: 123
Valid: 234
Type: double
Count: 3
1 .23
2 .34
3 .45
在現實生活中有沒有壓痕等,他們是在一個長流中的所有連續的字節。
這很好,只寫一次。但是當我想在中間某處寫一個額外的值時,我必須重寫整個事情。另外我無法輕鬆更新單個值。
一種替代方法是將每個對象寫入單獨的文件,因此我只需重寫該對象。但是,這似乎效率很低,因爲我得到的文件是1kb,但磁盤上有4kB,所以我會浪費空間。
那麼,我需要做些什麼,才能在磁盤上增加寫入這個文件呢?我知道SqlServer有'網頁'它寫入數據,是否要走?
是否有任何圖書館準備去解決這類問題?也許有些虛擬文件可以讓我將它們當作單獨的byte []來處理,但將存儲作爲單個psysical文件處理?理想的情況下壓縮。(推,但誰知道。我以前也被提前:-)
感謝驚訝,
格特 - 揚
嗨,謝謝!我知道BDB是一個mySql引擎,但從來沒有考慮過這個。我會在週末看看它。有一種方法只是把我的字節[]放在那裏,並得到它回來似乎幾乎我所尋找的。我寧願純粹的C#與源代碼,但這應該是成熟的技術,足以用作黑匣子。 – gjvdkamp 2010-11-05 18:15:12