




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Oracle Database 12c 中 Oracle XML DB 簡介Mark D Drake產品管理經理以下內容旨在概述產品的總體發展方向。 該內容僅供參考,不可納入任何合同。 其內容不構成提供任何材料、代碼或功能的承諾,并且不應該作為制定購買決策的依據。 此處所述有關 Oracle 產品的任何特性或功能的開發、發布以及相應的日程安排均由 Oracle 自行決定。議題XML DB 簡介XMLType 和 XQuery加載 XMLXML 生成XML 和 SQL 集成XML 存儲和索引XML 模式XML DB 信息庫數據庫原生 Web 服務總結Oracle 與 XML: 持續創新 1998
2、 2001 2004 2007 2013 性能XML 存儲和資料庫XML APIXQuery二進制存儲和索引XQuery-UpdateXQuery Full-Text議題XML DB 簡介XMLType 和 XQuery加載 XMLXML 生成XML 和 SQL 集成XML 存儲和索引XML 模式XML DB 信息庫數據庫原生 Web 服務總結使用 XMLTypecreate table INVOICES of XMLTYPE;create table PURCHCASEORDERS ( PO_NUMBER NUMBER(4), PO_DETAILS XMLTYPE)XMLTYPE colum
3、n PO_DETAILS XMLSCHEMA /PurchaseOrder.xsdELEMENT “PurchaseOrder“STORE AS OBJECT RELATIONAL;XQuery生成、查詢和更新 XML 的 W3C 標準XML 內容的自然查詢語言從 XPath 和 XSLT 發展而來 類似于關系世界中的 SQL迭代,而不是基于集合基本構造是 FLWOR 子句FOR、LET、WHERE、ORDER、RETURNXQuery 操作產生包含零個或更多節點的序列XQuery FLWOR 示例 31398750123 3.0 .7.0 Octopus.King
4、Ralphfor $l in $PO/PurchaseOrder/LineItems/LineItem return $l/Part/Description XQuery fn:collection : 使用許多 XML用于訪問文檔集合允許 XQuery 在一組 XML 文檔上運行集合源包含文件夾內容XMLType 表或列圓錐映射模式的關系表協議“oradb:” 導致路徑組件應解釋為模式、表、列列是可選的for $doc in fn:collection(“oradb:/OE/PURCHASEORDER”) return $doc XQuery: Where 和 Order by 子句Wher
5、e 子句控制對哪些文檔或節點進行處理啟用謂詞Order by 子句控制節點順序let $USER := “SKING” for $doc in fn:collection(“oradb:/OE/PURCHASEORDER”) where $doc/PurchaseOrderUser = $USER order by $doc/PurchaseOrder/Reference return $doc/PurchaseOrder/Reference在 SQL*Plus 中執行 XQuery如果 XQuery 語句以 ; 結尾,則使用空注釋 (: :) 防止被 SQL 解釋成分號。SQL XQUERY
6、 2 let $USER := SKING 3 for $doc in fn:collection(oradb:/OE/PURCHASEORDER) 4 where $doc/PurchaseOrderUser = $USER 5 order by $doc/PurchaseOrder/Reference 6 return $doc/PurchaseOrder/Reference 7 /數據庫原生 Web 服務中的 XQuery for $doc in fn:collection(oradb:/OE/PURCHASEORDER) return $doc/PurchaseOrder/Refere
7、nce true WSDL 位置: http:/dbserver:port/orawsv?wsdlJCR-225 或 XQJJava 的原生 XQuery APIXQJ 對 XQuery 相當于 JDBC 對 SQLOracle XMLDB 的參考實現 import javax.xml.xquery.*XQDataSource dataSource = new oracle.xml.xquery.OXQDataSource();XQConnection connection = dataSource.getConnection();XQExpression expression = conne
8、ction.createExpression();XQResultSequence result = expression.executeQuery (for $doc in fn:collection(oradb:/OE/PURCHASEORDER) return $doc/PurchaseOrder/Reference);result.writeSequence(System.out, null);result.close(); SQL 加載器從本地文件系統加載文件集Filelist.dat 包含要加載的文件列表load datainfile filelist.datappendinto
9、table PURCHASEORDERxmltype(XMLDATA) ( filename filler char(120), XMLDATA lobfile(filename) terminated by eof)C:purchaseOrdersABANDA-20020405224101614PST.xmlC:purchaseOrdersABANDA-20020406224701221PDT.xmlBFILE 構造器create or replace directory XMLDIR as c:myxmlfiles;insert into PURCHASEORDER values ( XM
10、LTYPE ( BFILENAME(XMLDIR, SKING-20021009123335560PDT.xml), NLS_CHARSET_ID(AL32UTF8);目錄 XMLDIR 將本地文件系統中的目錄引用到數據庫服務器必須指定正在加載的文件的字符集編碼。JDBC、OCI、PL/SQL public boolean doInsert(String filename) throws SQLException, FileNotFoundException String statementText = insert into PURCHASEORDER values (:1)“; Conne
11、ction conn = getConnection(); OracleCallableStatement statement = (OracleCallableStatement) conn.prepareStatement(statementText); FileInputStream is = new FileInputStream(filename); XMLType xml = XMLType.createXML(this.getConnection(),is); statement.setObject(1,xml); boolean result = statement.execu
12、te(); statement.close(); mit(); return result; XML DB 信息庫和協議使用 FTP、HTTP 和 WebDAV 將內容直接加載到 Oracle 數據庫中的 XMLType 表中議題XML DB 簡介XMLType 和 XQuery加載 XMLXML 生成XML 和 SQL 集成XML 存儲和索引XML 模式XML DB 信息庫數據庫原生 Web 服務總結從關系數據生成 XML有了 SQL/XML,可以從關系數據輕松生成 XMLSQL Query 生成的結果集包含一個或多個 XML 文檔有了 XQuery,可以從關系表生成基于模板的 XMLfn:
13、collection() 生成關系數據的規范 XML 表示有了 XMLType 視圖,可以對關系內容進行持久的以 XML 為中心的訪問例如: 使用 SQL/XML select xmlElement ( Department, xmlAttributes( d.DEPTNO as “Id), xmlElement(Name, d.DNAME), xmlElement(Employees”, ( select xmlAgg( xmlElement(Employee, xmlForest( e.ENAME as Name, e.HIREDATE sStartDate”) ) ) from EMP
14、e where e.DEPTNO = d.DEPTNO ) ) ) as XML from DEPT dXMLACCOUNTINGCLARK1981-06-09KING1981-11-17MILLER1982-01-23議題XML DB 簡介XMLType 和 XQuery加載 XMLXML 生成XML 和 SQL 集成XML 存儲和索引XML 模式XML DB 信息庫數據庫原生 Web 服務總結XMLQuery() 片段訪問在 SQL where 子句中使用,從結果集的每個文檔中提取片段。綁定變量通過“Passing”子句提供 SQL select XMLQUERY( 2 $PO/Purch
15、aseOrder/ShippingInstructions 3 passing OBJECT_VALUE as PO“ 4 returning content) XML 5 from PURCHASEORDER 6 where XMLEXISTS( 7 $PO/PurchaseOrderReference=$REF 8 passing OBJECT_VALUE as PO, SKING-20021009123336131PDT as REF);XML Steven A. KingXMLTable(): XML 的關系視圖“COLUMNS”子句擴展 XMLTable,允許創建 XML 內容的線性
16、關系視圖支持對 XML 內容進行 SQL 操作視圖允許識別非 XML 的工具訪問 XML 內容使用鏈式 XMLTable 操作管理的集合層級將傳遞到鏈的元素作為 XMLType 片段重復XMLTable 列子句SQL select m.REFERENCE, l.LINENO, l.QUANTITY 2 from PURCHASEORDER, 3 XMLTable( 4 $PO/PurchaseOrder passing OBJECT_VALUE as PO” 5 COLUMNS 6 REFERENCE VARCHAR2(32) PATH Reference, 7 LINEITEM_FRAGME
17、NT XMLTYPE PATH LineItems/LineItem 8 ) m, 9 XMLTable( 10 $LI/LineItem passing m.LINEITEM_FRAGMENT as LI” 11 COLUMNS 12 LINENO NUMBER(4) PATH ItemNumber, 13 UPC NUMBER(14) PATH Part/text(), 14 QUANTITY NUMBER(5) PATH Quantity 15 ) l|16 where l.UPC = 24543000457;RERERENCELINENOQUANTITYAKHOO-2010041816
18、2507692PDT22PVARGAS-20101114171322653PST17JTAYLOR-20100518182653281PDT54XQuery-Update 支持/TR/xquery-update-10/以聲明方式修改和轉換 XML 內容替換、刪除、插入、重命名數據庫支持復制/修改 XQuery-Update 表單可能時,將操作重寫到部分更新從 .0 版本開始支持對 XML 內容進行兼容標準的更新XQuery-Update 支持將包含 XQuery-Update 表達式的 XMLQuery 運算符與 SQL Update 語句合并 XQuery-Update 為 XMLType
19、提供新值 update TABLE set XML_COLUMN = xmlQUERY( copy $NEWXML := $XML modify ( let $TARGET := $NEWXML/rootElement/targetElement return replace node $TARGET with $NEWCONTENT ) return $NEWXML passing XML_COLUMN as XML“, V_NEW_CONTENT as NEWCONTENT “ returning content ) where XQuery-Update 支持選擇用于 For 或 Let
20、 子句的目標節點在返回子句中指定修改 copy $NEWPO := $PO modify ( let $ROOT := $NEWPO/PurchaseOrder let $SHIPINST := $ROOT/ShippingInstructions return ( replace value of node $ROOT/User with $NEWUSER, replace node $ROOT/Requestor with element Requestor $NEWNAME, delete node $SHIPINST/address, insert node element stree
21、t $STREET as last into $SHIPINST, insert node element city $CITY as last into $SHIPINST, insert node element zipcode $ZIPCODE as last into $SHIPINST ) ) return $NEWPOXQuery-Update 使用更新 Oracle 數據庫中存儲的 XMLXML 數據屏蔽創建使用 XQuery-Update 的 XMLType 視圖來刪除或屏蔽內容在較早的數據庫版本中,使用 Oracle 特定運算符支持更新 xmlUpdateXML()、Dele
22、teXML()、insertChildXML() 等該運算符將在下一版 Oracle 數據庫中棄用XQuery-FullText 支持XQFT /TR/xpath-full-text-10/在 XML 內容中進行聲明式全文搜索包含文本、詞干、窗口邏輯全文運算符: ftor, ftand, ftMildNotXQuery contains() 運算符限于“string within string”搜索XQuery-FullText 運算通過 XML 感知全文(上下文)索引獲得了優化從 Oracle Database .0 開始提供與標準兼容的 XML 內容全文搜索XQuery-FullText
23、支持與 XMLExists() 運算符配合使用執行全文篩選與 XMLQuery() 和 XMLTable() 配合使用來執行基于全文的片段提取支持文檔、片段、元素和屬性級別運算文檔和片段級運算以所有后代節點為目標select PURCHASEORDER_XML from PURCHASEORDERSwhere XMLExists( $P/PurchaseOrder/ShippingInstructions/Address/street. contains text $PHRASE passing PURCHASEORDER_XML as P“, sport as PHRASE“);使用詞干搜索
24、詞匯的不同形式使用 FT 邏輯運算符搜索多個詞匯使用窗口指定詞與詞之間的距離XQuery-FullText 支持通用運算$PO/PurchaseOrder/ShippingInstructions/Address/street. contains text $WORD using stemming$PO/PurchaseOrder/ShippingInstructions/Address. contains text $WORD1 ftand $WORD2$P/PurchaseOrder/ShippingInstructions/Address. contains text $WORD1 ft
25、and $WORD2 window 6 wordsXQuery-FullText 索引基于現有 Oracle Text(上下文)技術經過驗證的全文搜索功能可識別各種命名空間XQuery-FullText 索引創建使用 XMLExists() 執行 XQuery-FullText 操作BEGIN CTX_DDL.CREATE_SECTION_GROUP(XQFT,PATH_SECTION_GROUP); CTX_DDL.SET_SEC_GRP_ATTR(XQFT,XML_ENABLE,T); CTX_DDL.create_preference(STORAGE_PREFS, BASIC_STORA
26、GE); CTX_DDL.set_attribute( STORAGE_PREFS, D_TABLE_CLAUSE, LOB(DOC) STORE AS SECUREFILE (COMPRESS MEDIUM CACHE) ); CTX_DDL.set_attribute( STORAGE_PREFS, I_TABLE_CLAUSE, LOB(TOKEN_INFO) STORE AS SECUREFILE (NOCOMPRESS CACHE);END;/CREATE INDEX PURCHASEORDER_XQFT_IDX ON PURCHASEORDER(OBJECT_VALUE) INDE
27、XTYPE IS CTXSYS.CONTEXT PARAMETERS( storage STORAGE_PREFS| section group XQFT )/XQuery-Full Text 說明XQuery-FullText 包含 contains() 和 ora:contains() 運算符避免在 XML 內容上使用 SQL contains 運算符ora:contains 運算符在下一版數據庫中棄用,轉為使用 XQuery-FullText其他 SQL/XML 運算符XMLCast()與 XMLQuery() 運算符配合使用將 XML 標量轉換成 SQL 標量XMLTransfom()
28、基于 XSL 的轉換XMLNamespaces()命名空間管理SchemaValidate()XMLType 方法用于針對 XML 模式驗證文檔議題XML DB 簡介XMLType 和 XQuery加載 XMLXML 生成XML 和 SQL 集成XML 存儲和索引XML 模式XML DB 信息庫數據庫原生 Web 服務總結二進制持久性在磁盤上存儲解析后的 XML 表示減少了存儲需求標記令牌化,內容以原生表示存儲針對流、索引和片段提取進行了優化。磁盤、內存和服務器與客戶端上使用的單一表示提取 XML 后,無解析/序列化開銷部分更新無模式和 XML 模式感知版本SQL create table P
29、URCHASEORDER of XMLTYPE 2 XMLTYPE store as SECUREFILE BINARY XML;Oracle 二進制 XML應用服務器Web緩存數據庫客戶端二進制 XML二進制 XML二進制 XML SQL、PL/SQLXQuery XQuery、Java、C XQuery、JAVA、C客戶端編碼在執行之前,插入語句調用 XMLType 對象上的 setBinaryXML() 和 setMetadataConn() 方法,以啟用客戶端編碼當前尚不支持 JDBC 4.0 XMLType 對象使用 xdb.jar,而非 xdb6.jarXMLType xml =
30、new XMLType(connection,is);xml.setBinaryXML();xml.setMetadataConn(connection);statement.setObject(1,xml);boolean result = statement.execute();客戶端編碼允許將 XML 的解析和編碼開銷從數據庫移到客戶端總體網絡流量減少數據庫 CPU 使用減少客戶端 CPU 使用增加(沒有免費的午餐)從一個連接插入多個類似文檔時最為有效從 InputStream 構造 XMLType 時最為有效。從 XMLDocument 構造 XMLType 時,不建議使用客戶端編碼:
31、 發送到服務器的字節發送到服務器的字節減少 50%完美的莎士比亞作品36 個文件、9,067,913 字節高內容標記比客戶端編碼: 發送到服務器的字節從服務器讀取 2 倍字節數 客戶端需要標記表來進行 XML 編碼低于 .001% 的內容客戶端編碼: CPU 使用DB CPU 減少 85%客戶端 CPU 增長 8 倍所用時間減少 5%可伸縮性顯著提高XML 索引: 非結構化索引無需了解索引的 XML 的結構或搜索條件XML 中的所有元素和屬性均加入索引名稱/值對模型優化搜索和片段提取加快路徑和帶謂詞路徑搜索支持類型感知搜索同步和異步索引模式SQL create index PURCHASEOR
32、DER_XML_IDX 2 on PURCHASEORDER (OBJECT_VALUE) 3 indextype is XDB.XMLINDEX;路徑子設置對所有節點加索引可能成本高昂DML 性能和空間使用路徑子設置允許對索引節點進行控制平衡檢索性能、DML 性能和空間使用SQL create index PURCHASEORDER_XML_IDX 2 on PURCHASEORDER (OBJECT_VALUE) 3 indextype is XDB.XMLINDEX 4 parameters ( 5 paths ( 6 include ( 7 /PurchaseOrder/Referen
33、ce 8 /PurchaseOrder/LineItems/* ) 9 );結構化 XML 索引索引“結構之島”需要對索引的 XML 和將要執行的查詢類型有一定程度了解映射到關系表的特定葉級節點每個島的表、葉節點值存儲為列感知數據類型基于 XMLTable syntax()優化所有 SQL/XML 運算符XMLQuery()、XMLTable() 和 XMLExists()SQL create index PURCHASEORDER_XML_IDX 2 on PURCHASEORDER (OBJECT_VALUE) indextype is XDB.XMLINDEX 4 parameters
34、(PARAM PO_SXI_PARAMETERS);XML 表索引 DDL SQL call DBMS_XMLINDEX.registerParameter( 2 PO_SXI_PARAMETERS, 3 GROUP PO_LINEITEM 4 xmlTable PO_INDEX_MASTER 5 /PurchaseOrder 6 COLUMNS 7 REFERENCE varchar2(30) PATH Reference, 8 LINEITEM xmlType PATH LineItems/LineItem 9 VIRTUAL XMLTABLE PO_INDEX_LINEITEM 10 /
35、LineItem 11 PASSING lineitem 12 COLUMNS 13 ITEMNO number(38) PATH ItemNumber, 14 UPC number(14) PATH “Part/text(), 15 DESCRIPTION varchar2(256) PATH Part/Description 16 );議題XML DB 簡介XMLType 和 XQuery加載 XMLXML 生成XML 和 SQL 集成XML 存儲和索引XML 模式XML DB 信息庫數據庫原生 Web 服務總結XMLSchemaWC3 標準,用于定義 XML 文檔的結構和內容XML 模式
36、是 XML 文檔用于驗證目的Oracle XDK、XERCES 或 Microsoft 的 MSXML 等解析器XMetal、Oxygene 或 Microsoft Word 2K7 等 XML 編輯器使用 Altova 的 XML Spy 或 Oracle 的 JDeveloper 等工具創建XML 模式和二進制 XML提高了二進制 XML 存儲效率映射到原生格式的簡單類型預生成的標記表改進流傳輸 XPath 和 XML 索引運算利用基數和位置信息二進制 XML 編碼流程的模式驗證部分DBMS_XMLSCHEMA.registerSchema ( SCHEMAURL = /xsd/purch
37、aseOrder.xsd, SCHEMADOC = xmlType(bfilename(XMLDIR,po.xsd), nls_charset_id(AL32UTF8), GENTYPES = FALSE, GENTABLES = FALSE, OPTIONS = DBMS_XMLSCHEMA.REGISTER_BINARYXML )對象關系存儲XML 模式定義 XML 對象類型, XML 模式編譯從 XML 對象模型生成的 SQL 對象模型 創建對象關系表,為 SQL 對象提供有效存儲。支持對象關系存儲XML 對象模型和 SQL 對象模型之間無損失雙向映射通過在底層表上重寫入 SQL 運算執行 XQueryDBMS_XMLSCHEMA.registerSchema ( SCHEMAURL = /xsd/purchaseOrder.xsd, SCHEMADOC = xmlType(bfilename(XMLDIR,po.xsd), nls_charset_id(AL32
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- aca考試題庫及答案
- 返校招生宣傳培訓
- 培訓匯報成果
- 面源污染生態風險評估數據挖掘-洞察及研究
- 健身器材行業人才流失風險控制考核試卷
- 農村幼兒園轉崗教師培訓
- 液壓系統智能故障預測系統開發考核試卷
- 農村土地承包經營權流轉市場建設考核試卷
- 單板加工質量控制標準國際化對接考核試卷
- 高定價2025年成人高考模擬考試
- (高清版)TDT 1012-2016 土地整治項目規劃設計規范
- 網絡與信息安全管理員(四級)考試題庫附答案
- 2024版《安全生產法》考試題庫附答案(共130題)
- 年產500噸40gL煙嘧磺隆可分散油懸浮劑農藥項目環境影響評價報告表樣本
- 2024年內蒙古北方聯合電力有限責任公司招聘筆試參考題庫含答案解析
- 建設養老院項目計劃書
- 房建工程監理大綱范本(內容全面)
- 學校會議室改造項目投標方案(技術標)
- 介紹方志敏(修訂版)
- 《操作風險管理》課件
- 兒童樂園安全管理制度
評論
0/150
提交評論