2012-06-13 60 views
0

我有一個將配置文件作爲XML存儲在磁盤上的應用程序。我想在發生崩潰等情況下降低數據文件損壞的風險。似乎常見建議是使用SQLite。使用SQLite替換文件系統

您對使用BLOBs存儲當前XML格式有何看法?該表將如下所示:

CREATE TABLE t (filename TEXT, filedata BLOB) 

,一方面,這看起來不太優雅,但另一方面,它會避免配置轉換爲相應格式的所有工作(以及相應的錯誤)。

+0

聲音效率低下。您需要加載和解析blob以獲取配置值,併爲每次更改保存整個配置文件。 – 2012-06-13 17:00:48

+0

對於文件系統也是如此。運行期間Config保留在內存中,配置讀/寫操作的頻率很低。 –

回答

1

聲音效率低下。您需要加載並解析BLOB以獲取配置值,並保存每次更改的整個配置文件。

我假設你切換到SQLite數據庫的原因是因爲事務機制會給你一些容量的崩潰容錯。如果將每個配置文件存儲爲一個BLOB,那麼在事務完成之前您需要保存整個文件,而不是隻保存應該更快的更新值。

另外,如果您使用的是基於DOM的XML解析器,您最終會同時將BLOB和解析的DOM樹加載到內存中。取決於可能需要大量資源的配置文件的大小和數量。

恕我直言,你最好爲每個配置文件創建一個表,爲每個配置值設置一行。您將獲得更好的讀/寫性能,減少內存使用量並能夠使用SQLite的所有關係機制。