2011-10-31 51 views
1

我被要求使用一個相當鎖定的內容管理系統來創建一個人造博客。我沒有能力將數據庫用於內容存儲,因此我正在挑戰使用XML來存儲有關文章的數據;基本的東西,如日期,標題,摘錄,標籤和內容,並使用jQuery來渲染頁面。將XML用於數據存儲

文章篇幅不會太長,但是有沒有創建這樣一個應用程序的優點/缺點?

+0

這對你來說不太可能是個問題,但我們最近在自己的工作中開發了一個類似這樣的解決方案,並遇到了一個BIG問題,因爲我們忘記了我們的生產服務器在六臺機器上進行了負載平衡。用戶會在一臺服務器上更新XML,然後重新加載,然後感到困惑,因爲他們的XML現在由另一臺機器提供服務,並且它們的更改不在其中。 (最後,通過將其保存到測試服務器上的XML文件來解決它,但我們都同意,如果我們有選擇的話,數據庫本來就是要走的路。) – Blazemonger

回答

1

雖然我是XML的粉絲,這似乎是有點下意識的反應,從而在所有使用此其他可能的格式涉及數據存儲/傳遞。一個好的數據庫總是一個更好的解決方案,但如果這是不可能的,只要儘量避免將所有東西都轉換成一個巨大的XML文件。爲每篇文章存儲一個單獨的文件,其中包含所需的元數據(日期,標題,標籤......)將是一個好的開始。或者,文章內容可以嵌入到XML中。因爲XML最初是用來定義標記語言的,所以它會感覺很好,儘管現在看起來你覺得它更經常用於數據結構。

許多較小的XML文件,然後可能是另一個做一些索引,將是要走的路。這至少會在數據庫中進行的分區和索引附近。無論你做什麼,都不會創建一個或幾個巨大的XML文檔。否則,有一天你會回到這裏,詢問其中一個「幫助我解析1個GiB XML文檔並耗盡內存」的問題:)

Hunter.ross'的建議看起來非常好。

1

您絕對可以將XML用於存儲目的,但這樣做並不昂貴,而且實施起來很困難。

因爲你還沒有提到你的平臺,我假設你正在使用.NET!使用XElement,XML的使用情況不僅僅比數據庫查詢更復雜。

另一方面,你想要達到的目標是在你的表現中創造出巨大的時間。如果您不考慮將整個XML文件加載到內存中,那麼每次您想要保存某些內容時都會重寫您的XML文件,並重新進行檢索。如果這樣做,一旦XML文件開始變大,您將很快得到「內存不足」異常。

使用XML的實現成本相對較高,因爲您必須通過手動過程來獲取從XML中獲取數據的手動過程,其中簡單的數據庫查詢將執行相同的操作。

如果考慮除XML之外的其他選擇,我建議您使用SQLite,您也可以閱讀when to use SQLite。你不需要任何數據庫安裝,並且它是可移植的。它只是一個存儲在你的服務器上的二進制文件,SQLite幾乎爲每個平臺都提供了API,並且它有各種各樣的包裝器。這更像是在數據文件上執行數據庫查詢。

SQLite是一樣的SQL Server,MySQL的等其他關係數據庫,您就可以執行各種SQL查詢,你知道的,你也可以一起Entity FrameworkNHibernate或任何其他ORMs使用。

性能不會像SQL Server/MySQL,但你可以用這個SQLite服務器的數以千計的您的網站的訪問者。