<title> XML與XQuery ,新一代資料儲存標準 </title> <prof>黃三益</prof> <stud.>D954020009 尤濬哲 D954020002 李銘祥</stud.>
Outline 緒論 相關觀念 相關的SQL語法 XML系統架構與相關產品介紹 結論
1.緒論 (1/4) XML的歷史 HTML的限制 XML與HTML ML語言 1.需使用規定的標籤 2.結構較不嚴謹及 3.以資料呈現方式為主
1.緒論 (2/4) XML的一個範例 <?xml version="1.0" encoding="Big5" ?> - <lib> <book> <title>XML大未來</title> <author>Mary</author> <price=>590</price> </book> - <book> <title>如何在 7-11 白吃白喝</title> <author>無名氏</author> <price>120</price> </lib>
1.緒論 (3/4) XML的特點 Xquery 擴充性 共通性 自我描述 是XML的查詢語言 2007/1/23 XQuery已接受W3C協會推薦 逐漸受到重視
1.緒論 (4/4) XML的應用面 自動化電子商務應用 知識管理 資訊傳播 資料整合與應用
2.相關觀念 (1/4) (1)文件宣告 (2)文件內容 DTD Schema 元素(Element) 屬性(Attribute) 實體參考(Entity Reference) CDATA區塊和 PCDATA PI(Processing Instructions)
2.相關觀念 (2/4) XML資料庫 XML-Enabled 資料庫(XED) Native XML資料庫(NXD) 本身可能是RD或其他種類 透過中介軟體與XML整合 Native XML資料庫(NXD) 本身資料模式即是XML 不需經由中介軟體轉換 技術仍屬於發展階段
2.相關觀念 (3/4) 一個XML資料庫架構範例
2.相關觀念 (4/4) XML查詢語言(Xquery ) Xquery的要求 以XML 語法表示及以XML 格式做為輸出格式。 W3C 於1999 年九月開始定義XML 2007/1通過最新版本Xquery 2.0 目前有20個以上的資料庫支援,包含MS SQL等大廠。 Xquery的要求 以XML 語法表示及以XML 格式做為輸出格式。 不需使用資料結構 保留文件的順序及關聯。 支援XLink及XPointer 名稱空間別名(Namespace Alias)應具獨立性。 程式化操作及在伺服器端處理 查詢操作功能需在同一XML 之查詢語言中。
3.相關的SQL語法 (1/10) Xquery的三種語法 Xpath為基礎的查詢 FLWR語法 查詢關聯式資料庫 Xpath是Xquery的子集 Xpath的標準語法本身即是合法的XQuery
3.相關的SQL語法 (2/10) Xpath查詢範例 列出所有為作者的元素 //Author -------------------------------------------------- 列出store中所有的Author Document("store.xml")//Author
3.相關的SQL語法 (3/10) FLWR語法 Xquery中的流程控制語法 FlwrExpr:FOR或LET敘述其後必伴隨一個WHERE敘述 WhereClause:WHERE敘述可在接另一串的合法的XQuery 查詢,包含另一串FLWR敘述 ReturnClause:傳回查詢結果
3.相關的SQL語法 (4/10) FLWR語法範例(1) 列出所有作者 FOR $ Author IN // Author 列出所有作者 LET $Author:=//Author RETURN $Author 列出所有作者 FOR $ Author IN // Author RETURN $ Author
3.相關的SQL語法 (5/10) FLWR語法範例(2) 列出所有書籍的作者 解說: FOR $book in //book FOR $author IN $book/author RETURN $author 解說: 第一層的FOR迴圈,$book被指派K次(所有book的數量),而每一次第二層的FOR迴圈將依據<book>元素中<author>子元素的數目指派查詢值給$author變數(可能有第一作者、第二作者等…),最後列出所有書籍作者。
3.相關的SQL語法 (6/10) FLWR語法範例(3):匯總函數 列出所有出版書籍超過100本的出版商 FOR $p IN distinct(document("booklist.xml")//publisher) LET $b := document(“booklist.xml”)/book[publisher = $p] WHERE count($b) > 100 RETURN $p 列出所有書價超過平均書價的書籍名稱 LET $a := avg(//book/price) FOR $b IN /book WHERE $b/price > $a RETURN $b/title
3.相關的SQL語法 (7/10) XQuery 查詢關聯式資料庫 假設一個關連式資料結構如下 mId m_Name m_bith … Customer pId p_Name p_Price Product oId num Order date
3.相關的SQL語法 (8/10) Joint運算(1) 列出購買過”資料庫的核心理論與實務”的產品的顧客姓名 SQL: Select c.c_Name From Customer as c, Order as o, Product as p Where p.p_Name='資料庫的核心理論與實務' and o.pId=p.pId and c.mId=o.Mid XML : FOR $p IN document("product.xml")//o_record[p_Name = '資料庫的核心理論與實務'] $o IN document("order.xml")//o_record[pId = $p/pId] $c IN document("customer.xml")//c_record [mId=$o/mId], RETURN $c/c_Name
3.相關的SQL語法 (9/10) Joint運算(2) 如要找出所有的曾經購買過的會員,並列出其購買的產品名稱 SQL: Select c.c_Name, p.p_Name From Customer as c, Order as o, Product as p Where o.pId=p.pId and c.mId=o.Mid XML : FOR $c IN document(“customer1.xml”)//c_record RETURN <customer1> $c/c_Name FOR $o IN document(“order.xml”)// order_record [mId = $o/mId] $p IN document(“product.xml”)//product_record [pId = $o/pId] RETURN $p/p_Name </customer1 >
3.相關的SQL語法 (10/10) Group運算式 (1) 找出至少購買五次以上的顧客其平均消費金額 SQL: SELECT avg(p_Price) AS avgprice FROM order GROUP BY pId HAVING count(*) >= 5 XML : FOR $op IN distinct(document("order.xml")//pId) LET $o := document("customer1")//order_record[pId = $op] WHERE count($o) >=5 RETURN <customer1> $op, <avgprice> avg($o/price) </avgprice> </ customer1>
4. XML系統架構與相關產品介紹 (1/3) Tamino簡介 第一套純粹XML資料庫(NXD) 德國Software AG發展 主要架構 1.X-Engine 2.Data Map 3.Tamino Manager 其他發展工具 1.Tamino Schema Editor 2. Tamino X-Plorer 3. Tamino X-Application
4. XML系統架構與相關產品介紹 (2/3) Xquery執行效率評比(1) 執行反應時間(Tamino-1較慢,MS SQL最佳)
4. XML系統架構與相關產品介紹 (3/3) Xquery執行效率評比(2) 執行深度的反應時間(Tamino-1較慢,MS SQL最佳)
5.結論 1. XML是當今最受注目的資料交換機制,而XQuery 則是XML的查詢語言,因此XQuery 是一種有前途的技術。 2. XQuery 的標準及技術仍未統一及成熟,甚至最新的版本並沒有Update的語法。 3. XQuery 執行效率相對於SQL而言差異頗大,對於操作大型資料庫顯的有點吃力。 4. XML與SQL仍會並存10年以上的時間,最後獲勝者則仍然未知。
Q & A