首頁>技術>

摘要:GaussDB(DWS)支援XML資料型別及豐富的XML解析函式,可實現關係資料和XML資料的對映管理功能。

XML概述

XML是可擴充套件的標識語言(eXtensible Markup Language)的縮寫,可以描述非常複雜的資料結構,廣泛應用於傳輸和儲存資料。XML是一種類似於HTML的標記語言,但XML沒有使用預定義的標記,可以根據應用需求定義標記。XML的基本格式是標準化的,可以跨平臺、作業系統和應用程式實現異構系統之間的資料共享。

XML資料型別

GaussDB(DWS)支援將XML文件儲存在資料庫的XML資料型別列中。透過XML資料型別來儲存資料,相比於文字方式的優勢在於具有資料結構檢查功能,能夠保證結構的正確,並且支援XML資料解析和處理函式。

判斷一個 XML 文件正確的標準是:

文件必須是一個格式良好的文件。文件遵循 XML 所有的語法規則並且有效。文件遵循特定語義的規則,這些規則通常規定在 XML 或 DTD 規範中。

XML可以儲存由XML標準定義的格式正確的文件,以及由XML標準中定義的內容片斷,內容片斷可以有多個頂級元素或字元節點。

下面是一個格式良好的XML文件示例:

可以使用INSERT SQL語句將格式良好的文件插入到XML列中,如果能夠成功分析文件,那麼就說明文件的格式正確。在執行插入或更新操作前,會根據配置引數來驗證XML文件是否格式正確。

在應用程式中的XML資料一般採用其序列化字串格式,將資料插入到 XML 列中時,必須將它轉換為 XML 分層格式。因此在執行插入操作時可顯式呼叫 XMLPARSE 函式,以將資料從其序列化字串格式轉換為 XML 分層格式。

訪問XML值

當訪問和處理XML資料時,由於XML資料在資料庫內部的表示不是字串,XML資料型別沒有提供比較運算子,因此不能直接與字串進行比較。這樣的結果是無法透過比較XML數值和搜尋值來檢索到資料行,因此對於XML資料應該伴隨一個ID值用於檢索資料。

透過使用 XMLSERIALIZE 函式,可以將 XML 值變換成表示 XML 文件的已序列化字串值。

XML解析函式

目前GaussDB(DWS)已經支援了30多個XML解析函式,包括解析XML資料、生成XML內容、XML謂詞、XML引數設定、將資料對映到XML等功能。

處理XML資料的函式xpath 對xml值計算xpath表示式的結果xmltable 透過XPath表示式的方式對XML資料進行解析生成XML內容的函式xmlparse 字元資料轉換為xml型別的值xmlserialize xml型別轉換為字串xmlcomment 建立一個包含XML註釋的特定文字內容的值xmlconcat 連線獨立的XML值列表來建立一個包含XML內容片段的單值xmlelement 生成一個帶有給定名稱,屬性和內容的XML元素。xmlforest 生成一個使用指定的名稱和內容的XML森林(序列)元素xmlpi 建立一條XML處理指令xmlroot 更改XML值的根節點屬性xmlagg 聚合函式,連線聚合函式呼叫的輸入值XML謂詞函式IS DOCUMENT 判斷XML值是否為文件IS NOT DOCUMENT 判斷XML值是否為文件xmlexists 判斷XPath表示式是否返回任何節點xpath_exists 判斷XPath表示式是否返回任何節點xml_is_well_formed 檢查字串是不是格式良好的XMLxml_is_well_formed_document 檢查字串是不是格式良好的XML文件xml_is_well_formed_content 檢查字串是不是格式良好的XML內容XML引數設定SET XML OPTION 設定XML格式SET XMLBINARY TO 設定二進位制值在XML中的編碼格式將表、查詢、遊標、資料庫對映到XML的函式table_to_xml、query_to_xml、cursor_to_xml、database_to_xml等。

具體每個函式的使用方法可以參考GaussDB(DWS)使用者手冊,下面主要介紹應用中常見的解析XML資料的XMLTABLE函式。

XMLTABLE函式概述

XMLTABLE函式透過XPath表示式的方式對XML資料進行解析,按照定義的列生成一個表將資料返回,返回的表可以包含任何 SQL 資料型別(包括 XML型別)。

XMLTABLE函式支援將表中的XML資料或一個SELECT查詢的XML資料作為變數傳遞到指定的XPath表示式上,透過XPath表示式解析XML資料後的結果用於產生表中的列值,生成的表的結構由 XMLTABLE 的 COLUMNS 子句定義,可以指定列名、資料型別和生成列值的方式來定義列的特徵。

下面演示一下XMLTABLE函式的使用方法,首先建立CUSTOMER表並插入包含客戶資訊的XML資料。

透過以下 SELECT 語句在 XMLTABLE 函式中解析 CUSTOMER 表的 INFO 列。

在GaussDB(DWS)上,XMLTABLE函式支援下推到資料節點DN執行的STREAM查詢計劃,XML資料在資料節點上進行解析生成XMLTABLE結果表,透過GATHER STREAM將結果彙總到協調節點CN上,能夠下推到DN的STREAM計劃具有較好的查詢效能。

XMLTABLE應用案例

在業務場景中,經常會遇到需要解析XML文件的場景,使用XMLTABLE函式可以快捷方便的完成對XML資料的解析,將所需的資料以表的形式返回,便於對資料進一步的查詢和分析。

下面演示一個對訊息資料的解析流程:

1. 建立一張用於儲存訊息資料的表,插入資料。

2. 將訊息文字資料透過XMLPARSE函式轉化為XML資料。

3. 使用XMLTABLE函式對XML資料進行解析,逐條返回訊息內容。

從上圖中可以看到,XMLTABLE解析後的資料以表的形式返回,在這個XMLTABLE表上可以進一步的對資料排序、篩選等操作,同時GaussDB(DWS)也支援在函式或儲存過程中進行XML資料的處理,使應用程式的開發非常便捷。

總結

GaussDB(DWS)支援了XML資料型別及豐富的XML解析函式,同時基於Shared Nothing的分散式架構具有良好的並行處理和擴充套件能力,對XML資料的解析任務可下推到資料節點上進行並行處理,完全能夠滿足應用中出現的XML資料解析需求。

8
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 好用漂亮的Android 表格框架