2015-10-22 164 views
1

我在文件系統(Unix/Windows)上有XML文件,需要使用所需的屬性解析和填充表。我在Java上編寫了一個DOM解析器,它將XML作爲輸入並將其轉換/解析爲分隔文件。然後,我通過Informatica使用間接文件加載填充表。這個表現相當不錯。
但是,我的一位老年人告訴我,轉換爲分隔文件然後放入表格並不是必需的。相反,他要求我將XML文件直接放入表格的一列(最好是CLOB或XMLType),然後使用Oracle的XML解析器來解析這些文件。
我知道可以通過Oracle的解析器進行XML解析,但是建議將源文件放入數據庫表中嗎?從設計的角度來看,這個問題更多。
欣賞你的意見。使用Java進行解析或使用Oracle解析器進行解析

回答

1

在數據庫中存儲XML有幾個優點。

  1. 技能要求較低。這個世界上很少有人是Java的專家 Informatica Oracle。專家並不總是需要的;但沒有一個解決方案可能永遠不會「很好」,並且可能無法解決棘手的問題。
  2. 減去轉換錯誤通常發生在邊界,Java到文本文件到Informatica到Oracle有很多邊界。是否所有這些工具都支持國際化?他們都同意日期格式嗎?是否有字節順序標記?這些問題通常比人們意識到的更爲複雜。
  3. 保持XML在失敗時附近。輸入文件不可避免地會損壞,並且某些ETL過程將失敗。然後將它全部放在一個地方非常方便。 (至少在我的行業中,沒有人會同時擁有應用程序服務器和數據庫服務器的權限。)
  4. 性能。高性能是#1和#2的結果;可以聘請一位能夠調整系統的專家,並且可以減少需要擔心的部分。很多人可以用Java,Informatica和Oracle編寫代碼;它們中有多少可以並行化?每個Amdahl's law並行性只有在整個過程並行時纔會有很大的幫助。
  5. 使用SQL XML功能進行臨時分析。 Oracle有一些有用的聲明性工具用於編寫針對XML的即席查詢。具體而言,XMLTable功能是將XML快速轉換爲表格的好方法。如果XML很簡單,有時整個工作可以在一個SQL語句中完成,不需要任何程序代碼。