應用 XML 管理階層的資料

來源:互聯網
上載者:User
xml|資料

  引言

  現實世界中大量的資料都具有階層,常見的例子包括組織機構序列(如公司機構、部隊編製、作戰編成)、分類體系(如中圖分類法、裝備體系)、家族譜系等等。因此,階層資料的管理,在軟體開發過程當中經常會遇到,是個具有共性的問題。

  資料管理是指如何對資料進行分類、組織、編碼、儲存、檢索、控制和維護,是資料處理的中心問題。關聯式資料庫管理系統通過索引、查詢最佳化、交易處理、並發存取控制、觸發器、錯誤恢複等強大的機制,有效地確保了海量資料存取的高效性,保證了資料的完整性和一致性,並提供了資料的可靠性和安全性,從而具有其它資料管理方式無法比擬的優勢。因此,在企業計算的環境下,對於資料管理,尤其是對於大規模商業資料的管理,關聯式資料庫佔據著主導地位。當前,大量的大型資訊系統都是建立在關聯式資料庫平台之上的。然而,在管理階層的資料,以及日益普遍的半結構化、非結構化資料方面,關聯式模式也暴露出了一些固有的不足。

  關聯式模式在管理階層資料上的不足

  關聯式資料庫的理論基礎是關係理論,它的資料模型是關聯式模式。在使用者看來,一個關聯式模式的邏輯結構是一張規則的二維表,由行和列組成。隨著新的電腦技術的不斷湧現,以及資料的分布性、異構性和半結構化特性以及非結構化特性程度的不斷加強,關聯式資料庫系統在資料管理上也已經顯示出了一些不足:

  • 現實世界被強制性地映射成為一系列表的集合(即一組二維關係),因此,複雜物件的許多語義,例如,彙總和特化,均被丟棄。
  • 對於現實世界中資料具有的次序語義,必須通過關係表當中額外的附加欄位進行描述,以能夠索引同屬元素的次序(在關聯式資料庫的記錄集中,記錄的次序是沒有意義的。當然,次序沒有意義是關係理論所要求的。這樣,通過建立索引,搜尋記錄就變得更為容易,在效能上得到了最佳化)。並且,要維護這種次序語義也是比較麻煩的。
  • 類似地,對於現實世界中資料具有的階層(如父/子、祖先/後代等階層),也必須通過關係表當中額外的附加欄位進行描述。實際上,也可以把階層當作是一種特殊的次序語義。
  • 關聯式模式要求關係必須是正常化的。為了提高關聯式模式的正常化程度(目前的最高層次為第五範式),以降低資料冗餘度和避免資料的更新(包括插入、修改和刪除)異常,必須在設計時(design-time)人為進行關係的分割(即正常化設計);在運行時(run-time)再進行串連(join)。這就增加了系統設計的難度,而且會影響系統的運行效能,這是因為,串連是關聯式資料庫當中最為耗時的操作。因此,需要在資料庫的設計時效能和運行時效能之間取得平衡。
  • 一旦資料庫模式發生變化,可能需要重新編寫介面程式。
  • 每條記錄包含固定數目的欄位,每個欄位佔據定長的儲存空間。這樣在儲存敘述性資料時,會浪費空間。此外,
  • 資料庫的結構應該具有相對的穩定性,不太容易被改變,資料庫結構上的改變(即資料庫的重構造,不同於資料庫的重組織)可能導致極其高昂的代價,即可擴充性較差。這也在一定程度上說明了為什麼資料庫的分析和設計具有如此重要作用的原因。這同 XML 在結構上具有的柔性形成了鮮明的對比。

  為此,有必要探討資料管理的新思路和新方法。XML 所具有的一些獨特的優點和功能,使得它在階層資料的管理方面嶄露頭角,並已經引起了多方廣泛的關注。

  應用 XML 管理階層的資料

  應用 XML 管理階層的資料有幾個顯著的優點:便於構建並維護資料的樹狀結構;便於保持資料的次序語義;以及便於與開發平台的樹狀控制項相結合等。

  XML 資料模型的特點

  XML 是 W3C 制定的標準,被設計為混合語(lingua franca),以便在使用者和程式之間交換資訊。它具有一系列優良特性,如可擴充性,簡單性,自描述性,結構、內容和表現分開等。因此,XML 在自由軟體以及商業軟體業界均獲得了強有力的支援,從而能夠為開發人員提供極大的靈活性。

  從資料建模方面來看,XML 提供了兩種手段:DTD 和 XML Schema。它們可以使開發人員將他們的思想具體化,為成組具有相同邏輯結構的文檔(而不僅僅是單個文檔)制定規範。正是通過這兩種建模手段,XML 承諾協助建立更加智能的文檔,如提供某種程度的查錯功能,易於從中提取出有用的資訊,並將它們按照人們的需要展示出來。

  XML 資料模型的優點

  XML資料模型本身就是樹狀模型,一篇格式良好(well-formed)且有效(validated)XML 文檔經過 DOM 解析之後,就會在記憶體當中建立一棵樹。因此,對於現實世界中資料具有的次序語義和階層,XML 資料模型能夠很好且方便地由XML文檔解析器予以保持,開發人員不必費什麼力氣。並且,這種次序語義和階層的動態維護也是比較簡單的。

  此外,XML 解析器是組件,具有標準的介面,開發人員從而可以避免介面程式的重複開發和分發,以及降低相應的介面程式測試和維護開銷。

  XML 與樹狀控制項的結合

  XML 是國際標準,樹狀控制項是常用而重要的介面元素,兩者在業界均獲得了廣泛支援;而且,如前所述,XML 資料模型本身就是樹狀模型,這種結構上的內在相似性,使得兩者具有天然的良好的結合性。

  由於在軟體開發過程當中經常會遇到階層資料的管理,為避免重複勞動和避免重新開發可能引入的錯誤,從而提高軟體開發的效率和品質,削減開發費用和縮短開發週期,筆者利用組件技術,將XML與樹狀控制項相結合,綜合應用 OLE、使用者自繪製等技術,開發了一個組件,在組織機構編碼系統、任務空間概念性模型(CMMS)管理系統等多重專案當中得到了複用,取得了預期效果。

  該組件具有如下特點和功能:

  • 便於構建樹狀結構,同時保持資料的次序語義和階層
    • 資料來源是 XML 文檔。
    • 可在 IE 當中快捷地判斷資料的次序語義和階層是否符合要求。
    • 如果組件載入 XML 文檔成功,應用程式便用樹狀控制項顯示樹狀結構;否則,給出錯誤提示,便於使用者修改。
    • 支援持久化(Persistence),將使用者的修改回存到 XML 文檔當中。
  • 以圖形化方式,直觀地維護階層
    • 增加節點,可在指定位置增加子節點或者兄弟節點
    • 刪除節點。
    • 修改節點。
    • 節點的快速尋找和定位。
  • 與 OLE 緊密結合
    • 修改項目時,支援在位編輯(in-place edit)。
    • 修改項目時,支援對特定字元的過濾。
    • 支援以拖-放(drag & drop)方式,在樹之間或者樹自身完成節點的複製操作或者移動操作。
  • 節點的編碼是樹狀結構與關聯式資料庫結合的關鍵,為此,該組件提供了十分靈活的編碼方式
    • 節點的編碼採用可列印字元形式。
    • 編碼的長度可任意擴充,允許樹有足夠的高度(樹中各節點的最大層次數目)。
    • 每位碼的取值範圍大約為100,允許樹有足夠的度(樹中各節點擁有的最大子樹數目)。
  • 採用使用者自繪製(custom draw)方式,使得樹狀控制項具有強大的表現功能
    • 可直觀地調整節點的字型和字型大小。
    • 可直觀地為每個節點設定不同的顏色。
    • 可列印輸出樹狀結構。

  樣本

  為清晰起見,清單1給出了 A 銀行組織機構序列的樣本資料(XML 文檔格式):

   清單1. A 銀行組織機構序列樣本(XML 文檔格式)
<?xml version='1.0' encoding='GB2312' standalone='yes'?><A銀行總部>S<B1省分行>SA<C1縣支行>SAA<D1鎮分理處>SAAA<E1村儲蓄所>SAAAA</E1村儲蓄所><E2村儲蓄所>SAAAB</E2村儲蓄所><E3村儲蓄所>SAAAC</E3村儲蓄所></D1鎮分理處><D2鎮分理處>SAAB</D2鎮分理處></C1縣支行><C2縣支行>SAB</C2縣支行></B1省分行><B2省分行>SB</B2省分行><B3省分行>SC</B3省分行><B4省分行>SD</B4省分行><B5省分行>SE</B5省分行></A銀行總部>

  作為對比,清單2給出了 A 銀行組織機構序列的樣本資料(關聯式模式資料格式),由此不難發現 XML 文檔格式管理階層資料的優越性:

  清單2. A銀行組織機構序列樣本(關聯式模式資料格式)

  請注意,上表當中的"是否葉子節點"、"層次"、"上一級編碼"、"上二級編碼"、"上三級編碼"、"上四級編碼"等欄位均是為了描述資料的階層而附加的;同時,上表當中還不得不引入大量的空值(null)。

  A 銀行組織機構序列在該組件中的一種表現效果如下圖所示:


  XML 與關聯式資料庫的結合

  由上述討論可知,應用 XML 進行資料管理具有特殊的優勢,可以有效地彌補關聯式資料庫在階層資料的管理上的不足和存在的問題,有著十分廣闊的前景。

  當然,這個解決方案並不是完美無缺的,存在以下幾個問題。首先,XML 中所有的資料都以字串進行儲存。這樣在文檔當中搜尋或者在必須進行資料類型轉換的時候,可能帶來額外的時間開銷。當資料規模比較大、或者應用程式對時間的要求比較苛刻時,開發人員必須對這種額外的時間開銷給以足夠的重視。而解決這個問題的唯一途徑就是,建立一個典型的應用程式,並對它進行強度測試(stress test)。其次,XML 文檔在給人們帶來易讀性的同時,也具有潛在的安全性隱患。另外,XML 的許多相關標準和技術,還處於草案階段,沒有最終定型,不同技術廠商之間的利益紛爭也可能帶來比較嚴重的問題。

  因此,一個自然的想法就是將 XML 與關聯式資料庫結合在一起,以發揮各自的長處,揚長避短。具體來說,就是用 XML 管理小規模的階層的資料,而用關聯式資料庫管理大規模的商業資料,兩者通過樹的節點的編碼進行串連。

  例如,在組織機構編碼系統提供的組織機構序列的基礎上,可進一步利用關聯式資料庫技術完成組織機構的資訊採集、查詢、統計、維護等功能。

  小結

  應用 XML 進行資料管理具有特殊的優勢,可以有效地彌補關聯式資料庫在階層資料的管理上的不足和存在的問題。但是,XML 技術和關聯式資料庫技術之間並不是相互競爭、相互排擠的關係,而是相互補充和相互促進的關係。實際上,XML 和關聯式資料庫具有很強的互補性,它們好像就是為在一起協作而設計的,將長期共存下去。一個綜合的資料管理系統幾乎都是需要同時使用 XML 和關聯式資料庫。一個好訊息是,幾乎所有主要的關聯式資料庫產品都提供了對 XML 的支援。

  參考資料

  • 王珊等編寫的資料庫教程"資料庫系統原理教程"詳細論述了關聯式資料庫在資料管理上的特點和優點,並且著重分析了關聯式模式在管理階層的資料以及日益普遍的半結構化、非結構化資料方面暴露出來的不足。

  • 徐享忠等撰寫的論文"XML 在資料管理上的應用"詳細論述了 XML 在資料管理上的可能應用,包括資料的基本存放裝置、資料的歸檔和備份、中間資料交換格式、資料採礦和資料表現等多個方面。

  • 基於 XML 的資料交換在模擬系統中的應用,可參見徐享忠等撰寫的論文"基於XML 的資料交換格式在先進分布模擬系統中的應用"。

  • XML 的特點、文法規則、組成部分及業界應用執行個體,可參見Simon St. Laurent編寫的"XML A Primer (2nd Edition)"。

  • Michael Morrison著的"XML Unleashed"詳細介紹了在各種開發平台(尤其是c++)上,利用組件技術訪問XML各個組成部分(如SAX、DOM、XSLT)的方法。

  • E.J.Lu等撰寫的論文"An Empirical Study of XML/EDI"詳細闡述了企業,特別是中小型企業在電子資料交換系統當中採用XML作為解決方案可能帶來的機遇和巨大的好處,以及可能存在的一些隱患。

  關於作者

  徐享忠是一名軟體工程師和模擬系統開發人員,他編寫有關關聯式資料庫、模擬資料視覺效果方面軟體開發、系統建模與模擬方面的文章。他曾使用彙編、C/C++、Matlab、Fortran和各種Web工具進行廣泛的編程。可通過 xuxz02@21cn.com與他聯絡。



相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。