Re: One Ring to Bind Them

From: Anthony W. Youngman <wol_at_thewolery.demon.co.uk>
Date: Sat, 10 Jul 2004 22:52:25 +0100
Message-ID: <sxyFBOEZUG8AFw99_at_thewolery.demon.co.uk>


In message <40EDEBB2.8060707_at_prodigy.net>, Eric Kaun <ekaun_at_prodigy.net> writes
>Anthony W. Youngman wrote:
>> In message <c9GdnW9YiKJkSlDd4p2dnA_at_comcast.com>, Laconic2
>><laconic2_at_comcast.net> writes
>>
>> Yes, but relational formalises metadata INTO data.
>
>No formalization is needed; metadata is data. It's just data with a
>different domain, but there's no reason to think it obeys different
>laws or requires different structure.

Yes - but metadata can be used by the database while data can't.
>
>> Once it's in an RDBMS it's no longer metadata, because the rdbms
>>doesn't understand any meaning in it and can't take advantage of that
>>meaning so it's just data.
>
>I'm confused. How does placing it in an RDBMS make it no longer
>metadata? The system catalog (metadata - data about your data) can be
>represented relationally (or as XML if you're feeling masochistic).

Because you've converted it to data! And the system catalog doesn't let you store ALL metadata AS metadata. It will only let you store metadata it recognises.
>
>How does the RDBMS "understand" no meaning in it? And how do other
>DBMSs "understand" meaning? The constraints and relation definitions of
>the metadata are as much meaning as the RDBMS can have.

In other words, an RDBMS is incomplete. :-)
>
>> The ordering in a list is metadata. Convert that into a set to put
>>into an rdbms and ORDER is now just a meaningless (as far as the db
>>engine is concerned) bit of data.
>
>No, in that case order is gone, vanished. If you don't state it, the
>RDBMS doesn't know about it. On the other hand, it doesn't assume
>anything either. Order is easily represented, and again if you're
>masochistic, you can store a list-typed attribute.

But if you DO state it, the RDBMS doesn't know anything about it, either! What do you mean by a "list-typed attribute"? Do you mean a column that contains ordering information?
>
>> That's where MV and OO fundamentally differ. They try to *avoid*
>>converting metadata to data, so that the db engine can be intelligent
>>and take advantage of it to optimise things.
>
>So by treating metadata as something other than data (what would that
>be?), they can be intelligent and optimize? Intelligent how? Optimize
>what?
>
The whole point of a database is it STORES data, it does *not* UNDERSTAND data. By converting metadata into data, you are now forcing "intelligence" into the application.

A relational database thinks in terms of sets. In order to have a list, you need to create extra DATA, and the database itself can't take advantage of it, because it doesn't understand it.

DATA is what is stored IN a database. METADATA is data that is USED BY the database. There *is* a difference, and the difference is crucial. The more metadata you can leave as metadata, rather than convert to data, the more information the database has available to it to optimise.

How does an RDBMS optimise access to a list, if it doesn't have any understanding of what a list is?

That's the point of storing metadata *as* *metadata*. Because the database understands it.

Cheers,
Wol

-- 
Anthony W. Youngman - wol at thewolery dot demon dot co dot uk
HEX wondered how much he should tell the Wizards. He felt it would not be a
good idea to burden them with too much input. Hex always thought of his reports
as Lies-to-People.
The Science of Discworld : (c) Terry Pratchett 1999
Received on Sat Jul 10 2004 - 23:52:25 CEST

Original text of this message