[Home] [By Thread] [By Date] [Recent Entries]


On 11/29/05, Michael Kay <mike@s...> wrote:
> > I'm searching for an indexing solution for my native XML
> > database project,
> > which I'm writing as a learning project.
> >
> > I use C++ as development language and a relational database
> > as backend.
>
> Why?
>
> I simply wouldn't start from here. Relational databases are bad at storing
> hierarchic data, they are bad at storing data whose order is significant,
> and they are bad at storing data whose structure is irregular. Many of the
> XPath axis traversals will map to recursive queries, which cannot be
> expressed in first-order predicate calculus. Even the operation of
> determining namespace context will require either a recursive query, or
> highly-redundant data storage.
>
> You'd be better off starting with an object database.

Gee Michael, care to over generalise just a tad?

If your data has low update frequency then a set/subset in-order data
model will have flat query structures but provide direct transforms to
hierarchical structures.  Update and insert operations can be
expensive in the general case for such a model, but for specific cases
it may not be an issue.  An ordered index in many relational databases
can have as good or better performance than in an object database.

Sure, a relational database might not be the best fit for a given
hierarchical structure. But for other cases the fit may be as good or
better than any other database....  Given the rather low level of
hierarchy expressed in the example I can see several ways of
addressing performance, but I'll address direct those directly to the
author of the question.

--
Peter Hunsberger

Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member