Path: utzoo!attcan!utgpu!jarvis.csri.toronto.edu!mailrus!cs.utexas.edu!uunet!mcsun!ukc!cam-cl!scc
From: scc@cl.cam.ac.uk (Stephen Crawley)
Newsgroups: comp.sw.components
Subject: Re: garbage in object databases [was Real-time Garbage Collection]
Message-ID: <916@scaup.cl.cam.ac.uk>
Date: 26 Sep 89 22:37:12 GMT
References: <910@scaup.cl.cam.ac.uk> <6587@hubcap.clemson.edu>
Sender: news@cl.cam.ac.uk
Organization: U of Cambridge Comp Lab, UK
Lines: 44

Bill Wolfe writes:
> The model involves a database which stores objects which can be
> created, destroyed, read, and written by various users.  The users
> might be partitioned into different groups (e.g., those authorized
> to destroy vs. those who cannot).  Now from the perspective of a
> user who can read and write but not destroy, the object's lifetime
> is potentially infinite, depending upon the whims of those who have
> the power to destroy.  By revalidating the identification number,
> such users receive continued assurances that the object still exists.
>
> If the object is destroyed, the identification numbers will then all
> expire automatically, regardless of how widely they were distributed.

A user explicitly destroying objects is equivalent to an application 
explicitly deallocating heap nodes.  In both case, a dangling reference
is left that will cause trouble next time it is used.

Sensible object-oriented database designs don't allow users to delete 
objects.  Instead objects are removed from the database when they are 
no longer accessible.  Dangling references are impossible.

But even assuming a database design where users may delete objects
explicitly, what good does it do a user to check that an object nos
is still valid?  If it is valid now, there is no guarantee that it 
will still be in 5 seconds time.  If it isn't valid, there is nothing 
the user can do about it.  Sounds like a total waste of time to me ...

Bill writes:
>>> We are managing objects in this way because they present worst-case
>>> properties which do not permit us to use more efficient techniques.
>> 
>> What about garbage collection???  
>
> Won't work under the conditions I described (distributed environment).

Sorry Bill, you are just plain wrong there.

I have designed and am implementing an algorithm for garbage collection
of a distributed object system.  It works, and it is tolerably fast. 
(Garbage collection of N interlinked databases requires at most order 
N**2 messages)  This stuff will be written up for publication in due 
course.

-- Steve