李傳良
(山東絲綢紡織職業(yè)學院,山東 淄博 255300)
隨著 Internet的普及,XML作為新興的標識語言,得到Web的廣泛應用,并逐步成為 Internet存儲交換數(shù)據(jù)的一種常用機制。由于計算機技術(shù)應用的發(fā)展,各行業(yè)領(lǐng)域的信息量呈爆漲,其中含有很多公共有效的數(shù)據(jù)庫資源,每個領(lǐng)域中的數(shù)據(jù)資源分散在各地的多個數(shù)據(jù)庫中,采用不同平臺,缺少整體布局和統(tǒng)一管理,形成“信息孤島”,造成大量業(yè)務邏輯類似但形式分散且彼此缺少信息交互。為實現(xiàn)各部門之間的協(xié)調(diào)工作、數(shù)據(jù)和數(shù)據(jù)之間的關(guān)聯(lián)不易丟失,就必須解決在各個環(huán)節(jié)之間普遍存在的數(shù)據(jù)交互和部門協(xié)同的問題。XML的出現(xiàn)為異構(gòu)數(shù)據(jù)源的交換帶來了新思路和新技術(shù)。
XML(可擴展標記語言)作為數(shù)據(jù)交換和網(wǎng)絡計算的基礎(chǔ),已成為網(wǎng)絡上通用的語言。通過具有平臺無關(guān)性的 XML來表達知識、傳遞數(shù)據(jù),可以跨越平臺、設備和空間。同時,XML具有如下優(yōu)點:①簡便的數(shù)據(jù)交換:數(shù)據(jù)和標記均以可配置的文本格式保存。②定制標志語言:基于 XML進行擴展,可以定制自己的標志語言。③自描述數(shù)據(jù)。④結(jié)構(gòu)化和綜合性的數(shù)據(jù):使用者不僅可以指定數(shù)據(jù),還可以指定數(shù)據(jù)結(jié)構(gòu),并可以將不同的元素組合成其他的元素。
這些優(yōu)點推動 XML在各個領(lǐng)域和行業(yè)迅速得到推廣和應用。XML技術(shù)有效地解決了領(lǐng)域數(shù)據(jù)的交換問題,有力地推動了領(lǐng)域信息化的進程,但是在實際的工程領(lǐng)域,如CIMS、GIS中有時會帶來效率問題。因為 XML文件的完整性和領(lǐng)域數(shù)據(jù)的特殊性,在傳輸 XML格式數(shù)據(jù)時可能伴隨著大量“無用數(shù)據(jù)”的傳輸。這往往不僅影響傳輸效率,而且會浪費許多資源。因為修改的數(shù)據(jù)量占整體數(shù)據(jù)量的比例往往很低,所以造成大量未修改數(shù)據(jù)的重復傳輸。這是工程領(lǐng)域利用 XML文件數(shù)據(jù)交換存在的普遍問題。特別是當文件較大、用戶操作頻繁且需要同步更新大量用戶時,這種問題就十分突出,甚至會影響系統(tǒng)的實用性。
本文所提出的優(yōu)化技術(shù)的核心思想是以領(lǐng)域數(shù)據(jù)模型規(guī)范為基礎(chǔ),充分利用領(lǐng)域數(shù)據(jù)的邏輯關(guān)聯(lián),實現(xiàn)更靈活的 XML數(shù)據(jù)傳輸。①當用戶請求訪問 XML文檔時首先將文檔解析為DOM(Document Object Mode1)樹。②根據(jù)文檔的 DTD(Document Type Definition)及存放文檔授權(quán)信息的XAS(XML Access Sheets)標記DOM樹,給文檔中的每個節(jié)點都設置授權(quán)符號(“+”允許訪問,“-”禁止訪問)。③將DOM樹中所有授權(quán)符號為“-”的節(jié)點移除,將剩下的節(jié)點轉(zhuǎn)化為 XML格式返回給用戶。④移除某些節(jié)點而形成的新的文檔可能不符合原來的DTD。通過將DTD中所有的元素和屬性都設置為可選的來解決該問題,此過程稱為loosening DTD。用戶只能看到他有權(quán)訪問的那部分文檔,這樣就確保了數(shù)據(jù)的保密性。
在模型中仍然采用 XML作為用戶的數(shù)據(jù)交互格式標準,這樣可以充分利用XML的易用性和通用性。當用戶修改XML數(shù)據(jù)并需要傳送到其他節(jié)點以保持一致性時,不直接傳送整個XML數(shù)據(jù)文件,而是首先參考領(lǐng)域知識和XML規(guī)范,以數(shù)據(jù)邏輯關(guān)聯(lián)為依據(jù),將 XML數(shù)據(jù)文件分解成粒度更小的數(shù)據(jù)對象集合。然后確定修改的影響范圍,將數(shù)據(jù)對象分為已變更數(shù)據(jù)對象隊列和未變更數(shù)據(jù)對象隊列。最后向其他網(wǎng)絡節(jié)點發(fā)送已變更數(shù)據(jù)對象隊列。其他節(jié)點在接收已變更數(shù)據(jù)對象隊列后,替換原始數(shù)據(jù)對象集合中的相應部分。再將更新后的數(shù)據(jù)對象集合成為XML文件,并展示給用戶。
分解 XML數(shù)據(jù)文件,是優(yōu)化的關(guān)鍵。合理的分解方法應在分解方式和分解粒度兩個方面綜合考慮。分解方式以行業(yè)數(shù)據(jù)模型標準提供的XML Schema或DTD文檔為基礎(chǔ)。將關(guān)聯(lián)緊密、容易同時修改的內(nèi)容分解在同一個數(shù)據(jù)對象內(nèi),可以盡可能地減小已變更數(shù)據(jù)對象隊列的數(shù)量和體積。分解粒度應綜合考慮具體的數(shù)據(jù)使用模式、數(shù)據(jù)修改量等多種因素。粒度不宜過小或過大。太大,失去優(yōu)化意義,太小也會影響優(yōu)化效果。
無論使用何種分解方法將XML文件映射為數(shù)據(jù)對象集合,都需要輔助信息記錄數(shù)據(jù)對象之間的邏輯關(guān)聯(lián),以便接收方正確地更新本地原始數(shù)據(jù)對象。采用多叉樹描述數(shù)據(jù)對象關(guān)聯(lián),樹上每一個節(jié)點代表一個數(shù)據(jù)對象。每個節(jié)點內(nèi)的關(guān)聯(lián)描述信息包括數(shù)據(jù)對象I、數(shù)據(jù)對象在多叉樹中的路徑path、包含子對象的個數(shù)childnum、指向子對象的指針child以及映射為父元素的屬性名transelement(適用于中粒度劃分法)。
基于上述模型提出如下傳輸優(yōu)化算法:①計算 XML數(shù)據(jù)文件的數(shù)據(jù)有效比。如果數(shù)據(jù)有效比較高,則直接傳輸整個數(shù)據(jù)文件。②選擇 XML數(shù)據(jù)文件劃分法。③根據(jù)所選劃分法的規(guī)則,把 XML數(shù)據(jù)文件分解為一組已變更數(shù)據(jù)對象和一組未變更數(shù)據(jù)對象。④計算關(guān)聯(lián)描述信息多叉樹。⑤將已變更數(shù)據(jù)對象隊列和關(guān)聯(lián)描述信息多叉樹發(fā)送到接收端。⑥接收端根據(jù)關(guān)聯(lián)描述信息,使用已變更數(shù)據(jù)對象更新原始數(shù)據(jù)對象集合。⑦接收端根據(jù)關(guān)聯(lián)描述信息和更新后的數(shù)據(jù)對象集。
XML格式數(shù)據(jù)傳輸優(yōu)化技術(shù)在各行業(yè)領(lǐng)域中得到了廣泛應用,該思想有助于降低一致性維護時大體積 XML數(shù)據(jù)文件的傳輸量,提高訪問速度和效率。依托 XML數(shù)據(jù)訪問與傳遞模型,依據(jù)XML規(guī)范將XML數(shù)據(jù)文件分解為一組邏輯相關(guān)的數(shù)據(jù)對象進行傳輸,減少無用數(shù)據(jù)的傳輸量,從而提高系統(tǒng)的數(shù)據(jù)服務速度,是一種簡單、實用的優(yōu)化技術(shù)。
1 李斕、何永忠、馮登國.面向XML文檔的細粒度強制訪問控制模型[J].軟件學報,2004(10):1528~1537