RE: storing xml files into database
Ron, I believe we're doing just fine keeping our fruit straight. I mentioned both his apples and your oranges in my original message, agreeing with Chris from Excelon about their drawbacks. (There's also the plum solution of storing the whole document as an opaque BLOB). Frank -----Original Message----- From: Ronald Bourret [mailto:rpbourret@r...] Sent: Monday, September 10, 2001 4:08 PM To: Bill Lindsey Cc: xml-dev@l... Subject: Re: storing xml files into database Bill Lindsey wrote: > > Frank Richards wrote: > > XML is a tree of elements. Naively mapping that tree onto a table causes the > > RDBMS to > > thrash it's guts out doing joins to go down the tree -- > [ ... ] > > XML in an > > RDBMS can easily hit six or seven joins per query. > > A typical, naive definition of a "nodes" table does lead to unacceptable > performance due to the necessity of many self-joins. It is possible, > however, to devise a scheme for encoding nodes' context in a compact > form, optimized for an RDBMS' indexing facility, and build a > generic table structure, capable of storing any well-formed > XML, yet does not exhibit the self-join problem. I think you guys are talking apples and oranges. The typical mapping solution Frank is talking about is (I believe) one that maps the data in XML documents to tables. For example, if I have a <SalesOrder> element, I map it to a SalesOrder table. An <Item> element maps to an Items table, a <Part> element maps to a Parts table, and so on. This obviously leads to a lot of joins when retrieving data. For a very nice paper discussing different strategies for minimizing the cost of these joins, see: http://www.cs.wisc.edu/~jai/papers/RelationsToXMLJournal.pdf As I recall, the most effective strategy was that which UNIONs selects on different tables. This is the strategy used by SQL Server's SELECT ... FOR XML EXTENDED syntax. The solution Bill is talking about maps the document structure itself (e.g. a DOM tree) to the database. Thus, a <SalesOrder> element is mapped to an Elements table (an actual row of data contains the value "SalesOrder" in the ElementName column. Similarly, all other elements are mapped to this table as well. For a nice paper explaining one way to retrieve data from such a table without any self-joins, see: http://www.sees.bangor.ac.uk/~rich/research/papers/uwb_rge_IDEAL2000.pdf -- Ronald Bourret XML, Databases, and Schemas http://www.rpbourret.com Speaker, Geek Cruises' XML Excursion '02 ----------------------------------------------------------------- The xml-dev list is sponsored by XML.org <http://www.xml.org>, an initiative of OASIS <http://www.oasis-open.org> The list archives are at http://lists.xml.org/archives/xml-dev/ To subscribe or unsubscribe from this elist use the subscription manager: <http://lists.xml.org/ob/adm.pl>
PURCHASE STYLUS STUDIO ONLINE TODAY!
Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!
Download The World's Best XML IDE!
Accelerate XML development with our award-winning XML IDE - Download a free trial today!
Subscribe in XML format