Lists Home |
Date Index |
On 11/29/05, Michael Kay <email@example.com> 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.
> 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.