我在我的Windows窗體應用程序的工作目錄中存儲了大量存儲在XML文件中的數據,173 MB(460萬行)。這是將數據表寫入XML文件的結果。數據表原來是從查詢填充到SQL服務器的。尋找關於在本地磁盤上存儲數據的想法
我將它存儲在本地而不是從服務器請求它的原因是數據請求花費了40秒以上,並且有時超時並且數據是靜態的並且永遠不會改變,而且用戶可以脫機並仍然使用這些數據。
將文件加載回數據表需要20-30秒。我對從磁盤加載所花費的時間並不太擔心,因爲我讓用戶知道數據正在加載並且需要耐心。不過,我不喜歡XML文件格式,我正在尋找磁盤存儲的其他想法。
數據表只是用作收集對象的最終數量的中間人。如果你有要求,我想聽聽他們。
我希望遠離數據庫解決方案並傾向於採用二進制文件方式。下面是我的第一次嘗試,但我得到一個內存不足的異常:
byte[] b = null;
using (MemoryStream stream = new MemoryStream())
{
BinaryFormatter bformatter = new BinaryFormatter();
bformatter.Serialize(stream, timeData);
b = stream.ToArray();
}
using (FileStream fileStream = new
FileStream("brad.bin", FileMode.Create, FileAccess.Write))
{
fileStream.Write(b, 0, b.Length);
}
你能說你爲什麼「希望遠離數據庫解決方案走」?正如許多答覆者指出的那樣,這似乎是一個完美契合輕型本地數據庫的方法:如果您解釋了您認爲會導致錯誤的設計約束,也許人們可能會提出其他建議。 – itowlson 2009-12-18 22:39:23
我只是希望避免它。它只是似乎很多工作去與很少的益處 – Brad 2009-12-18 22:44:52
這是非常少的額外工作。 SQLite甚至將自己定義爲「零管理數據庫」。 – Joe 2009-12-19 08:47:19