csnyder wrote:

If it's not too much trouble, could you give us some other use cases
for an XML database? Because title and first paragraph, if that's
something a system "routinely does" could easily be stored as
relational data at the time of import.


Storing books, web pages, and the like in a relational database has only two basic approaches: make it a blob or cut it into tiny little pieces. The first eliminates search capabilities; the second performs like a dog.

You're right that if grabbing the title and the first paragraph is all you need to do, then these two pieces could be stored separately (and normalization be damned.) Now suppose the editor comes along and tells you they really want to show the first two paragraphs of text to non-logged in users instead of just the first one. If you know the queries in advance, you can layout the data to optimize them, but using the data's own structure will give you much more flexibility for unexpected uses.

Here's another common use case: extract the links from a web site. Do a Google-like reverse index that finds all the pages linking to this one. The only way to make that happen in a relational DB is to chop the content into so many trivially small pieces that putting them back together again is prohibitively expensive. And even once you've done that, the SQL to pull the result is ungodly ugly. The XQuery is a lot simpler because it matches the natural structure of the documents rather than treating everything as a table. Some data wants to live in tables. Some doesn't.

--
Elliotte Rusty Harold  [EMAIL PROTECTED]
Java I/O 2nd Edition Just Published!
http://www.cafeaulait.org/books/javaio2/
http://www.amazon.com/exec/obidos/ISBN=0596527500/ref=nosim/cafeaulaitA/
_______________________________________________
New York PHP Community Talk Mailing List
http://lists.nyphp.org/mailman/listinfo/talk

NYPHPCon 2006 Presentations Online
http://www.nyphpcon.com

Show Your Participation in New York PHP
http://www.nyphp.org/show_participation.php

Reply via email to