我需要實現一些原子寫入輔助存儲。我怎樣才能做出這個傻瓜證明?fs.write(); fs.flush();它何時真的寫入磁盤?如果核心恐慌或停電怎麼辦?
如果我使用File.Open打開一個C#文件句柄,我將收到一個句柄。我可以寫一些數據給它。沖洗並關閉它。但我仍然有一些問題。我猜下面的陳述是真的嗎?
數據可能不會寫入到磁盤,但在Windows磁盤高速緩存,而存在
數據可能不會寫入到磁盤,但在HDD緩存而存在
這將導致以下問題:
停電會使編輯我做了回覆的文件(在交易FS像NTFS)
內核恐慌將使編輯我做了回覆的文件中(在交易FS像NTFS)
我是正確在我的假設?如果是這樣,我該如何做一個傻瓜證明寫入磁盤? 我已經看了一下NoSQL,並一直認爲可能會有一個nosql服務器可以與系統接近,而不是返回給我軟件,直到它可以保證字節寫入磁盤。
所有的意見和想法,歡迎
延
[編輯] 也許有時間我可以是確保所有更改寫入物理磁盤之前,等待具體金額是多少?
值得注意的是,MSMQ有4MB的限制 - 所以你會限制排隊文件的大小。 –
如果你正在談論大量的數據,你可能會得到一個自定義隊列。 –
你確定嗎? MSMQ會起作用嗎? MSMQ做什麼神奇的事情,我不能在C#本身做?我寧願不使用MSMQ,因爲我從早期的項目中獲得了很糟糕的經驗。在虛擬環境中速度非常慢,我需要一些可以保持排序的東西。 –