Bryan Batchelder wrote:

> In memory databse using XML and Xpath:
> http://www.15seconds.com/issue/010410.htm

While this is an interesting possibility, it presents a few (perhaps
important) problems:

1. Significant memory consumption. For the moment, XPath requires a DOM, and
   a DOM requires the entire XML file be loaded. If you data is even
   remotely large, this can be a pretty stiff penalty.

2. Significant performance penalty. Loading and parsing the entire XML file
   before you can perform any search can be expensive. You can minimize this
   by loading the XML once on startup, but then that grows your in-memory
   footprint significantly. If you're searching constantly, then that's
   acceptable, but if you're not, then it probably isn't.

3. XML is hierarchic, not relational. It may not fit the data model,
   especially if you have complicated many-to-many relationships. This could
   be represented well in an object database, but XML is just text. Those
   relationships need to be stored and re-computed upon load.

4. No complex querying. You can find nodes if you know what you're looking
   for, but searching based on comparisons and relationships (one of SQL's
   strengths) just can't be done without significant additional code.

In short, I find the desire to treat XML as a database a little unusual.
They aren't the same thing, and aren't meant to be the same thing. If
performance is the goal here, then believe me when I say that Access is
going to beat the snot out of XPath for complex queries (since you'll end up
writing additional code to cover XPath's shortcomings), and with less memory
impact. Plus the code will be done a heck of a lot sooner, which -- let's be
honest -- is typically a major factor in engineering projects.

I wonder where this "XML is a database" sentiment comes from, because it
seems to be awfully prevalent in the engineering community (not just the
Windows community, either). I love XML and use it all the time to transport
structured data, but this is just a little bewildering for me.

Brad

--
Read my web log at http://www.quality.nu/dotnetguy/

You can read messages from the DOTNET archive, unsubscribe from DOTNET, or
subscribe to other DevelopMentor lists at http://discuss.develop.com.

Reply via email to