要讓 XML 在企業級層面廣泛應用的第一個問題就是技術規范和標準。1998 年 2 月,W3C 正式發布了有關 XML 的規范,并一直不斷地完善其標準。到目前為止,XML 的技術規范和標準方面應該說是相當成熟了。
然而,XML 廣泛應用于企業應用還有一些一直困擾著 IT 人的基礎問題:如何有效地存儲 XML?如何更好地管理 XML?如何提高 XML 的信息處理效率,包括查詢、部分更新等等? 這些基礎問題不解決,XML 在企業應用中就“無法落地”,或者至少說是“無法令人滿意地進行落地管理”。例如,XML 在前些年已經廣泛應用于數據交換領域,從此,IT 系統與系統之間就有了“公共語言”。然而,人們一直沒有找到一種方式,將這些“公共語言”進行高效率地原生態存儲和管理,就像原始人有了語言以后長期沒有找到能夠原生態記錄和管理語言的方式——“文字”。
人類是充滿智慧的,IT 人更是如此。原始人在沒有發明文字的時候,采用了“結繩記事”等等簡陋的或是間接的方法來記錄和管理人與人之間交流的語言。而 IT 人在過去幾年里,也嘗試用了一些簡陋的或是間接的方式來存儲和管理 XML,簡單歸納如下:
- 傳統方式1:將 XML 簡單地保存在文件系統中。這種方式可以說是非常簡陋的,基本上沒有管理性和效率可言。XML 文件數量不多的情況還勉強可以接受,到了一定規模的企業應用就是難以忍受了。我親眼目睹了一家公司的應用將數千個 XML 文檔放在一個文件夾中,然后通過 Java 應用進行信息查詢、更新和刪除。其效率、應用維護的復雜度、權限管理等等方面幾乎可以用“慘不忍睹”來形容。
- 傳統方式2:將 XML 存入關系數據庫(DBMS)的大對象字段中。實際上,這種方式只不過是將“傳統方式1”中 XML 存儲的位置從簡單的文件系統挪到數據庫大字段中而已,并沒有實質性地提高 XML 的可管理性和可操作性。而且不僅如此,我們知道,管理大對象并非 DBMS 的強項。例如在多數 DBMS 中,大對象是不能夠像一般結構化數據那樣進入數據庫內存緩沖池的,因此,效率上大打折扣。
- 傳統方式3:將 XML 分解到關系數據庫的多張關系型表中。如果 XML 文檔本身比較簡單還好,如果稍微復雜一點,則可能一個 XML 文檔就要映射到好幾張關系表,而如果不幸的,XML 的格式經常要發生一些變化的話,那這個映射關系維護起來就更復雜了。這是問題之一。其二,這種方式會讓 XML 文檔本身的完整性蕩然無存,對于一些需要保證 XML 文檔完整性的應用就非常不合適。其三,這種分解的方式會耗費數據庫服務器的大量 CPU 和內存資源,有可能使數據庫系統面臨系統資源不足的風險。
- 傳統方式4:將XML存放到XML-Only的數據庫中。這種特殊的XML-Only的數據庫大大提升了XML的可管理性和可操作性。然而將這類非主流的、尚未經過業界驗證的數據庫應用到企業系統中,未免讓人心驚膽戰。其次,這種XML-Only的數據庫基本上不支持關系型數據,而二十幾年的關系型數據歷史讓關系數據庫已經滲入到企業應用的各個方面,因此這種XML-Only數據庫在保護投資方面也是倍受批評的。
DB2 V9 的推出開辟了 XML 存儲和管理的新天地。在存儲方面,DB2 V9 將 XML 進行高效地原生態的存儲,在應用訪問方面,支持 SQL 和 XML 兩種訪問方式。不僅如此,所有關系型的操作方式和數據庫工具都可用于 XML 之上,例如索引機制、導入導出、關聯查詢、高速批量加載、系統優化等等。IBM 將這一技術稱之為“pureXML”。有了 pureXML 技術,XML 在關系數據庫中再也不是“二等公民”了。DB2 V9 成為一個既支持關系數據,又原生態支持 XML 的名副其實的雙引擎數據庫。
圖 1. DB2 V9 中的“雙引擎”處理方式
應用領域之一:信息交換和共享
XML 最先被應用的企業領域是信息交換和信息共享。由于普遍意識到 XML 的優點,許多行業開始制定本行業的基于 XML 的數據交換和信息共享標準。例如:ACORD(保險業 XML 標準)、FIXML(基于 XML 的金融信息交換協議)、FPML(金融產品 XML)、HL7(醫療衛生 XML 標準)、IXRetail(零售行業 XML 標準)、XBRL(業務報告和會計 XML)、NewsML(新聞和發行 XML)……當然,信息交換和共享并非因為 XML 才出現的,然而有了 XML,企業與企業之間或者企業內部的 IT 系統之間的信息交換和共享就更具標準化,同時具有可理解性和靈活性的特點,具有了“共同語言”。以 FIXML 為例,老的 FIX 標準是基于簡單文本的,幾乎沒有可理解性和靈活性可言;而新的 FIXML 標準由于采用了 XML,具有很好的可理解性和靈活性,如圖 2 所示:
現在,有了 DB2 pureXML 技術,這些數據交換平臺的能力大大增強了,這些交換的 XML 可以被 DB2 數據庫原生態地管理起來。應用可以非常便捷地將 XML 以靈活的格式送入“信息高速公路”(企業總線),或者從企業總線中獲得 XML。