2013-07-24 77 views
1

我開發了一個界面,用戶將上傳一個包含數百個XML文件的zip文件,其中的XML文件大約在200到8000行之間。存儲,解析和編輯數以百計的XML文件

上傳ZIP文件後,所有XML文件都必須提取並顯示給用戶,因爲用戶需要手動編輯該文件並批准XML文件的內容才能永久移動和存儲在服務器中。

從永久存儲器中,所有XML文件將通過私人API調用回送給請求用戶。

什麼讓我感到困惑的是數據應該存儲在臨時存儲器還是永久存儲器中,因爲它需要編輯,排序,分頁和搜索XML文件中的內容。

我在探索很多選擇,其中一些是。

  1. 使用MySQL數據庫來存儲數據
  2. 使用全文搜索引擎,比如Apache Lucene的存儲(這可能是壞主意,但不知道)。
  3. 將其存儲在永久目錄中並直接讀取/寫入文件。

我想知道是否有人遇到類似的問題,或者採取什麼樣的方式來應對這種情況?

P.S:我將Zend Framework與Doctrine一起用於應用程序開發。

回答

1

如果數據沒有以任何其他方式用於XML文件(因此不需要查詢或搜索所需數據),而不是將數據保存在文件中是最佳做法。將它存儲在數據庫中會增加不必要的開銷,尤其是因爲您不斷在數據庫和XML之間來回轉換數據。

如果是這種情況,我會編寫一個使用SimpleXML(http://php.net/manual/en/book.simplexml.php)的包裝器,它可以執行像循環XML文件一樣的基本任務,保存行等。如果您需要添加某種搜索功能,使用DOMXPath添加一些酷(http://www.php.net/manual/en/class.domxpath.php)。

另一方面,如果數據將以其他方式需要(如API,查詢搜索等),我會解析傳入的XML文件並將它們存儲在數據庫中。

詩篇。我想補充一點,如果客戶沒有100%清楚系統和功能的長期意圖(只有你可以通過某種方式來確定),如果只使用XML格式,我會盡量處理數據庫存儲。如果將所有內容都整齊地存儲在數據庫中,那麼添加計算,搜索,數據合併等新功能並不是問題。如果你有一個裝滿XML文件的驅動器,你可能不得不重寫很多代碼。