[gclist] More questions for the FAQ
Paul R. Wilson
wilson@cs.utexas.edu
Thu, 21 Mar 1996 09:59:43 -0600
>From majordom@iecc.com Thu Mar 21 05:53:32 1996
>Subject: Re: [gclist] More questions for the FAQ
>Precedence: bulk
>Reply-To: gclist@iecc.com
>Errors-to: owner-gclist@iecc.com
>
> || Date: Wed, 20 Mar 96 13:05:19 EST
> || From: David Chase <chase@centerline.com>
> ||
> || Q: What are some successful products or projects which make use of
> || garbage collection?
>
>The O2 object-oriented database has an off-line garbage collector. (It's a
>successful commercial product.) Other object-oriented databases have too, but
>I don't know the names off-hand. Those that don't, should. Garbage
>collection is central to the notion of persistence. This was shown by
>Atkinson as early as 1983.
>
> Marc
>
I think it's interesting, for FAQ purposes, that relational database
systems do this too, as Henry pointed out.
I recently talked to a database expert about implementing B+ trees.
(We recently added them to the Texas persistent store.) I was not clear
on exactly how to implement the delete operation, and the rebalancing
necessary to make it work. I didn't want to go to a lot of trouble.
He said that real database implementors usually don't do it at all.
When an item is deleted from a relation, it's simply marked "deleted"
with a flag in the table. I guess that eventually you compact the
database by what they call reorganzation, i.e., writing out the live
elements of the tables to a file, and reading the whole schmear back
in, clean.
I'm not sure how this relates to GC---it's an issue of compaction and
allocation rather than tracing for liveness. But I believe Henry
is correct---many RDB's do in fact do "garbage collection" by writing
things out to a file and reading in a clean version.
I think this is extremely common---people use pickling and unpickling
as a slow form of copying garbage collection. Often they use hand-hacked
picklers for their particular applications' data structures.