XML database: Difference between revisions

Content deleted Content added
Monkbot (talk | contribs)
m Task 18 (cosmetic): eval 12 templates: hyphenate params (1×);
Monkbot (talk | contribs)
m Task 18 (cosmetic): eval 12 templates: hyphenate params (9×);
Line 7:
 
== Rationale for XML in databases ==
There are a number of reasons to directly specify data in XML or other document formats such as [[JSON]]. For XML in particular, they include:<ref name=nicola2010>{{cite web|last1=Nicola|first1=Matthias|title=5 Reasons for Storing XML in a Database|url=http://nativexmldatabase.com/2010/09/28/5-reasons-for-storing-xml-in-a-database/|website=Native XML Database|accessdateaccess-date=17 March 2015|date=28 September 2010}}</ref>
<ref name=feldman2013>{{cite conference|last1=Feldman|first1=Damon|title=Moving from Relational Modeling to XML and MarkLogic Data Models|url=http://www.marklogic.com/resources/slides-moving-from-relational-modeling-to-xml-and-marklogic-data-models/resource_download/presentations/|conference=MarkLogic World|conference-url=http://world.marklogic.com/|date=11 April 2013|accessdateaccess-date=17 March 2015}}</ref>
* An enterprise may have a lot of XML in an existing standard format
* Data may need to be exposed or ingested as XML, so using another format such as relational forces double-modeling of the data
Line 22:
XML enabled databases typically offer one or more of the following approaches to storing XML within the traditional relational structure:
#XML is stored into a CLOB ([[Character large object]])
#XML is `shredded` into a series of Tables based on a Schema<ref name=oracle>{{cite book|title=Oracle XML DB Developer's Guide, 10''g'' Release 2|date=August 2005|publisher=Oracle Corporation|chapter-url=http://docs.oracle.com/cd/B19306_01/appdev.102/b14259/xdb05sto.htm|accessdateaccess-date=17 March 2015|chapter=XML Schema Storage and Query: Basic}}. Section [http://docs.oracle.com/cd/B19306_01/appdev.102/b14259/xdb05sto.htm#i1042421 Creating XMLType Tables and Columns Based on XML Schema]</ref>
#XML is stored into a native XML Type as defined by ISO Standard 9075-14<ref name=iso9075-2011>{{cite web|title=ISO/IEC 9075-14:2011: Information technology -- Database languages -- SQL -- Part 14: XML-Related Specifications (SQL/XML)|url=http://www.iso.org/iso/home/store/catalogue_ics/catalogue_detail_ics.htm?csnumber=53686|publisher=[[International Organization for Standardization]]|accessdateaccess-date=17 March 2015|date=2011}}</ref>
 
RDBMS that support the ISO XML Type are:
#IBM DB2 (pureXML<ref name=db2purexml>{{cite web|title=pureXML overview -- DB2 as an XML database|url=http://www-01.ibm.com/support/knowledgecenter/SSEPGG_10.1.0/com.ibm.db2.luw.xml.doc/doc/c0022308.html|website=IBM Knowledge Center|publisher=[[IBM]]|accessdateaccess-date=17 March 2015}}</ref>)
#Microsoft SQL Server<ref name=sqlserver2005>{{cite web|title=Using XML in SQL Server|url=https://msdn.microsoft.com/en-us/library/ms190936.aspx|website=Microsoft Developer Network|publisher=[[Microsoft Corporation]]|accessdateaccess-date=17 March 2015}}</ref>
#Oracle Database<ref name=oracle2>{{cite book|title=Oracle XML DB Developer's Guide, 10''g'' Release 2|date=August 2005|publisher=Oracle Corporation|chapter-url=http://docs.oracle.com/cd/B19306_01/appdev.102/b14259/xdb04cre.htm|accessdateaccess-date=17 March 2015|chapter=XMLType Operations}}</ref>
#PostgreSQL<ref name=postgresql>{{cite book|title=PostgreSQL 9.6 Documentation|chapter-url=https://www.postgresql.org/docs/9.6/static/datatype-xml.html|accessdateaccess-date=1 April 2017|chapter=8.13. XML Type}}</ref>
 
Typically an XML enabled database is best suited where the majority of data are non-XML. For datasets where the majority of data are XML, a [[#Native XML databases|native XML database]] is better suited.
Line 45:
== Native XML databases ==
 
Native XML databases are especially tailored for working with XML data. As managing XML as large strings would be inefficient, and due to the hierarchical nature of XML, custom optimized data structures are used for storage and querying. This usually increases performance both in terms of read-only queries and updates.<ref>{{cite web|last1=Matthias|first1=Nicola|title=XML versus Relational Database Performance|url=https://nativexmldatabase.com/2010/08/22/xml-versus-relational-database-performance/|website=Native XML Database|accessdateaccess-date=28 Jun 2017|date=22 August 2010}}</ref> XML nodes and documents are the fundamental unit of (logical) storage, just as a [[relational database]] has fields and rows.
 
The standard for querying XML data per W3C recommendation is [[XQuery]]; the latest version is XQuery 3.1.<ref>{{cite web|url=http://www.w3.org/TR/xquery-31/ | title=XQuery 3.1 Recommendation | date=2017-03-21}}</ref> XQuery includes [[XPath]] as a sub-language and XML itself is a valid sub-syntax of XQuery. In contrast to XML enabled databases, native databases provide full support for XQuery. In addition to XPath, some XML databases support [[XSLT]] as a method of transforming documents or query results retrieved from the database.