我試圖實現一個文件存儲機制,該機制在單個文件中保存了大量不定大小的記錄,保證記錄集將始終可恢復到一致狀態,即使系統在硬件故障水平。內存映射文件中的數據是否保證順序刷新?
到目前爲止,我提出的每個方案都是按順序寫入數據的關鍵。某些數據片段會附加到每條記錄的末尾,以確認寫入成功。但是,如果數據在刷新時不一定順序寫入磁盤,則可能在內容數據之前寫入確認數據。
周圍有此兩個明顯的方式,但兩者都不可取:
- 刷新內容,然後寫入確認並刷新它。增加額外的沖洗可能會降低性能。
- 在確認中包含校驗和(需要讀取內容以確認其有效)。
我在Windows上使用C#(32位和64位)和.NET 4.0的內存映射文件執行
第二個想法(驗證數據,時間戳,序列號和校驗和)似乎是合法的。但是,一般來說,您應該查看高可用性羣集,並在網絡中使用不同的機器。所有記錄或日誌寫入都需要通過網絡複製到兩臺或更多臺機器上。您無法從單個機器提取任何保證期限。 – rwong 2014-10-13 21:15:31