* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download XML and DB2
Resource Description Framework wikipedia , lookup
Information privacy law wikipedia , lookup
Business intelligence wikipedia , lookup
Semantic Web wikipedia , lookup
Operational transformation wikipedia , lookup
Search engine indexing wikipedia , lookup
Data vault modeling wikipedia , lookup
National Information Exchange Model wikipedia , lookup
Versant Object Database wikipedia , lookup
Relational model wikipedia , lookup
Entity–attribute–value model wikipedia , lookup
Clusterpoint wikipedia , lookup
XML and DB2 By Josephine Cheng, Jane Xu IBM Santa Teresa Laboratory Slides edited from the original slides of Yunyu Song Outline Net.Data XML Extender Create XML document from DB2 Transform XML document to DB2 Searching XML documents Conclusion Net.Data VI A scripting language to create web applications which can access data from any ODBC compliant databases (e.g. DB2, Oracle, DRDA, ODBC, flat files and web registry data) Can generate XML documents from SQL queries. Its successor product is WebSphere Application server. Generating XML documents from existing DB2 data Net.Data Macro to generate XML Data Generating XML documents from existing DB2 data Resultset of XML data generated by Net.Data Outline Net.Data XML Extender Create XML document from DB2 Transform XML document to DB2 Searching XML documents Conclusion XML Extender Repository for XML documents and their DTDs. Data management functionalities (integrity, security, recoverability and management). User has the option to store the entire document as an column or decomposed into multiple tables and columns. Users can retrieve the entire document or extract XML elements and attributes dynamically in an SQL query. XML Collection SQL Collection Mapping It only works when you can collect all relevant data with a single SELECT statement, which is placed in the DAD. If multiple tables are involved you should use primaryforeign key relationships. RDB_Node Collection Mapping It allows node definitions for multiple tables. All involved tables must have primary keys. This approach does not require SQL in the DAD. It does allow imports as well as exports. XML Collection XML Collection XML Column Store entire XML document in a column of XML type Allows to query XML content Associate and store DTD in DB2 for one or more document Map element and attribute to DB2 table (side table) Used when your XML storage is mainly archival or for reference, and document content is updated infrequently XML Column XML Column DAD File Define which DB2 tables hold the data The mapping method: SQL Collection, RDB Node Collection, or XML Column Whether to validate XML documents with a DTD before storing or translating the contents Which DTD to use for validation and translation Sample DAD (SQL Collection) Sample DAD (RDB Node Collection) Sample DAD (XMLColumn) XML in DB2 Outline Net.Data XML Extender Create XML document from DB2 Transform XML document to DB2 Searching XML documents Conclusion Create XML from DB2 Generate XML fragments (SQL Collection) Generate whole XML documents (RDB Node Collection) Generate XML fragments (SQL Collection) REC2XML Return XML fragments XMLELEMENT Return Single elements XMLATTRIBUTES Group elements as XML attributes XMLAGG Aggregate elements in a hierarchy Examples I SELECT XML2CLOB( XMLELEMENT(NAME "Department", XMLATTRIBUTES(e.workdept AS "name"), XMLAGG(XMLELEMENT(NAME "emp", e.lastname) ORDER BY e.lastname) )) AS "dept_list" FROM employee e WHERE e.workdept IN ('C01','E21') GROUP BY workdept This query produces the following output. dept_list <Department name = "C01"> <emp>KWAN</emp> <emp>NICHOLLS</emp> <emp>QUINTANA</emp> </Department> <Department name = "E21"> <emp>GOUNOT</emp> <emp>LEE</emp> <emp>MEHTA</emp> <emp>SPENSER</emp> </Department> Example II REC2XML Fuction select rec2xml(1.0, 'COLATTVAL','MyRow',DEPTNO, DEPTNAME, MGRNO) AS MYROWS FROM DEPARTMENT MYROWS -------------------------------------------------------------------<MyRow> <column name="DEPTNO">A00</column> <column name="DEPTNAME">SPIFFY COMPUTER SERVICE DIV.</column> <column name="MGRNO">000010</column> </MyRow> <MyRow> <column name="DEPTNO">B01</column> <column name="DEPTNAME">PLANNING</column> <column name="MGRNO">000020</column> </MyRow> Compose XML documents (RDB Node) dxxGenXML dxxGenXMLClob generates an XML document according to the given DAD and places the result in a table you specify used when document update occasionally identical with dxxGenXML except that it returns the XML directly as a Character Large Object (CLOB) dxxRetrieveXML Used when composing or decomposing XML documents frequently Using the dxxEnableCollection stored procedure to create a named collection and stores the DAD within the database Then refer to it by name using dxxRetrieveXML and dxxRetrieveXMLClob Examples dxxGenXML(CLOB(100K) DAD, /* input */ char(resultTabName) resultTabName, /* input */ integer overrideType /* input */ varchar(1024) override, /* input */ integer maxRows, /* input */ integer numRows, /* output */ long returnCode, /* output */ varchar(1024) returnMsg) /* output */ dxxRetrieveXML(char(collectionName) collectionName, /* input */ char(resultTabName) resultTabName, /* input */ integer overrideType, /* input */ varchar_value override, /* input */ integer maxRows, /* input */ integer numRows, /* output */ long returnCode, /* output */ varchar(1024) returnMsg) /* output */ Outline Net.Data XML Extender Create XML document from DB2 Transform XML document to DB2 Searching XML documents Conclusion Transform XML into DB2 XML RDB_Node Collection XML column RDB_Node collection In this case it is the reverse of generating XML from an RDB Node Collection. The end result of this is pure relational data, in tables, and ready to be accessed with the usual database tools. You can do Queries, indexes, views, optimizations etc. dxxShredXML Takes the DAD as a parameter, similar to dxxGenXML Used for applications that do occasional updates dxxInsertXML Uses a DAD already stored, similar to dxxRetrieveXML Used for applications that make regular updates Takes an enabled XML collection as input parameter UDTs provided by XML extender (XML Column) XMLCLOB XML content stored as a character larger object (CLOB) in DB2 XMLVARCHAR XML content stored as VARCHAR in DB2 XMLDBCLOB XML document stored as double byte CLOB in DB2 XMLFILE XML document in a file on a local file system Store XML as XML Column in DB2 1. Ensure that the database is XML-enabled 2. 3. 4. 5. 6. 7. Optional: Locate or create a DTD for your documents and store it in DB2XML.DTD_REF. Create the table to store the XML documents and add the XML column. Also create any side tables. Create a DAD to map the XML to the relational DB structures. Enable the XML column, specifying the DAD. Create indexes for the side-tables. Insert some XML documents and start performing queries. Key Features of XML Column I The XML extender supports a subset of XPath, providing a way to locate specific data within an XML document. Combined with the provided extracttype functions (extractInteger, extractTimestamp, extractVarChar, etc.) you can retrieve values as database types. Example I Example II Key features of XML Column II You can select to copy specific element and attribute values to a side table. Doing that lets you search and manipulate the values directly via SQL just like any other column data, linking to the stored XML to pick up related values. You can create side table indexes, to improve search time. Use side table for fast search Key features of XML Column III XPath based element or attribute update UPDATE sales_tab SET order = Update(order, '/Order/Customer/Name', 'Customer X') WHERE sales_person = 'Salesperson Y' Using the Update function, you can correctly alters both the stored XML document and any relevant side tables. Outline Net.Data XML Extender Create XML document from DB2 Transform XML document to DB2 Searching XML documents Conclusion Searching XML docs (XML Column) Example of XML Column Searching XML documents (Column) Using side tables. Can make a view of the joint. Searching XML documents (Column) Example of query against attribute. The UDF is expensive. Alternatives: Use DAD to define CUSTOMER as another index in the side table. Enable XML column to use text indexing (e.g. section search with db2tx.contains). Searching XML documents (Collect) Search can be done directly against the SQL based tables, or using procedures dxxGenXML() and dxxRetrieveXML(). The DAD is used to specify whether to retrieve the entire document or a fragment. The DAD is also used to specify the search criteria which can be based either on tables or SQL query. Outline Net.Data XML Extender Create XML document from DB2 Transform XML document to DB2 Searching XML documents Conclusion Conclusion: XML in DB2 Requirement Solutions generate XML document from relational data (DB2 tables) Use simple functions (REC2XML XMLELEMENT etc.) Use a "SQL Collection" to map a query to an XML document structure Use an "RDB Node Collection" to map a number of tables to an XML document structure (this also allows XML import) Use Net.Data Macro to generate XML Data Ignore DB2's capability and use Visual Basic or VB Script Transform XML to relational data Use “RDB_node collection” to store XML in DB2 tables Store XML documents in DB2 Database for later reference Use an "XML Column" to store entire XML documents.They can still be indexed and queried via DB2 functions