《XML资料库介绍.ppt》由会员分享,可在线阅读,更多相关《XML资料库介绍.ppt(92页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、XML資料庫介紹張景堯政治大學電子計算機中心政治大學資訊管理系2002年9月4日Agendan相關議題nXML/DB 相關產品種類定義n現有RDBMS支援XML的解決方案qMS SQL Server&XMLqOracles XDK!-中場休息吃點心-n原生式XML資料庫qXindiceqTaminon於電子公文系統與SCORM教材工廠應用XML是資料庫嗎?n以極嚴謹角度思考答案為不是q當”XML”只是一份XML文件時;q它頂多能視為資料的集合,跟檔案一樣。q自身沒有任何額外的軟體(通常跟RDBMS有關連)幫助處理或管理文件資料n從較寬鬆角度思考答案為是的q當”XML”除了是一份XML文件時;q
2、我們如果考慮到許多XML周邊所提供的能力,如:資料存放(XML 文件)、架構輪廓(DTDs,XML Schema)、查詢語言(XQuery,XPath,XQL,XML-QL,QUILT,etc.)及程式介面(SAX,DOM,JDOM)什麼是XML所欠缺的?n有效率的儲存能力n文件索引功能n文件安全性n交易與資料完整性n多使用者存取能力n資料觸發能力(Triggers)n於多重文件上的查詢能力什麼因素讓你想用資料庫?n請自問底下問題q是否想要把過去舊有資料(Legacy Data)呈現出來?q您是否需要個儲存網頁的地方?q資料庫是否用在某些資料交換是採用XML的應用上,諸如電子商務應用?q您打算
3、存的是資料還是文件?資料vs.文件nXML文件可初略分為兩類:q以資料為中心(Data-centric)q以文件為中心(Document-centric)n兩者差別並不那麼明顯n然而,這樣的分類可幫助吾人做出採用何種資料庫系統之正確決策。以資料為中心的XML文件n具備文件結構非常有規律的特徵n資料很細小(Fine-grained)即資料的最小獨立單位是PCDATA元素或屬性而已。n文件中極少或沒有混雜的資料內容。n同階層的元素順序及PCDATA出現點並不重要。n通常是設計來給機器用的文件。n文件多僅用在資料交換上。n例如:訂單、飛機時刻表、餐廳菜單等。Customer ABC Industri
4、esABC Industries/123 Main St.123 Main St.ChicagoChicago ILIL 6060960609/981215981215/Line Part Turkey wrench:Turkey wrench:/Stainless steel,one-piece Stainless steel,one-piece construction,lifetime guarantee.construction,lifetime guarantee.9.959.95 1010 Line Part Stuffing separator:Stuffing separato
5、r:/Aluminum,one-year guarantee.Aluminum,one-year guarantee.13.2713.27 5 5 /範例範例以文件為中心的XML文件n特色是文件結構無規律n一份文件資料通常較大,即資料的最小獨立單位可能會是混雜式元素或另一份文件。n文件中充斥著混雜的資料內容。n同階層的元素順序及PCDATA出現點很重要。n通常是設計來給人類閱讀的文件。n例如:書、電子郵件、廣告單、教材描述文件以及幾乎概括所有XHTML文件等。範例範例SCORMXML資料庫資料庫zh-TW簡介能處理簡介能處理XML之資料庫之資料庫還有使用經驗分享還有使用經驗分享資料、文件與資料
6、庫n判斷您要儲存的文件是以資料為中心還是文件為中心有助於找出適用的資料庫。n一般來說,若是以資料為主的話,則資料可存放於關連式資料庫、物件導向資料庫或階層式資料庫,再透過中介軟體或資料庫本身所提供XML存取能來轉換XML文件。n若是以文件為主的話,則選用原生式XML資料庫或內容管理系統較恰當。XML/DB 相關產品種類定義與應用(1)nMiddleware:中介軟體用來處理來自您應用程式的呼叫以便於XML文件及資料庫間做資料轉換工作;用於以資料為中心的應用上。(MS ADO,IBM XLE,Oracle XSQL Servlet)nXML-EnabledDatabases:具備XML能力的資料
7、庫,擴充了原有資料庫功能可在XML文件與自身資料庫間轉換資料。主要用於以資料為中心的應用上。(Oracle,MS SQL,Sybase,DB2)nNativeXMLDatabases:原生式XML資料庫以”自然”的方式存放XML。此名詞並未被明確定義,但概指被設計來能維護XML結構之資料庫。以資料為中心及文件為中心皆能應用。(Tamino,Xindice)XML/DB 相關產品種類定義與應用(2)nXMLServers:XML伺服器能提供在各分散式應用程式(如電子商務或B2B應用程式等)間傳遞以XML文件為形式的資料。主要用於以資料為中心的應用上。(HP Total-e-Business)nX
8、MLApplicationServers:XML應用伺服器為Web應用伺服器提供將XML(通常是由動態網頁產生)送至使用者瀏覽器。以資料為中心及文件為中心皆能應用。(Cocoon,IBM Net.Data)nContentManagementSystems:內容管理系統管理人類可讀的文件片段,提供包含編輯、版本控制及從現有片段建立新文件的功能。主要用於以文件為中心的應用上。(ContentXML,GEMt)XML/DB 相關產品種類定義與應用(3)nXMLQueryEngines:XML查詢引擎為單一獨立引擎用以查詢XML文件。以資料為中心及文件為中心皆能應用。nXMLDataBinding:
9、XML資料連結能把XML文件連結成物件,有些產品甚至能讓您從資料庫來存取這類物件。用於以資料為中心的應用上。nXML/DB相關產品清單,請參見:http:/ BLOB 型態存放(必須以額外工具才能進行功能受限的查詢)l資料得經過 正規化正規化 且存放在 多重資料表多重資料表裡n關連式資料庫並不懂XML或XML查詢語言l資料庫需外加一層來處理XML相關操作l造成不斷的雙向格式與結構轉換的負擔轉換的負擔lXSQL僅允許以XML格式檢索檢索(而非存放存放)關連式資料n用SQL為基礎的查詢會造成系統巨大負擔lXML文件樹狀階層結構必須用複雜的資料表聯合複雜的資料表聯合才能查詢的了 nXML相關處理資訊
10、是擺在資料庫核心之外l可能會浮現出潛在的參考正確性檢查參考正確性檢查(referentialintegrity)問題關連式資料庫系統與XML的對映效能不彰效能不彰查詢時會有複雜聯合查詢時會有複雜聯合資料更新時參考正確性限制資料更新時參考正確性限制擴充能力差擴充能力差資料表充斥著外鍵資料表充斥著外鍵RDBMSMappingCodeORDERITEMPERSONBOOKLnameLname LuLuorderorderSold-toSold-toSold-on Sold-on 1997031719970317ItemItemTitle Title PiPiAuthorAuthorSmithSmit
11、hPrice Price 5.955.95FnameFname AndyAndyPersonPersonBookBook1.Always create a primary keyq每個資料表皆加入一其數值會自動增值的欄位。q該欄名稱以元素名加上Key字來命名,如elementKey。q將該欄設定為主鍵值欄位。2.Basic table creation q對每一結構性資料元素建立一個資料表。q若該元素只有一個母元素,則建立一個外來鍵欄位指向母元素。3.Handling multiple parent elements.q若該元素在母元素只出現0次或1次的話,在母元素建立一外來鍵欄位指向子元素,
12、並設定成選擇性的或必要的。q若該元素在母元素出現0到多次或1到多次的話,加一中間資料表來表示與母元素間的多對多關係。4.Representing text-only elements.q對最多僅出現一次的純文字元素於其母元素資料表中增一欄位存放。q確保該欄位定義的大小足夠放該文字元素內容。q如該純文字元素為選擇性的,將欄位定義成可允許NULL值。Design RDBMS for Existing XMLSource:Kevin William,etc,“Professional XML Databases”Example for Rule 1&2CREATE TABLE Customer(Cu
13、stomerKey integer PRIMARY KEY)CREATE TABLE Invoice(InvoiceKey integer PRIMARY KEY,CustomerKey integer CONSTRAINT FK_Invoice_Customer FOREIGN KEY(CustomerKey)REFERENCES Customer(CustomerKey)CREATE TABLE LineItem(LineItemKey integer PRIMARY KEY,InvoiceKey integer CONSTRAINT FK_LineItem_Invoice FOREIGN
14、 KEY(InvoiceKey)REFERENCES Invoice(InvoiceKey)Example for Rule 3CREATE TABLE Customer(CustomerKey integer PRIMARY KEY,)CREATE TABLE Manufacturer(ManufacturerKey integer PRIMARY KEY,)CREATE TABLE Address(CustomerKey integer NULL,ManufacturerKey integer NULL,)Example for Rule 4CREATE TABLE Customer(Cu
15、stomerKey integer PRIMARY KEY,Name varchar(50),Address varchar(100),City varchar(50)NULL,State char(2)NULL,PostalCode varchar(10)Design RDBMS for Existing XML(cont.)5.Representing multiple text-only elements.q若只在單一母元素出現一次以上,所以建立一個資料表,含該元素的文字資料與一外來鍵欄位指向母元素。q假如出現在多種母元素裡又不只一次以上,採用中間資料表來表示與母元素間的關係。6.Han
16、dling EMPTY elements.q為每個此種元素建立一資料表,如其僅有一母元素則建立外來鍵欄位。7.Representing mixed content elements.q建立TableLookup資料表為資料庫中每個資料表插入一行記錄,並插入第0行其資料表名為TextContentq建立TextContent表格,欄位為:TextContentKey(整數型態鍵值)、ElementName(存放純文字元素之元素名)、(TextContent)存放文字內容。q建立兩個資料表:一為此元素使用直接以元素命名(如:p),另一為連結其內各種次元素之資料表(命名如:pSubelement)q
17、次元素資料表中需有一外來鍵指向主元素表,另一外來鍵指向TableLookup表標明資料是放在那個資料表中、一個資料表索引鍵以找出內容是擺在哪一行,及一序號欄以標出次元素或文字元素在主元素中的順序。Example for Rule 5CREATE TABLE Customer(CustomerKey integer,Address varchar(100),City varchar(50)NULL,State char(2)NULL,PostalCode varchar(10),PRIMARY KEY(CustomerKey)CREATE TABLE CustomerName(CustomerK
18、ey integer,Name varchar(50)CONSTRAINT FK_CustomerName_Customer FOREIGN KEY(CustomerKey)REFERENCES Customer(CustomerKey)Example for Rule 7CREATE TABLE p(pKey integer,PRIMARY KEY(pKey)CREATE TABLE TableLookup(TableLookupKey integer,TableName varchar(255),PRIMARY KEY(TableLookupKey)CREATE TABLE TextCon
19、tent(TextContentKey integer,ElementName varchar(255)NULL,TextContent varchar(255)CREATE TABLE pSubelements(pKey integer,CONSTRAINT FK_pSubelements_p FOREIGN KEY(pKey)REFERENCES p(pKey),TableLookupKey integer,CONSTRAINT FK_pSubelements_TableLookup FOREIGN KEY(TableLookupKey)REFERENCES TableLookup(Tab
20、leLookupKey),TableKey integer,Sequence integer)Design RDBMS for Existing XML(cont.)8.Handling the“ANY”content elements.q作法與處理mixed content element方式一樣。9.CDATA attributesq在含此屬性之元素的資料表中加入一個此屬性的欄位。q設定資料型態為varchar並依經驗設定最大長度。10.REQUIRED/IMPLIED/FIXED attributesq屬性是#REQIURED 表每筆record中必有此資料。q屬性是#IMPLIED 表
21、此欄位允許NULL值。q屬性是#FIXED 原則上不必進資料庫,有必要才放進去。11.ENUMERATED attributesq為此屬性在該元素資料表中建立一個欄位,但只存放代碼。q建立一個對照表(Lookup Table)存放所有可能的數值列。q每次插入資料時都到對照表轉譯成代碼後再存入該元素的資料表中。12.Handling ID attributesq若該ID屬性資料帶有意義者,將其當作CDATA存進資料庫中。q若該ID屬性資料表示為主鍵值,可以拿它來insert或update資料庫資料。Design RDBMS for Existing XML(cont.)13.Handling I
22、DREF attributesq若只指向一種特定元素的話,則當作外來鍵指向以該ID屬性為主鍵值的元素。q若指向不只一種元素的話,則透過建立TableLookup表格方式,指向相應的鍵值。14.Handling IDREFS attributesq若只指向一種特定元素的話,建立一個join table,內容為兩個互相有關係的外來鍵值。q若指向不只一種元素的話,則透過建立TableLookup表格方式,指向相應的鍵值。q在關係表中與lookup table間要建立外來鍵設定。15.NMTOKEN attributesq對每個NMTOKEN型態屬性建立一欄位。16.NMTOKENS attribut
23、esq對每個NMTOKENS型態屬性建立一資料表,含:一自動增值之主鍵、一指向元素資料表的外來鍵與TOKEN字串欄位。17.ENTITY and ENTITES attributesq處理方式同NMTOKEN與NMTOKENS18.Check for name collisionsq檢查所有表格,如有名稱衝突,就改名。Example for Rule 13CREATE TABLE Customer(CustomerKey integer,PRIMARY KEY(CustomerKey)CREATE TABLE Invoice(InvoiceKey integer,CustomerKey int
24、eger CONSTRAINT FK_Invoice_Customer FOREIGN KEY(CustomerKey)REFERENCES Customer(CustomerKey)不利於RDBMS的基本論點(1)n關連式資料庫管理系統是設計用來對關連式資料幹活的關連式資料庫管理系統是設計用來對關連式資料幹活的l假如資料無法被簡單地正規化則採用關連式解決方案是不妥的。n關連式資料庫無法處理複雜的關連式資料庫無法處理複雜的XML階層階層/巢狀結構巢狀結構l形成太多資料表l形成太多外部參考l形成太多外鍵l資料表聯合太複雜l查詢很麻煩l無物件鎖定功能不利於RDBMS的基本論點(2)n關連式資料庫提
25、供許多存放選擇,這是因為沒有一種關連式資料庫提供許多存放選擇,這是因為沒有一種是好的方案是好的方案l BLOBs 型態資料無法輕易地查詢l BLOBs 型態資料無法輕易地更新l 把XML資料存放在多重資料表中會造成效能的負荷,所以必須儘量少採用此方法。MS SQL Server&XML從SQL Server存取XML(SQL Server 2000 with XML extensions)SQL Server 2000:SQLXMLnMicrosofts Mapping technology(and more)nShipped with SQL Server 2000qTwo subseque
26、nt releases have shipped to the WebnProvides a rich XML view of relational datanSemi-structured,hierarchical view of flat relational datanTwo-way view:query and updatenMultiple access mechanisms(HTTP,ADO,ADO.NET,SOAP)nMiddle-tier and Server side supportQuery/Update TechnologiesnFOR XML(raw,auto,nest
27、ed,explicit)qSQL language extension to retrieve XML instead of rowsetsnXML ViewsqWork with your relational database as if it was XML file(through annotated schema)nBulkloadqShred large XML files into existing tablesnUpdategramsqUpdate through XML ViewnXPath query supportArchitectureQueryProcessorQue
28、ryProcessorAnnotatedXSDAnnotatedXSDMappingSchemasMappingSchemasXPathXPathQueryQueryXMLXMLSQLSQLServerServerRowsetsRowsetsFORXMLFORXMLSQLSQLQueriesQueriesFORXMLFORXMLQueriesQueriesSQLSQLQueriesQueriesFORXMLFORXMLQueriesQueriesFORXMLFORXMLXMLBulkloadXMLBulkloadBCP/SQLBCP/SQLXMLXMLUpdategramsUpdategram
29、sSQLupdate/SQLupdate/insert/deleteinsert/deleteXMLXMLMapping TechnologiesnOptimized for data-centric documentsn“Shredding”of XML documents into and out of non-XML logical model,e.g.RelationalnProvides a denomalized logical view on top of highly structured,normalized datanUser-defined mappingqNot all
30、 data may be mapped to the destinationqPhysical structure may be lostqSchema-less content might be discardednIn some cases,a default(system-defined)mapping may sufficeXML ViewsnMap between relational data and XMLnDeclarativenNoninvasiveqNo changes to legacy data sourcesqNo control over DB Server req
31、uirednXML View is an XML SchemaqXSD and XDR supportedDefault Mapping ExampleCustID-ANULLBXMLViewRelationalData:CustomersTableExplicit Mapping ExamplepkCustID-ANULLBRelationalData:tblCustomersTableXML Results from SQL Server SELECT name,address FROM EmpTable FOR XML AUTOQuery:XML result:AUTO mode use
32、s table name for row elementRAW mode uses row for the row element.NETDataProviderDataReaderCommandConnectionMappingADO.NET and XMLControls,Designers,Code-gen,etcDataSetXmlReaderXSL/T,X-Path,etcXmlData-DocumentDataAdapterADO.NET and XMLnThe DataSetqLoads/saves XML data into/out of DataSetqSchema can
33、be loaded/saved as XSDqSchema can be inferred from XML DatanThe DataSet can be associated with an XmlDataDocumentqExposes a relational view over structured XMLnAccording to the DataSet schemaqAllows strong typing,control binding,relational access of XML dataqAllows XML tools(schema validation,XSL/T,
34、XPath queries)against relational dataqPreserves full fidelity of XML DocumentLoading XML/Load DataSet with XMLDataSet ds=new DataSet();ds.ReadXml(inventory.xml);/Add a record to the Inventory tableDataTable inventory=ds.TablesInventory;DataRow row=inventory.NewRow();rowTitleID=1;rowQuantity=25;inven
35、tory.Rows.Add(row);/Write out XMLds.WriteXml(updatedinventory.xml);Oracles XDKXML Development KitSupport for XML in Oracle Products XML Developer KitqXML Parser qXSLT ProcessorqXSQL PagesqXML SQL UtilityOracle 9i SYS.xmltype DatatypeOracle TextJDeveloperPLSXMLXML Developer Kit(XDK)A single Oracle mo
36、dule that XML-enables your Oracle databaseFeatures based on XML standards:qXML parserqDOM and SAX supportqXSLT processorOracle-specific features:qXSQL pagesqXML SQL utilityXDK Availability and Compatibility nInstalls automatically with Oracle 9i and Oracle 8i Release 3(8.1.7)databasesnAvailable for
37、Oracle 8i Release 1 and 2 from the Oracle Technology Network at nNot available for Oracle7 or Oracle8Oracles XDK is evolving rapidly.Check OTN periodically to see if a newer version of the XDK is available for download.XDK Fun FactsnJava applications can run inside or outside the database.nYou must
38、install Oracles JVM in the database in order to run PL/SQL applications that use Oracles XDK.nSome XDK features(such as SAX support and XSQL pages)are only available in the XDK for Java.Oracle Java/XML ToolsXML ParsersXML Class GeneratorsXML SQL Utility for JavaXSQL ServletXML Schema ProcessorXML Cl
39、ass GeneratorDTDparserClass GeneratorJava classes(one per element)User writtenJava ApplicationValid documentXML SQL UtilitynInvoke an XSLT to transform data from any format into a style XML document.nConvert the document into a SQL INSERT statement and load the data into a table.nCapabilities exist
40、for updating and deleting data as well.nExtract data from the database into a document of any format by reversing the process.A facility for loading XML documents into the database and retrieving data from the database into XML documents,without storing the XML text in one large CLOB columnSQL UtilF
41、or JavaSelect EMPNO,ENAME from EMPWhere EMPNO=7654 7654 Martin Oracle SQL Utility for JavaWriting to the DBIf data is in standard XML form(see previous page)OracleXMLSave s=new OracleXMLSave(conn,“EMP”);URL url=s.createURL(xmlFile);Rowcount=s.insertXML(url);conn.close();.XSQL fileXSQLServletFile.xsq
42、l SELECT*FROM EMP ORDER BY sort Default valueXSQL Servlet ProcessingClient hits XSQL file with “http:/file.xsql?sort=EMPNO”SQLServlet parses XSQL,creates DOM treeSQL Page Processor passes XML parms and SQL stmts toSQL UtilitySQL Page Processor passes any XSL PIs to XSLT ProcessorSQL util sends SQL s
43、tmt to db,returns XML to replace the tags in the.xsql DOMXSLT processor runs transform against the stylesheet,returns results to browserXSQL ServletXSQLServlet“query XML”File.xsqlXML ParserXSQL UtilXMLResultsclientXSQLPageProcessorXSL filesclient123548967中場休息二十分鐘原生式XML資料庫Native XML DB何謂原生式XML資料庫n直接以
44、XML文件而非用文件中的資料來定義資料模型,並以該模型來儲存或檢索文件。n該模型(如XPath資料模型)應至少包含元素、屬性、PCDATA及文件順序的定義。n以XML文件為基本儲存單位,就像關連式資料庫是以資料表中的列(Row)為基本儲存單位一般。n不需要任何特定的底層實體儲存模型,也就是它可以建構於關連式、階層式或物件導向式資料庫上,也能運作在專屬儲存結構如壓縮檔等。原生式XML資料庫管理系統特色n直接支援以XML為輸出入格式。n沒有額外的轉換負擔效能較佳。n開發者及系統管理者都不需要在XML與SQL間變換。n原生XML對標準的支援較能一致。n檢索:支援原生XML搜尋能力,增進搜尋效能。n可
45、擴充性:能悠哉的處理XML文件結構的改變。為何用原生式XML資料庫n直截了當地存放XML。n具備XML導向的查詢機制。n能處理半結構化資料。n能輕易建構起鬆散耦合應用程式。n對文件結構改變有極大彈性與處理能力。n並不用來取代RDBMS。原生式XML資料庫和其他資料庫比較n為何不用關連式資料庫n為何不用物件導向資料庫n為何不直接用搜尋引擎就好原生式XML資料庫Database schema automatically built from DTDNo Mapping required Native Storage High PerformanceXML databaseLnameLname Lu
46、LuorderorderSold-toSold-toSold-on Sold-on 1997031719970317ItemItemTitle Title PiPiAuthorAuthorSmithSmithPrice Price 5.955.95FnameFname AndyAndyPersonPersonBookBookLnameLname LuLuorderorderSold-toSold-toSold-on Sold-on 199703119970317 7ItemItemTitle Title PiPiAuthorAuthorSmithSmithPrice Price 5.955.9
47、5FnameFname AndyAndyPersonPersonBookBookSQLXMLXML over SQL is badThis is slow,difficult and proprietaryNative XML is rightThis ensures performance,data integrity and extensibilityNative XML Storage XMLHow Do You QueryW3C XPathMost common language currently usedXPath 2.0 30 April,2002W3C XQuery XQuer
48、y 1.0 30 April,2002Proprietary LanguagesOver time these will go awayQuerying with XPathSimple yet powerful path based XML query language/root/nodecriteria=valueMany products extend XPath to allow queries across collections of documentsLimited in many waysNo groupingNo sortingLimited data typingQuery
49、ing with XQuery nBuilds on top of XPath and XML Schema data typesnEnables full data-typingnAllows joins between XML documentsnAllows sorting and groupingnLanguage is SQL like but works on trees rather then tablesnA complete query language for XML documentsqAccess collections of XML documents like SQ
50、L with relational tablesqFlexible,composable,optimizableHow do you Update DataW3C DOM/SAX/JDOMXML:DB XUpdateUsable todayUseful beyond just XML databasesW3C XQuery update extensionsExpected at some point in the futureNot be part of XQuery 1.0Experimental syntax does existSchemasMost native XML databa