我目前正在爲監控系統開發當前媒體存儲的升級(用於存儲視頻/音頻/元數據),並且我正在將錄製結構重新設計爲更強大的解決方案。避免數據損壞的文件結構
我需要創建一些數據文件中存儲的數據的索引數據,所以我創建一個索引文件結構,但我關心硬盤故障(想象一下,如果在寫入期間切斷電源索引文件,它將成爲腐敗,因爲數據很可能會被寫入一半)。 我已經設計瞭如何存儲索引,但我擔心的是相對於電源故障或磁盤故障時的數據損壞
因此,有誰知道避免寫入時數據損壞的技術?
我已經搜索了一點,發現沒有好的解決方案,一種解決方案是創建一個寫入文件的所有內容的日誌,但是接下來我將有更多的I/O每秒(我關心的是每秒的I/O數量也應該儘可能少)。
我想出的是複製索引文件中的敏感數據以及時間戳和校驗和字段。例如:
字段1字段2字段3時間戳校驗
字段1字段2字段3時間戳校驗
所以,我有數據寫入兩次,如果我讀文件時,第一組字段已損壞(校驗不匹配),我有第二組字段應該是可以的。我相信腐蝕發生在寫作如果停在中間,所以,例如,當軟件寫第一組字段和停電時,第二組仍然完好無損......如果第二組電源故障套正在寫,第一個已經完好無損。
你們認爲這個解決方案是什麼?它是否避免數據損壞?
順便說一句,我不能使用任何類型的數據庫對這種存儲或事務的NTFS由於限制與交易NTFS
任何想法,歡迎,感謝部署系統!
使用數據庫而不是重新發明輪子。你說你不能使用數據庫,但這聽起來只是假的。爲什麼不是? – 2012-04-17 16:51:31
我與大衛,使用數據庫是更明顯的方式,檢查火鳥[斷電後恢復Firebird數據庫需要多少時間?](http://www.firebirdfaq.org/faq43/) – RRUZ 2012-04-17 16:52:40
那麼,在監控行業軟件中,數據庫永遠不會用於存儲視頻/音頻數據,而是用於存儲配置,日誌,而不是用於存儲與視頻/音頻相關的數據。視頻/音頻文件必須是獨立的,就像一個視頻文件(.AVI,WMV ...)。數據庫系統對我們需要實現的性能也有太多的控制和開銷。如果我需要存儲常規數據,我肯定會使用數據庫。 – Eric 2012-04-17 17:10:02