Re: Concurrency in an RDB

From: David <davidbl_at_iinet.net.au>
Date: 25 Dec 2006 17:45:45 -0800
Message-ID: <1167097545.627056.82930_at_n51g2000cwc.googlegroups.com>


Sampo Syreeni wrote:
> On 2006-12-23, David wrote:
>
> > Out of interest, do you see a benefit in representing a book
> > relationally, assuming it is only comprised of hierarchical chapters
> > of paragraphs of text?
>
> It almost never is, and even if it is, it almost never stays that way.
> Instead most books (and structured documents, and...) suffer visibly
> from the same problem hierarchical databases did: when the data just
> isn't hierarchical, you have to emulate a more general relational
> structure on top of the hierarchical physical layer, and that's messy.
> That's e.g. how you get long introductory chapters describing different
> tracts for people interested in different aspects of the text, an
> intricate and time-consuming editing process trying to balance such
> contradictory interests against each other and linear readability,
> complicated textual and layout structures expressing things like
> optionality and intended proficiency levels of the readers, and of
> course references bouncing all over the place. All of that works much
> better under the relational model, and the result is more or less what
> the early hypertext advocates envisioned.

I have wondered about the idea of source code itself being represented more directly through some underlying data model, rather than simple text files. One of the fundamental differences is that parsing is no longer required, and presumably entities within the source code can directly cross reference each other with enforced referential integrity. Through normalisation, it could be possible to store the names of source code variables and types just once, allowing the programmer to easily rename things. The potential advantages seem endless.

However there are some difficult questions to be answered. For example, how is copy and paste defined? Eg imagine that you copy some code out of a function to be inserted into a different function. What happens with the bindings to the formal arguments? With text files we understand that the bindings happen during the compilation through reference by name.

It's these sorts of issues that give me reservations about the idea to directly store and edit complex graphs of data with enforced referential integrity. It seems that structured documents that are tree structures that becomes graphs through reference by name offer some significant advantages.

The WWW is a case in point. Hyperlinks only bind as they are traversed and referential integrity is not enforced. The system doesn't represent the graph directly by using meaningless, hidden, immutable identifiers for binding.

Cheers,
David Received on Tue Dec 26 2006 - 02:45:45 CET

Original text of this message