2011-01-09 61 views
1

我的應用程序使用來自不同供應商的XML數據。 所有供應商都有不同的xml格式/架構,並且需要自定義查詢才能從這些XML中檢索各種數據。 (使用Woodstock StAX解析器)我從一個RDBMS方法開始,在從供應商處檢索一個特定的XML之後,我將解析/查詢XML並將數據寫入一些表中(使用Woodstock StAX解析器)。然而,由於RDBMS(固定模式)的本質,我無法支持來自不同供應商的所有XML格式,即使我這樣做,我也必須將分層xml「歸一化」爲RDBMS固定模式關係數據。XML數據庫評估

來自供應商的xml /數據每天都會經常更新,並且大小在幾kbs至50 MB的數據文件之間變化。

我正在評估各種NXD(本機Xml數據庫),eXist-db,Sedna,BaseX和MonetDB作爲下一步,看看這是否適合我的目的。

有人可以提供一些關於如何解決這個問題的實用建議嗎?或者已經構建了類似的系統,它處理大量不同格式/模式的XML數據。

這裏是核心XML要求我試圖回答:

  • 處理多種XML數據文件,從多個來源。不同供應商的XML不同。
  • 整個文檔的XML更新以及DB中現有XML的一些字段。
  • 確定它是否來自特定供應商並據此進行查詢。
  • 使用XPath/XQuery查詢這些XML以讀取數據以將其呈現給通用視圖中的用戶。

請指教。

謝謝, Subhro。

回答

0

我會使用SQL Server作爲數據庫,並結合使用SQL Server Integration Services(SSIS)作爲集成工具。

SQL Server本機支持XML列類型。它可以要求XML遵循一個模式或一組模式,並且可以使用XQuery處理XML。同時,您當然也可以將供應商與供應商之間相同的XML部分分解爲表格。

XML也可以通過XML索引進行索引,這將使查詢更快。

SSIS可用於從不同的磁盤丟失或通過FTP或Web服務收集不同的XML文件,並可將其處理到數據庫中,無論是否進行其他預處理。例如,您可能會發現,您可以在一定程度上合理化不同的XML格式,將大部分數據保留在正常的關係表中,同時仍將剩餘部分(或整個文檔)存儲在同一個數據庫中供後續查詢使用。

OBTW,SSIS免費使用SQL Server。

2

我認爲你是正確的選擇原生XML數據庫而不是混合數據庫,如SQL服務器。混合數據庫,因爲它們做得太多,通常需要更長的時間才能提供核心XML功能,例如符合XQuery和XQuery更新的實現;而且他們提供了許多不同的數據存儲方式,這使得開發人員難以控制。

至於哪種產品,這裏有一個真正的問題。對數據庫產品進行評估是一個昂貴的過程,如果要做到足夠徹底以獲得有意義的答案,那麼可能會花費更多的成本而不是做出錯誤的選擇當數據庫項目失敗時,通常不是因爲數據庫軟件不足,而是因爲項目缺乏使用所選數據庫軟件發揮最大優勢的技能和經驗。所以我會說,選擇一種基於可用技能的產品。