摘要:使用Xml檔案做為小型資料庫的儲存思路
在想用Xml做為小型資料庫時,我就有用過Xml格式作為資料的檔案儲存方式,但那時候明白了一件事情,我使用XmlTextWriter寫入檔案是建立新檔案,之後才寫入Xml格式,但這樣如果資料很多,寫入檔案的時間也就增長,這時候我就在想,這樣使用目前常見的關聯式資料庫不是會更好?針對某個欄位編輯,不需要像Xml這樣一次全部重新寫入檔案,但是基於Xml格式的方便與通用性,如果能改善對I/O沒有常常的寫入,我想對於小型的資料儲存來說應該很棒。
那如何改善這種缺點呢?在.Net Framewok下的XmlDocument提供新增、編輯、移除XmlNode的能力,過程是這樣的,先由XmlDocument載入整份的Xml檔案,然後會在記憶體中建立XML DOM,所以很明顯的是在記憶體中做新增、編輯、移除XmlNode,那我們不可能編輯一個節點的內容就重新寫入檔案,這樣真的會非常糟糕,所以另一種想法就是例如新增、編輯、移除XmlNode了1000次,或者固定5分鐘儲存一次這樣的時候在寫入檔案,這樣大部分的時間都是在記憶體裡面做編輯,速度也會很快,當然,如果檔案內容很重要,我想這過程中最好還有一些備份、還原的機制,避免還沒到下次儲存的時候,剛好主機當機了或程式崩潰了,那可就悲劇囉。