Lists Home |
Date Index |
> I don't understand this nearly well enough. In a
> relational database, what are the characteristics
> of an "XML type"?
In the mid-1980s, SQL databases stored tabular data and the SQL standard
included alphanumeric types (numbers and characters).
Fast forward ten years and databases had to support more complex types.
Applications required geo-spatial data, multidimensional data, time series,
images, audio, video and text. Object-relational technology emerged and SQL
platforms began supporting user-defined types, user-defined functions and
A classic example was the sunset query at the California Department of Water
Resources (DWR). By 1995, DWR had a half-million 35mm slides. It classified them
for an SQL database using keywords and text descriptions. That classification
and indexing scheme was inadequate. Clients requested photos based on content,
such as a search for a reservoir with a low water level. To provide
content-based SQL queries, DWR digitized the images in Photo-CD format and put
them in the database. That enabled them to run content-based SQL queries such as
finding images of sunsets (based on detecting orange at the top of the image).
Fast forward to 2003 and now the SQL:2003 standard includes nested collections,
multisets and an XMLType.
Implementation of the standard is a bit more work than simply updating the
parser. Supporting a data type means the SQL DBMS provides a data definition
syntax, type checking, constraints, rules and access methods. It knows how to
store, index, and optimize queries involving that type.
The optimizer determines the best access plan for a query and it uses indexes
for performance. For queries with alphanumeric types, a DBMS can use b-tree
indexes and b-tree based data access. For complex types, the SQL platform must
use different access methods and indexing techniques such as r-trees, quadtrees,
KDB-trees and so on.
So an SQL column of XMLType is a hierarchically-nested collection of elements.
There's a structure to the data, order must be preserved, and it's understood by
SQL DDL and DML.
======== Ken North ===========