




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Oracle Database 12c 中 Oracle XML DB 簡介Mark D Drake產(chǎn)品管理經(jīng)理以下內(nèi)容旨在概述產(chǎn)品的總體發(fā)展方向。 該內(nèi)容僅供參考,不可納入任何合同。 其內(nèi)容不構(gòu)成提供任何材料、代碼或功能的承諾,并且不應(yīng)該作為制定購買決策的依據(jù)。 此處所述有關(guān) Oracle 產(chǎn)品的任何特性或功能的開發(fā)、發(fā)布以及相應(yīng)的日程安排均由 Oracle 自行決定。議題XML DB 簡介XMLType 和 XQuery加載 XMLXML 生成XML 和 SQL 集成XML 存儲和索引XML 模式XML DB 信息庫數(shù)據(jù)庫原生 Web 服務(wù)總結(jié)Oracle 與 XML: 持續(xù)創(chuàng)新 1998
2、 2001 2004 2007 2013 性能XML 存儲和資料庫XML APIXQuery二進(jìn)制存儲和索引XQuery-UpdateXQuery Full-Text議題XML DB 簡介XMLType 和 XQuery加載 XMLXML 生成XML 和 SQL 集成XML 存儲和索引XML 模式XML DB 信息庫數(shù)據(jù)庫原生 Web 服務(wù)總結(jié)使用 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 標(biāo)準(zhǔn)XML 內(nèi)容的自然查詢語言從 XPath 和 XSLT 發(fā)展而來 類似于關(guān)系世界中的 SQL迭代,而不是基于集合基本構(gòu)造是 FLWOR 子句FOR、LET、WHERE、ORDER、RETURNXQuery 操作產(chǎn)生包含零個或更多節(jié)點的序列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 文檔上運行集合源包含文件夾內(nèi)容XMLType 表或列圓錐映射模式的關(guān)系表協(xié)議“oradb:” 導(dǎo)致路徑組件應(yīng)解釋為模式、表、列列是可選的for $doc in fn:collection(“oradb:/OE/PURCHASEORDER”) return $doc XQuery: Where 和 Order by 子句Wher
5、e 子句控制對哪些文檔或節(jié)點進(jìn)行處理啟用謂詞Order by 子句控制節(jié)點順序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 中執(zhí)行 XQuery如果 XQuery 語句以 ; 結(jié)尾,則使用空注釋 (: :) 防止被 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 /數(shù)據(jù)庫原生 Web 服務(wù)中的 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 相當(dāng)于 JDBC 對 SQLOracle XMLDB 的參考實現(xiàn) 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 加載器從本地文件系統(tǒng)加載文件集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 構(gòu)造器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 將本地文件系統(tǒng)中的目錄引用到數(shù)據(jù)庫服務(wù)器必須指定正在加載的文件的字符集編碼。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 信息庫和協(xié)議使用 FTP、HTTP 和 WebDAV 將內(nèi)容直接加載到 Oracle 數(shù)據(jù)庫中的 XMLType 表中議題XML DB 簡介XMLType 和 XQuery加載 XMLXML 生成XML 和 SQL 集成XML 存儲和索引XML 模式XML DB 信息庫數(shù)據(jù)庫原生 Web 服務(wù)總結(jié)從關(guān)系數(shù)據(jù)生成 XML有了 SQL/XML,可以從關(guān)系數(shù)據(jù)輕松生成 XMLSQL Query 生成的結(jié)果集包含一個或多個 XML 文檔有了 XQuery,可以從關(guān)系表生成基于模板的 XMLfn:
13、collection() 生成關(guān)系數(shù)據(jù)的規(guī)范 XML 表示有了 XMLType 視圖,可以對關(guān)系內(nèi)容進(jìn)行持久的以 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 信息庫數(shù)據(jù)庫原生 Web 服務(wù)總結(jié)XMLQuery() 片段訪問在 SQL where 子句中使用,從結(jié)果集的每個文檔中提取片段。綁定變量通過“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 的關(guān)系視圖“COLUMNS”子句擴展 XMLTable,允許創(chuàng)建 XML 內(nèi)容的線性
16、關(guān)系視圖支持對 XML 內(nèi)容進(jìn)行 SQL 操作視圖允許識別非 XML 的工具訪問 XML 內(nèi)容使用鏈?zhǔn)?XMLTable 操作管理的集合層級將傳遞到鏈的元素作為 XMLType 片段重復(fù)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/以聲明方式修改和轉(zhuǎn)換 XML 內(nèi)容替換、刪除、插入、重命名數(shù)據(jù)庫支持復(fù)制/修改 XQuery-Update 表單可能時,將操作重寫到部分更新從 .0 版本開始支持對 XML 內(nèi)容進(jìn)行兼容標(biāo)準(zhǔn)的更新XQuery-Update 支持將包含 XQuery-Update 表達(dá)式的 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、 子句的目標(biāo)節(jié)點在返回子句中指定修改 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 數(shù)據(jù)庫中存儲的 XMLXML 數(shù)據(jù)屏蔽創(chuàng)建使用 XQuery-Update 的 XMLType 視圖來刪除或屏蔽內(nèi)容在較早的數(shù)據(jù)庫版本中,使用 Oracle 特定運算符支持更新 xmlUpdateXML()、Dele
22、teXML()、insertChildXML() 等該運算符將在下一版 Oracle 數(shù)據(jù)庫中棄用XQuery-FullText 支持XQFT /TR/xpath-full-text-10/在 XML 內(nèi)容中進(jìn)行聲明式全文搜索包含文本、詞干、窗口邏輯全文運算符: ftor, ftand, ftMildNotXQuery contains() 運算符限于“string within string”搜索XQuery-FullText 運算通過 XML 感知全文(上下文)索引獲得了優(yōu)化從 Oracle Database .0 開始提供與標(biāo)準(zhǔn)兼容的 XML 內(nèi)容全文搜索XQuery-FullText
23、支持與 XMLExists() 運算符配合使用執(zhí)行全文篩選與 XMLQuery() 和 XMLTable() 配合使用來執(zhí)行基于全文的片段提取支持文檔、片段、元素和屬性級別運算文檔和片段級運算以所有后代節(jié)點為目標(biāo)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 索引基于現(xiàn)有 Oracle Text(上下文)技術(shù)經(jīng)過驗證的全文搜索功能可識別各種命名空間XQuery-FullText 索引創(chuàng)建使用 XMLExists() 執(zhí)行 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 內(nèi)容上使用 SQL contains 運算符ora:contains 運算符在下一版數(shù)據(jù)庫中棄用,轉(zhuǎn)為使用 XQuery-FullText其他 SQL/XML 運算符XMLCast()與 XMLQuery() 運算符配合使用將 XML 標(biāo)量轉(zhuǎn)換成 SQL 標(biāo)量XMLTransfom()
28、基于 XSL 的轉(zhuǎn)換XMLNamespaces()命名空間管理SchemaValidate()XMLType 方法用于針對 XML 模式驗證文檔議題XML DB 簡介XMLType 和 XQuery加載 XMLXML 生成XML 和 SQL 集成XML 存儲和索引XML 模式XML DB 信息庫數(shù)據(jù)庫原生 Web 服務(wù)總結(jié)二進(jìn)制持久性在磁盤上存儲解析后的 XML 表示減少了存儲需求標(biāo)記令牌化,內(nèi)容以原生表示存儲針對流、索引和片段提取進(jìn)行了優(yōu)化。磁盤、內(nèi)存和服務(wù)器與客戶端上使用的單一表示提取 XML 后,無解析/序列化開銷部分更新無模式和 XML 模式感知版本SQL create table P
29、URCHASEORDER of XMLTYPE 2 XMLTYPE store as SECUREFILE BINARY XML;Oracle 二進(jìn)制 XML應(yīng)用服務(wù)器Web緩存數(shù)據(jù)庫客戶端二進(jìn)制 XML二進(jìn)制 XML二進(jìn)制 XML SQL、PL/SQLXQuery XQuery、Java、C XQuery、JAVA、C客戶端編碼在執(zhí)行之前,插入語句調(diào)用 XMLType 對象上的 setBinaryXML() 和 setMetadataConn() 方法,以啟用客戶端編碼當(dāng)前尚不支持 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 的解析和編碼開銷從數(shù)據(jù)庫移到客戶端總體網(wǎng)絡(luò)流量減少數(shù)據(jù)庫 CPU 使用減少客戶端 CPU 使用增加(沒有免費的午餐)從一個連接插入多個類似文檔時最為有效從 InputStream 構(gòu)造 XMLType 時最為有效。從 XMLDocument 構(gòu)造 XMLType 時,不建議使用客戶端編碼:
31、 發(fā)送到服務(wù)器的字節(jié)發(fā)送到服務(wù)器的字節(jié)減少 50%完美的莎士比亞作品36 個文件、9,067,913 字節(jié)高內(nèi)容標(biāo)記比客戶端編碼: 發(fā)送到服務(wù)器的字節(jié)從服務(wù)器讀取 2 倍字節(jié)數(shù) 客戶端需要標(biāo)記表來進(jìn)行 XML 編碼低于 .001% 的內(nèi)容客戶端編碼: CPU 使用DB CPU 減少 85%客戶端 CPU 增長 8 倍所用時間減少 5%可伸縮性顯著提高XML 索引: 非結(jié)構(gòu)化索引無需了解索引的 XML 的結(jié)構(gòu)或搜索條件XML 中的所有元素和屬性均加入索引名稱/值對模型優(yōu)化搜索和片段提取加快路徑和帶謂詞路徑搜索支持類型感知搜索同步和異步索引模式SQL create index PURCHASEOR
32、DER_XML_IDX 2 on PURCHASEORDER (OBJECT_VALUE) 3 indextype is XDB.XMLINDEX;路徑子設(shè)置對所有節(jié)點加索引可能成本高昂DML 性能和空間使用路徑子設(shè)置允許對索引節(jié)點進(jìn)行控制平衡檢索性能、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 );結(jié)構(gòu)化 XML 索引索引“結(jié)構(gòu)之島”需要對索引的 XML 和將要執(zhí)行的查詢類型有一定程度了解映射到關(guān)系表的特定葉級節(jié)點每個島的表、葉節(jié)點值存儲為列感知數(shù)據(jù)類型基于 XMLTable syntax()優(yōu)化所有 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 信息庫數(shù)據(jù)庫原生 Web 服務(wù)總結(jié)XMLSchemaWC3 標(biāo)準(zhǔn),用于定義 XML 文檔的結(jié)構(gòu)和內(nèi)容XML 模式
36、是 XML 文檔用于驗證目的Oracle XDK、XERCES 或 Microsoft 的 MSXML 等解析器XMetal、Oxygene 或 Microsoft Word 2K7 等 XML 編輯器使用 Altova 的 XML Spy 或 Oracle 的 JDeveloper 等工具創(chuàng)建XML 模式和二進(jìn)制 XML提高了二進(jìn)制 XML 存儲效率映射到原生格式的簡單類型預(yù)生成的標(biāo)記表改進(jìn)流傳輸 XPath 和 XML 索引運算利用基數(shù)和位置信息二進(jìn)制 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 )對象關(guān)系存儲XML 模式定義 XML 對象類型, XML 模式編譯從 XML 對象模型生成的 SQL 對象模型 創(chuàng)建對象關(guān)系表,為 SQL 對象提供有效存儲。支持對象關(guān)系存儲XML 對象模型和 SQL 對象模型之間無損失雙向映射通過在底層表上重寫入 SQL 運算執(zhí)行 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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 校車接送合同協(xié)議書
- 企業(yè)入股合同協(xié)議書
- 終止物業(yè)合同協(xié)議書
- 酒吧營銷合同協(xié)議書
- 中國合同協(xié)議書
- 門窗安全協(xié)議書合同
- 土地購買合同協(xié)議書
- 合同執(zhí)行變更協(xié)議書
- 借人東西合同協(xié)議書
- 加盟合同協(xié)議書3
- (四調(diào))武漢市2025屆高中畢業(yè)生四月調(diào)研考試 數(shù)學(xué)試卷(含答案詳解)
- 應(yīng)急管理概論-理論與實踐電子教案完整版
- 數(shù)據(jù)中心基礎(chǔ)設(shè)施運行維護(hù)規(guī)范
- 4M變化點管理看板模板
- 多聯(lián)機電控常見故障及維修(課堂PPT)
- 點焊機焊接變壓器的結(jié)構(gòu)特點和設(shè)計制造
- DLT667-1999(IEC60870-5-103)規(guī)約詳解
- 緩蝕阻垢劑安全技術(shù)說明書MSDS
- 心臟體格檢查教案(共5頁)
- 國家開放大學(xué)《計算機組成原理》章節(jié)測試參考答案
- 絕對干貨污水處理廠經(jīng)濟(jì)評價表(全)
評論
0/150
提交評論