Lists Home |
Date Index |
It's a bit hard to get used to the idea, but an "XML type" is a first
class data type whose disk storage is optimized for XML.
By analogy, think about how other data types are stored. A two byte
integer data type is stored in two bytes where each bit is treated as a
digit in a binary number. A ten-byte ASCII character data type is stored
as ten bytes where each byte is treated as an integer representing an
ASCII character. And an XML data type is stored (insert leap of faith
here) in a structure designed to hold an XML document.
What's weird about this is that we're used to thinking of relational
data types as scalar types, whereas the XML data type has much more
structure. However, this isn't much different than in object-relational
databases where a column can have an object data type, although that is
presumably mapped to a set of scalar storage locations under the covers.
How the XML data type is actually stored depends on the database. For
example, Oracle stores complete XML documents in CLOBs and indexes the
heck out of them. SQL Server stores documents using a proprietary binary
format in BLOBs, as well as storing them in a node table with columns
like node ID, node name, node type, parent ID, and node value. DB2
stores documents using a proprietary disk format that is designed for
node-level addressability and is separate from their relational storage.
Another way to think about all of this is that the XML data type is the
exposed tip of a native XML database embedded inside a relational database.
Clear as mud?
Bullard, Claude L (Len) wrote:
> I don't understand this nearly well enough. In a
> relational database, what are the characteristics
> of an "XML type"?