2016-10-11 37 views
0

所以,我一直在尋找一些關於寫入文件的性能問題的資源。我遇到了僅追加文件和事務日誌的概念。我沒有找到的是典型的格式,或者這些文件的高效格式。寫入附加文件時使用什麼文件格式?

我可能是錯的,但它似乎可以讀取和寫入同一個文件,但我還沒有找到任何簡單的實現示例。好像作者不得不留下文件中的數據細節,或者可能是一個可以解析的完全描述性格式。

對於如何實現事務日誌或僅附加文件實現有很好的參考嗎?也許甚至更好:描述僅用於追加文件實現的格式?

回答

0

您的問題非常廣泛,很難推薦單一方法。但是由於您正在查看僅附加選項,因此您需要一種不需要頁腳的格式。例如。你不能使用XML,因爲XML必須有結束標籤,並且你不會簡單地追加數據。

一個明顯的選項是分隔文件格式,無論是製表符還是逗號分隔的文本。它們實際上是普遍的和明確的。它們也非常緊湊,只需要一個字符來分隔字段。但是,它們不適用於逐行更改的數據。例如。一行具有A,B,C字段的值,但另一行具有A,D和E字段的值。在這種情況下,您可能需要一種格式來定義每條記錄中記錄中的數據類型。這種格式的一個例子是HL7(https://en.wikipedia.org/wiki/Health_Level_7)。它是一個分隔格式,但每行都有一個表示記錄類型的「標題」。

如果您正在尋找更高性能的選項,您可以根據自己的數據想出自己的格式,甚至以二進制格式存儲它,甚至使用壓縮(請參閱DeflateStream https://msdn.microsoft.com/en-us/library/system.io.compression.deflatestream(v=vs.110).aspx)以減少文件I/O.這會使寫入操作佔用更多的CPU資源,但總體來說I/O速度通常較慢,特別是因爲文本壓縮得很好,最終可能會提高性能。你必須進行基準測試以確保你的用例。

最後,您需要一個可以管理寫入(緩存/隊列寫入,保留文件處理程序等)的類,以便可以在一個地方簡化和同步調用代碼。如果調用者可以繼續工作,並且編寫者將確保數據進入,或者如果這是「事務日誌」,則表示同步丟失是不可接受的,並且調用者必須確保寫入其實發生了。

同樣,這是非常高層次的信息,因爲您的請求只是模糊和高級別。如果你想出更多的細節,也許我們可以更好地幫助你。

相關問題